From 57984caca15c6ff8fe6b37ffb98a6c9246410382 Mon Sep 17 00:00:00 2001 From: Akram Yakubov Date: Tue, 15 Oct 2024 16:44:50 -0700 Subject: [PATCH 01/26] Initial implementation --- incubator/binding-pgsql/pom.xml | 10 + .../binding/pgsql/parser/PostgreSQLLexer.g4 | 1663 +++++ .../binding/pgsql/parser/PostgreSQLParser.g4 | 5575 +++++++++++++++++ .../parser/LexerDispatchingErrorListener.java | 84 + .../ParserDispatchingErrorListener.java | 85 + .../binding/pgsql/parser/PgsqlParser.java | 59 + .../pgsql/parser/PostgreSQLLexerBase.java | 91 + .../pgsql/parser/PostgreSQLParserBase.java | 173 + .../listener/SQLTableCommandListener.java | 68 + .../pgsql/parser/PgsqlTableParserTest.java | 85 + 10 files changed, 7893 insertions(+) create mode 100644 incubator/binding-pgsql/src/main/antlr4/io/aklivity/zilla/runtime/binding/pgsql/parser/PostgreSQLLexer.g4 create mode 100644 incubator/binding-pgsql/src/main/antlr4/io/aklivity/zilla/runtime/binding/pgsql/parser/PostgreSQLParser.g4 create mode 100644 incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/LexerDispatchingErrorListener.java create mode 100644 incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/ParserDispatchingErrorListener.java create mode 100644 incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/PgsqlParser.java create mode 100644 incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/PostgreSQLLexerBase.java create mode 100644 incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/PostgreSQLParserBase.java create mode 100644 incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SQLTableCommandListener.java create mode 100644 incubator/binding-pgsql/src/test/java/io/aklivity/zilla/runtime/binding/pgsql/parser/PgsqlTableParserTest.java diff --git a/incubator/binding-pgsql/pom.xml b/incubator/binding-pgsql/pom.xml index 73bf387b5f..04f811d1f0 100644 --- a/incubator/binding-pgsql/pom.xml +++ b/incubator/binding-pgsql/pom.xml @@ -35,6 +35,11 @@ ${project.version} provided + + org.antlr + antlr4-runtime + provided + ${project.groupId} engine @@ -107,6 +112,10 @@ + + org.antlr + antlr4-maven-plugin + com.mycila license-maven-plugin @@ -191,6 +200,7 @@ io/aklivity/zilla/runtime/binding/pgsql/internal/types/**/*.class + io/aklivity/zilla/runtime/binding/pgsql/parser/**/*.class diff --git a/incubator/binding-pgsql/src/main/antlr4/io/aklivity/zilla/runtime/binding/pgsql/parser/PostgreSQLLexer.g4 b/incubator/binding-pgsql/src/main/antlr4/io/aklivity/zilla/runtime/binding/pgsql/parser/PostgreSQLLexer.g4 new file mode 100644 index 0000000000..8f8d04a847 --- /dev/null +++ b/incubator/binding-pgsql/src/main/antlr4/io/aklivity/zilla/runtime/binding/pgsql/parser/PostgreSQLLexer.g4 @@ -0,0 +1,1663 @@ +/* + * Copyright 2021-2023 Aklivity Inc + * + * Licensed under the Aklivity Community License (the "License"); you may not use + * this file except in compliance with the License. You may obtain a copy of the + * License at + * + * https://www.aklivity.io/aklivity-community-license/ + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OF ANY KIND, either express or implied. See the License for the + * specific language governing permissions and limitations under the License. + */ + +lexer grammar PostgreSQLLexer; +/* Reference: + * http://www.postgresql.org/docs/9.3/static/sql-syntax-lexical.html + */ + +options { + superClass = PostgreSQLLexerBase; + caseInsensitive = true; +} + +@header { +} +@members { +/* This field stores the tags which are used to detect the end of a dollar-quoted string literal. + */ +} +// + +// SPECIAL CHARACTERS (4.1.4) + +// + +// Note that Asterisk is a valid operator, but does not have the type Operator due to its syntactic use in locations + +// that are not expressions. + +Dollar: '$'; + +OPEN_PAREN: '('; + +CLOSE_PAREN: ')'; + +OPEN_BRACKET: '['; + +CLOSE_BRACKET: ']'; + +COMMA: ','; + +SEMI: ';'; + +COLON: ':'; + +STAR: '*'; + +EQUAL: '='; + +DOT: '.'; +//NamedArgument : ':='; + +PLUS: '+'; + +MINUS: '-'; + +SLASH: '/'; + +CARET: '^'; + +LT: '<'; + +GT: '>'; + +LESS_LESS: '<<'; + +GREATER_GREATER: '>>'; + +COLON_EQUALS: ':='; + +LESS_EQUALS: '<='; + +EQUALS_GREATER: '=>'; + +GREATER_EQUALS: '>='; + +DOT_DOT: '..'; + +NOT_EQUALS: '<>'; + +TYPECAST: '::'; + +PERCENT: '%'; + +PARAM: '$' ([0-9])+; +// + +// OPERATORS (4.1.3) + +// + +// this rule does not allow + or - at the end of a multi-character operator + +Operator: + ( + ( + OperatorCharacter + | ('+' | '-' {checkLA('-')}?)+ (OperatorCharacter | '/' {checkLA('*')}?) + | '/' {checkLA('*')}? + )+ + | // special handling for the single-character operators + and - + [+-] + ) + //TODO somehow rewrite this part without using Actions + { + HandleLessLessGreaterGreater(); + } +; +/* This rule handles operators which end with + or -, and sets the token type to Operator. It is comprised of four + * parts, in order: + * + * 1. A prefix, which does not contain a character from the required set which allows + or - to appear at the end of + * the operator. + * 2. A character from the required set which allows + or - to appear at the end of the operator. + * 3. An optional sub-token which takes the form of an operator which does not include a + or - at the end of the + * sub-token. + * 4. A suffix sequence of + and - characters. + */ + +OperatorEndingWithPlusMinus: + (OperatorCharacterNotAllowPlusMinusAtEnd | '-' {checkLA('-')}? | '/' {checkLA('*')}?)* OperatorCharacterAllowPlusMinusAtEnd Operator? ( + '+' + | '-' {checkLA('-')}? + )+ -> type (Operator) +; +// Each of the following fragment rules omits the +, -, and / characters, which must always be handled in a special way + +// by the operator rules above. + +fragment OperatorCharacter: [*<>=~!@%^&|`?#]; +// these are the operator characters that don't count towards one ending with + or - + +fragment OperatorCharacterNotAllowPlusMinusAtEnd: [*<>=+]; +// an operator may end with + or - if it contains one of these characters + +fragment OperatorCharacterAllowPlusMinusAtEnd: [~!@%^&|`?#]; +// + +// KEYWORDS (Appendix C) + +// + +// + +// reserved keywords + +// + +ALL: 'ALL'; + +ANALYSE: 'ANALYSE'; + +ANALYZE: 'ANALYZE'; + +AND: 'AND'; + +ANY: 'ANY'; + +ARRAY: 'ARRAY'; + +AS: 'AS'; + +ASC: 'ASC'; + +ASYMMETRIC: 'ASYMMETRIC'; + +BOTH: 'BOTH'; + +CASE: 'CASE'; + +CAST: 'CAST'; + +CHECK: 'CHECK'; + +COLLATE: 'COLLATE'; + +COLUMN: 'COLUMN'; + +CONSTRAINT: 'CONSTRAINT'; + +CREATE: 'CREATE'; + +CURRENT_CATALOG: 'CURRENT_CATALOG'; + +CURRENT_DATE: 'CURRENT_DATE'; + +CURRENT_ROLE: 'CURRENT_ROLE'; + +CURRENT_TIME: 'CURRENT_TIME'; + +CURRENT_TIMESTAMP: 'CURRENT_TIMESTAMP'; + +CURRENT_USER: 'CURRENT_USER'; + +DEFAULT: 'DEFAULT'; + +DEFERRABLE: 'DEFERRABLE'; + +DESC: 'DESC'; + +DISTINCT: 'DISTINCT'; + +DO: 'DO'; + +ELSE: 'ELSE'; + +EXCEPT: 'EXCEPT'; + +FALSE_P: 'FALSE'; + +FETCH: 'FETCH'; + +FOR: 'FOR'; + +FOREIGN: 'FOREIGN'; + +FROM: 'FROM'; + +GRANT: 'GRANT'; + +GROUP_P: 'GROUP'; + +HAVING: 'HAVING'; + +IN_P: 'IN'; + +INITIALLY: 'INITIALLY'; + +INTERSECT: 'INTERSECT'; + +INTO: 'INTO'; + +LATERAL_P: 'LATERAL'; + +LEADING: 'LEADING'; + +LIMIT: 'LIMIT'; + +LOCALTIME: 'LOCALTIME'; + +LOCALTIMESTAMP: 'LOCALTIMESTAMP'; + +NOT: 'NOT'; + +NULL_P: 'NULL'; + +OFFSET: 'OFFSET'; + +ON: 'ON'; + +ONLY: 'ONLY'; + +OR: 'OR'; + +ORDER: 'ORDER'; + +PLACING: 'PLACING'; + +PRIMARY: 'PRIMARY'; + +REFERENCES: 'REFERENCES'; + +RETURNING: 'RETURNING'; + +SELECT: 'SELECT'; + +SESSION_USER: 'SESSION_USER'; + +SOME: 'SOME'; + +SYMMETRIC: 'SYMMETRIC'; + +TABLE: 'TABLE'; + +THEN: 'THEN'; + +TO: 'TO'; + +TRAILING: 'TRAILING'; + +TRUE_P: 'TRUE'; + +UNION: 'UNION'; + +UNIQUE: 'UNIQUE'; + +USER: 'USER'; + +USING: 'USING'; + +VARIADIC: 'VARIADIC'; + +WHEN: 'WHEN'; + +WHERE: 'WHERE'; + +WINDOW: 'WINDOW'; + +WITH: 'WITH'; + +// + +// reserved keywords (can be function or type) + +// + +AUTHORIZATION: 'AUTHORIZATION'; + +BINARY: 'BINARY'; + +COLLATION: 'COLLATION'; + +CONCURRENTLY: 'CONCURRENTLY'; + +CROSS: 'CROSS'; + +CURRENT_SCHEMA: 'CURRENT_SCHEMA'; + +FREEZE: 'FREEZE'; + +FULL: 'FULL'; + +ILIKE: 'ILIKE'; + +INNER_P: 'INNER'; + +IS: 'IS'; + +ISNULL: 'ISNULL'; + +JOIN: 'JOIN'; + +LEFT: 'LEFT'; + +LIKE: 'LIKE'; + +NATURAL: 'NATURAL'; + +NOTNULL: 'NOTNULL'; + +OUTER_P: 'OUTER'; + +OVER: 'OVER'; + +OVERLAPS: 'OVERLAPS'; + +RIGHT: 'RIGHT'; + +SIMILAR: 'SIMILAR'; + +VERBOSE: 'VERBOSE'; +// + +// non-reserved keywords + +// + +ABORT_P: 'ABORT'; + +ABSOLUTE_P: 'ABSOLUTE'; + +ACCESS: 'ACCESS'; + +ACTION: 'ACTION'; + +ADD_P: 'ADD'; + +ADMIN: 'ADMIN'; + +AFTER: 'AFTER'; + +AGGREGATE: 'AGGREGATE'; + +ALSO: 'ALSO'; + +ALTER: 'ALTER'; + +ALWAYS: 'ALWAYS'; + +ASSERTION: 'ASSERTION'; + +ASSIGNMENT: 'ASSIGNMENT'; + +AT: 'AT'; + +ATTRIBUTE: 'ATTRIBUTE'; + +BACKWARD: 'BACKWARD'; + +BEFORE: 'BEFORE'; + +BEGIN_P: 'BEGIN'; + +BY: 'BY'; + +CACHE: 'CACHE'; + +CALLED: 'CALLED'; + +CASCADE: 'CASCADE'; + +CASCADED: 'CASCADED'; + +CATALOG: 'CATALOG'; + +CHAIN: 'CHAIN'; + +CHARACTERISTICS: 'CHARACTERISTICS'; + +CHECKPOINT: 'CHECKPOINT'; + +CLASS: 'CLASS'; + +CLOSE: 'CLOSE'; + +CLUSTER: 'CLUSTER'; + +COMMENT: 'COMMENT'; + +COMMENTS: 'COMMENTS'; + +COMMIT: 'COMMIT'; + +COMMITTED: 'COMMITTED'; + +CONFIGURATION: 'CONFIGURATION'; + +CONNECTION: 'CONNECTION'; + +CONSTRAINTS: 'CONSTRAINTS'; + +CONTENT_P: 'CONTENT'; + +CONTINUE_P: 'CONTINUE'; + +CONVERSION_P: 'CONVERSION'; + +COPY: 'COPY'; + +COST: 'COST'; + +CSV: 'CSV'; + +CURSOR: 'CURSOR'; + +CYCLE: 'CYCLE'; + +DATA_P: 'DATA'; + +DATABASE: 'DATABASE'; + +DAY_P: 'DAY'; + +DEALLOCATE: 'DEALLOCATE'; + +DECLARE: 'DECLARE'; + +DEFAULTS: 'DEFAULTS'; + +DEFERRED: 'DEFERRED'; + +DEFINER: 'DEFINER'; + +DELETE_P: 'DELETE'; + +DELIMITER: 'DELIMITER'; + +DELIMITERS: 'DELIMITERS'; + +DICTIONARY: 'DICTIONARY'; + +DISABLE_P: 'DISABLE'; + +DISCARD: 'DISCARD'; + +DOCUMENT_P: 'DOCUMENT'; + +DOMAIN_P: 'DOMAIN'; + +DOUBLE_P: 'DOUBLE'; + +DROP: 'DROP'; + +EACH: 'EACH'; + +ENABLE_P: 'ENABLE'; + +ENCODING: 'ENCODING'; + +ENCRYPTED: 'ENCRYPTED'; + +ENUM_P: 'ENUM'; + +ESCAPE: 'ESCAPE'; + +EVENT: 'EVENT'; + +EXCLUDE: 'EXCLUDE'; + +EXCLUDING: 'EXCLUDING'; + +EXCLUSIVE: 'EXCLUSIVE'; + +EXECUTE: 'EXECUTE'; + +EXPLAIN: 'EXPLAIN'; + +EXTENSION: 'EXTENSION'; + +EXTERNAL: 'EXTERNAL'; + +FAMILY: 'FAMILY'; + +FIRST_P: 'FIRST'; + +FOLLOWING: 'FOLLOWING'; + +FORCE: 'FORCE'; + +FORWARD: 'FORWARD'; + +FUNCTION: 'FUNCTION'; + +FUNCTIONS: 'FUNCTIONS'; + +GLOBAL: 'GLOBAL'; + +GRANTED: 'GRANTED'; + +HANDLER: 'HANDLER'; + +HEADER_P: 'HEADER'; + +HOLD: 'HOLD'; + +HOUR_P: 'HOUR'; + +IDENTITY_P: 'IDENTITY'; + +IF_P: 'IF'; + +IMMEDIATE: 'IMMEDIATE'; + +IMMUTABLE: 'IMMUTABLE'; + +IMPLICIT_P: 'IMPLICIT'; + +INCLUDING: 'INCLUDING'; + +INCREMENT: 'INCREMENT'; + +INDEX: 'INDEX'; + +INDEXES: 'INDEXES'; + +INHERIT: 'INHERIT'; + +INHERITS: 'INHERITS'; + +INLINE_P: 'INLINE'; + +INSENSITIVE: 'INSENSITIVE'; + +INSERT: 'INSERT'; + +INSTEAD: 'INSTEAD'; + +INVOKER: 'INVOKER'; + +ISOLATION: 'ISOLATION'; + +KEY: 'KEY'; + +LABEL: 'LABEL'; + +LANGUAGE: 'LANGUAGE'; + +LARGE_P: 'LARGE'; + +LAST_P: 'LAST'; +//LC_COLLATE : 'LC'_'COLLATE; + +//LC_CTYPE : 'LC'_'CTYPE; + +LEAKPROOF: 'LEAKPROOF'; + +LEVEL: 'LEVEL'; + +LISTEN: 'LISTEN'; + +LOAD: 'LOAD'; + +LOCAL: 'LOCAL'; + +LOCATION: 'LOCATION'; + +LOCK_P: 'LOCK'; + +MAPPING: 'MAPPING'; + +MATCH: 'MATCH'; + +MATCHED: 'MATCHED'; + +MATERIALIZED: 'MATERIALIZED'; + +MAXVALUE: 'MAXVALUE'; + +MERGE: 'MERGE'; + +MINUTE_P: 'MINUTE'; + +MINVALUE: 'MINVALUE'; + +MODE: 'MODE'; + +MONTH_P: 'MONTH'; + +MOVE: 'MOVE'; + +NAME_P: 'NAME'; + +NAMES: 'NAMES'; + +NEXT: 'NEXT'; + +NO: 'NO'; + +NOTHING: 'NOTHING'; + +NOTIFY: 'NOTIFY'; + +NOWAIT: 'NOWAIT'; + +NULLS_P: 'NULLS'; + +OBJECT_P: 'OBJECT'; + +OF: 'OF'; + +OFF: 'OFF'; + +OIDS: 'OIDS'; + +OPERATOR: 'OPERATOR'; + +OPTION: 'OPTION'; + +OPTIONS: 'OPTIONS'; + +OWNED: 'OWNED'; + +OWNER: 'OWNER'; + +PARSER: 'PARSER'; + +PARTIAL: 'PARTIAL'; + +PARTITION: 'PARTITION'; + +PASSING: 'PASSING'; + +PASSWORD: 'PASSWORD'; + +PLANS: 'PLANS'; + +PRECEDING: 'PRECEDING'; + +PREPARE: 'PREPARE'; + +PREPARED: 'PREPARED'; + +PRESERVE: 'PRESERVE'; + +PRIOR: 'PRIOR'; + +PRIVILEGES: 'PRIVILEGES'; + +PROCEDURAL: 'PROCEDURAL'; + +PROCEDURE: 'PROCEDURE'; + +PROGRAM: 'PROGRAM'; + +QUOTE: 'QUOTE'; + +RANGE: 'RANGE'; + +READ: 'READ'; + +REASSIGN: 'REASSIGN'; + +RECHECK: 'RECHECK'; + +RECURSIVE: 'RECURSIVE'; + +REF: 'REF'; + +REFRESH: 'REFRESH'; + +REINDEX: 'REINDEX'; + +RELATIVE_P: 'RELATIVE'; + +RELEASE: 'RELEASE'; + +RENAME: 'RENAME'; + +REPEATABLE: 'REPEATABLE'; + +REPLACE: 'REPLACE'; + +REPLICA: 'REPLICA'; + +RESET: 'RESET'; + +RESTART: 'RESTART'; + +RESTRICT: 'RESTRICT'; + +RETURNS: 'RETURNS'; + +REVOKE: 'REVOKE'; + +ROLE: 'ROLE'; + +ROLLBACK: 'ROLLBACK'; + +ROWS: 'ROWS'; + +RULE: 'RULE'; + +SAVEPOINT: 'SAVEPOINT'; + +SCHEMA: 'SCHEMA'; + +SCROLL: 'SCROLL'; + +SEARCH: 'SEARCH'; + +SECOND_P: 'SECOND'; + +SECURITY: 'SECURITY'; + +SEQUENCE: 'SEQUENCE'; + +SEQUENCES: 'SEQUENCES'; + +SERIALIZABLE: 'SERIALIZABLE'; + +SERVER: 'SERVER'; + +SESSION: 'SESSION'; + +SET: 'SET'; + +SHARE: 'SHARE'; + +SHOW: 'SHOW'; + +SIMPLE: 'SIMPLE'; + +SNAPSHOT: 'SNAPSHOT'; + +STABLE: 'STABLE'; + +STANDALONE_P: 'STANDALONE'; + +START: 'START'; + +STATEMENT: 'STATEMENT'; + +STATISTICS: 'STATISTICS'; + +STDIN: 'STDIN'; + +STDOUT: 'STDOUT'; + +STORAGE: 'STORAGE'; + +STRICT_P: 'STRICT'; + +STRIP_P: 'STRIP'; + +SYSID: 'SYSID'; + +SYSTEM_P: 'SYSTEM'; + +TABLES: 'TABLES'; + +TABLESPACE: 'TABLESPACE'; + +TEMP: 'TEMP'; + +TEMPLATE: 'TEMPLATE'; + +TEMPORARY: 'TEMPORARY'; + +TEXT_P: 'TEXT'; + +TRANSACTION: 'TRANSACTION'; + +TRIGGER: 'TRIGGER'; + +TRUNCATE: 'TRUNCATE'; + +TRUSTED: 'TRUSTED'; + +TYPE_P: 'TYPE'; + +TYPES_P: 'TYPES'; + +UNBOUNDED: 'UNBOUNDED'; + +UNCOMMITTED: 'UNCOMMITTED'; + +UNENCRYPTED: 'UNENCRYPTED'; + +UNKNOWN: 'UNKNOWN'; + +UNLISTEN: 'UNLISTEN'; + +UNLOGGED: 'UNLOGGED'; + +UNTIL: 'UNTIL'; + +UPDATE: 'UPDATE'; + +VACUUM: 'VACUUM'; + +VALID: 'VALID'; + +VALIDATE: 'VALIDATE'; + +VALIDATOR: 'VALIDATOR'; +//VALUE : 'VALUE; + +VARYING: 'VARYING'; + +VERSION_P: 'VERSION'; + +VIEW: 'VIEW'; + +VOLATILE: 'VOLATILE'; + +WHITESPACE_P: 'WHITESPACE'; + +WITHOUT: 'WITHOUT'; + +WORK: 'WORK'; + +WRAPPER: 'WRAPPER'; + +WRITE: 'WRITE'; + +XML_P: 'XML'; + +YEAR_P: 'YEAR'; + +YES_P: 'YES'; + +ZONE: 'ZONE'; +// + +// non-reserved keywords (can not be function or type) + +// + +BETWEEN: 'BETWEEN'; + +BIGINT: 'BIGINT'; + +BIT: 'BIT'; + +BOOLEAN_P: 'BOOLEAN'; + +CHAR_P: 'CHAR'; + +CHARACTER: 'CHARACTER'; + +COALESCE: 'COALESCE'; + +DEC: 'DEC'; + +DECIMAL_P: 'DECIMAL'; + +EXISTS: 'EXISTS'; + +EXTRACT: 'EXTRACT'; + +FLOAT_P: 'FLOAT'; + +GREATEST: 'GREATEST'; + +INOUT: 'INOUT'; + +INT_P: 'INT'; + +INTEGER: 'INTEGER'; + +INTERVAL: 'INTERVAL'; + +LEAST: 'LEAST'; + +NATIONAL: 'NATIONAL'; + +NCHAR: 'NCHAR'; + +NONE: 'NONE'; + +NULLIF: 'NULLIF'; + +NUMERIC: 'NUMERIC'; + +OVERLAY: 'OVERLAY'; + +POSITION: 'POSITION'; + +PRECISION: 'PRECISION'; + +REAL: 'REAL'; + +ROW: 'ROW'; + +SETOF: 'SETOF'; + +SMALLINT: 'SMALLINT'; + +SUBSTRING: 'SUBSTRING'; + +TIME: 'TIME'; + +TIMESTAMP: 'TIMESTAMP'; + +TREAT: 'TREAT'; + +TRIM: 'TRIM'; + +VALUES: 'VALUES'; + +VARCHAR: 'VARCHAR'; + +XMLATTRIBUTES: 'XMLATTRIBUTES'; + +XMLCOMMENT: 'XMLCOMMENT'; + +XMLAGG: 'XMLAGG'; + +XML_IS_WELL_FORMED: 'XML_IS_WELL_FORMED'; + +XML_IS_WELL_FORMED_DOCUMENT: 'XML_IS_WELL_FORMED_DOCUMENT'; + +XML_IS_WELL_FORMED_CONTENT: 'XML_IS_WELL_FORMED_CONTENT'; + +XPATH: 'XPATH'; + +XPATH_EXISTS: 'XPATH_EXISTS'; + +XMLCONCAT: 'XMLCONCAT'; + +XMLELEMENT: 'XMLELEMENT'; + +XMLEXISTS: 'XMLEXISTS'; + +XMLFOREST: 'XMLFOREST'; + +XMLPARSE: 'XMLPARSE'; + +XMLPI: 'XMLPI'; + +XMLROOT: 'XMLROOT'; + +XMLSERIALIZE: 'XMLSERIALIZE'; +//MISSED + +CALL: 'CALL'; + +CURRENT_P: 'CURRENT'; + +ATTACH: 'ATTACH'; + +DETACH: 'DETACH'; + +EXPRESSION: 'EXPRESSION'; + +GENERATED: 'GENERATED'; + +LOGGED: 'LOGGED'; + +STORED: 'STORED'; + +INCLUDE: 'INCLUDE'; + +ROUTINE: 'ROUTINE'; + +TRANSFORM: 'TRANSFORM'; + +IMPORT_P: 'IMPORT'; + +POLICY: 'POLICY'; + +METHOD: 'METHOD'; + +REFERENCING: 'REFERENCING'; + +NEW: 'NEW'; + +OLD: 'OLD'; + +VALUE_P: 'VALUE'; + +SUBSCRIPTION: 'SUBSCRIPTION'; + +PUBLICATION: 'PUBLICATION'; + +OUT_P: 'OUT'; + +END_P: 'END'; + +ROUTINES: 'ROUTINES'; + +SCHEMAS: 'SCHEMAS'; + +PROCEDURES: 'PROCEDURES'; + +INPUT_P: 'INPUT'; + +SUPPORT: 'SUPPORT'; + +PARALLEL: 'PARALLEL'; + +SQL_P: 'SQL'; + +DEPENDS: 'DEPENDS'; + +OVERRIDING: 'OVERRIDING'; + +CONFLICT: 'CONFLICT'; + +SKIP_P: 'SKIP'; + +LOCKED: 'LOCKED'; + +TIES: 'TIES'; + +ROLLUP: 'ROLLUP'; + +CUBE: 'CUBE'; + +GROUPING: 'GROUPING'; + +SETS: 'SETS'; + +TABLESAMPLE: 'TABLESAMPLE'; + +ORDINALITY: 'ORDINALITY'; + +XMLTABLE: 'XMLTABLE'; + +COLUMNS: 'COLUMNS'; + +XMLNAMESPACES: 'XMLNAMESPACES'; + +ROWTYPE: 'ROWTYPE'; + +NORMALIZED: 'NORMALIZED'; + +WITHIN: 'WITHIN'; + +FILTER: 'FILTER'; + +GROUPS: 'GROUPS'; + +OTHERS: 'OTHERS'; + +NFC: 'NFC'; + +NFD: 'NFD'; + +NFKC: 'NFKC'; + +NFKD: 'NFKD'; + +UESCAPE: 'UESCAPE'; + +VIEWS: 'VIEWS'; + +NORMALIZE: 'NORMALIZE'; + +DUMP: 'DUMP'; + +PRINT_STRICT_PARAMS: 'PRINT_STRICT_PARAMS'; + +VARIABLE_CONFLICT: 'VARIABLE_CONFLICT'; + +ERROR: 'ERROR'; + +USE_VARIABLE: 'USE_VARIABLE'; + +USE_COLUMN: 'USE_COLUMN'; + +ALIAS: 'ALIAS'; + +CONSTANT: 'CONSTANT'; + +PERFORM: 'PERFORM'; + +GET: 'GET'; + +DIAGNOSTICS: 'DIAGNOSTICS'; + +STACKED: 'STACKED'; + +ELSIF: 'ELSIF'; + +WHILE: 'WHILE'; + +REVERSE: 'REVERSE'; + +FOREACH: 'FOREACH'; + +SLICE: 'SLICE'; + +EXIT: 'EXIT'; + +RETURN: 'RETURN'; + +QUERY: 'QUERY'; + +RAISE: 'RAISE'; + +SQLSTATE: 'SQLSTATE'; + +DEBUG: 'DEBUG'; + +LOG: 'LOG'; + +INFO: 'INFO'; + +NOTICE: 'NOTICE'; + +WARNING: 'WARNING'; + +EXCEPTION: 'EXCEPTION'; + +ASSERT: 'ASSERT'; + +LOOP: 'LOOP'; + +OPEN: 'OPEN'; +// + +// IDENTIFIERS (4.1.1) + +// + +ABS: 'ABS'; + +CBRT: 'CBRT'; + +CEIL: 'CEIL'; + +CEILING: 'CEILING'; + +DEGREES: 'DEGREES'; + +DIV: 'DIV'; + +EXP: 'EXP'; + +FACTORIAL: 'FACTORIAL'; + +FLOOR: 'FLOOR'; + +GCD: 'GCD'; + +LCM: 'LCM'; + +LN: 'LN'; + +LOG10: 'LOG10'; + +MIN_SCALE: 'MIN_SCALE'; + +MOD: 'MOD'; + +PI: 'PI'; + +POWER: 'POWER'; + +RADIANS: 'RADIANS'; + +ROUND: 'ROUND'; + +SCALE: 'SCALE'; + +SIGN: 'SIGN'; + +SQRT: 'SQRT'; + +TRIM_SCALE: 'TRIM_SCALE'; + +TRUNC: 'TRUNC'; + +WIDTH_BUCKET: 'WIDTH_BUCKET'; + +RANDOM: 'RANDOM'; + +SETSEED: 'SETSEED'; + +ACOS: 'ACOS'; + +ACOSD: 'ACOSD'; + +ASIN: 'ASIN'; + +ASIND: 'ASIND'; + +ATAN: 'ATAN'; + +ATAND: 'ATAND'; + +ATAN2: 'ATAN2'; + +ATAN2D: 'ATAN2D'; + +COS: 'COS'; + +COSD: 'COSD'; + +COT: 'COT'; + +COTD: 'COTD'; + +SIN: 'SIN'; + +SIND: 'SIND'; + +TAN: 'TAN'; + +TAND: 'TAND'; + +SINH: 'SINH'; + +COSH: 'COSH'; + +TANH: 'TANH'; + +ASINH: 'ASINH'; + +ACOSH: 'ACOSH'; + +ATANH: 'ATANH'; + +BIT_LENGTH: 'BIT_LENGTH'; + +CHAR_LENGTH: 'CHAR_LENGTH'; + +CHARACTER_LENGTH: 'CHARACTER_LENGTH'; + +LOWER: 'LOWER'; + +OCTET_LENGTH: 'OCTET_LENGTH'; + +UPPER: 'UPPER'; + +ASCII: 'ASCII'; + +BTRIM: 'BTRIM'; + +CHR: 'CHR'; + +CONCAT: 'CONCAT'; + +CONCAT_WS: 'CONCAT_WS'; + +FORMAT: 'FORMAT'; + +INITCAP: 'INITCAP'; + +LENGTH: 'LENGTH'; + +LPAD: 'LPAD'; + +LTRIM: 'LTRIM'; + +MD5: 'MD5'; + +PARSE_IDENT: 'PARSE_IDENT'; + +PG_CLIENT_ENCODING: 'PG_CLIENT_ENCODING'; + +QUOTE_IDENT: 'QUOTE_IDENT'; + +QUOTE_LITERAL: 'QUOTE_LITERAL'; + +QUOTE_NULLABLE: 'QUOTE_NULLABLE'; + +REGEXP_COUNT: 'REGEXP_COUNT'; + +REGEXP_INSTR: 'REGEXP_INSTR'; + +REGEXP_LIKE: 'REGEXP_LIKE'; + +REGEXP_MATCH: 'REGEXP_MATCH'; + +REGEXP_MATCHES: 'REGEXP_MATCHES'; + +REGEXP_REPLACE: 'REGEXP_REPLACE'; + +REGEXP_SPLIT_TO_ARRAY: 'REGEXP_SPLIT_TO_ARRAY'; + +REGEXP_SPLIT_TO_TABLE: 'REGEXP_SPLIT_TO_TABLE'; + +REGEXP_SUBSTR: 'REGEXP_SUBSTR'; + +REPEAT: 'REPEAT'; + +RPAD: 'RPAD'; + +RTRIM: 'RTRIM'; + +SPLIT_PART: 'SPLIT_PART'; + +STARTS_WITH: 'STARTS_WITH'; + +STRING_TO_ARRAY: 'STRING_TO_ARRAY'; + +STRING_TO_TABLE: 'STRING_TO_TABLE'; + +STRPOS: 'STRPOS'; + +SUBSTR: 'SUBSTR'; + +TO_ASCII: 'TO_ASCII'; + +TO_HEX: 'TO_HEX'; + +TRANSLATE: 'TRANSLATE'; + +UNISTR: 'UNISTR'; + +AGE: 'AGE'; + +CLOCK_TIMESTAMP: 'CLOCK_TIMESTAMP'; + +DATE_BIN: 'DATE_BIN'; + +DATE_PART: 'DATE_PART'; + +DATE_TRUNC: 'DATE_TRUNC'; + +ISFINITE: 'ISFINITE'; + +JUSTIFY_DAYS: 'JUSTIFY_DAYS'; + +JUSTIFY_HOURS: 'JUSTIFY_HOURS'; + +JUSTIFY_INTERVAL: 'JUSTIFY_INTERVAL'; + +MAKE_DATE: 'MAKE_DATE'; + +MAKE_INTERVAL: 'MAKE_INTERVAL'; + +MAKE_TIME: 'MAKE_TIME'; + +MAKE_TIMESTAMP: 'MAKE_TIMESTAMP'; + +MAKE_TIMESTAMPTZ: 'MAKE_TIMESTAMPTZ'; + +NOW: 'NOW'; + +STATEMENT_TIMESTAMP: 'STATEMENT_TIMESTAMP'; + +TIMEOFDAY: 'TIMEOFDAY'; + +TRANSACTION_TIMESTAMP: 'TRANSACTION_TIMESTAMP'; + +TO_TIMESTAMP: 'TO_TIMESTAMP'; + +TO_CHAR: 'TO_CHAR'; + +TO_DATE: 'TO_DATE'; + +TO_NUMBER: 'TO_NUMBER'; + +Identifier: IdentifierStartChar IdentifierChar*; + +fragment IdentifierStartChar options { + caseInsensitive = false; +}: // these are the valid identifier start characters below 0x7F + [a-zA-Z_] + | // these are the valid characters from 0x80 to 0xFF + [\u00AA\u00B5\u00BA\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u00FF] + | // these are the letters above 0xFF which only need a single UTF-16 code unit + [\u0100-\uD7FF\uE000-\uFFFF] {charIsLetter()}? + | // letters which require multiple UTF-16 code units + [\uD800-\uDBFF] [\uDC00-\uDFFF] { + CheckIfUtf32Letter() + }? +; + +fragment IdentifierChar: StrictIdentifierChar | '$'; + +fragment StrictIdentifierChar: IdentifierStartChar | [0-9]; +/* Quoted Identifiers + * + * These are divided into four separate tokens, allowing distinction of valid quoted identifiers from invalid quoted + * identifiers without sacrificing the ability of the lexer to reliably recover from lexical errors in the input. + */ + +QuotedIdentifier: UnterminatedQuotedIdentifier '"'; +// This is a quoted identifier which only contains valid characters but is not terminated + +UnterminatedQuotedIdentifier: '"' ('""' | ~ [\u0000"])*; +// This is a quoted identifier which is terminated but contains a \u0000 character + +InvalidQuotedIdentifier: InvalidUnterminatedQuotedIdentifier '"'; +// This is a quoted identifier which is unterminated and contains a \u0000 character + +InvalidUnterminatedQuotedIdentifier: '"' ('""' | ~ '"')*; +/* Unicode Quoted Identifiers + * + * These are divided into four separate tokens, allowing distinction of valid Unicode quoted identifiers from invalid + * Unicode quoted identifiers without sacrificing the ability of the lexer to reliably recover from lexical errors in + * the input. Note that escape sequences are never checked as part of this determination due to the ability of users + * to change the escape character with a UESCAPE clause following the Unicode quoted identifier. + * + * TODO: these rules assume "" is still a valid escape sequence within a Unicode quoted identifier. + */ + +UnicodeQuotedIdentifier: 'U' '&' QuotedIdentifier; +// This is a Unicode quoted identifier which only contains valid characters but is not terminated + +UnterminatedUnicodeQuotedIdentifier: 'U' '&' UnterminatedQuotedIdentifier; +// This is a Unicode quoted identifier which is terminated but contains a \u0000 character + +InvalidUnicodeQuotedIdentifier: 'U' '&' InvalidQuotedIdentifier; +// This is a Unicode quoted identifier which is unterminated and contains a \u0000 character + +InvalidUnterminatedUnicodeQuotedIdentifier: 'U' '&' InvalidUnterminatedQuotedIdentifier; +// + +// CONSTANTS (4.1.2) + +// + +// String Constants (4.1.2.1) + +StringConstant: UnterminatedStringConstant '\''; + +UnterminatedStringConstant: '\'' ('\'\'' | ~ '\'')*; +// String Constants with C-style Escapes (4.1.2.2) + +BeginEscapeStringConstant: 'E' '\'' -> more, pushMode (EscapeStringConstantMode); +// String Constants with Unicode Escapes (4.1.2.3) + +// + +// Note that escape sequences are never checked as part of this token due to the ability of users to change the escape + +// character with a UESCAPE clause following the Unicode string constant. + +// + +// TODO: these rules assume '' is still a valid escape sequence within a Unicode string constant. + +UnicodeEscapeStringConstant: UnterminatedUnicodeEscapeStringConstant '\''; + +UnterminatedUnicodeEscapeStringConstant: 'U' '&' UnterminatedStringConstant; +// Dollar-quoted String Constants (4.1.2.4) + +BeginDollarStringConstant: '$' Tag? '$' {pushTag();} -> pushMode (DollarQuotedStringMode); +/* "The tag, if any, of a dollar-quoted string follows the same rules as an + * unquoted identifier, except that it cannot contain a dollar sign." + */ + +fragment Tag: IdentifierStartChar StrictIdentifierChar*; +// Bit-strings Constants (4.1.2.5) + +BinaryStringConstant: UnterminatedBinaryStringConstant '\''; + +UnterminatedBinaryStringConstant: 'B' '\'' [01]*; + +InvalidBinaryStringConstant: InvalidUnterminatedBinaryStringConstant '\''; + +InvalidUnterminatedBinaryStringConstant: 'B' UnterminatedStringConstant; + +HexadecimalStringConstant: UnterminatedHexadecimalStringConstant '\''; + +UnterminatedHexadecimalStringConstant: 'X' '\'' [0-9A-F]*; + +InvalidHexadecimalStringConstant: InvalidUnterminatedHexadecimalStringConstant '\''; + +InvalidUnterminatedHexadecimalStringConstant: 'X' UnterminatedStringConstant; +// Numeric Constants (4.1.2.6) + +Integral: Digits; + +NumericFail: Digits '..' {HandleNumericFail();}; + +Numeric: + Digits '.' Digits? /*? replaced with + to solve problem with DOT_DOT .. but this surely must be rewriten */ ( + 'E' [+-]? Digits + )? + | '.' Digits ('E' [+-]? Digits)? + | Digits 'E' [+-]? Digits +; + +fragment Digits: [0-9]+; + +PLSQLVARIABLENAME: ':' [A-Z_] [A-Z_0-9$]*; + +PLSQLIDENTIFIER: ':"' ('\\' . | '""' | ~ ('"' | '\\'))* '"'; +// + +// WHITESPACE (4.1) + +// + +Whitespace: [ \t]+ -> channel (HIDDEN); + +Newline: ('\r' '\n'? | '\n') -> channel (HIDDEN); +// + +// COMMENTS (4.1.5) + +// + +LineComment: '--' ~ [\r\n]* -> channel (HIDDEN); + +BlockComment: + ('/*' ('/'* BlockComment | ~ [/*] | '/'+ ~ [/*] | '*'+ ~ [/*])* '*'* '*/') -> channel (HIDDEN) +; + +UnterminatedBlockComment: + '/*' ( + '/'* BlockComment + | // these characters are not part of special sequences in a block comment + ~ [/*] + | // handle / or * characters which are not part of /* or */ and do not appear at the end of the file + ('/'+ ~ [/*] | '*'+ ~ [/*]) + )* + // Handle the case of / or * characters at the end of the file, or a nested unterminated block comment + ('/'+ | '*'+ | '/'* UnterminatedBlockComment)? + // Optional assertion to make sure this rule is working as intended + { + UnterminatedBlockCommentDebugAssert(); + } +; +// + +// META-COMMANDS + +// + +// http://www.postgresql.org/docs/9.3/static/app-psql.html + +MetaCommand: '\\' (~ [\r\n\\"] | '"' ~ [\r\n"]* '"')* ('"' ~ [\r\n"]*)?; + +EndMetaCommand: '\\\\'; +// + +// ERROR + +// + +// Any character which does not match one of the above rules will appear in the token stream as an ErrorCharacter token. + +// This ensures the lexer itself will never encounter a syntax error, so all error handling may be performed by the + +// parser. + +ErrorCharacter: .; + +mode EscapeStringConstantMode; +EscapeStringConstant: EscapeStringText '\'' -> mode (AfterEscapeStringConstantMode); + +UnterminatedEscapeStringConstant: + EscapeStringText + // Handle a final unmatched \ character appearing at the end of the file + '\\'? EOF +; + +fragment EscapeStringText options { + caseInsensitive = false; +}: + ( + '\'\'' + | '\\' ( + // two-digit hex escapes are still valid when treated as single-digit escapes + 'x' [0-9a-fA-F] + | 'u' [0-9a-fA-F] [0-9a-fA-F] [0-9a-fA-F] [0-9a-fA-F] + | 'U' [0-9a-fA-F] [0-9a-fA-F] [0-9a-fA-F] [0-9a-fA-F] [0-9a-fA-F] [0-9a-fA-F] [0-9a-fA-F] [0-9a-fA-F] + | // Any character other than the Unicode escapes can follow a backslash. Some have special meaning, + // but that doesn't affect the syntax. + ~ [xuU] + ) + | ~ ['\\] + )* +; + +InvalidEscapeStringConstant: InvalidEscapeStringText '\'' -> mode (AfterEscapeStringConstantMode); + +InvalidUnterminatedEscapeStringConstant: + InvalidEscapeStringText + // Handle a final unmatched \ character appearing at the end of the file + '\\'? EOF +; + +fragment InvalidEscapeStringText: ('\'\'' | '\\' . | ~ ['\\])*; + +mode AfterEscapeStringConstantMode; +AfterEscapeStringConstantMode_Whitespace: Whitespace -> type (Whitespace), channel (HIDDEN); + +AfterEscapeStringConstantMode_Newline: + Newline -> type (Newline), channel (HIDDEN), mode (AfterEscapeStringConstantWithNewlineMode) +; + +AfterEscapeStringConstantMode_NotContinued: + {} // intentionally empty + -> skip, popMode +; + +mode AfterEscapeStringConstantWithNewlineMode; +AfterEscapeStringConstantWithNewlineMode_Whitespace: + Whitespace -> type (Whitespace), channel (HIDDEN) +; + +AfterEscapeStringConstantWithNewlineMode_Newline: Newline -> type (Newline), channel (HIDDEN); + +AfterEscapeStringConstantWithNewlineMode_Continued: + '\'' -> more, mode (EscapeStringConstantMode) +; + +AfterEscapeStringConstantWithNewlineMode_NotContinued: + {} // intentionally empty + -> skip, popMode +; + +mode DollarQuotedStringMode; +DollarText: + ~ '$'+ + //| '$'([0-9])+ + | // this alternative improves the efficiency of handling $ characters within a dollar-quoted string which are + + // not part of the ending tag. + '$' ~ '$'* +; + +EndDollarStringConstant: ('$' Tag? '$') {isTag()}? {popTag();} -> popMode; diff --git a/incubator/binding-pgsql/src/main/antlr4/io/aklivity/zilla/runtime/binding/pgsql/parser/PostgreSQLParser.g4 b/incubator/binding-pgsql/src/main/antlr4/io/aklivity/zilla/runtime/binding/pgsql/parser/PostgreSQLParser.g4 new file mode 100644 index 0000000000..cb8b8b3c2e --- /dev/null +++ b/incubator/binding-pgsql/src/main/antlr4/io/aklivity/zilla/runtime/binding/pgsql/parser/PostgreSQLParser.g4 @@ -0,0 +1,5575 @@ +/* + * Copyright 2021-2023 Aklivity Inc + * + * Licensed under the Aklivity Community License (the "License"); you may not use + * this file except in compliance with the License. You may obtain a copy of the + * License at + * + * https://www.aklivity.io/aklivity-community-license/ + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OF ANY KIND, either express or implied. See the License for the + * specific language governing permissions and limitations under the License. + */ + +parser grammar PostgreSQLParser; + +options { + tokenVocab = PostgreSQLLexer; + superClass = PostgreSQLParserBase; +} + +@header { +} + +@members { +} + +root + : stmtblock EOF + ; + +plsqlroot + : pl_function + ; + +stmtblock + : stmtmulti + ; + +stmtmulti + : (stmt SEMI?)* + ; + +stmt + : altereventtrigstmt + | altercollationstmt + | alterdatabasestmt + | alterdatabasesetstmt + | alterdefaultprivilegesstmt + | alterdomainstmt + | alterenumstmt + | alterextensionstmt + | alterextensioncontentsstmt + | alterfdwstmt + | alterforeignserverstmt + | alterfunctionstmt + | altergroupstmt + | alterobjectdependsstmt + | alterobjectschemastmt + | alterownerstmt + | alteroperatorstmt + | altertypestmt + | alterpolicystmt + | alterseqstmt + | altersystemstmt + | altertablestmt + | altertblspcstmt + | altercompositetypestmt + | alterpublicationstmt + | alterrolesetstmt + | alterrolestmt + | altersubscriptionstmt + | alterstatsstmt + | altertsconfigurationstmt + | altertsdictionarystmt + | alterusermappingstmt + | analyzestmt + | callstmt + | checkpointstmt + | closeportalstmt + | clusterstmt + | commentstmt + | constraintssetstmt + | copystmt + | createamstmt + | createasstmt + | createassertionstmt + | createcaststmt + | createconversionstmt + | createdomainstmt + | createextensionstmt + | createfdwstmt + | createforeignserverstmt + | createforeigntablestmt + | createfunctionstmt + | creategroupstmt + | creatematviewstmt + | createopclassstmt + | createopfamilystmt + | createpublicationstmt + | alteropfamilystmt + | createpolicystmt + | createplangstmt + | createschemastmt + | createseqstmt + | createstmt + | createsubscriptionstmt + | createstatsstmt + | createtablespacestmt + | createtransformstmt + | createtrigstmt + | createeventtrigstmt + | createrolestmt + | createuserstmt + | createusermappingstmt + | createdbstmt + | deallocatestmt + | declarecursorstmt + | definestmt + | deletestmt + | discardstmt + | dostmt + | dropcaststmt + | dropopclassstmt + | dropopfamilystmt + | dropownedstmt + | dropstmt + | dropsubscriptionstmt + | droptablespacestmt + | droptransformstmt + | droprolestmt + | dropusermappingstmt + | dropdbstmt + | executestmt + | explainstmt + | fetchstmt + | grantstmt + | grantrolestmt + | importforeignschemastmt + | indexstmt + | insertstmt + | mergestmt + | listenstmt + | refreshmatviewstmt + | loadstmt + | lockstmt + | notifystmt + | preparestmt + | reassignownedstmt + | reindexstmt + | removeaggrstmt + | removefuncstmt + | removeoperstmt + | renamestmt + | revokestmt + | revokerolestmt + | rulestmt + | seclabelstmt + | selectstmt + | transactionstmt + | truncatestmt + | unlistenstmt + | updatestmt + | vacuumstmt + | variableresetstmt + | variablesetstmt + | variableshowstmt + | viewstmt + | plsqlconsolecommand + ; + +plsqlconsolecommand + : MetaCommand EndMetaCommand? + ; + +callstmt + : CALL func_application + ; + +createrolestmt + : CREATE ROLE roleid opt_with optrolelist + ; + +opt_with + : WITH + //| WITH_LA + | + ; + +optrolelist + : createoptroleelem* + ; + +alteroptrolelist + : alteroptroleelem* + ; + +alteroptroleelem + : PASSWORD (sconst | NULL_P) + | (ENCRYPTED | UNENCRYPTED) PASSWORD sconst + | INHERIT + | CONNECTION LIMIT signediconst + | VALID UNTIL sconst + | USER role_list + | identifier + ; + +createoptroleelem + : alteroptroleelem + | SYSID iconst + | ADMIN role_list + | ROLE role_list + | IN_P (ROLE | GROUP_P) role_list + ; + +createuserstmt + : CREATE USER roleid opt_with optrolelist + ; + +alterrolestmt + : ALTER (ROLE | USER) rolespec opt_with alteroptrolelist + ; + +opt_in_database + : + | IN_P DATABASE name + ; + +alterrolesetstmt + : ALTER (ROLE | USER) ALL? rolespec opt_in_database setresetclause + ; + +droprolestmt + : DROP (ROLE | USER | GROUP_P) (IF_P EXISTS)? role_list + ; + +creategroupstmt + : CREATE GROUP_P roleid opt_with optrolelist + ; + +altergroupstmt + : ALTER GROUP_P rolespec add_drop USER role_list + ; + +add_drop + : ADD_P + | DROP + ; + +createschemastmt + : CREATE SCHEMA (IF_P NOT EXISTS)? (optschemaname AUTHORIZATION rolespec | colid) optschemaeltlist + ; + +optschemaname + : colid + | + ; + +optschemaeltlist + : schema_stmt* + ; + +schema_stmt + : createstmt + | indexstmt + | createseqstmt + | createtrigstmt + | grantstmt + | viewstmt + ; + +variablesetstmt + : SET (LOCAL | SESSION)? set_rest + ; + +set_rest + : TRANSACTION transaction_mode_list + | SESSION CHARACTERISTICS AS TRANSACTION transaction_mode_list + | set_rest_more + ; + +generic_set + : var_name (TO | EQUAL) var_list + ; + +set_rest_more + : generic_set + | var_name FROM CURRENT_P + | TIME ZONE zone_value + | CATALOG sconst + | SCHEMA sconst + | NAMES opt_encoding + | ROLE nonreservedword_or_sconst + | SESSION AUTHORIZATION nonreservedword_or_sconst + | XML_P OPTION document_or_content + | TRANSACTION SNAPSHOT sconst + ; + +var_name + : colid (DOT colid)* + ; + +var_list + : var_value (COMMA var_value)* + ; + +var_value + : opt_boolean_or_string + | numericonly + ; + +iso_level + : READ (UNCOMMITTED | COMMITTED) + | REPEATABLE READ + | SERIALIZABLE + ; + +opt_boolean_or_string + : TRUE_P + | FALSE_P + | ON + | nonreservedword_or_sconst + ; + +zone_value + : sconst + | identifier + | constinterval sconst opt_interval + | constinterval OPEN_PAREN iconst CLOSE_PAREN sconst + | numericonly + | DEFAULT + | LOCAL + ; + +opt_encoding + : sconst + | DEFAULT + | + ; + +nonreservedword_or_sconst + : nonreservedword + | sconst + ; + +variableresetstmt + : RESET reset_rest + ; + +reset_rest + : generic_reset + | TIME ZONE + | TRANSACTION ISOLATION LEVEL + | SESSION AUTHORIZATION + ; + +generic_reset + : var_name + | ALL + ; + +setresetclause + : SET set_rest + | variableresetstmt + ; + +functionsetresetclause + : SET set_rest_more + | variableresetstmt + ; + +variableshowstmt + : SHOW (var_name | TIME ZONE | TRANSACTION ISOLATION LEVEL | SESSION AUTHORIZATION | ALL) + ; + +constraintssetstmt + : SET CONSTRAINTS constraints_set_list constraints_set_mode + ; + +constraints_set_list + : ALL + | qualified_name_list + ; + +constraints_set_mode + : DEFERRED + | IMMEDIATE + ; + +checkpointstmt + : CHECKPOINT + ; + +discardstmt + : DISCARD (ALL | TEMP | TEMPORARY | PLANS | SEQUENCES) + ; + +altertablestmt + : ALTER TABLE (IF_P EXISTS)? relation_expr (alter_table_cmds | partition_cmd) + | ALTER TABLE ALL IN_P TABLESPACE name (OWNED BY role_list)? SET TABLESPACE name opt_nowait + | ALTER INDEX (IF_P EXISTS)? qualified_name (alter_table_cmds | index_partition_cmd) + | ALTER INDEX ALL IN_P TABLESPACE name (OWNED BY role_list)? SET TABLESPACE name opt_nowait + | ALTER SEQUENCE (IF_P EXISTS)? qualified_name alter_table_cmds + | ALTER VIEW (IF_P EXISTS)? qualified_name alter_table_cmds + | ALTER MATERIALIZED VIEW (IF_P EXISTS)? qualified_name alter_table_cmds + | ALTER MATERIALIZED VIEW ALL IN_P TABLESPACE name (OWNED BY role_list)? SET TABLESPACE name opt_nowait + | ALTER FOREIGN TABLE (IF_P EXISTS)? relation_expr alter_table_cmds + ; + +alter_table_cmds + : alter_table_cmd (COMMA alter_table_cmd)* + ; + +partition_cmd + : ATTACH PARTITION qualified_name partitionboundspec + | DETACH PARTITION qualified_name + ; + +index_partition_cmd + : ATTACH PARTITION qualified_name + ; + +alter_table_cmd + : ADD_P columnDef + | ADD_P IF_P NOT EXISTS columnDef + | ADD_P COLUMN columnDef + | ADD_P COLUMN IF_P NOT EXISTS columnDef + | ALTER opt_column colid alter_column_default + | ALTER opt_column colid DROP NOT NULL_P + | ALTER opt_column colid SET NOT NULL_P + | ALTER opt_column colid DROP EXPRESSION + | ALTER opt_column colid DROP EXPRESSION IF_P EXISTS + | ALTER opt_column colid SET STATISTICS signediconst + | ALTER opt_column iconst SET STATISTICS signediconst + | ALTER opt_column colid SET reloptions + | ALTER opt_column colid RESET reloptions + | ALTER opt_column colid SET STORAGE colid + | ALTER opt_column colid ADD_P GENERATED generated_when AS IDENTITY_P optparenthesizedseqoptlist + | ALTER opt_column colid alter_identity_column_option_list + | ALTER opt_column colid DROP IDENTITY_P + | ALTER opt_column colid DROP IDENTITY_P IF_P EXISTS + | DROP opt_column IF_P EXISTS colid opt_drop_behavior + | DROP opt_column colid opt_drop_behavior + | ALTER opt_column colid opt_set_data TYPE_P typename opt_collate_clause alter_using + | ALTER opt_column colid alter_generic_options + | ADD_P tableconstraint + | ALTER CONSTRAINT name constraintattributespec + | VALIDATE CONSTRAINT name + | DROP CONSTRAINT IF_P EXISTS name opt_drop_behavior + | DROP CONSTRAINT name opt_drop_behavior + | SET WITHOUT OIDS + | CLUSTER ON name + | SET WITHOUT CLUSTER + | SET LOGGED + | SET UNLOGGED + | ENABLE_P TRIGGER name + | ENABLE_P ALWAYS TRIGGER name + | ENABLE_P REPLICA TRIGGER name + | ENABLE_P TRIGGER ALL + | ENABLE_P TRIGGER USER + | DISABLE_P TRIGGER name + | DISABLE_P TRIGGER ALL + | DISABLE_P TRIGGER USER + | ENABLE_P RULE name + | ENABLE_P ALWAYS RULE name + | ENABLE_P REPLICA RULE name + | DISABLE_P RULE name + | INHERIT qualified_name + | NO INHERIT qualified_name + | OF any_name + | NOT OF + | OWNER TO rolespec + | SET TABLESPACE name + | SET reloptions + | RESET reloptions + | REPLICA IDENTITY_P replica_identity + | ENABLE_P ROW LEVEL SECURITY + | DISABLE_P ROW LEVEL SECURITY + | FORCE ROW LEVEL SECURITY + | NO FORCE ROW LEVEL SECURITY + | alter_generic_options + ; + +alter_column_default + : SET DEFAULT a_expr + | DROP DEFAULT + ; + +opt_drop_behavior + : CASCADE + | RESTRICT + | + ; + +opt_collate_clause + : COLLATE any_name + | + ; + +alter_using + : USING a_expr + | + ; + +replica_identity + : NOTHING + | FULL + | DEFAULT + | USING INDEX name + ; + +reloptions + : OPEN_PAREN reloption_list CLOSE_PAREN + ; + +opt_reloptions + : WITH reloptions + | + ; + +reloption_list + : reloption_elem (COMMA reloption_elem)* + ; + +reloption_elem + : collabel (EQUAL def_arg | DOT collabel (EQUAL def_arg)?)? + ; + +alter_identity_column_option_list + : alter_identity_column_option+ + ; + +alter_identity_column_option + : RESTART (opt_with numericonly)? + | SET (seqoptelem | GENERATED generated_when) + ; + +partitionboundspec + : FOR VALUES WITH OPEN_PAREN hash_partbound CLOSE_PAREN + | FOR VALUES IN_P OPEN_PAREN expr_list CLOSE_PAREN + | FOR VALUES FROM OPEN_PAREN expr_list CLOSE_PAREN TO OPEN_PAREN expr_list CLOSE_PAREN + | DEFAULT + ; + +hash_partbound_elem + : nonreservedword iconst + ; + +hash_partbound + : hash_partbound_elem (COMMA hash_partbound_elem)* + ; + +altercompositetypestmt + : ALTER TYPE_P any_name alter_type_cmds + ; + +alter_type_cmds + : alter_type_cmd (COMMA alter_type_cmd)* + ; + +alter_type_cmd + : ADD_P ATTRIBUTE tablefuncelement opt_drop_behavior + | DROP ATTRIBUTE (IF_P EXISTS)? colid opt_drop_behavior + | ALTER ATTRIBUTE colid opt_set_data TYPE_P typename opt_collate_clause opt_drop_behavior + ; + +closeportalstmt + : CLOSE (cursor_name | ALL) + ; + +copystmt + : COPY opt_binary qualified_name opt_column_list copy_from opt_program copy_file_name copy_delimiter opt_with copy_options where_clause + | COPY OPEN_PAREN preparablestmt CLOSE_PAREN TO opt_program copy_file_name opt_with copy_options + ; + +copy_from + : FROM + | TO + ; + +opt_program + : PROGRAM + | + ; + +copy_file_name + : sconst + | STDIN + | STDOUT + ; + +copy_options + : copy_opt_list + | OPEN_PAREN copy_generic_opt_list CLOSE_PAREN + ; + +copy_opt_list + : copy_opt_item* + ; + +copy_opt_item + : BINARY + | FREEZE + | DELIMITER opt_as sconst + | NULL_P opt_as sconst + | CSV + | HEADER_P + | QUOTE opt_as sconst + | ESCAPE opt_as sconst + | FORCE QUOTE columnlist + | FORCE QUOTE STAR + | FORCE NOT NULL_P columnlist + | FORCE NULL_P columnlist + | ENCODING sconst + ; + +opt_binary + : BINARY + | + ; + +copy_delimiter + : opt_using DELIMITERS sconst + | + ; + +opt_using + : USING + | + ; + +copy_generic_opt_list + : copy_generic_opt_elem (COMMA copy_generic_opt_elem)* + ; + +copy_generic_opt_elem + : collabel copy_generic_opt_arg + ; + +copy_generic_opt_arg + : opt_boolean_or_string + | numericonly + | STAR + | OPEN_PAREN copy_generic_opt_arg_list CLOSE_PAREN + | + ; + +copy_generic_opt_arg_list + : copy_generic_opt_arg_list_item (COMMA copy_generic_opt_arg_list_item)* + ; + +copy_generic_opt_arg_list_item + : opt_boolean_or_string + ; + +createstmt + : CREATE opttemp TABLE (IF_P NOT EXISTS)? qualified_name ( + OPEN_PAREN opttableelementlist CLOSE_PAREN optinherit optpartitionspec table_access_method_clause optwith oncommitoption opttablespace + | OF any_name opttypedtableelementlist optpartitionspec table_access_method_clause optwith oncommitoption opttablespace + | PARTITION OF qualified_name opttypedtableelementlist partitionboundspec optpartitionspec table_access_method_clause optwith oncommitoption + opttablespace + ) + ; + +opttemp + : TEMPORARY + | TEMP + | LOCAL (TEMPORARY | TEMP) + | GLOBAL (TEMPORARY | TEMP) + | UNLOGGED + | + ; + +opttableelementlist + : tableelementlist + | + ; + +opttypedtableelementlist + : OPEN_PAREN typedtableelementlist CLOSE_PAREN + | + ; + +tableelementlist + : tableelement (COMMA tableelement)* + ; + +typedtableelementlist + : typedtableelement (COMMA typedtableelement)* + ; + +tableelement + : tableconstraint + | tablelikeclause + | columnDef + ; + +typedtableelement + : columnOptions + | tableconstraint + ; + +columnDef + : colid typename create_generic_options colquallist + ; + +columnOptions + : colid (WITH OPTIONS)? colquallist + ; + +colquallist + : colconstraint* + ; + +colconstraint + : CONSTRAINT name colconstraintelem + | colconstraintelem + | constraintattr + | COLLATE any_name + ; + +colconstraintelem + : NOT NULL_P + | NULL_P + | UNIQUE opt_definition optconstablespace + | PRIMARY KEY opt_definition optconstablespace + | CHECK OPEN_PAREN a_expr CLOSE_PAREN opt_no_inherit + | DEFAULT b_expr + | GENERATED generated_when AS ( + IDENTITY_P optparenthesizedseqoptlist + | OPEN_PAREN a_expr CLOSE_PAREN STORED + ) + | REFERENCES qualified_name opt_column_list key_match key_actions + ; + +generated_when + : ALWAYS + | BY DEFAULT + ; + +constraintattr + : DEFERRABLE + | NOT DEFERRABLE + | INITIALLY (DEFERRED | IMMEDIATE) + ; + +tablelikeclause + : LIKE qualified_name tablelikeoptionlist + ; + +tablelikeoptionlist + : ((INCLUDING | EXCLUDING) tablelikeoption)* + ; + +tablelikeoption + : COMMENTS + | CONSTRAINTS + | DEFAULTS + | IDENTITY_P + | GENERATED + | INDEXES + | STATISTICS + | STORAGE + | ALL + ; + +tableconstraint + : CONSTRAINT name constraintelem + | constraintelem + ; + +constraintelem + : CHECK OPEN_PAREN a_expr CLOSE_PAREN constraintattributespec + | UNIQUE ( + OPEN_PAREN columnlist CLOSE_PAREN opt_c_include opt_definition optconstablespace constraintattributespec + | existingindex constraintattributespec + ) + | PRIMARY KEY ( + OPEN_PAREN columnlist CLOSE_PAREN opt_c_include opt_definition optconstablespace constraintattributespec + | existingindex constraintattributespec + ) + | EXCLUDE access_method_clause OPEN_PAREN exclusionconstraintlist CLOSE_PAREN opt_c_include opt_definition optconstablespace exclusionwhereclause + constraintattributespec + | FOREIGN KEY OPEN_PAREN columnlist CLOSE_PAREN REFERENCES qualified_name opt_column_list key_match key_actions constraintattributespec + ; + +opt_no_inherit + : NO INHERIT + | + ; + +opt_column_list + : OPEN_PAREN columnlist CLOSE_PAREN + | + ; + +columnlist + : columnElem (COMMA columnElem)* + ; + +columnElem + : colid + ; + +opt_c_include + : INCLUDE OPEN_PAREN columnlist CLOSE_PAREN + | + ; + +key_match + : MATCH (FULL | PARTIAL | SIMPLE) + | + ; + +exclusionconstraintlist + : exclusionconstraintelem (COMMA exclusionconstraintelem)* + ; + +exclusionconstraintelem + : index_elem WITH (any_operator | OPERATOR OPEN_PAREN any_operator CLOSE_PAREN) + ; + +exclusionwhereclause + : WHERE OPEN_PAREN a_expr CLOSE_PAREN + | + ; + +key_actions + : key_update + | key_delete + | key_update key_delete + | key_delete key_update + | + ; + +key_update + : ON UPDATE key_action + ; + +key_delete + : ON DELETE_P key_action + ; + +key_action + : NO ACTION + | RESTRICT + | CASCADE + | SET (NULL_P | DEFAULT) + ; + +optinherit + : INHERITS OPEN_PAREN qualified_name_list CLOSE_PAREN + | + ; + +optpartitionspec + : partitionspec + | + ; + +partitionspec + : PARTITION BY colid OPEN_PAREN part_params CLOSE_PAREN + ; + +part_params + : part_elem (COMMA part_elem)* + ; + +part_elem + : colid opt_collate opt_class + | func_expr_windowless opt_collate opt_class + | OPEN_PAREN a_expr CLOSE_PAREN opt_collate opt_class + ; + +table_access_method_clause + : USING name + | + ; + +optwith + : WITH reloptions + | WITHOUT OIDS + | + ; + +oncommitoption + : ON COMMIT (DROP | DELETE_P ROWS | PRESERVE ROWS) + | + ; + +opttablespace + : TABLESPACE name + | + ; + +optconstablespace + : USING INDEX TABLESPACE name + | + ; + +existingindex + : USING INDEX name + ; + +createstatsstmt + : CREATE STATISTICS (IF_P NOT EXISTS)? any_name opt_name_list ON expr_list FROM from_list + ; + +alterstatsstmt + : ALTER STATISTICS (IF_P EXISTS)? any_name SET STATISTICS signediconst + ; + +createasstmt + : CREATE opttemp TABLE (IF_P NOT EXISTS)? create_as_target AS selectstmt opt_with_data + ; + +create_as_target + : qualified_name opt_column_list table_access_method_clause optwith oncommitoption opttablespace + ; + +opt_with_data + : WITH (DATA_P | NO DATA_P) + | + ; + +creatematviewstmt + : CREATE optnolog MATERIALIZED VIEW (IF_P NOT EXISTS)? create_mv_target AS selectstmt opt_with_data + ; + +create_mv_target + : qualified_name opt_column_list table_access_method_clause opt_reloptions opttablespace + ; + +optnolog + : UNLOGGED + | + ; + +refreshmatviewstmt + : REFRESH MATERIALIZED VIEW opt_concurrently qualified_name opt_with_data + ; + +createseqstmt + : CREATE opttemp SEQUENCE (IF_P NOT EXISTS)? qualified_name optseqoptlist + ; + +alterseqstmt + : ALTER SEQUENCE (IF_P EXISTS)? qualified_name seqoptlist + ; + +optseqoptlist + : seqoptlist + | + ; + +optparenthesizedseqoptlist + : OPEN_PAREN seqoptlist CLOSE_PAREN + | + ; + +seqoptlist + : seqoptelem+ + ; + +seqoptelem + : AS simpletypename + | CACHE numericonly + | CYCLE + | INCREMENT opt_by numericonly + | MAXVALUE numericonly + | MINVALUE numericonly + | NO (MAXVALUE | MINVALUE | CYCLE) + | OWNED BY any_name + | SEQUENCE NAME_P any_name + | START opt_with numericonly + | RESTART opt_with numericonly? + ; + +opt_by + : BY + | + ; + +numericonly + : fconst + | PLUS fconst + | MINUS fconst + | signediconst + ; + +numericonly_list + : numericonly (COMMA numericonly)* + ; + +createplangstmt + : CREATE opt_or_replace opt_trusted opt_procedural LANGUAGE name ( + HANDLER handler_name opt_inline_handler opt_validator + )? + ; + +opt_trusted + : TRUSTED + | + ; + +handler_name + : name attrs? + ; + +opt_inline_handler + : INLINE_P handler_name + | + ; + +validator_clause + : VALIDATOR handler_name + | NO VALIDATOR + ; + +opt_validator + : validator_clause + | + ; + +opt_procedural + : PROCEDURAL + | + ; + +createtablespacestmt + : CREATE TABLESPACE name opttablespaceowner LOCATION sconst opt_reloptions + ; + +opttablespaceowner + : OWNER rolespec + | + ; + +droptablespacestmt + : DROP TABLESPACE (IF_P EXISTS)? name + ; + +createextensionstmt + : CREATE EXTENSION (IF_P NOT EXISTS)? name opt_with create_extension_opt_list + ; + +create_extension_opt_list + : create_extension_opt_item* + ; + +create_extension_opt_item + : SCHEMA name + | VERSION_P nonreservedword_or_sconst + | FROM nonreservedword_or_sconst + | CASCADE + ; + +alterextensionstmt + : ALTER EXTENSION name UPDATE alter_extension_opt_list + ; + +alter_extension_opt_list + : alter_extension_opt_item* + ; + +alter_extension_opt_item + : TO nonreservedword_or_sconst + ; + +alterextensioncontentsstmt + : ALTER EXTENSION name add_drop object_type_name name + | ALTER EXTENSION name add_drop object_type_any_name any_name + | ALTER EXTENSION name add_drop AGGREGATE aggregate_with_argtypes + | ALTER EXTENSION name add_drop CAST OPEN_PAREN typename AS typename CLOSE_PAREN + | ALTER EXTENSION name add_drop DOMAIN_P typename + | ALTER EXTENSION name add_drop FUNCTION function_with_argtypes + | ALTER EXTENSION name add_drop OPERATOR operator_with_argtypes + | ALTER EXTENSION name add_drop OPERATOR CLASS any_name USING name + | ALTER EXTENSION name add_drop OPERATOR FAMILY any_name USING name + | ALTER EXTENSION name add_drop PROCEDURE function_with_argtypes + | ALTER EXTENSION name add_drop ROUTINE function_with_argtypes + | ALTER EXTENSION name add_drop TRANSFORM FOR typename LANGUAGE name + | ALTER EXTENSION name add_drop TYPE_P typename + ; + +createfdwstmt + : CREATE FOREIGN DATA_P WRAPPER name opt_fdw_options create_generic_options + ; + +fdw_option + : HANDLER handler_name + | NO HANDLER + | VALIDATOR handler_name + | NO VALIDATOR + ; + +fdw_options + : fdw_option+ + ; + +opt_fdw_options + : fdw_options + | + ; + +alterfdwstmt + : ALTER FOREIGN DATA_P WRAPPER name opt_fdw_options alter_generic_options + | ALTER FOREIGN DATA_P WRAPPER name fdw_options + ; + +create_generic_options + : OPTIONS OPEN_PAREN generic_option_list CLOSE_PAREN + | + ; + +generic_option_list + : generic_option_elem (COMMA generic_option_elem)* + ; + +alter_generic_options + : OPTIONS OPEN_PAREN alter_generic_option_list CLOSE_PAREN + ; + +alter_generic_option_list + : alter_generic_option_elem (COMMA alter_generic_option_elem)* + ; + +alter_generic_option_elem + : generic_option_elem + | SET generic_option_elem + | ADD_P generic_option_elem + | DROP generic_option_name + ; + +generic_option_elem + : generic_option_name generic_option_arg + ; + +generic_option_name + : collabel + ; + +generic_option_arg + : sconst + ; + +createforeignserverstmt + : CREATE SERVER name opt_type opt_foreign_server_version FOREIGN DATA_P WRAPPER name create_generic_options + | CREATE SERVER IF_P NOT EXISTS name opt_type opt_foreign_server_version FOREIGN DATA_P WRAPPER name create_generic_options + ; + +opt_type + : TYPE_P sconst + | + ; + +foreign_server_version + : VERSION_P (sconst | NULL_P) + ; + +opt_foreign_server_version + : foreign_server_version + | + ; + +alterforeignserverstmt + : ALTER SERVER name (alter_generic_options | foreign_server_version alter_generic_options?) + ; + +createforeigntablestmt + : CREATE FOREIGN TABLE qualified_name OPEN_PAREN opttableelementlist CLOSE_PAREN optinherit SERVER name create_generic_options + | CREATE FOREIGN TABLE IF_P NOT EXISTS qualified_name OPEN_PAREN opttableelementlist CLOSE_PAREN optinherit SERVER name create_generic_options + | CREATE FOREIGN TABLE qualified_name PARTITION OF qualified_name opttypedtableelementlist partitionboundspec SERVER name create_generic_options + | CREATE FOREIGN TABLE IF_P NOT EXISTS qualified_name PARTITION OF qualified_name opttypedtableelementlist partitionboundspec SERVER name + create_generic_options + ; + +importforeignschemastmt + : IMPORT_P FOREIGN SCHEMA name import_qualification FROM SERVER name INTO name create_generic_options + ; + +import_qualification_type + : LIMIT TO + | EXCEPT + ; + +import_qualification + : import_qualification_type OPEN_PAREN relation_expr_list CLOSE_PAREN + | + ; + +createusermappingstmt + : CREATE USER MAPPING FOR auth_ident SERVER name create_generic_options + | CREATE USER MAPPING IF_P NOT EXISTS FOR auth_ident SERVER name create_generic_options + ; + +auth_ident + : rolespec + | USER + ; + +dropusermappingstmt + : DROP USER MAPPING FOR auth_ident SERVER name + | DROP USER MAPPING IF_P EXISTS FOR auth_ident SERVER name + ; + +alterusermappingstmt + : ALTER USER MAPPING FOR auth_ident SERVER name alter_generic_options + ; + +createpolicystmt + : CREATE POLICY name ON qualified_name rowsecuritydefaultpermissive rowsecuritydefaultforcmd rowsecuritydefaulttorole rowsecurityoptionalexpr + rowsecurityoptionalwithcheck + ; + +alterpolicystmt + : ALTER POLICY name ON qualified_name rowsecurityoptionaltorole rowsecurityoptionalexpr rowsecurityoptionalwithcheck + ; + +rowsecurityoptionalexpr + : USING OPEN_PAREN a_expr CLOSE_PAREN + | + ; + +rowsecurityoptionalwithcheck + : WITH CHECK OPEN_PAREN a_expr CLOSE_PAREN + | + ; + +rowsecuritydefaulttorole + : TO role_list + | + ; + +rowsecurityoptionaltorole + : TO role_list + | + ; + +rowsecuritydefaultpermissive + : AS identifier + | + ; + +rowsecuritydefaultforcmd + : FOR row_security_cmd + | + ; + +row_security_cmd + : ALL + | SELECT + | INSERT + | UPDATE + | DELETE_P + ; + +createamstmt + : CREATE ACCESS METHOD name TYPE_P am_type HANDLER handler_name + ; + +am_type + : INDEX + | TABLE + ; + +createtrigstmt + : CREATE TRIGGER name triggeractiontime triggerevents ON qualified_name triggerreferencing triggerforspec triggerwhen EXECUTE + function_or_procedure func_name OPEN_PAREN triggerfuncargs CLOSE_PAREN + | CREATE CONSTRAINT TRIGGER name AFTER triggerevents ON qualified_name optconstrfromtable constraintattributespec FOR EACH ROW triggerwhen EXECUTE + function_or_procedure func_name OPEN_PAREN triggerfuncargs CLOSE_PAREN + ; + +triggeractiontime + : BEFORE + | AFTER + | INSTEAD OF + ; + +triggerevents + : triggeroneevent (OR triggeroneevent)* + ; + +triggeroneevent + : INSERT + | DELETE_P + | UPDATE + | UPDATE OF columnlist + | TRUNCATE + ; + +triggerreferencing + : REFERENCING triggertransitions + | + ; + +triggertransitions + : triggertransition+ + ; + +triggertransition + : transitionoldornew transitionrowortable opt_as transitionrelname + ; + +transitionoldornew + : NEW + | OLD + ; + +transitionrowortable + : TABLE + | ROW + ; + +transitionrelname + : colid + ; + +triggerforspec + : FOR triggerforopteach triggerfortype + | + ; + +triggerforopteach + : EACH + | + ; + +triggerfortype + : ROW + | STATEMENT + ; + +triggerwhen + : WHEN OPEN_PAREN a_expr CLOSE_PAREN + | + ; + +function_or_procedure + : FUNCTION + | PROCEDURE + ; + +triggerfuncargs + : (triggerfuncarg |) (COMMA triggerfuncarg)* + ; + +triggerfuncarg + : iconst + | fconst + | sconst + | collabel + ; + +optconstrfromtable + : FROM qualified_name + | + ; + +constraintattributespec + : constraintattributeElem* + ; + +constraintattributeElem + : NOT DEFERRABLE + | DEFERRABLE + | INITIALLY IMMEDIATE + | INITIALLY DEFERRED + | NOT VALID + | NO INHERIT + ; + +createeventtrigstmt + : CREATE EVENT TRIGGER name ON collabel EXECUTE function_or_procedure func_name OPEN_PAREN CLOSE_PAREN + | CREATE EVENT TRIGGER name ON collabel WHEN event_trigger_when_list EXECUTE function_or_procedure func_name OPEN_PAREN CLOSE_PAREN + ; + +event_trigger_when_list + : event_trigger_when_item (AND event_trigger_when_item)* + ; + +event_trigger_when_item + : colid IN_P OPEN_PAREN event_trigger_value_list CLOSE_PAREN + ; + +event_trigger_value_list + : sconst (COMMA sconst)* + ; + +altereventtrigstmt + : ALTER EVENT TRIGGER name enable_trigger + ; + +enable_trigger + : ENABLE_P + | ENABLE_P REPLICA + | ENABLE_P ALWAYS + | DISABLE_P + ; + +createassertionstmt + : CREATE ASSERTION any_name CHECK OPEN_PAREN a_expr CLOSE_PAREN constraintattributespec + ; + +definestmt + : CREATE opt_or_replace AGGREGATE func_name aggr_args definition + | CREATE opt_or_replace AGGREGATE func_name old_aggr_definition + | CREATE OPERATOR any_operator definition + | CREATE TYPE_P any_name definition + | CREATE TYPE_P any_name + | CREATE TYPE_P any_name AS OPEN_PAREN opttablefuncelementlist CLOSE_PAREN + | CREATE TYPE_P any_name AS ENUM_P OPEN_PAREN opt_enum_val_list CLOSE_PAREN + | CREATE TYPE_P any_name AS RANGE definition + | CREATE TEXT_P SEARCH PARSER any_name definition + | CREATE TEXT_P SEARCH DICTIONARY any_name definition + | CREATE TEXT_P SEARCH TEMPLATE any_name definition + | CREATE TEXT_P SEARCH CONFIGURATION any_name definition + | CREATE COLLATION any_name definition + | CREATE COLLATION IF_P NOT EXISTS any_name definition + | CREATE COLLATION any_name FROM any_name + | CREATE COLLATION IF_P NOT EXISTS any_name FROM any_name + ; + +definition + : OPEN_PAREN def_list CLOSE_PAREN + ; + +def_list + : def_elem (COMMA def_elem)* + ; + +def_elem + : collabel (EQUAL def_arg)? + ; + +def_arg + : func_type + | reserved_keyword + | qual_all_op + | numericonly + | sconst + | NONE + ; + +old_aggr_definition + : OPEN_PAREN old_aggr_list CLOSE_PAREN + ; + +old_aggr_list + : old_aggr_elem (COMMA old_aggr_elem)* + ; + +old_aggr_elem + : identifier EQUAL def_arg + ; + +opt_enum_val_list + : enum_val_list + | + ; + +enum_val_list + : sconst (COMMA sconst)* + ; + +alterenumstmt + : ALTER TYPE_P any_name ADD_P VALUE_P opt_if_not_exists sconst + | ALTER TYPE_P any_name ADD_P VALUE_P opt_if_not_exists sconst BEFORE sconst + | ALTER TYPE_P any_name ADD_P VALUE_P opt_if_not_exists sconst AFTER sconst + | ALTER TYPE_P any_name RENAME VALUE_P sconst TO sconst + ; + +opt_if_not_exists + : IF_P NOT EXISTS + | + ; + +createopclassstmt + : CREATE OPERATOR CLASS any_name opt_default FOR TYPE_P typename USING name opt_opfamily AS opclass_item_list + ; + +opclass_item_list + : opclass_item (COMMA opclass_item)* + ; + +opclass_item + : OPERATOR iconst any_operator opclass_purpose opt_recheck + | OPERATOR iconst operator_with_argtypes opclass_purpose opt_recheck + | FUNCTION iconst function_with_argtypes + | FUNCTION iconst OPEN_PAREN type_list CLOSE_PAREN function_with_argtypes + | STORAGE typename + ; + +opt_default + : DEFAULT + | + ; + +opt_opfamily + : FAMILY any_name + | + ; + +opclass_purpose + : FOR SEARCH + | FOR ORDER BY any_name + | + ; + +opt_recheck + : RECHECK + | + ; + +createopfamilystmt + : CREATE OPERATOR FAMILY any_name USING name + ; + +alteropfamilystmt + : ALTER OPERATOR FAMILY any_name USING name ADD_P opclass_item_list + | ALTER OPERATOR FAMILY any_name USING name DROP opclass_drop_list + ; + +opclass_drop_list + : opclass_drop (COMMA opclass_drop)* + ; + +opclass_drop + : OPERATOR iconst OPEN_PAREN type_list CLOSE_PAREN + | FUNCTION iconst OPEN_PAREN type_list CLOSE_PAREN + ; + +dropopclassstmt + : DROP OPERATOR CLASS any_name USING name opt_drop_behavior + | DROP OPERATOR CLASS IF_P EXISTS any_name USING name opt_drop_behavior + ; + +dropopfamilystmt + : DROP OPERATOR FAMILY any_name USING name opt_drop_behavior + | DROP OPERATOR FAMILY IF_P EXISTS any_name USING name opt_drop_behavior + ; + +dropownedstmt + : DROP OWNED BY role_list opt_drop_behavior + ; + +reassignownedstmt + : REASSIGN OWNED BY role_list TO rolespec + ; + +dropstmt + : DROP object_type_any_name IF_P EXISTS any_name_list opt_drop_behavior + | DROP object_type_any_name any_name_list opt_drop_behavior + | DROP drop_type_name IF_P EXISTS name_list opt_drop_behavior + | DROP drop_type_name name_list opt_drop_behavior + | DROP object_type_name_on_any_name name ON any_name opt_drop_behavior + | DROP object_type_name_on_any_name IF_P EXISTS name ON any_name opt_drop_behavior + | DROP TYPE_P type_name_list opt_drop_behavior + | DROP TYPE_P IF_P EXISTS type_name_list opt_drop_behavior + | DROP DOMAIN_P type_name_list opt_drop_behavior + | DROP DOMAIN_P IF_P EXISTS type_name_list opt_drop_behavior + | DROP INDEX CONCURRENTLY any_name_list opt_drop_behavior + | DROP INDEX CONCURRENTLY IF_P EXISTS any_name_list opt_drop_behavior + ; + +object_type_any_name + : TABLE + | SEQUENCE + | VIEW + | MATERIALIZED VIEW + | INDEX + | FOREIGN TABLE + | COLLATION + | CONVERSION_P + | STATISTICS + | TEXT_P SEARCH PARSER + | TEXT_P SEARCH DICTIONARY + | TEXT_P SEARCH TEMPLATE + | TEXT_P SEARCH CONFIGURATION + ; + +object_type_name + : drop_type_name + | DATABASE + | ROLE + | SUBSCRIPTION + | TABLESPACE + ; + +drop_type_name + : ACCESS METHOD + | EVENT TRIGGER + | EXTENSION + | FOREIGN DATA_P WRAPPER + | opt_procedural LANGUAGE + | PUBLICATION + | SCHEMA + | SERVER + ; + +object_type_name_on_any_name + : POLICY + | RULE + | TRIGGER + ; + +any_name_list + : any_name (COMMA any_name)* + ; + +any_name + : colid attrs? + ; + +attrs + : (DOT attr_name)+ + ; + +type_name_list + : typename (COMMA typename)* + ; + +truncatestmt + : TRUNCATE opt_table relation_expr_list opt_restart_seqs opt_drop_behavior + ; + +opt_restart_seqs + : CONTINUE_P IDENTITY_P + | RESTART IDENTITY_P + | + ; + +commentstmt + : COMMENT ON object_type_any_name any_name IS comment_text + | COMMENT ON COLUMN any_name IS comment_text + | COMMENT ON object_type_name name IS comment_text + | COMMENT ON TYPE_P typename IS comment_text + | COMMENT ON DOMAIN_P typename IS comment_text + | COMMENT ON AGGREGATE aggregate_with_argtypes IS comment_text + | COMMENT ON FUNCTION function_with_argtypes IS comment_text + | COMMENT ON OPERATOR operator_with_argtypes IS comment_text + | COMMENT ON CONSTRAINT name ON any_name IS comment_text + | COMMENT ON CONSTRAINT name ON DOMAIN_P any_name IS comment_text + | COMMENT ON object_type_name_on_any_name name ON any_name IS comment_text + | COMMENT ON PROCEDURE function_with_argtypes IS comment_text + | COMMENT ON ROUTINE function_with_argtypes IS comment_text + | COMMENT ON TRANSFORM FOR typename LANGUAGE name IS comment_text + | COMMENT ON OPERATOR CLASS any_name USING name IS comment_text + | COMMENT ON OPERATOR FAMILY any_name USING name IS comment_text + | COMMENT ON LARGE_P OBJECT_P numericonly IS comment_text + | COMMENT ON CAST OPEN_PAREN typename AS typename CLOSE_PAREN IS comment_text + ; + +comment_text + : sconst + | NULL_P + ; + +seclabelstmt + : SECURITY LABEL opt_provider ON object_type_any_name any_name IS security_label + | SECURITY LABEL opt_provider ON COLUMN any_name IS security_label + | SECURITY LABEL opt_provider ON object_type_name name IS security_label + | SECURITY LABEL opt_provider ON TYPE_P typename IS security_label + | SECURITY LABEL opt_provider ON DOMAIN_P typename IS security_label + | SECURITY LABEL opt_provider ON AGGREGATE aggregate_with_argtypes IS security_label + | SECURITY LABEL opt_provider ON FUNCTION function_with_argtypes IS security_label + | SECURITY LABEL opt_provider ON LARGE_P OBJECT_P numericonly IS security_label + | SECURITY LABEL opt_provider ON PROCEDURE function_with_argtypes IS security_label + | SECURITY LABEL opt_provider ON ROUTINE function_with_argtypes IS security_label + ; + +opt_provider + : FOR nonreservedword_or_sconst + | + ; + +security_label + : sconst + | NULL_P + ; + +fetchstmt + : FETCH fetch_args + | MOVE fetch_args + ; + +fetch_args + : cursor_name + | from_in cursor_name + | NEXT opt_from_in cursor_name + | PRIOR opt_from_in cursor_name + | FIRST_P opt_from_in cursor_name + | LAST_P opt_from_in cursor_name + | ABSOLUTE_P signediconst opt_from_in cursor_name + | RELATIVE_P signediconst opt_from_in cursor_name + | signediconst opt_from_in cursor_name + | ALL opt_from_in cursor_name + | FORWARD opt_from_in cursor_name + | FORWARD signediconst opt_from_in cursor_name + | FORWARD ALL opt_from_in cursor_name + | BACKWARD opt_from_in cursor_name + | BACKWARD signediconst opt_from_in cursor_name + | BACKWARD ALL opt_from_in cursor_name + ; + +from_in + : FROM + | IN_P + ; + +opt_from_in + : from_in + | + ; + +grantstmt + : GRANT privileges ON privilege_target TO grantee_list opt_grant_grant_option + ; + +revokestmt + : REVOKE privileges ON privilege_target FROM grantee_list opt_drop_behavior + | REVOKE GRANT OPTION FOR privileges ON privilege_target FROM grantee_list opt_drop_behavior + ; + +privileges + : privilege_list + | ALL + | ALL PRIVILEGES + | ALL OPEN_PAREN columnlist CLOSE_PAREN + | ALL PRIVILEGES OPEN_PAREN columnlist CLOSE_PAREN + ; + +privilege_list + : privilege (COMMA privilege)* + ; + +privilege + : SELECT opt_column_list + | REFERENCES opt_column_list + | CREATE opt_column_list + | colid opt_column_list + ; + +privilege_target + : qualified_name_list + | TABLE qualified_name_list + | SEQUENCE qualified_name_list + | FOREIGN DATA_P WRAPPER name_list + | FOREIGN SERVER name_list + | FUNCTION function_with_argtypes_list + | PROCEDURE function_with_argtypes_list + | ROUTINE function_with_argtypes_list + | DATABASE name_list + | DOMAIN_P any_name_list + | LANGUAGE name_list + | LARGE_P OBJECT_P numericonly_list + | SCHEMA name_list + | TABLESPACE name_list + | TYPE_P any_name_list + | ALL TABLES IN_P SCHEMA name_list + | ALL SEQUENCES IN_P SCHEMA name_list + | ALL FUNCTIONS IN_P SCHEMA name_list + | ALL PROCEDURES IN_P SCHEMA name_list + | ALL ROUTINES IN_P SCHEMA name_list + ; + +grantee_list + : grantee (COMMA grantee)* + ; + +grantee + : rolespec + | GROUP_P rolespec + ; + +opt_grant_grant_option + : WITH GRANT OPTION + | + ; + +grantrolestmt + : GRANT privilege_list TO role_list opt_grant_admin_option opt_granted_by + ; + +revokerolestmt + : REVOKE privilege_list FROM role_list opt_granted_by opt_drop_behavior + | REVOKE ADMIN OPTION FOR privilege_list FROM role_list opt_granted_by opt_drop_behavior + ; + +opt_grant_admin_option + : WITH ADMIN OPTION + | + ; + +opt_granted_by + : GRANTED BY rolespec + | + ; + +alterdefaultprivilegesstmt + : ALTER DEFAULT PRIVILEGES defacloptionlist defaclaction + ; + +defacloptionlist + : defacloption* + ; + +defacloption + : IN_P SCHEMA name_list + | FOR ROLE role_list + | FOR USER role_list + ; + +defaclaction + : GRANT privileges ON defacl_privilege_target TO grantee_list opt_grant_grant_option + | REVOKE privileges ON defacl_privilege_target FROM grantee_list opt_drop_behavior + | REVOKE GRANT OPTION FOR privileges ON defacl_privilege_target FROM grantee_list opt_drop_behavior + ; + +defacl_privilege_target + : TABLES + | FUNCTIONS + | ROUTINES + | SEQUENCES + | TYPES_P + | SCHEMAS + ; + +//create index + +indexstmt + : CREATE opt_unique INDEX opt_concurrently opt_index_name ON relation_expr access_method_clause OPEN_PAREN index_params CLOSE_PAREN opt_include + opt_reloptions opttablespace where_clause + | CREATE opt_unique INDEX opt_concurrently IF_P NOT EXISTS name ON relation_expr access_method_clause OPEN_PAREN index_params CLOSE_PAREN + opt_include opt_reloptions opttablespace where_clause + ; + +opt_unique + : UNIQUE + | + ; + +opt_concurrently + : CONCURRENTLY + | + ; + +opt_index_name + : name + | + ; + +access_method_clause + : USING name + | + ; + +index_params + : index_elem (COMMA index_elem)* + ; + +index_elem_options + : opt_collate opt_class opt_asc_desc opt_nulls_order + | opt_collate any_name reloptions opt_asc_desc opt_nulls_order + ; + +index_elem + : colid index_elem_options + | func_expr_windowless index_elem_options + | OPEN_PAREN a_expr CLOSE_PAREN index_elem_options + ; + +opt_include + : INCLUDE OPEN_PAREN index_including_params CLOSE_PAREN + | + ; + +index_including_params + : index_elem (COMMA index_elem)* + ; + +opt_collate + : COLLATE any_name + | + ; + +opt_class + : any_name + | + ; + +opt_asc_desc + : ASC + | DESC + | + ; + +//TOD NULLS_LA was used + +opt_nulls_order + : NULLS_P FIRST_P + | NULLS_P LAST_P + | + ; + +createfunctionstmt + : CREATE opt_or_replace (FUNCTION | PROCEDURE) func_name func_args_with_defaults ( + RETURNS (func_return | TABLE OPEN_PAREN table_func_column_list CLOSE_PAREN) + )? createfunc_opt_list + ; + +opt_or_replace + : OR REPLACE + | + ; + +func_args + : OPEN_PAREN func_args_list? CLOSE_PAREN + ; + +func_args_list + : func_arg (COMMA func_arg)* + ; + +function_with_argtypes_list + : function_with_argtypes (COMMA function_with_argtypes)* + ; + +function_with_argtypes + : func_name func_args + | type_func_name_keyword + | colid indirection? + ; + +func_args_with_defaults + : OPEN_PAREN func_args_with_defaults_list? CLOSE_PAREN + ; + +func_args_with_defaults_list + : func_arg_with_default (COMMA func_arg_with_default)* + ; + +func_arg + : arg_class param_name? func_type + | param_name arg_class? func_type + | func_type + ; + +arg_class + : IN_P OUT_P? + | OUT_P + | INOUT + | VARIADIC + ; + +param_name + : type_function_name + | builtin_function_name + | LEFT + | RIGHT + ; + +func_return + : func_type + ; + +func_type + : typename + | SETOF? (builtin_function_name | type_function_name | LEFT | RIGHT) attrs PERCENT TYPE_P + ; + +func_arg_with_default + : func_arg ((DEFAULT | EQUAL) a_expr)? + ; + +aggr_arg + : func_arg + ; + +aggr_args + : OPEN_PAREN ( + STAR + | aggr_args_list + | ORDER BY aggr_args_list + | aggr_args_list ORDER BY aggr_args_list + ) CLOSE_PAREN + ; + +aggr_args_list + : aggr_arg (COMMA aggr_arg)* + ; + +aggregate_with_argtypes + : func_name aggr_args + ; + +aggregate_with_argtypes_list + : aggregate_with_argtypes (COMMA aggregate_with_argtypes)* + ; + +createfunc_opt_list + : createfunc_opt_item+ { + ParseRoutineBody(_localctx); + } + // | createfunc_opt_list createfunc_opt_item + ; + +common_func_opt_item + : CALLED ON NULL_P INPUT_P + | RETURNS NULL_P ON NULL_P INPUT_P + | STRICT_P + | IMMUTABLE + | STABLE + | VOLATILE + | EXTERNAL SECURITY DEFINER + | EXTERNAL SECURITY INVOKER + | SECURITY DEFINER + | SECURITY INVOKER + | LEAKPROOF + | NOT LEAKPROOF + | COST numericonly + | ROWS numericonly + | SUPPORT any_name + | functionsetresetclause + | PARALLEL colid + ; + +createfunc_opt_item + : AS func_as + | LANGUAGE nonreservedword_or_sconst + | TRANSFORM transform_type_list + | WINDOW + | common_func_opt_item + ; + +//https://www.postgresql.org/docs/9.1/sql-createfunction.html + +// | AS 'definition' + +// | AS 'obj_file', 'link_symbol' + +func_as + locals[ParserRuleContext Definition] + : + /* |AS 'definition'*/ def = sconst + /*| AS 'obj_file', 'link_symbol'*/ + | sconst COMMA sconst + ; + +transform_type_list + : FOR TYPE_P typename (COMMA FOR TYPE_P typename)* + ; + +opt_definition + : WITH definition + | + ; + +table_func_column + : param_name func_type + ; + +table_func_column_list + : table_func_column (COMMA table_func_column)* + ; + +alterfunctionstmt + : ALTER (FUNCTION | PROCEDURE | ROUTINE) function_with_argtypes alterfunc_opt_list opt_restrict + ; + +alterfunc_opt_list + : common_func_opt_item+ + ; + +opt_restrict + : RESTRICT + | + ; + +removefuncstmt + : DROP FUNCTION function_with_argtypes_list opt_drop_behavior + | DROP FUNCTION IF_P EXISTS function_with_argtypes_list opt_drop_behavior + | DROP PROCEDURE function_with_argtypes_list opt_drop_behavior + | DROP PROCEDURE IF_P EXISTS function_with_argtypes_list opt_drop_behavior + | DROP ROUTINE function_with_argtypes_list opt_drop_behavior + | DROP ROUTINE IF_P EXISTS function_with_argtypes_list opt_drop_behavior + ; + +removeaggrstmt + : DROP AGGREGATE aggregate_with_argtypes_list opt_drop_behavior + | DROP AGGREGATE IF_P EXISTS aggregate_with_argtypes_list opt_drop_behavior + ; + +removeoperstmt + : DROP OPERATOR operator_with_argtypes_list opt_drop_behavior + | DROP OPERATOR IF_P EXISTS operator_with_argtypes_list opt_drop_behavior + ; + +oper_argtypes + : OPEN_PAREN typename CLOSE_PAREN + | OPEN_PAREN typename COMMA typename CLOSE_PAREN + | OPEN_PAREN NONE COMMA typename CLOSE_PAREN + | OPEN_PAREN typename COMMA NONE CLOSE_PAREN + ; + +any_operator + : (colid DOT)* all_op + ; + +operator_with_argtypes_list + : operator_with_argtypes (COMMA operator_with_argtypes)* + ; + +operator_with_argtypes + : any_operator oper_argtypes + ; + +dostmt + : DO dostmt_opt_list + ; + +dostmt_opt_list + : dostmt_opt_item+ + ; + +dostmt_opt_item + : sconst + | LANGUAGE nonreservedword_or_sconst + ; + +createcaststmt + : CREATE CAST OPEN_PAREN typename AS typename CLOSE_PAREN WITH FUNCTION function_with_argtypes cast_context + | CREATE CAST OPEN_PAREN typename AS typename CLOSE_PAREN WITHOUT FUNCTION cast_context + | CREATE CAST OPEN_PAREN typename AS typename CLOSE_PAREN WITH INOUT cast_context + ; + +cast_context + : AS IMPLICIT_P + | AS ASSIGNMENT + | + ; + +dropcaststmt + : DROP CAST opt_if_exists OPEN_PAREN typename AS typename CLOSE_PAREN opt_drop_behavior + ; + +opt_if_exists + : IF_P EXISTS + | + ; + +createtransformstmt + : CREATE opt_or_replace TRANSFORM FOR typename LANGUAGE name OPEN_PAREN transform_element_list CLOSE_PAREN + ; + +transform_element_list + : FROM SQL_P WITH FUNCTION function_with_argtypes COMMA TO SQL_P WITH FUNCTION function_with_argtypes + | TO SQL_P WITH FUNCTION function_with_argtypes COMMA FROM SQL_P WITH FUNCTION function_with_argtypes + | FROM SQL_P WITH FUNCTION function_with_argtypes + | TO SQL_P WITH FUNCTION function_with_argtypes + ; + +droptransformstmt + : DROP TRANSFORM opt_if_exists FOR typename LANGUAGE name opt_drop_behavior + ; + +reindexstmt + : REINDEX reindex_target_type opt_concurrently qualified_name + | REINDEX reindex_target_multitable opt_concurrently name + | REINDEX OPEN_PAREN reindex_option_list CLOSE_PAREN reindex_target_type opt_concurrently qualified_name + | REINDEX OPEN_PAREN reindex_option_list CLOSE_PAREN reindex_target_multitable opt_concurrently name + ; + +reindex_target_type + : INDEX + | TABLE + | SCHEMA + | DATABASE + | SYSTEM_P + ; + +reindex_target_multitable + : SCHEMA + | SYSTEM_P + | DATABASE + ; + +reindex_option_list + : reindex_option_elem (COMMA reindex_option_elem)* + ; + +reindex_option_elem + : VERBOSE + | TABLESPACE + | CONCURRENTLY + ; + +altertblspcstmt + : ALTER TABLESPACE name SET reloptions + | ALTER TABLESPACE name RESET reloptions + ; + +renamestmt + : ALTER AGGREGATE aggregate_with_argtypes RENAME TO name + | ALTER COLLATION any_name RENAME TO name + | ALTER CONVERSION_P any_name RENAME TO name + | ALTER DATABASE name RENAME TO name + | ALTER DOMAIN_P any_name RENAME TO name + | ALTER DOMAIN_P any_name RENAME CONSTRAINT name TO name + | ALTER FOREIGN DATA_P WRAPPER name RENAME TO name + | ALTER FUNCTION function_with_argtypes RENAME TO name + | ALTER GROUP_P roleid RENAME TO roleid + | ALTER opt_procedural LANGUAGE name RENAME TO name + | ALTER OPERATOR CLASS any_name USING name RENAME TO name + | ALTER OPERATOR FAMILY any_name USING name RENAME TO name + | ALTER POLICY name ON qualified_name RENAME TO name + | ALTER POLICY IF_P EXISTS name ON qualified_name RENAME TO name + | ALTER PROCEDURE function_with_argtypes RENAME TO name + | ALTER PUBLICATION name RENAME TO name + | ALTER ROUTINE function_with_argtypes RENAME TO name + | ALTER SCHEMA name RENAME TO name + | ALTER SERVER name RENAME TO name + | ALTER SUBSCRIPTION name RENAME TO name + | ALTER TABLE relation_expr RENAME TO name + | ALTER TABLE IF_P EXISTS relation_expr RENAME TO name + | ALTER SEQUENCE qualified_name RENAME TO name + | ALTER SEQUENCE IF_P EXISTS qualified_name RENAME TO name + | ALTER VIEW qualified_name RENAME TO name + | ALTER VIEW IF_P EXISTS qualified_name RENAME TO name + | ALTER MATERIALIZED VIEW qualified_name RENAME TO name + | ALTER MATERIALIZED VIEW IF_P EXISTS qualified_name RENAME TO name + | ALTER INDEX qualified_name RENAME TO name + | ALTER INDEX IF_P EXISTS qualified_name RENAME TO name + | ALTER FOREIGN TABLE relation_expr RENAME TO name + | ALTER FOREIGN TABLE IF_P EXISTS relation_expr RENAME TO name + | ALTER TABLE relation_expr RENAME opt_column name TO name + | ALTER TABLE IF_P EXISTS relation_expr RENAME opt_column name TO name + | ALTER VIEW qualified_name RENAME opt_column name TO name + | ALTER VIEW IF_P EXISTS qualified_name RENAME opt_column name TO name + | ALTER MATERIALIZED VIEW qualified_name RENAME opt_column name TO name + | ALTER MATERIALIZED VIEW IF_P EXISTS qualified_name RENAME opt_column name TO name + | ALTER TABLE relation_expr RENAME CONSTRAINT name TO name + | ALTER TABLE IF_P EXISTS relation_expr RENAME CONSTRAINT name TO name + | ALTER FOREIGN TABLE relation_expr RENAME opt_column name TO name + | ALTER FOREIGN TABLE IF_P EXISTS relation_expr RENAME opt_column name TO name + | ALTER RULE name ON qualified_name RENAME TO name + | ALTER TRIGGER name ON qualified_name RENAME TO name + | ALTER EVENT TRIGGER name RENAME TO name + | ALTER ROLE roleid RENAME TO roleid + | ALTER USER roleid RENAME TO roleid + | ALTER TABLESPACE name RENAME TO name + | ALTER STATISTICS any_name RENAME TO name + | ALTER TEXT_P SEARCH PARSER any_name RENAME TO name + | ALTER TEXT_P SEARCH DICTIONARY any_name RENAME TO name + | ALTER TEXT_P SEARCH TEMPLATE any_name RENAME TO name + | ALTER TEXT_P SEARCH CONFIGURATION any_name RENAME TO name + | ALTER TYPE_P any_name RENAME TO name + | ALTER TYPE_P any_name RENAME ATTRIBUTE name TO name opt_drop_behavior + ; + +opt_column + : COLUMN + | + ; + +opt_set_data + : SET DATA_P + | + ; + +alterobjectdependsstmt + : ALTER FUNCTION function_with_argtypes opt_no DEPENDS ON EXTENSION name + | ALTER PROCEDURE function_with_argtypes opt_no DEPENDS ON EXTENSION name + | ALTER ROUTINE function_with_argtypes opt_no DEPENDS ON EXTENSION name + | ALTER TRIGGER name ON qualified_name opt_no DEPENDS ON EXTENSION name + | ALTER MATERIALIZED VIEW qualified_name opt_no DEPENDS ON EXTENSION name + | ALTER INDEX qualified_name opt_no DEPENDS ON EXTENSION name + ; + +opt_no + : NO + | + ; + +alterobjectschemastmt + : ALTER AGGREGATE aggregate_with_argtypes SET SCHEMA name + | ALTER COLLATION any_name SET SCHEMA name + | ALTER CONVERSION_P any_name SET SCHEMA name + | ALTER DOMAIN_P any_name SET SCHEMA name + | ALTER EXTENSION name SET SCHEMA name + | ALTER FUNCTION function_with_argtypes SET SCHEMA name + | ALTER OPERATOR operator_with_argtypes SET SCHEMA name + | ALTER OPERATOR CLASS any_name USING name SET SCHEMA name + | ALTER OPERATOR FAMILY any_name USING name SET SCHEMA name + | ALTER PROCEDURE function_with_argtypes SET SCHEMA name + | ALTER ROUTINE function_with_argtypes SET SCHEMA name + | ALTER TABLE relation_expr SET SCHEMA name + | ALTER TABLE IF_P EXISTS relation_expr SET SCHEMA name + | ALTER STATISTICS any_name SET SCHEMA name + | ALTER TEXT_P SEARCH PARSER any_name SET SCHEMA name + | ALTER TEXT_P SEARCH DICTIONARY any_name SET SCHEMA name + | ALTER TEXT_P SEARCH TEMPLATE any_name SET SCHEMA name + | ALTER TEXT_P SEARCH CONFIGURATION any_name SET SCHEMA name + | ALTER SEQUENCE qualified_name SET SCHEMA name + | ALTER SEQUENCE IF_P EXISTS qualified_name SET SCHEMA name + | ALTER VIEW qualified_name SET SCHEMA name + | ALTER VIEW IF_P EXISTS qualified_name SET SCHEMA name + | ALTER MATERIALIZED VIEW qualified_name SET SCHEMA name + | ALTER MATERIALIZED VIEW IF_P EXISTS qualified_name SET SCHEMA name + | ALTER FOREIGN TABLE relation_expr SET SCHEMA name + | ALTER FOREIGN TABLE IF_P EXISTS relation_expr SET SCHEMA name + | ALTER TYPE_P any_name SET SCHEMA name + ; + +alteroperatorstmt + : ALTER OPERATOR operator_with_argtypes SET OPEN_PAREN operator_def_list CLOSE_PAREN + ; + +operator_def_list + : operator_def_elem (COMMA operator_def_elem)* + ; + +operator_def_elem + : collabel EQUAL NONE + | collabel EQUAL operator_def_arg + ; + +operator_def_arg + : func_type + | reserved_keyword + | qual_all_op + | numericonly + | sconst + ; + +altertypestmt + : ALTER TYPE_P any_name SET OPEN_PAREN operator_def_list CLOSE_PAREN + ; + +alterownerstmt + : ALTER AGGREGATE aggregate_with_argtypes OWNER TO rolespec + | ALTER COLLATION any_name OWNER TO rolespec + | ALTER CONVERSION_P any_name OWNER TO rolespec + | ALTER DATABASE name OWNER TO rolespec + | ALTER DOMAIN_P any_name OWNER TO rolespec + | ALTER FUNCTION function_with_argtypes OWNER TO rolespec + | ALTER opt_procedural LANGUAGE name OWNER TO rolespec + | ALTER LARGE_P OBJECT_P numericonly OWNER TO rolespec + | ALTER OPERATOR operator_with_argtypes OWNER TO rolespec + | ALTER OPERATOR CLASS any_name USING name OWNER TO rolespec + | ALTER OPERATOR FAMILY any_name USING name OWNER TO rolespec + | ALTER PROCEDURE function_with_argtypes OWNER TO rolespec + | ALTER ROUTINE function_with_argtypes OWNER TO rolespec + | ALTER SCHEMA name OWNER TO rolespec + | ALTER TYPE_P any_name OWNER TO rolespec + | ALTER TABLESPACE name OWNER TO rolespec + | ALTER STATISTICS any_name OWNER TO rolespec + | ALTER TEXT_P SEARCH DICTIONARY any_name OWNER TO rolespec + | ALTER TEXT_P SEARCH CONFIGURATION any_name OWNER TO rolespec + | ALTER FOREIGN DATA_P WRAPPER name OWNER TO rolespec + | ALTER SERVER name OWNER TO rolespec + | ALTER EVENT TRIGGER name OWNER TO rolespec + | ALTER PUBLICATION name OWNER TO rolespec + | ALTER SUBSCRIPTION name OWNER TO rolespec + ; + +createpublicationstmt + : CREATE PUBLICATION name opt_publication_for_tables opt_definition + ; + +opt_publication_for_tables + : publication_for_tables + | + ; + +publication_for_tables + : FOR TABLE relation_expr_list + | FOR ALL TABLES + ; + +alterpublicationstmt + : ALTER PUBLICATION name SET definition + | ALTER PUBLICATION name ADD_P TABLE relation_expr_list + | ALTER PUBLICATION name SET TABLE relation_expr_list + | ALTER PUBLICATION name DROP TABLE relation_expr_list + ; + +createsubscriptionstmt + : CREATE SUBSCRIPTION name CONNECTION sconst PUBLICATION publication_name_list opt_definition + ; + +publication_name_list + : publication_name_item (COMMA publication_name_item)* + ; + +publication_name_item + : collabel + ; + +altersubscriptionstmt + : ALTER SUBSCRIPTION name SET definition + | ALTER SUBSCRIPTION name CONNECTION sconst + | ALTER SUBSCRIPTION name REFRESH PUBLICATION opt_definition + | ALTER SUBSCRIPTION name SET PUBLICATION publication_name_list opt_definition + | ALTER SUBSCRIPTION name ENABLE_P + | ALTER SUBSCRIPTION name DISABLE_P + ; + +dropsubscriptionstmt + : DROP SUBSCRIPTION name opt_drop_behavior + | DROP SUBSCRIPTION IF_P EXISTS name opt_drop_behavior + ; + +rulestmt + : CREATE opt_or_replace RULE name AS ON event TO qualified_name where_clause DO opt_instead ruleactionlist + ; + +ruleactionlist + : NOTHING + | ruleactionstmt + | OPEN_PAREN ruleactionmulti CLOSE_PAREN + ; + +ruleactionmulti + : ruleactionstmtOrEmpty (SEMI ruleactionstmtOrEmpty)* + ; + +ruleactionstmt + : selectstmt + | insertstmt + | updatestmt + | deletestmt + | notifystmt + ; + +ruleactionstmtOrEmpty + : ruleactionstmt + | + ; + +event + : SELECT + | UPDATE + | DELETE_P + | INSERT + ; + +opt_instead + : INSTEAD + | ALSO + | + ; + +notifystmt + : NOTIFY colid notify_payload + ; + +notify_payload + : COMMA sconst + | + ; + +listenstmt + : LISTEN colid + ; + +unlistenstmt + : UNLISTEN colid + | UNLISTEN STAR + ; + +transactionstmt + : ABORT_P opt_transaction opt_transaction_chain + | BEGIN_P opt_transaction transaction_mode_list_or_empty + | START TRANSACTION transaction_mode_list_or_empty + | COMMIT opt_transaction opt_transaction_chain + | END_P opt_transaction opt_transaction_chain + | ROLLBACK opt_transaction opt_transaction_chain + | SAVEPOINT colid + | RELEASE SAVEPOINT colid + | RELEASE colid + | ROLLBACK opt_transaction TO SAVEPOINT colid + | ROLLBACK opt_transaction TO colid + | PREPARE TRANSACTION sconst + | COMMIT PREPARED sconst + | ROLLBACK PREPARED sconst + ; + +opt_transaction + : WORK + | TRANSACTION + | + ; + +transaction_mode_item + : ISOLATION LEVEL iso_level + | READ ONLY + | READ WRITE + | DEFERRABLE + | NOT DEFERRABLE + ; + +transaction_mode_list + : transaction_mode_item (COMMA? transaction_mode_item)* + ; + +transaction_mode_list_or_empty + : transaction_mode_list + | + ; + +opt_transaction_chain + : AND NO? CHAIN + | + ; + +viewstmt + : CREATE (OR REPLACE)? opttemp ( + VIEW qualified_name opt_column_list opt_reloptions + | RECURSIVE VIEW qualified_name OPEN_PAREN columnlist CLOSE_PAREN opt_reloptions + ) AS selectstmt opt_check_option + ; + +opt_check_option + : WITH (CASCADED | LOCAL)? CHECK OPTION + | + ; + +loadstmt + : LOAD file_name + ; + +createdbstmt + : CREATE DATABASE name opt_with createdb_opt_list + ; + +createdb_opt_list + : createdb_opt_items + | + ; + +createdb_opt_items + : createdb_opt_item+ + ; + +createdb_opt_item + : createdb_opt_name opt_equal (signediconst | opt_boolean_or_string | DEFAULT) + ; + +createdb_opt_name + : identifier + | CONNECTION LIMIT + | ENCODING + | LOCATION + | OWNER + | TABLESPACE + | TEMPLATE + ; + +opt_equal + : EQUAL + | + ; + +alterdatabasestmt + : ALTER DATABASE name (WITH createdb_opt_list | createdb_opt_list | SET TABLESPACE name) + ; + +alterdatabasesetstmt + : ALTER DATABASE name setresetclause + ; + +dropdbstmt + : DROP DATABASE (IF_P EXISTS)? name (opt_with OPEN_PAREN drop_option_list CLOSE_PAREN)? + ; + +drop_option_list + : drop_option (COMMA drop_option)* + ; + +drop_option + : FORCE + ; + +altercollationstmt + : ALTER COLLATION any_name REFRESH VERSION_P + ; + +altersystemstmt + : ALTER SYSTEM_P (SET | RESET) generic_set + ; + +createdomainstmt + : CREATE DOMAIN_P any_name opt_as typename colquallist + ; + +alterdomainstmt + : ALTER DOMAIN_P any_name ( + alter_column_default + | DROP NOT NULL_P + | SET NOT NULL_P + | ADD_P tableconstraint + | DROP CONSTRAINT (IF_P EXISTS)? name opt_drop_behavior + | VALIDATE CONSTRAINT name + ) + ; + +opt_as + : AS + | + ; + +altertsdictionarystmt + : ALTER TEXT_P SEARCH DICTIONARY any_name definition + ; + +altertsconfigurationstmt + : ALTER TEXT_P SEARCH CONFIGURATION any_name ADD_P MAPPING FOR name_list any_with any_name_list + | ALTER TEXT_P SEARCH CONFIGURATION any_name ALTER MAPPING FOR name_list any_with any_name_list + | ALTER TEXT_P SEARCH CONFIGURATION any_name ALTER MAPPING REPLACE any_name any_with any_name + | ALTER TEXT_P SEARCH CONFIGURATION any_name ALTER MAPPING FOR name_list REPLACE any_name any_with any_name + | ALTER TEXT_P SEARCH CONFIGURATION any_name DROP MAPPING FOR name_list + | ALTER TEXT_P SEARCH CONFIGURATION any_name DROP MAPPING IF_P EXISTS FOR name_list + ; + +any_with + : WITH + //TODO + + // | WITH_LA + ; + +createconversionstmt + : CREATE opt_default CONVERSION_P any_name FOR sconst TO sconst FROM any_name + ; + +clusterstmt + : CLUSTER opt_verbose qualified_name cluster_index_specification + | CLUSTER opt_verbose + | CLUSTER opt_verbose name ON qualified_name + ; + +cluster_index_specification + : USING name + | + ; + +vacuumstmt + : VACUUM opt_full opt_freeze opt_verbose opt_analyze opt_vacuum_relation_list + | VACUUM OPEN_PAREN vac_analyze_option_list CLOSE_PAREN opt_vacuum_relation_list + ; + +analyzestmt + : analyze_keyword opt_verbose opt_vacuum_relation_list + | analyze_keyword OPEN_PAREN vac_analyze_option_list CLOSE_PAREN opt_vacuum_relation_list + ; + +vac_analyze_option_list + : vac_analyze_option_elem (COMMA vac_analyze_option_elem)* + ; + +analyze_keyword + : ANALYZE + | ANALYSE + ; + +vac_analyze_option_elem + : vac_analyze_option_name vac_analyze_option_arg + ; + +vac_analyze_option_name + : nonreservedword + | analyze_keyword + ; + +vac_analyze_option_arg + : opt_boolean_or_string + | numericonly + | + ; + +opt_analyze + : analyze_keyword + | + ; + +opt_verbose + : VERBOSE + | + ; + +opt_full + : FULL + | + ; + +opt_freeze + : FREEZE + | + ; + +opt_name_list + : OPEN_PAREN name_list CLOSE_PAREN + | + ; + +vacuum_relation + : qualified_name opt_name_list + ; + +vacuum_relation_list + : vacuum_relation (COMMA vacuum_relation)* + ; + +opt_vacuum_relation_list + : vacuum_relation_list + | + ; + +explainstmt + : EXPLAIN explainablestmt + | EXPLAIN analyze_keyword opt_verbose explainablestmt + | EXPLAIN VERBOSE explainablestmt + | EXPLAIN OPEN_PAREN explain_option_list CLOSE_PAREN explainablestmt + ; + +explainablestmt + : selectstmt + | insertstmt + | updatestmt + | deletestmt + | declarecursorstmt + | createasstmt + | creatematviewstmt + | refreshmatviewstmt + | executestmt + ; + +explain_option_list + : explain_option_elem (COMMA explain_option_elem)* + ; + +explain_option_elem + : explain_option_name explain_option_arg + ; + +explain_option_name + : nonreservedword + | analyze_keyword + ; + +explain_option_arg + : opt_boolean_or_string + | numericonly + | + ; + +preparestmt + : PREPARE name prep_type_clause AS preparablestmt + ; + +prep_type_clause + : OPEN_PAREN type_list CLOSE_PAREN + | + ; + +preparablestmt + : selectstmt + | insertstmt + | updatestmt + | deletestmt + ; + +executestmt + : EXECUTE name execute_param_clause + | CREATE opttemp TABLE create_as_target AS EXECUTE name execute_param_clause opt_with_data + | CREATE opttemp TABLE IF_P NOT EXISTS create_as_target AS EXECUTE name execute_param_clause opt_with_data + ; + +execute_param_clause + : OPEN_PAREN expr_list CLOSE_PAREN + | + ; + +deallocatestmt + : DEALLOCATE name + | DEALLOCATE PREPARE name + | DEALLOCATE ALL + | DEALLOCATE PREPARE ALL + ; + +insertstmt + : opt_with_clause INSERT INTO insert_target insert_rest opt_on_conflict returning_clause + ; + +insert_target + : qualified_name (AS colid)? + ; + +insert_rest + : selectstmt + | OVERRIDING override_kind VALUE_P selectstmt + | OPEN_PAREN insert_column_list CLOSE_PAREN (OVERRIDING override_kind VALUE_P)? selectstmt + | DEFAULT VALUES + ; + +override_kind + : USER + | SYSTEM_P + ; + +insert_column_list + : insert_column_item (COMMA insert_column_item)* + ; + +insert_column_item + : colid opt_indirection + ; + +opt_on_conflict + : ON CONFLICT opt_conf_expr DO (UPDATE SET set_clause_list where_clause | NOTHING) + | + ; + +opt_conf_expr + : OPEN_PAREN index_params CLOSE_PAREN where_clause + | ON CONSTRAINT name + | + ; + +returning_clause + : RETURNING target_list + | + ; + +// https://www.postgresql.org/docs/current/sql-merge.html +mergestmt + : MERGE INTO? qualified_name alias_clause? USING (select_with_parens | qualified_name) alias_clause? ON a_expr ( + merge_insert_clause merge_update_clause? + | merge_update_clause merge_insert_clause? + ) merge_delete_clause? + ; + +merge_insert_clause + : WHEN NOT MATCHED (AND a_expr)? THEN? INSERT (OPEN_PAREN insert_column_list CLOSE_PAREN)? values_clause + ; + +merge_update_clause + : WHEN MATCHED (AND a_expr)? THEN? UPDATE SET set_clause_list + ; + +merge_delete_clause + : WHEN MATCHED THEN? DELETE_P + ; + +deletestmt + : opt_with_clause DELETE_P FROM relation_expr_opt_alias using_clause where_or_current_clause returning_clause + ; + +using_clause + : USING from_list + | + ; + +lockstmt + : LOCK_P opt_table relation_expr_list opt_lock opt_nowait + ; + +opt_lock + : IN_P lock_type MODE + | + ; + +lock_type + : ACCESS (SHARE | EXCLUSIVE) + | ROW (SHARE | EXCLUSIVE) + | SHARE (UPDATE EXCLUSIVE | ROW EXCLUSIVE)? + | EXCLUSIVE + ; + +opt_nowait + : NOWAIT + | + ; + +opt_nowait_or_skip + : NOWAIT + | SKIP_P LOCKED + | + ; + +updatestmt + : opt_with_clause UPDATE relation_expr_opt_alias SET set_clause_list from_clause where_or_current_clause returning_clause + ; + +set_clause_list + : set_clause (COMMA set_clause)* + ; + +set_clause + : set_target EQUAL a_expr + | OPEN_PAREN set_target_list CLOSE_PAREN EQUAL a_expr + ; + +set_target + : colid opt_indirection + ; + +set_target_list + : set_target (COMMA set_target)* + ; + +declarecursorstmt + : DECLARE cursor_name cursor_options CURSOR opt_hold FOR selectstmt + ; + +cursor_name + : name + ; + +cursor_options + : (NO SCROLL | SCROLL | BINARY | INSENSITIVE)* + ; + +opt_hold + : + | WITH HOLD + | WITHOUT HOLD + ; + +/* +TODO: why select_with_parens alternative is needed at all? +i guess it because original byson grammar can choose selectstmt(2)->select_with_parens on only OPEN_PARENT/SELECT kewords at the begining of statement; +(select * from tab); +parse can go through selectstmt( )->select_no_parens(1)->select_clause(2)->select_with_parens(1)->select_no_parens(1)->select_clause(1)->simple_select +instead of selectstmt(1)->select_no_parens(1)->select_clause(2)->select_with_parens(1)->select_no_parens(1)->select_clause(1)->simple_select +all standard tests passed on both variants +*/ + +selectstmt + : select_no_parens + | select_with_parens + ; + +select_with_parens + : OPEN_PAREN select_no_parens CLOSE_PAREN + | OPEN_PAREN select_with_parens CLOSE_PAREN + ; + +select_no_parens + : select_clause opt_sort_clause ( + for_locking_clause opt_select_limit + | select_limit opt_for_locking_clause + )? + | with_clause select_clause opt_sort_clause ( + for_locking_clause opt_select_limit + | select_limit opt_for_locking_clause + )? + ; + +select_clause + : simple_select_intersect ((UNION | EXCEPT) all_or_distinct simple_select_intersect)* + ; + +simple_select_intersect + : simple_select_pramary (INTERSECT all_or_distinct simple_select_pramary)* + ; + +simple_select_pramary + : ( + SELECT (opt_all_clause into_clause opt_target_list | distinct_clause target_list) into_clause from_clause where_clause group_clause + having_clause window_clause + ) + | values_clause + | TABLE relation_expr + | select_with_parens + ; + +with_clause + : WITH RECURSIVE? cte_list + ; + +cte_list + : common_table_expr (COMMA common_table_expr)* + ; + +common_table_expr + : name opt_name_list AS opt_materialized OPEN_PAREN preparablestmt CLOSE_PAREN + ; + +opt_materialized + : MATERIALIZED + | NOT MATERIALIZED + | + ; + +opt_with_clause + : with_clause + | + ; + +into_clause + : INTO (opt_strict opttempTableName | into_target) + | + ; + +opt_strict + : + | STRICT_P + ; + +opttempTableName + : (LOCAL | GLOBAL)? (TEMPORARY | TEMP) opt_table qualified_name + | UNLOGGED opt_table qualified_name + | TABLE qualified_name + | qualified_name + ; + +opt_table + : TABLE + | + ; + +all_or_distinct + : ALL + | DISTINCT + | + ; + +distinct_clause + : DISTINCT (ON OPEN_PAREN expr_list CLOSE_PAREN)? + ; + +opt_all_clause + : ALL + | + ; + +opt_sort_clause + : sort_clause + | + ; + +sort_clause + : ORDER BY sortby_list + ; + +sortby_list + : sortby (COMMA sortby)* + ; + +sortby + : a_expr (USING qual_all_op | opt_asc_desc) opt_nulls_order + ; + +select_limit + : limit_clause offset_clause? + | offset_clause limit_clause? + ; + +opt_select_limit + : select_limit + | + ; + +limit_clause + : LIMIT select_limit_value (COMMA select_offset_value)? + | FETCH first_or_next ( + select_fetch_first_value row_or_rows (ONLY | WITH TIES) + | row_or_rows (ONLY | WITH TIES) + ) + ; + +offset_clause + : OFFSET (select_offset_value | select_fetch_first_value row_or_rows) + ; + +select_limit_value + : a_expr + | ALL + ; + +select_offset_value + : a_expr + ; + +select_fetch_first_value + : c_expr + | PLUS i_or_f_const + | MINUS i_or_f_const + ; + +i_or_f_const + : iconst + | fconst + ; + +row_or_rows + : ROW + | ROWS + ; + +first_or_next + : FIRST_P + | NEXT + ; + +group_clause + : GROUP_P BY group_by_list + | + ; + +group_by_list + : group_by_item (COMMA group_by_item)* + ; + +group_by_item + : empty_grouping_set + | cube_clause + | rollup_clause + | grouping_sets_clause + | a_expr + ; + +empty_grouping_set + : OPEN_PAREN CLOSE_PAREN + ; + +rollup_clause + : ROLLUP OPEN_PAREN expr_list CLOSE_PAREN + ; + +cube_clause + : CUBE OPEN_PAREN expr_list CLOSE_PAREN + ; + +grouping_sets_clause + : GROUPING SETS OPEN_PAREN group_by_list CLOSE_PAREN + ; + +having_clause + : HAVING a_expr + | + ; + +for_locking_clause + : for_locking_items + | FOR READ ONLY + ; + +opt_for_locking_clause + : for_locking_clause + | + ; + +for_locking_items + : for_locking_item+ + ; + +for_locking_item + : for_locking_strength locked_rels_list opt_nowait_or_skip + ; + +for_locking_strength + : FOR ((NO KEY)? UPDATE | KEY? SHARE) + ; + +locked_rels_list + : OF qualified_name_list + | + ; + +values_clause + : VALUES OPEN_PAREN expr_list CLOSE_PAREN (COMMA OPEN_PAREN expr_list CLOSE_PAREN)* + ; + +from_clause + : FROM from_list + | + ; + +from_list + : non_ansi_join + | table_ref (COMMA table_ref)* + ; + +non_ansi_join + : table_ref (COMMA table_ref)+ + ; + +table_ref + : ( + relation_expr opt_alias_clause tablesample_clause? + | func_table func_alias_clause + | xmltable opt_alias_clause + | select_with_parens opt_alias_clause + | LATERAL_P ( + xmltable opt_alias_clause + | func_table func_alias_clause + | select_with_parens opt_alias_clause + ) + | OPEN_PAREN table_ref ( + CROSS JOIN table_ref + | NATURAL join_type? JOIN table_ref + | join_type? JOIN table_ref join_qual + )? CLOSE_PAREN opt_alias_clause + ) ( + CROSS JOIN table_ref + | NATURAL join_type? JOIN table_ref + | join_type? JOIN table_ref join_qual + )* + ; + +alias_clause + : AS? colid (OPEN_PAREN name_list CLOSE_PAREN)? + ; + +opt_alias_clause + : table_alias_clause + | + ; + +table_alias_clause + : AS? table_alias (OPEN_PAREN name_list CLOSE_PAREN)? + ; + +func_alias_clause + : alias_clause + | (AS colid? | colid) OPEN_PAREN tablefuncelementlist CLOSE_PAREN + | + ; + +join_type + : (FULL | LEFT | RIGHT | INNER_P) OUTER_P? + ; + +join_qual + : USING OPEN_PAREN name_list CLOSE_PAREN + | ON a_expr + ; + +relation_expr + : qualified_name STAR? + | ONLY (qualified_name | OPEN_PAREN qualified_name CLOSE_PAREN) + ; + +relation_expr_list + : relation_expr (COMMA relation_expr)* + ; + +relation_expr_opt_alias + : relation_expr (AS? colid)? + ; + +tablesample_clause + : TABLESAMPLE func_name OPEN_PAREN expr_list CLOSE_PAREN opt_repeatable_clause + ; + +opt_repeatable_clause + : REPEATABLE OPEN_PAREN a_expr CLOSE_PAREN + | + ; + +func_table + : func_expr_windowless opt_ordinality + | ROWS FROM OPEN_PAREN rowsfrom_list CLOSE_PAREN opt_ordinality + ; + +rowsfrom_item + : func_expr_windowless opt_col_def_list + ; + +rowsfrom_list + : rowsfrom_item (COMMA rowsfrom_item)* + ; + +opt_col_def_list + : AS OPEN_PAREN tablefuncelementlist CLOSE_PAREN + | + ; + +//TODO WITH_LA was used + +opt_ordinality + : WITH ORDINALITY + | + ; + +where_clause + : WHERE a_expr + | + ; + +where_or_current_clause + : WHERE (CURRENT_P OF cursor_name | a_expr) + | + ; + +opttablefuncelementlist + : tablefuncelementlist + | + ; + +tablefuncelementlist + : tablefuncelement (COMMA tablefuncelement)* + ; + +tablefuncelement + : colid typename opt_collate_clause + ; + +xmltable + : XMLTABLE OPEN_PAREN ( + c_expr xmlexists_argument COLUMNS xmltable_column_list + | XMLNAMESPACES OPEN_PAREN xml_namespace_list CLOSE_PAREN COMMA c_expr xmlexists_argument COLUMNS xmltable_column_list + ) CLOSE_PAREN + ; + +xmltable_column_list + : xmltable_column_el (COMMA xmltable_column_el)* + ; + +xmltable_column_el + : colid (typename xmltable_column_option_list? | FOR ORDINALITY) + ; + +xmltable_column_option_list + : xmltable_column_option_el+ + ; + +xmltable_column_option_el + : DEFAULT a_expr + | identifier a_expr + | NOT NULL_P + | NULL_P + ; + +xml_namespace_list + : xml_namespace_el (COMMA xml_namespace_el)* + ; + +xml_namespace_el + : b_expr AS collabel + | DEFAULT b_expr + ; + +typename + : SETOF? simpletypename (opt_array_bounds | ARRAY (OPEN_BRACKET iconst CLOSE_BRACKET)?) + | qualified_name PERCENT (ROWTYPE | TYPE_P) + ; + +opt_array_bounds + : (OPEN_BRACKET iconst? CLOSE_BRACKET)* + ; + +simpletypename + : generictype + | numeric + | bit + | character + | constdatetime + | constinterval (opt_interval | OPEN_PAREN iconst CLOSE_PAREN) + ; + +consttypename + : numeric + | constbit + | constcharacter + | constdatetime + ; + +generictype + : (builtin_function_name | type_function_name | LEFT | RIGHT) attrs? opt_type_modifiers + ; + +opt_type_modifiers + : OPEN_PAREN expr_list CLOSE_PAREN + | + ; + +numeric + : INT_P + | INTEGER + | SMALLINT + | BIGINT + | REAL + | FLOAT_P opt_float + | DOUBLE_P PRECISION + | DECIMAL_P opt_type_modifiers + | DEC opt_type_modifiers + | NUMERIC opt_type_modifiers + | BOOLEAN_P + ; + +opt_float + : OPEN_PAREN iconst CLOSE_PAREN + | + ; + +//todo: merge alts + +bit + : bitwithlength + | bitwithoutlength + ; + +constbit + : bitwithlength + | bitwithoutlength + ; + +bitwithlength + : BIT opt_varying OPEN_PAREN expr_list CLOSE_PAREN + ; + +bitwithoutlength + : BIT opt_varying + ; + +character + : character_c (OPEN_PAREN iconst CLOSE_PAREN)? + ; + +constcharacter + : character_c (OPEN_PAREN iconst CLOSE_PAREN)? + ; + +character_c + : (CHARACTER | CHAR_P | NCHAR) opt_varying + | VARCHAR + | NATIONAL (CHARACTER | CHAR_P) opt_varying + ; + +opt_varying + : VARYING + | + ; + +constdatetime + : (TIMESTAMP | TIME) (OPEN_PAREN iconst CLOSE_PAREN)? opt_timezone + ; + +constinterval + : INTERVAL + ; + +//TODO with_la was used + +opt_timezone + : WITH TIME ZONE + | WITHOUT TIME ZONE + | + ; + +opt_interval + : YEAR_P + | MONTH_P + | DAY_P + | HOUR_P + | MINUTE_P + | interval_second + | YEAR_P TO MONTH_P + | DAY_P TO (HOUR_P | MINUTE_P | interval_second) + | HOUR_P TO (MINUTE_P | interval_second) + | MINUTE_P TO interval_second + | + ; + +interval_second + : SECOND_P (OPEN_PAREN iconst CLOSE_PAREN)? + ; + +opt_escape + : ESCAPE a_expr + | + ; + +//precendence accroding to Table 4.2. Operator Precedence (highest to lowest) + +//https://www.postgresql.org/docs/12/sql-syntax-lexical.html#SQL-PRECEDENCE + +/* +original version of a_expr, for info + a_expr: c_expr + //:: left PostgreSQL-style typecast + | a_expr TYPECAST typename -- 1 + | a_expr COLLATE any_name -- 2 + | a_expr AT TIME ZONE a_expr-- 3 + //right unary plus, unary minus + | (PLUS| MINUS) a_expr -- 4 + //left exponentiation + | a_expr CARET a_expr -- 5 + //left multiplication, division, modulo + | a_expr (STAR | SLASH | PERCENT) a_expr -- 6 + //left addition, subtraction + | a_expr (PLUS | MINUS) a_expr -- 7 + //left all other native and user-defined operators + | a_expr qual_op a_expr -- 8 + | qual_op a_expr -- 9 + //range containment, set membership, string matching BETWEEN IN LIKE ILIKE SIMILAR + | a_expr NOT? (LIKE|ILIKE|SIMILAR TO|(BETWEEN SYMMETRIC?)) a_expr opt_escape -- 10 + //< > = <= >= <> comparison operators + | a_expr (LT | GT | EQUAL | LESS_EQUALS | GREATER_EQUALS | NOT_EQUALS) a_expr -- 11 + //IS ISNULL NOTNULL IS TRUE, IS FALSE, IS NULL, IS DISTINCT FROM, etc + | a_expr IS NOT? + ( + NULL_P + |TRUE_P + |FALSE_P + |UNKNOWN + |DISTINCT FROM a_expr + |OF OPEN_PAREN type_list CLOSE_PAREN + |DOCUMENT_P + |unicode_normal_form? NORMALIZED + ) -- 12 + | a_expr (ISNULL|NOTNULL) -- 13 + | row OVERLAPS row -- 14 + //NOT right logical negation + | NOT a_expr -- 15 + //AND left logical conjunction + | a_expr AND a_expr -- 16 + //OR left logical disjunction + | a_expr OR a_expr -- 17 + | a_expr (LESS_LESS|GREATER_GREATER) a_expr -- 18 + | a_expr qual_op -- 19 + | a_expr NOT? IN_P in_expr -- 20 + | a_expr subquery_Op sub_type (select_with_parens|OPEN_PAREN a_expr CLOSE_PAREN) -- 21 + | UNIQUE select_with_parens -- 22 + | DEFAULT -- 23 +; +*/ + +a_expr + : a_expr_qual + ; + +/*23*/ + +/*moved to c_expr*/ + +/*22*/ + +/*moved to c_expr*/ + +/*19*/ + +a_expr_qual + : a_expr_lessless qual_op? + ; + +/*18*/ + +a_expr_lessless + : a_expr_or ((LESS_LESS | GREATER_GREATER) a_expr_or)* + ; + +/*17*/ + +a_expr_or + : a_expr_and (OR a_expr_and)* + ; + +/*16*/ + +a_expr_and + : a_expr_between (AND a_expr_between)* + ; + +/*21*/ + +a_expr_between + : a_expr_in (NOT? BETWEEN SYMMETRIC? a_expr_in AND a_expr_in)? + ; + +/*20*/ + +a_expr_in + : a_expr_unary_not (NOT? IN_P in_expr)? + ; + +/*15*/ + +a_expr_unary_not + : NOT? a_expr_isnull + ; + +/*14*/ + +/*moved to c_expr*/ + +/*13*/ + +a_expr_isnull + : a_expr_is_not (ISNULL | NOTNULL)? + ; + +/*12*/ + +a_expr_is_not + : a_expr_compare ( + IS NOT? ( + NULL_P + | TRUE_P + | FALSE_P + | UNKNOWN + | DISTINCT FROM a_expr + | OF OPEN_PAREN type_list CLOSE_PAREN + | DOCUMENT_P + | unicode_normal_form? NORMALIZED + ) + )? + ; + +/*11*/ + +a_expr_compare + : a_expr_like ( + (LT | GT | EQUAL | LESS_EQUALS | GREATER_EQUALS | NOT_EQUALS) a_expr_like + | subquery_Op sub_type (select_with_parens | OPEN_PAREN a_expr CLOSE_PAREN) /*21*/ + )? + ; + +/*10*/ + +a_expr_like + : a_expr_qual_op (NOT? (LIKE | ILIKE | SIMILAR TO) a_expr_qual_op opt_escape)? + ; + +/* 8*/ + +a_expr_qual_op + : a_expr_unary_qualop (qual_op a_expr_unary_qualop)* + ; + +/* 9*/ + +a_expr_unary_qualop + : qual_op? a_expr_add + ; + +/* 7*/ + +a_expr_add + : a_expr_mul ((MINUS | PLUS) a_expr_mul)* + ; + +/* 6*/ + +a_expr_mul + : a_expr_caret ((STAR | SLASH | PERCENT) a_expr_caret)* + ; + +/* 5*/ + +a_expr_caret + : a_expr_unary_sign (CARET a_expr)? + ; + +/* 4*/ + +a_expr_unary_sign + : (MINUS | PLUS)? a_expr_at_time_zone /* */ + ; + +/* 3*/ + +a_expr_at_time_zone + : a_expr_collate (AT TIME ZONE a_expr)? + ; + +/* 2*/ + +a_expr_collate + : a_expr_typecast (COLLATE any_name)? + ; + +/* 1*/ + +a_expr_typecast + : c_expr (TYPECAST typename)* + ; + +b_expr + : c_expr + | b_expr TYPECAST typename + //right unary plus, unary minus + | (PLUS | MINUS) b_expr + //^ left exponentiation + | b_expr CARET b_expr + //* / % left multiplication, division, modulo + | b_expr (STAR | SLASH | PERCENT) b_expr + //+ - left addition, subtraction + | b_expr (PLUS | MINUS) b_expr + //(any other operator) left all other native and user-defined operators + | b_expr qual_op b_expr + //< > = <= >= <> comparison operators + | b_expr (LT | GT | EQUAL | LESS_EQUALS | GREATER_EQUALS | NOT_EQUALS) b_expr + | qual_op b_expr + | b_expr qual_op + //S ISNULL NOTNULL IS TRUE, IS FALSE, IS NULL, IS DISTINCT FROM, etc + | b_expr IS NOT? (DISTINCT FROM b_expr | OF OPEN_PAREN type_list CLOSE_PAREN | DOCUMENT_P) + ; + +c_expr + : EXISTS select_with_parens # c_expr_exists + | ARRAY (select_with_parens | array_expr) # c_expr_expr + | PARAM opt_indirection # c_expr_expr + | GROUPING OPEN_PAREN expr_list CLOSE_PAREN # c_expr_expr + | /*22*/ UNIQUE select_with_parens # c_expr_expr + | columnref # c_expr_expr + | aexprconst # c_expr_expr + | plsqlvariablename # c_expr_expr + | OPEN_PAREN a_expr_in_parens = a_expr CLOSE_PAREN opt_indirection # c_expr_expr + | case_expr # c_expr_case + | func_expr # c_expr_expr + | select_with_parens indirection? # c_expr_expr + | explicit_row # c_expr_expr + | implicit_row # c_expr_expr + | row OVERLAPS row /* 14*/ # c_expr_expr + ; + +plsqlvariablename + : PLSQLVARIABLENAME + ; + +func_application + : func_name OPEN_PAREN ( + func_arg_list (COMMA VARIADIC func_arg_expr)? opt_sort_clause + | VARIADIC func_arg_expr opt_sort_clause + | (ALL | DISTINCT) func_arg_list opt_sort_clause + | STAR + | + ) CLOSE_PAREN + ; + +func_expr + : func_application within_group_clause filter_clause over_clause + | func_expr_common_subexpr + ; + +func_expr_windowless + : func_application + | func_expr_common_subexpr + ; + +func_expr_common_subexpr + : COLLATION FOR OPEN_PAREN a_expr CLOSE_PAREN + | CURRENT_DATE + | CURRENT_TIME (OPEN_PAREN iconst CLOSE_PAREN)? + | CURRENT_TIMESTAMP (OPEN_PAREN iconst CLOSE_PAREN)? + | LOCALTIME (OPEN_PAREN iconst CLOSE_PAREN)? + | LOCALTIMESTAMP (OPEN_PAREN iconst CLOSE_PAREN)? + | CURRENT_ROLE + | CURRENT_USER + | SESSION_USER + | USER + | CURRENT_CATALOG + | CURRENT_SCHEMA + | CAST OPEN_PAREN a_expr AS typename CLOSE_PAREN + | EXTRACT OPEN_PAREN extract_list CLOSE_PAREN + | NORMALIZE OPEN_PAREN a_expr (COMMA unicode_normal_form)? CLOSE_PAREN + | OVERLAY OPEN_PAREN overlay_list CLOSE_PAREN + | POSITION OPEN_PAREN position_list CLOSE_PAREN + | SUBSTRING OPEN_PAREN substr_list CLOSE_PAREN + | TREAT OPEN_PAREN a_expr AS typename CLOSE_PAREN + | TRIM OPEN_PAREN (BOTH | LEADING | TRAILING)? trim_list CLOSE_PAREN + | NULLIF OPEN_PAREN a_expr COMMA a_expr CLOSE_PAREN + | COALESCE OPEN_PAREN expr_list CLOSE_PAREN + | GREATEST OPEN_PAREN expr_list CLOSE_PAREN + | LEAST OPEN_PAREN expr_list CLOSE_PAREN + | XMLCONCAT OPEN_PAREN expr_list CLOSE_PAREN + | XMLELEMENT OPEN_PAREN NAME_P collabel (COMMA (xml_attributes | expr_list))? CLOSE_PAREN + | XMLEXISTS OPEN_PAREN c_expr xmlexists_argument CLOSE_PAREN + | XMLFOREST OPEN_PAREN xml_attribute_list CLOSE_PAREN + | XMLPARSE OPEN_PAREN document_or_content a_expr xml_whitespace_option CLOSE_PAREN + | XMLPI OPEN_PAREN NAME_P collabel (COMMA a_expr)? CLOSE_PAREN + | XMLROOT OPEN_PAREN XML_P a_expr COMMA xml_root_version opt_xml_root_standalone CLOSE_PAREN + | XMLSERIALIZE OPEN_PAREN document_or_content a_expr AS simpletypename CLOSE_PAREN + ; + +xml_root_version + : VERSION_P a_expr + | VERSION_P NO VALUE_P + ; + +opt_xml_root_standalone + : COMMA STANDALONE_P YES_P + | COMMA STANDALONE_P NO + | COMMA STANDALONE_P NO VALUE_P + | + ; + +xml_attributes + : XMLATTRIBUTES OPEN_PAREN xml_attribute_list CLOSE_PAREN + ; + +xml_attribute_list + : xml_attribute_el (COMMA xml_attribute_el)* + ; + +xml_attribute_el + : a_expr (AS collabel)? + ; + +document_or_content + : DOCUMENT_P + | CONTENT_P + ; + +xml_whitespace_option + : PRESERVE WHITESPACE_P + | STRIP_P WHITESPACE_P + | + ; + +xmlexists_argument + : PASSING c_expr + | PASSING c_expr xml_passing_mech + | PASSING xml_passing_mech c_expr + | PASSING xml_passing_mech c_expr xml_passing_mech + ; + +xml_passing_mech + : BY (REF | VALUE_P) + ; + +within_group_clause + : WITHIN GROUP_P OPEN_PAREN sort_clause CLOSE_PAREN + | + ; + +filter_clause + : FILTER OPEN_PAREN WHERE a_expr CLOSE_PAREN + | + ; + +window_clause + : WINDOW window_definition_list + | + ; + +window_definition_list + : window_definition (COMMA window_definition)* + ; + +window_definition + : colid AS window_specification + ; + +over_clause + : OVER (window_specification | colid) + | + ; + +window_specification + : OPEN_PAREN opt_existing_window_name opt_partition_clause opt_sort_clause opt_frame_clause CLOSE_PAREN + ; + +opt_existing_window_name + : colid + | + ; + +opt_partition_clause + : PARTITION BY expr_list + | + ; + +opt_frame_clause + : RANGE frame_extent opt_window_exclusion_clause + | ROWS frame_extent opt_window_exclusion_clause + | GROUPS frame_extent opt_window_exclusion_clause + | + ; + +frame_extent + : frame_bound + | BETWEEN frame_bound AND frame_bound + ; + +frame_bound + : UNBOUNDED (PRECEDING | FOLLOWING) + | CURRENT_P ROW + | a_expr (PRECEDING | FOLLOWING) + ; + +opt_window_exclusion_clause + : EXCLUDE (CURRENT_P ROW | GROUP_P | TIES | NO OTHERS) + | + ; + +row + : ROW OPEN_PAREN expr_list? CLOSE_PAREN + | OPEN_PAREN expr_list COMMA a_expr CLOSE_PAREN + ; + +explicit_row + : ROW OPEN_PAREN expr_list? CLOSE_PAREN + ; + +/* +TODO: +for some reason v1 +implicit_row: OPEN_PAREN expr_list COMMA a_expr CLOSE_PAREN; +works better than v2 +implicit_row: OPEN_PAREN expr_list CLOSE_PAREN; +while looks like they are almost the same, except v2 requieres at least 2 items in list +while v1 allows single item in list +*/ + +implicit_row + : OPEN_PAREN expr_list COMMA a_expr CLOSE_PAREN + ; + +sub_type + : ANY + | SOME + | ALL + ; + +all_op + : Operator + | mathop + ; + +mathop + : PLUS + | MINUS + | STAR + | SLASH + | PERCENT + | CARET + | LT + | GT + | EQUAL + | LESS_EQUALS + | GREATER_EQUALS + | NOT_EQUALS + ; + +qual_op + : Operator + | OPERATOR OPEN_PAREN any_operator CLOSE_PAREN + ; + +qual_all_op + : all_op + | OPERATOR OPEN_PAREN any_operator CLOSE_PAREN + ; + +subquery_Op + : all_op + | OPERATOR OPEN_PAREN any_operator CLOSE_PAREN + | LIKE + | NOT LIKE + | ILIKE + | NOT ILIKE + ; + +expr_list + : a_expr (COMMA a_expr)* + ; + +func_arg_list + : func_arg_expr (COMMA func_arg_expr)* + ; + +func_arg_expr + : a_expr + | param_name (COLON_EQUALS | EQUALS_GREATER) a_expr + ; + +type_list + : typename (COMMA typename)* + ; + +array_expr + : OPEN_BRACKET (expr_list | array_expr_list)? CLOSE_BRACKET + ; + +array_expr_list + : array_expr (COMMA array_expr)* + ; + +extract_list + : extract_arg FROM a_expr + | + ; + +extract_arg + : identifier + | YEAR_P + | MONTH_P + | DAY_P + | HOUR_P + | MINUTE_P + | SECOND_P + | sconst + ; + +unicode_normal_form + : NFC + | NFD + | NFKC + | NFKD + ; + +overlay_list + : a_expr PLACING a_expr FROM a_expr (FOR a_expr)? + ; + +position_list + : b_expr IN_P b_expr + | + ; + +substr_list + : a_expr FROM a_expr FOR a_expr + | a_expr FOR a_expr FROM a_expr + | a_expr FROM a_expr + | a_expr FOR a_expr + | a_expr SIMILAR a_expr ESCAPE a_expr + | expr_list + ; + +trim_list + : a_expr FROM expr_list + | FROM expr_list + | expr_list + ; + +in_expr + : select_with_parens # in_expr_select + | OPEN_PAREN expr_list CLOSE_PAREN # in_expr_list + ; + +case_expr + : CASE case_arg when_clause_list case_default END_P + ; + +when_clause_list + : when_clause+ + ; + +when_clause + : WHEN a_expr THEN a_expr + ; + +case_default + : ELSE a_expr + | + ; + +case_arg + : a_expr + | + ; + +columnref + : colid indirection? + ; + +indirection_el + : DOT (attr_name | STAR) + | OPEN_BRACKET (a_expr | opt_slice_bound COLON opt_slice_bound) CLOSE_BRACKET + ; + +opt_slice_bound + : a_expr + | + ; + +indirection + : indirection_el+ + ; + +opt_indirection + : indirection_el* + ; + +opt_target_list + : target_list + | + ; + +target_list + : target_el (COMMA target_el)* + ; + +target_el + : a_expr (AS collabel | identifier |) # target_label + | STAR # target_star + ; + +qualified_name_list + : qualified_name (COMMA qualified_name)* + ; + +qualified_name + : colid indirection? + ; + +name_list + : name (COMMA name)* + ; + +name + : colid + ; + +attr_name + : collabel + ; + +file_name + : sconst + ; + +func_name + : builtin_function_name + | type_function_name + | colid indirection + | LEFT + | RIGHT + ; + +aexprconst + : iconst + | fconst + | sconst + | bconst + | xconst + | func_name (sconst | OPEN_PAREN func_arg_list opt_sort_clause CLOSE_PAREN sconst) + | consttypename sconst + | constinterval (sconst opt_interval | OPEN_PAREN iconst CLOSE_PAREN sconst) + | TRUE_P + | FALSE_P + | NULL_P + ; + +xconst + : HexadecimalStringConstant + ; + +bconst + : BinaryStringConstant + ; + +fconst + : Numeric + ; + +iconst + : Integral + ; + +sconst + : anysconst opt_uescape + ; + +anysconst + : StringConstant + | UnicodeEscapeStringConstant + | BeginDollarStringConstant DollarText* EndDollarStringConstant + | EscapeStringConstant + ; + +opt_uescape + : UESCAPE anysconst + | + ; + +signediconst + : iconst + | PLUS iconst + | MINUS iconst + ; + +roleid + : rolespec + ; + +rolespec + : nonreservedword + | CURRENT_USER + | SESSION_USER + ; + +role_list + : rolespec (COMMA rolespec)* + ; + +colid + : identifier + | unreserved_keyword + | col_name_keyword + | plsql_unreserved_keyword + | LEFT + | RIGHT + ; + +table_alias + : identifier + | unreserved_keyword + | col_name_keyword + | plsql_unreserved_keyword + ; + +type_function_name + : identifier + | unreserved_keyword + | plsql_unreserved_keyword + | type_func_name_keyword + ; + +nonreservedword + : identifier + | unreserved_keyword + | col_name_keyword + | type_func_name_keyword + ; + +collabel + : identifier + | plsql_unreserved_keyword + | unreserved_keyword + | col_name_keyword + | type_func_name_keyword + | reserved_keyword + ; + +identifier + : Identifier opt_uescape + | QuotedIdentifier + | UnicodeQuotedIdentifier + | plsqlvariablename + | plsqlidentifier + | plsql_unreserved_keyword + ; + +plsqlidentifier + : PLSQLIDENTIFIER + ; + +unreserved_keyword + : ABORT_P + | ABSOLUTE_P + | ACCESS + | ACTION + | ADD_P + | ADMIN + | AFTER + | AGGREGATE + | ALSO + | ALTER + | ALWAYS + | ASSERTION + | ASSIGNMENT + | AT + | ATTACH + | ATTRIBUTE + | BACKWARD + | BEFORE + | BEGIN_P + | BY + | CACHE + | CALL + | CALLED + | CASCADE + | CASCADED + | CATALOG + | CHAIN + | CHARACTERISTICS + | CHECKPOINT + | CLASS + | CLOSE + | CLUSTER + | COLUMNS + | COMMENT + | COMMENTS + | COMMIT + | COMMITTED + | CONFIGURATION + | CONFLICT + | CONNECTION + | CONSTRAINTS + | CONTENT_P + | CONTINUE_P + | CONVERSION_P + | COPY + | COST + | CSV + | CUBE + | CURRENT_P + | CURSOR + | CYCLE + | DATA_P + | DATABASE + | DAY_P + | DEALLOCATE + | DECLARE + | DEFAULTS + | DEFERRED + | DEFINER + | DELETE_P + | DELIMITER + | DELIMITERS + | DEPENDS + | DETACH + | DICTIONARY + | DISABLE_P + | DISCARD + | DOCUMENT_P + | DOMAIN_P + | DOUBLE_P + | DROP + | EACH + | ENABLE_P + | ENCODING + | ENCRYPTED + | ENUM_P + | ESCAPE + | EVENT + | EXCLUDE + | EXCLUDING + | EXCLUSIVE + | EXECUTE + | EXPLAIN + | EXPRESSION + | EXTENSION + | EXTERNAL + | FAMILY + | FILTER + | FIRST_P + | FOLLOWING + | FORCE + | FORWARD + | FUNCTION + | FUNCTIONS + | GENERATED + | GLOBAL + | GRANTED + | GROUPS + | HANDLER + | HEADER_P + | HOLD + | HOUR_P + | IDENTITY_P + | IF_P + | IMMEDIATE + | IMMUTABLE + | IMPLICIT_P + | IMPORT_P + | INCLUDE + | INCLUDING + | INCREMENT + | INDEX + | INDEXES + | INHERIT + | INHERITS + | INLINE_P + | INPUT_P + | INSENSITIVE + | INSERT + | INSTEAD + | INVOKER + | ISOLATION + | KEY + | LABEL + | LANGUAGE + | LARGE_P + | LAST_P + | LEAKPROOF + | LEVEL + | LISTEN + | LOAD + | LOCAL + | LOCATION + | LOCK_P + | LOCKED + | LOGGED + | MAPPING + | MATCH + | MATERIALIZED + | MAXVALUE + | METHOD + | MINUTE_P + | MINVALUE + | MODE + | MONTH_P + | MOVE + | NAME_P + | NAMES + | NEW + | NEXT + | NFC + | NFD + | NFKC + | NFKD + | NO + | NORMALIZED + | NOTHING + | NOTIFY + | NOWAIT + | NULLS_P + | OBJECT_P + | OF + | OFF + | OIDS + | OLD + | OPERATOR + | OPTION + | OPTIONS + | ORDINALITY + | OTHERS + | OVER + | OVERRIDING + | OWNED + | OWNER + | PARALLEL + | PARSER + | PARTIAL + | PARTITION + | PASSING + | PASSWORD + | PLANS + | POLICY + | PRECEDING + | PREPARE + | PREPARED + | PRESERVE + | PRIOR + | PRIVILEGES + | PROCEDURAL + | PROCEDURE + | PROCEDURES + | PROGRAM + | PUBLICATION + | QUOTE + | RANGE + | READ + | REASSIGN + | RECHECK + | RECURSIVE + | REF + | REFERENCING + | REFRESH + | REINDEX + | RELATIVE_P + | RELEASE + | RENAME + | REPEATABLE + | REPLICA + | RESET + | RESTART + | RESTRICT + | RETURNS + | REVOKE + | ROLE + | ROLLBACK + | ROLLUP + | ROUTINE + | ROUTINES + | ROWS + | RULE + | SAVEPOINT + | SCHEMA + | SCHEMAS + | SCROLL + | SEARCH + | SECOND_P + | SECURITY + | SEQUENCE + | SEQUENCES + | SERIALIZABLE + | SERVER + | SESSION + | SET + | SETS + | SHARE + | SHOW + | SIMPLE + | SKIP_P + | SNAPSHOT + | SQL_P + | STABLE + | STANDALONE_P + | START + | STATEMENT + | STATISTICS + | STDIN + | STDOUT + | STORAGE + | STORED + | STRICT_P + | STRIP_P + | SUBSCRIPTION + | SUPPORT + | SYSID + | SYSTEM_P + | TABLES + | TABLESPACE + | TEMP + | TEMPLATE + | TEMPORARY + | TEXT_P + | TIES + | TRANSACTION + | TRANSFORM + | TRIGGER + | TRUNCATE + | TRUSTED + | TYPE_P + | TYPES_P + | UESCAPE + | UNBOUNDED + | UNCOMMITTED + | UNENCRYPTED + | UNKNOWN + | UNLISTEN + | UNLOGGED + | UNTIL + | UPDATE + | VACUUM + | VALID + | VALIDATE + | VALIDATOR + | VALUE_P + | VARYING + | VERSION_P + | VIEW + | VIEWS + | VOLATILE + | WHITESPACE_P + | WITHIN + | WITHOUT + | WORK + | WRAPPER + | WRITE + | XML_P + | YEAR_P + | YES_P + | ZONE + ; + +col_name_keyword + : BETWEEN + | BIGINT + | bit + | BOOLEAN_P + | CHAR_P + | character + | COALESCE + | DEC + | DECIMAL_P + | EXISTS + | EXTRACT + | FLOAT_P + | GREATEST + | GROUPING + | INOUT + | INT_P + | INTEGER + | INTERVAL + | LEAST + | NATIONAL + | NCHAR + | NONE + | NORMALIZE + | NULLIF + | numeric + | OUT_P + | OVERLAY + | POSITION + | PRECISION + | REAL + | ROW + | SETOF + | SMALLINT + | SUBSTRING + | TIME + | TIMESTAMP + | TREAT + | TRIM + | VALUES + | VARCHAR + | XMLATTRIBUTES + | XMLCONCAT + | XMLELEMENT + | XMLEXISTS + | XMLFOREST + | XMLNAMESPACES + | XMLPARSE + | XMLPI + | XMLROOT + | XMLSERIALIZE + | XMLTABLE + | builtin_function_name + ; + +type_func_name_keyword + : AUTHORIZATION + | BINARY + | COLLATION + | CONCURRENTLY + | CROSS + | CURRENT_SCHEMA + | FREEZE + | FULL + | ILIKE + | INNER_P + | IS + | ISNULL + | JOIN + | LIKE + | NATURAL + | NOTNULL + | OUTER_P + | OVERLAPS + | SIMILAR + | TABLESAMPLE + | VERBOSE + ; + +reserved_keyword + : ALL + | ANALYSE + | ANALYZE + | AND + | ANY + | ARRAY + | AS + | ASC + | ASYMMETRIC + | BOTH + | CASE + | CAST + | CHECK + | COLLATE + | COLUMN + | CONSTRAINT + | CREATE + | CURRENT_CATALOG + | CURRENT_DATE + | CURRENT_ROLE + | CURRENT_TIME + | CURRENT_TIMESTAMP + | CURRENT_USER + // | DEFAULT + | DEFERRABLE + | DESC + | DISTINCT + | DO + | ELSE + | END_P + | EXCEPT + | FALSE_P + | FETCH + | FOR + | FOREIGN + | FROM + | GRANT + | GROUP_P + | HAVING + | IN_P + | INITIALLY + | INTERSECT + /* +from pl_gram.y, line ~2982 + * Fortunately, INTO is a fully reserved word in the main grammar, so + * at least we need not worry about it appearing as an identifier. +*/ + + // | INTO + | LATERAL_P + | LEADING + | LIMIT + | LOCALTIME + | LOCALTIMESTAMP + | NOT + | NULL_P + | OFFSET + | ON + | ONLY + | OR + | ORDER + | PLACING + | PRIMARY + | REFERENCES + | RETURNING + | SELECT + | SESSION_USER + | SOME + | SYMMETRIC + | TABLE + | THEN + | TO + | TRAILING + | TRUE_P + | UNION + | UNIQUE + | USER + | USING + | VARIADIC + | WHEN + | WHERE + | WINDOW + | WITH + ; + +builtin_function_name + : XMLCOMMENT + | XML_IS_WELL_FORMED + | XML_IS_WELL_FORMED_DOCUMENT + | XML_IS_WELL_FORMED_CONTENT + | XMLAGG + | XPATH + | XPATH_EXISTS + | ABS + | CBRT + | CEIL + | CEILING + | DEGREES + | DIV + | EXP + | FACTORIAL + | FLOOR + | GCD + | LCM + | LN + | LOG + | LOG10 + | MIN_SCALE + | MOD + | PI + | POWER + | RADIANS + | ROUND + | SCALE + | SIGN + | SQRT + | TRIM_SCALE + | TRUNC + | WIDTH_BUCKET + | RANDOM + | SETSEED + | ACOS + | ACOSD + | ACOSH + | ASIN + | ASIND + | ASINH + | ATAN + | ATAND + | ATANH + | ATAN2 + | ATAN2D + | COS + | COSD + | COSH + | COT + | COTD + | SIN + | SIND + | SINH + | TAN + | TAND + | TANH + | BIT_LENGTH + | CHAR_LENGTH + | CHARACTER_LENGTH + | LOWER + | OCTET_LENGTH + | OCTET_LENGTH + | UPPER + | ASCII + | BTRIM + | CHR + | CONCAT + | CONCAT_WS + | FORMAT + | INITCAP + | LENGTH + | LPAD + | LTRIM + | MD5 + | PARSE_IDENT + | PG_CLIENT_ENCODING + | QUOTE_IDENT + | QUOTE_LITERAL + | QUOTE_NULLABLE + | REGEXP_COUNT + | REGEXP_INSTR + | REGEXP_LIKE + | REGEXP_MATCH + | REGEXP_MATCHES + | REGEXP_REPLACE + | REGEXP_SPLIT_TO_ARRAY + | REGEXP_SPLIT_TO_TABLE + | REGEXP_SUBSTR + | REPEAT + | REPLACE + | REVERSE + | RPAD + | RTRIM + | SPLIT_PART + | STARTS_WITH + | STRING_TO_ARRAY + | STRING_TO_TABLE + | STRPOS + | SUBSTR + | TO_ASCII + | TO_HEX + | TRANSLATE + | UNISTR + | AGE + | DATE_BIN + | DATE_PART + | DATE_TRUNC + | ISFINITE + | JUSTIFY_DAYS + | JUSTIFY_HOURS + | JUSTIFY_INTERVAL + | MAKE_DATE + | MAKE_INTERVAL + | MAKE_TIME + | MAKE_TIMESTAMP + | MAKE_TIMESTAMPTZ + | CLOCK_TIMESTAMP + | NOW + | STATEMENT_TIMESTAMP + | TIMEOFDAY + | TRANSACTION_TIMESTAMP + | TO_TIMESTAMP + | JUSTIFY_INTERVAL + | JUSTIFY_INTERVAL + | TO_CHAR + | TO_DATE + | TO_NUMBER + ; + +/************************************************************************************************************************************************************/ +/*PL/SQL GRAMMAR */ + +/*PLSQL grammar */ + +/************************************************************************************************************************************************************/ +pl_function + : comp_options pl_block opt_semi + ; + +comp_options + : comp_option* + ; + +comp_option + : sharp OPTION DUMP + | sharp PRINT_STRICT_PARAMS option_value + | sharp VARIABLE_CONFLICT ERROR + | sharp VARIABLE_CONFLICT USE_VARIABLE + | sharp VARIABLE_CONFLICT USE_COLUMN + ; + +sharp + : Operator + ; + +option_value + : sconst + | reserved_keyword + | plsql_unreserved_keyword + | unreserved_keyword + ; + +opt_semi + : + | SEMI + ; + +// exception_sect means opt_exception_sect in original grammar, don't be confused! + +pl_block + : decl_sect BEGIN_P proc_sect exception_sect END_P opt_label + ; + +decl_sect + : opt_block_label (decl_start decl_stmts?)? + ; + +decl_start + : DECLARE + ; + +decl_stmts + : decl_stmt+ + ; + +label_decl + : LESS_LESS any_identifier GREATER_GREATER + ; + +decl_stmt + : decl_statement + | DECLARE + | label_decl + ; + +decl_statement + : decl_varname ( + ALIAS FOR decl_aliasitem + | decl_const decl_datatype decl_collate decl_notnull decl_defval + | opt_scrollable CURSOR decl_cursor_args decl_is_for decl_cursor_query + ) SEMI + ; + +opt_scrollable + : + | NO SCROLL + | SCROLL + ; + +decl_cursor_query + : selectstmt + ; + +decl_cursor_args + : + | OPEN_PAREN decl_cursor_arglist CLOSE_PAREN + ; + +decl_cursor_arglist + : decl_cursor_arg (COMMA decl_cursor_arg)* + ; + +decl_cursor_arg + : decl_varname decl_datatype + ; + +decl_is_for + : IS + | FOR + ; + +decl_aliasitem + : PARAM + | colid + ; + +decl_varname + : any_identifier + ; + +decl_const + : + | CONSTANT + ; + +decl_datatype + : typename + ; //TODO: $$ = read_datatype(yychar); + +decl_collate + : + | COLLATE any_name + ; + +decl_notnull + : + | NOT NULL_P + ; + +decl_defval + : + | decl_defkey sql_expression + ; + +decl_defkey + : assign_operator + | DEFAULT + ; + +assign_operator + : EQUAL + | COLON_EQUALS + ; + +proc_sect + : proc_stmt* + ; + +proc_stmt + : pl_block SEMI + | stmt_return + | stmt_raise + | stmt_assign + | stmt_if + | stmt_case + | stmt_loop + | stmt_while + | stmt_for + | stmt_foreach_a + | stmt_exit + | stmt_assert + | stmt_execsql + | stmt_dynexecute + | stmt_perform + | stmt_call + | stmt_getdiag + | stmt_open + | stmt_fetch + | stmt_move + | stmt_close + | stmt_null + | stmt_commit + | stmt_rollback + | stmt_set + ; + +stmt_perform + : PERFORM expr_until_semi SEMI + ; + +stmt_call + : CALL any_identifier OPEN_PAREN opt_expr_list CLOSE_PAREN SEMI + | DO any_identifier OPEN_PAREN opt_expr_list CLOSE_PAREN SEMI + ; + +opt_expr_list + : + | expr_list + ; + +stmt_assign + : assign_var assign_operator sql_expression SEMI + ; + +stmt_getdiag + : GET getdiag_area_opt DIAGNOSTICS getdiag_list SEMI + ; + +getdiag_area_opt + : + | CURRENT_P + | STACKED + ; + +getdiag_list + : getdiag_list_item (COMMA getdiag_list_item)* + ; + +getdiag_list_item + : getdiag_target assign_operator getdiag_item + ; + +getdiag_item + : colid + ; + +getdiag_target + : assign_var + ; + +assign_var + : (any_name | PARAM) (OPEN_BRACKET expr_until_rightbracket CLOSE_BRACKET)* + ; + +stmt_if + : IF_P expr_until_then THEN proc_sect stmt_elsifs stmt_else END_P IF_P SEMI + ; + +stmt_elsifs + : (ELSIF a_expr THEN proc_sect)* + ; + +stmt_else + : + | ELSE proc_sect + ; + +stmt_case + : CASE opt_expr_until_when case_when_list opt_case_else END_P CASE SEMI + ; + +opt_expr_until_when + : + | sql_expression + ; + +case_when_list + : case_when+ + ; + +case_when + : WHEN expr_list THEN proc_sect + ; + +opt_case_else + : + | ELSE proc_sect + ; + +stmt_loop + : opt_loop_label loop_body + ; + +stmt_while + : opt_loop_label WHILE expr_until_loop loop_body + ; + +stmt_for + : opt_loop_label FOR for_control loop_body + ; + +//TODO: rewrite using read_sql_expression logic? + +for_control + : for_variable IN_P ( + cursor_name opt_cursor_parameters + | selectstmt + | explainstmt + | EXECUTE a_expr opt_for_using_expression + | opt_reverse a_expr DOT_DOT a_expr opt_by_expression + ) + ; + +opt_for_using_expression + : + | USING expr_list + ; + +opt_cursor_parameters + : + | OPEN_PAREN a_expr (COMMA a_expr)* CLOSE_PAREN + ; + +opt_reverse + : + | REVERSE + ; + +opt_by_expression + : + | BY a_expr + ; + +for_variable + : any_name_list + ; + +stmt_foreach_a + : opt_loop_label FOREACH for_variable foreach_slice IN_P ARRAY a_expr loop_body + ; + +foreach_slice + : + | SLICE iconst + ; + +stmt_exit + : exit_type opt_label opt_exitcond SEMI + ; + +exit_type + : EXIT + | CONTINUE_P + ; + +//todo implement RETURN statement according to initial grammar line 1754 + +stmt_return + : RETURN ( + NEXT sql_expression + | QUERY (EXECUTE a_expr opt_for_using_expression | selectstmt) + | opt_return_result + ) SEMI + ; + +opt_return_result + : + | sql_expression + ; + +//https://www.postgresql.org/docs/current/plpgsql-errors-and-messages.html + +//RAISE [ level ] 'format' [, expression [, ... ]] [ USING option = expression [, ... ] ]; + +//RAISE [ level ] condition_name [ USING option = expression [, ... ] ]; + +//RAISE [ level ] SQLSTATE 'sqlstate' [ USING option = expression [, ... ] ]; + +//RAISE [ level ] USING option = expression [, ... ]; + +//RAISE ; + +stmt_raise + : RAISE opt_stmt_raise_level sconst opt_raise_list opt_raise_using SEMI + | RAISE opt_stmt_raise_level identifier opt_raise_using SEMI + | RAISE opt_stmt_raise_level SQLSTATE sconst opt_raise_using SEMI + | RAISE opt_stmt_raise_level opt_raise_using SEMI + | RAISE + ; + +opt_stmt_raise_level + : + | + | DEBUG + | LOG + | INFO + | NOTICE + | WARNING + | EXCEPTION + ; + +opt_raise_list + : + | (COMMA a_expr)+ + ; + +opt_raise_using + : + | USING opt_raise_using_elem_list + ; + +opt_raise_using_elem + : identifier EQUAL a_expr + ; + +opt_raise_using_elem_list + : opt_raise_using_elem (COMMA opt_raise_using_elem)* + ; + +//todo imnplement + +stmt_assert + : ASSERT sql_expression opt_stmt_assert_message SEMI + ; + +opt_stmt_assert_message + : + | COMMA sql_expression + ; + +loop_body + : LOOP proc_sect END_P LOOP opt_label SEMI + ; + +//TODO: looks like all other statements like INSERT/SELECT/UPDATE/DELETE are handled here; + +//pls take a look at original grammar + +stmt_execsql + : make_execsql_stmt SEMI + /*K_IMPORT + | K_INSERT + | t_word + | t_cword +*/ + ; + +//https://www.postgresql.org/docs/current/plpgsql-statements.html#PLPGSQL-STATEMENTS-SQL-NORESULT + +//EXECUTE command-string [ INTO [STRICT] target ] [ USING expression [, ... ] ]; + +stmt_dynexecute + : EXECUTE a_expr ( + /*this is silly, but i have to time to find nice way to code */ opt_execute_into opt_execute_using + | opt_execute_using opt_execute_into + | + ) SEMI + ; + +opt_execute_using + : + | USING opt_execute_using_list + ; + +opt_execute_using_list + : a_expr (COMMA a_expr)* + ; + +opt_execute_into + : + | INTO STRICT_P? into_target + ; + +//https://www.postgresql.org/docs/current/plpgsql-cursors.html#PLPGSQL-CURSOR-OPENING + +//OPEN unbound_cursorvar [ [ NO ] SCROLL ] FOR query; + +//OPEN unbound_cursorvar [ [ NO ] SCROLL ] FOR EXECUTE query_string + +// [ USING expression [, ... ] ]; + +//OPEN bound_cursorvar [ ( [ argument_name := ] argument_value [, ...] ) ]; + +stmt_open + : OPEN ( + cursor_variable opt_scroll_option FOR (selectstmt | EXECUTE sql_expression opt_open_using) + | colid (OPEN_PAREN opt_open_bound_list CLOSE_PAREN)? + ) SEMI + ; + +opt_open_bound_list_item + : colid COLON_EQUALS a_expr + | a_expr + ; + +opt_open_bound_list + : opt_open_bound_list_item (COMMA opt_open_bound_list_item)* + ; + +opt_open_using + : + | USING expr_list + ; + +opt_scroll_option + : + | opt_scroll_option_no SCROLL + ; + +opt_scroll_option_no + : + | NO + ; + +//https://www.postgresql.org/docs/current/plpgsql-cursors.html#PLPGSQL-CURSOR-OPENING + +//FETCH [ direction { FROM | IN } ] cursor INTO target; + +stmt_fetch + : FETCH direction = opt_fetch_direction opt_cursor_from cursor_variable INTO into_target SEMI + ; + +into_target + : expr_list + ; + +opt_cursor_from + : + | FROM + | IN_P + ; + +opt_fetch_direction + : + | + | NEXT + | PRIOR + | FIRST_P + | LAST_P + | ABSOLUTE_P a_expr + | RELATIVE_P a_expr + | a_expr + | ALL + | (FORWARD | BACKWARD) (a_expr | ALL)? + ; + +//https://www.postgresql.org/docs/current/plpgsql-cursors.html#PLPGSQL-CURSOR-OPENING + +//MOVE [ direction { FROM | IN } ] cursor; + +stmt_move + : MOVE opt_fetch_direction cursor_variable SEMI + ; + +stmt_close + : CLOSE cursor_variable SEMI + ; + +stmt_null + : NULL_P SEMI + ; + +stmt_commit + : COMMIT plsql_opt_transaction_chain SEMI + ; + +stmt_rollback + : ROLLBACK plsql_opt_transaction_chain SEMI + ; + +plsql_opt_transaction_chain + : AND NO? CHAIN + | + ; + +stmt_set + : SET any_name TO DEFAULT SEMI + | RESET (any_name | ALL) SEMI + ; + +cursor_variable + : colid + | PARAM + ; + +exception_sect + : + | EXCEPTION proc_exceptions + ; + +proc_exceptions + : proc_exception+ + ; + +proc_exception + : WHEN proc_conditions THEN proc_sect + ; + +proc_conditions + : proc_condition (OR proc_condition)* + ; + +proc_condition + : any_identifier + | SQLSTATE sconst + ; + +//expr_until_semi: + +//; + +//expr_until_rightbracket: + +//; + +//expr_until_loop: + +//; + +opt_block_label + : + | label_decl + ; + +opt_loop_label + : + | label_decl + ; + +opt_label + : + | any_identifier + ; + +opt_exitcond + : WHEN expr_until_semi + | + ; + +any_identifier + : colid + | plsql_unreserved_keyword + ; + +plsql_unreserved_keyword + : ABSOLUTE_P + | ALIAS + | AND + | ARRAY + | ASSERT + | BACKWARD + | CALL + | CHAIN + | CLOSE + | COLLATE + | COLUMN + //| COLUMN_NAME + | COMMIT + | CONSTANT + | CONSTRAINT + //| CONSTRAINT_NAME + | CONTINUE_P + | CURRENT_P + | CURSOR + //| DATATYPE + | DEBUG + | DEFAULT + //| DETAIL + | DIAGNOSTICS + | DO + | DUMP + | ELSIF + //| ERRCODE + | ERROR + | EXCEPTION + | EXIT + | FETCH + | FIRST_P + | FORWARD + | GET + //| HINT + + //| IMPORT + | INFO + | INSERT + | IS + | LAST_P + //| MESSAGE + + //| MESSAGE_TEXT + | MOVE + | NEXT + | NO + | NOTICE + | OPEN + | OPTION + | PERFORM + //| PG_CONTEXT + + //| PG_DATATYPE_NAME + + //| PG_EXCEPTION_CONTEXT + + //| PG_EXCEPTION_DETAIL + + //| PG_EXCEPTION_HINT + | PRINT_STRICT_PARAMS + | PRIOR + | QUERY + | RAISE + | RELATIVE_P + | RESET + | RETURN + //| RETURNED_SQLSTATE + | ROLLBACK + //| ROW_COUNT + | ROWTYPE + | SCHEMA + //| SCHEMA_NAME + | SCROLL + | SET + | SLICE + | SQLSTATE + | STACKED + | TABLE + //| TABLE_NAME + | TYPE_P + | USE_COLUMN + | USE_VARIABLE + | VARIABLE_CONFLICT + | WARNING + | OUTER_P + ; + +sql_expression + : opt_target_list into_clause from_clause where_clause group_clause having_clause window_clause + ; + +expr_until_then + : sql_expression + ; + +expr_until_semi + : sql_expression + ; + +expr_until_rightbracket + : a_expr + ; + +expr_until_loop + : a_expr + ; + +make_execsql_stmt + : stmt opt_returning_clause_into + ; + +opt_returning_clause_into + : INTO opt_strict into_target + | + ; diff --git a/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/LexerDispatchingErrorListener.java b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/LexerDispatchingErrorListener.java new file mode 100644 index 0000000000..11ff0b9d3f --- /dev/null +++ b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/LexerDispatchingErrorListener.java @@ -0,0 +1,84 @@ +/* + * Copyright 2021-2023 Aklivity Inc + * + * Licensed under the Aklivity Community License (the "License"); you may not use + * this file except in compliance with the License. You may obtain a copy of the + * License at + * + * https://www.aklivity.io/aklivity-community-license/ + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OF ANY KIND, either express or implied. See the License for the + * specific language governing permissions and limitations under the License. + */ +package io.aklivity.zilla.runtime.binding.pgsql.parser; + + +import java.util.BitSet; + +import org.antlr.v4.runtime.ANTLRErrorListener; +import org.antlr.v4.runtime.Lexer; +import org.antlr.v4.runtime.Parser; +import org.antlr.v4.runtime.ProxyErrorListener; +import org.antlr.v4.runtime.RecognitionException; +import org.antlr.v4.runtime.Recognizer; +import org.antlr.v4.runtime.atn.ATNConfigSet; +import org.antlr.v4.runtime.dfa.DFA; + +public class LexerDispatchingErrorListener implements ANTLRErrorListener +{ + @SuppressWarnings("checkstyle:MemberName") + Lexer _parent; + + public LexerDispatchingErrorListener(Lexer parent) + { + _parent = parent; + } + + public void syntaxError( + Recognizer recognizer, + Object offendingSymbol, + int line, + int charPositionInLine, + String msg, + RecognitionException e) + { + ProxyErrorListener foo = new ProxyErrorListener(_parent.getErrorListeners()); + foo.syntaxError(recognizer, offendingSymbol, line, charPositionInLine, msg, e); + } + + public void reportAmbiguity(Parser recognizer, + DFA dfa, + int startIndex, + int stopIndex, + boolean exact, + BitSet ambigAlts, + ATNConfigSet configs) + { + ProxyErrorListener foo = new ProxyErrorListener(_parent.getErrorListeners()); + foo.reportAmbiguity(recognizer, dfa, startIndex, stopIndex, exact, ambigAlts, configs); + } + + public void reportAttemptingFullContext(Parser recognizer, + DFA dfa, + int startIndex, + int stopIndex, + BitSet conflictingAlts, + ATNConfigSet configs) + { + ProxyErrorListener foo = new ProxyErrorListener(_parent.getErrorListeners()); + foo.reportAttemptingFullContext(recognizer, dfa, startIndex, stopIndex, conflictingAlts, configs); + } + + public void reportContextSensitivity(Parser recognizer, + DFA dfa, + int startIndex, + int stopIndex, + int prediction, + ATNConfigSet configs) + { + ProxyErrorListener foo = new ProxyErrorListener(_parent.getErrorListeners()); + foo.reportContextSensitivity(recognizer, dfa, startIndex, stopIndex, prediction, configs); + } +} diff --git a/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/ParserDispatchingErrorListener.java b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/ParserDispatchingErrorListener.java new file mode 100644 index 0000000000..68116c3de7 --- /dev/null +++ b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/ParserDispatchingErrorListener.java @@ -0,0 +1,85 @@ +/* + * Copyright 2021-2023 Aklivity Inc + * + * Licensed under the Aklivity Community License (the "License"); you may not use + * this file except in compliance with the License. You may obtain a copy of the + * License at + * + * https://www.aklivity.io/aklivity-community-license/ + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OF ANY KIND, either express or implied. See the License for the + * specific language governing permissions and limitations under the License. + */ +package io.aklivity.zilla.runtime.binding.pgsql.parser; + +import java.util.BitSet; + +import org.antlr.v4.runtime.ANTLRErrorListener; +import org.antlr.v4.runtime.Parser; +import org.antlr.v4.runtime.ProxyErrorListener; +import org.antlr.v4.runtime.RecognitionException; +import org.antlr.v4.runtime.Recognizer; +import org.antlr.v4.runtime.atn.ATNConfigSet; +import org.antlr.v4.runtime.dfa.DFA; + + +public class ParserDispatchingErrorListener implements ANTLRErrorListener +{ + @SuppressWarnings("checkstyle:MemberName") + Parser _parent; + + public ParserDispatchingErrorListener(Parser parent) + { + _parent = parent; + } + + public void syntaxError( + Recognizer recognizer, Object offendingSymbol, + int line, + int charPositionInLine, + String msg, + RecognitionException e) + { + var foo = new ProxyErrorListener(_parent.getErrorListeners()); + foo.syntaxError(recognizer, offendingSymbol, line, charPositionInLine, msg, e); + } + + public void reportAmbiguity( + Parser recognizer, + DFA dfa, + int startIndex, + int stopIndex, + boolean exact, + BitSet ambigAlts, + ATNConfigSet configs) + { + ProxyErrorListener foo = new ProxyErrorListener(_parent.getErrorListeners()); + foo.reportAmbiguity(recognizer, dfa, startIndex, stopIndex, exact, ambigAlts, configs); + } + + public void reportAttemptingFullContext( + Parser recognizer, + DFA dfa, + int startIndex, + int stopIndex, + BitSet conflictingAlts, + ATNConfigSet configs) + { + ProxyErrorListener foo = new ProxyErrorListener(_parent.getErrorListeners()); + foo.reportAttemptingFullContext(recognizer, dfa, startIndex, stopIndex, conflictingAlts, configs); + } + + public void reportContextSensitivity( + Parser recognizer, + DFA dfa, + int startIndex, + int stopIndex, + int prediction, + ATNConfigSet configs) + { + ProxyErrorListener foo = new ProxyErrorListener(_parent.getErrorListeners()); + foo.reportContextSensitivity(recognizer, dfa, startIndex, stopIndex, prediction, configs); + } +} diff --git a/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/PgsqlParser.java b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/PgsqlParser.java new file mode 100644 index 0000000000..f3632c2c1f --- /dev/null +++ b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/PgsqlParser.java @@ -0,0 +1,59 @@ +/* + * Copyright 2021-2023 Aklivity Inc + * + * Licensed under the Aklivity Community License (the "License"); you may not use + * this file except in compliance with the License. You may obtain a copy of the + * License at + * + * https://www.aklivity.io/aklivity-community-license/ + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OF ANY KIND, either express or implied. See the License for the + * specific language governing permissions and limitations under the License. + */ +package io.aklivity.zilla.runtime.binding.pgsql.parser; + +import org.antlr.v4.runtime.BailErrorStrategy; +import org.antlr.v4.runtime.CharStream; +import org.antlr.v4.runtime.CharStreams; +import org.antlr.v4.runtime.CommonTokenStream; +import org.antlr.v4.runtime.tree.ParseTreeWalker; + +import io.aklivity.zilla.runtime.binding.pgsql.parser.listener.SQLTableCommandListener; + +public final class PgsqlParser +{ + private final ParseTreeWalker walker; + private final BailErrorStrategy errorStrategy; + private final PostgreSQLLexer lexer; + private final CommonTokenStream tokens; + private final PostgreSQLParser parser; + private final SQLTableCommandListener tableCommand; + + public PgsqlParser() + { + this.walker = new ParseTreeWalker(); + this.errorStrategy = new BailErrorStrategy(); + this.lexer = new PostgreSQLLexer(null); + this.parser = new PostgreSQLParser(null); + this.tokens = new CommonTokenStream(lexer); + this.tableCommand = new SQLTableCommandListener(); + parser.setErrorHandler(errorStrategy); + } + + public SQLTableCommandListener.TableInfo parseTable( + String sql) + { + CharStream input = CharStreams.fromString(sql); + lexer.reset(); + lexer.setInputStream(input); + + tokens.setTokenSource(lexer); + parser.setTokenStream(tokens); + + walker.walk(tableCommand, parser.root()); + + return tableCommand.tableInfo(); + } +} diff --git a/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/PostgreSQLLexerBase.java b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/PostgreSQLLexerBase.java new file mode 100644 index 0000000000..1fed9bfc51 --- /dev/null +++ b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/PostgreSQLLexerBase.java @@ -0,0 +1,91 @@ +/* + * Copyright 2021-2023 Aklivity Inc + * + * Licensed under the Aklivity Community License (the "License"); you may not use + * this file except in compliance with the License. You may obtain a copy of the + * License at + * + * https://www.aklivity.io/aklivity-community-license/ + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OF ANY KIND, either express or implied. See the License for the + * specific language governing permissions and limitations under the License. + */ +package io.aklivity.zilla.runtime.binding.pgsql.parser; + +import java.util.ArrayDeque; +import java.util.Deque; + +import org.antlr.v4.runtime.CharStream; +import org.antlr.v4.runtime.Lexer; + +@SuppressWarnings({"all", "warnings", "unchecked", "unused", "cast", "CheckReturnValue"}) +public abstract class PostgreSQLLexerBase extends Lexer +{ + protected final Deque tags = new ArrayDeque<>(); + + protected PostgreSQLLexerBase(CharStream input) + { + super(input); + + } + + public void pushTag() + { + tags.push(getText()); + } + + public boolean isTag() + { + return getText().equals(tags.peek()); + } + + public void popTag() + { + tags.pop(); + } + + public boolean checkLA(int c) + { + return getInputStream().LA(1) != c; + } + + public boolean charIsLetter() + { + return Character.isLetter(getInputStream().LA(-1)); + } + + public void HandleNumericFail() + { + getInputStream().seek(getInputStream().index() - 2); + setType(PostgreSQLLexer.Integral); + } + + public void HandleLessLessGreaterGreater() + { + if (getText() == "<<") setType(PostgreSQLLexer.LESS_LESS); + if (getText() == ">>") setType(PostgreSQLLexer.GREATER_GREATER); + } + + public void UnterminatedBlockCommentDebugAssert() + { + //Debug.Assert(InputStream.LA(1) == -1 /*EOF*/); + } + + public boolean CheckIfUtf32Letter() + { + int codePoint = getInputStream().LA(-2) << 8 + getInputStream().LA(-1); + char[] c; + if (codePoint < 0x10000) + { + c = new char[]{(char) codePoint}; + } + else + { + codePoint -= 0x10000; + c = new char[]{(char) (codePoint / 0x400 + 0xd800), (char) (codePoint % 0x400 + 0xdc00)}; + } + return Character.isLetter(c[0]); + } +} diff --git a/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/PostgreSQLParserBase.java b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/PostgreSQLParserBase.java new file mode 100644 index 0000000000..afbb0d9574 --- /dev/null +++ b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/PostgreSQLParserBase.java @@ -0,0 +1,173 @@ +/* + * Copyright 2021-2023 Aklivity Inc + * + * Licensed under the Aklivity Community License (the "License"); you may not use + * this file except in compliance with the License. You may obtain a copy of the + * License at + * + * https://www.aklivity.io/aklivity-community-license/ + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OF ANY KIND, either express or implied. See the License for the + * specific language governing permissions and limitations under the License. + */ +package io.aklivity.zilla.runtime.binding.pgsql.parser; + +import java.util.List; + +import org.antlr.v4.runtime.CharStream; +import org.antlr.v4.runtime.CharStreams; +import org.antlr.v4.runtime.CommonTokenStream; +import org.antlr.v4.runtime.Lexer; +import org.antlr.v4.runtime.Parser; +import org.antlr.v4.runtime.ParserRuleContext; +import org.antlr.v4.runtime.TokenStream; + +@SuppressWarnings({"all", "warnings", "unchecked", "unused", "cast", "CheckReturnValue"}) +public abstract class PostgreSQLParserBase extends Parser +{ + + public PostgreSQLParserBase(TokenStream input) + { + super(input); + } + + ParserRuleContext getParsedSqlTree( + String script, + int line) + { + PostgreSQLParser ph = getPostgreSQLParser(script); + ParserRuleContext result = ph.root(); + return result; + } + + public void ParseRoutineBody( + PostgreSQLParser.Createfunc_opt_listContext _localctx) + { + String lang = null; + for (PostgreSQLParser.Createfunc_opt_itemContext coi : _localctx.createfunc_opt_item()) + { + if (coi.LANGUAGE() != null) + { + if (coi.nonreservedword_or_sconst() != null) + { + if (coi.nonreservedword_or_sconst().sconst() != null) + { + lang = coi.nonreservedword_or_sconst().sconst().getText(); + break; + } + if (coi.nonreservedword_or_sconst().nonreservedword() != null) + { + if (coi.nonreservedword_or_sconst().nonreservedword().identifier() != null) + { + if (coi.nonreservedword_or_sconst().nonreservedword().identifier().Identifier() != null) + { + lang = coi.nonreservedword_or_sconst().nonreservedword().identifier().Identifier().getText(); + break; + } + } + } + } + } + } + if (null == lang) + { + return; + } + PostgreSQLParser.Createfunc_opt_itemContext func_as = null; + for (PostgreSQLParser.Createfunc_opt_itemContext a : _localctx.createfunc_opt_item()) + { + if (a.func_as() != null) + { + func_as = a; + break; + } + + } + if (func_as != null) + { + String txt = GetRoutineBodyString(func_as.func_as().sconst(0)); + PostgreSQLParser ph = getPostgreSQLParser(txt); + switch (lang) + { + case "plpgsql": + func_as.func_as().Definition = ph.plsqlroot(); + break; + case "sql": + func_as.func_as().Definition = ph.root(); + break; + } + } + } + + private String TrimQuotes(String s) + { + return (s == null || s.isEmpty()) ? s : s.substring(1, s.length() - 1); + } + + public String unquote( + String s) + { + int slength = s.length(); + StringBuilder r = new StringBuilder(slength); + int i = 0; + while (i < slength) + { + Character c = s.charAt(i); + r.append(c); + if (c == '\'' && i < slength - 1 && s.charAt(i + 1) == '\'') + { + i++; + } + i++; + } + return r.toString(); + } + + public String GetRoutineBodyString( + PostgreSQLParser.SconstContext rule) + { + PostgreSQLParser.AnysconstContext anysconst = rule.anysconst(); + org.antlr.v4.runtime.tree.TerminalNode StringConstant = anysconst.StringConstant(); + if (null != StringConstant) + { + return TrimQuotes(StringConstant.getText()); + } + org.antlr.v4.runtime.tree.TerminalNode UnicodeEscapeStringConstant = anysconst.UnicodeEscapeStringConstant(); + if (null != UnicodeEscapeStringConstant) + { + return unquote(UnicodeEscapeStringConstant.getText()); + } + org.antlr.v4.runtime.tree.TerminalNode EscapeStringConstant = anysconst.EscapeStringConstant(); + if (null != EscapeStringConstant) + { + return unquote(EscapeStringConstant.getText()); + } + String result = ""; + List dollartext = anysconst.DollarText(); + for (org.antlr.v4.runtime.tree.TerminalNode s : dollartext) + { + result += s.getText(); + } + return result; + } + + @SuppressWarnings("checkstyle:LocalVariableName") + public PostgreSQLParser getPostgreSQLParser( + String script) + { + CharStream charStream = CharStreams.fromString(script); + Lexer lexer = new PostgreSQLLexer(charStream); + CommonTokenStream tokens = new CommonTokenStream(lexer); + PostgreSQLParser parser = new PostgreSQLParser(tokens); + lexer.removeErrorListeners(); + parser.removeErrorListeners(); + LexerDispatchingErrorListener listener_lexer = + new LexerDispatchingErrorListener((Lexer)(((CommonTokenStream)(this.getInputStream())).getTokenSource())); + ParserDispatchingErrorListener listener_parser = new ParserDispatchingErrorListener(this); + lexer.addErrorListener(listener_lexer); + parser.addErrorListener(listener_parser); + return parser; + } +} diff --git a/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SQLTableCommandListener.java b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SQLTableCommandListener.java new file mode 100644 index 0000000000..5dfb3f06c4 --- /dev/null +++ b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SQLTableCommandListener.java @@ -0,0 +1,68 @@ +package io.aklivity.zilla.runtime.binding.pgsql.parser.listener; + +import java.util.Map; +import java.util.Set; + +import org.agrona.collections.Object2ObjectHashMap; +import org.agrona.collections.ObjectHashSet; + +import io.aklivity.zilla.runtime.binding.pgsql.parser.PostgreSQLParser; +import io.aklivity.zilla.runtime.binding.pgsql.parser.PostgreSQLParserBaseListener; + +public class SQLTableCommandListener extends PostgreSQLParserBaseListener +{ + private String tableName; + private final Map columns = new Object2ObjectHashMap<>(); + private final Set primaryKeys = new ObjectHashSet<>(); + + public TableInfo tableInfo() + { + return new TableInfo(tableName, columns, primaryKeys); + } + + @Override + public void enterCreatestmt( + PostgreSQLParser.CreatestmtContext ctx) + { + tableName = ctx.qualified_name().get(0).getText(); + + columns.clear(); + primaryKeys.clear(); + + for (PostgreSQLParser.TableelementContext tableElement : ctx.opttableelementlist().tableelementlist().tableelement()) + { + if (tableElement.columnDef() != null) + { + String columnName = tableElement.columnDef().colid().getText(); + String dataType = tableElement.columnDef().typename().getText(); + columns.put(columnName, dataType); + + for (PostgreSQLParser.ColconstraintContext constraint : tableElement.columnDef().colquallist().colconstraint()) + { + if (constraint.colconstraintelem().PRIMARY() != null && + constraint.colconstraintelem().KEY() != null) + { + primaryKeys.add(columnName); + } + } + } + else if (tableElement.tableconstraint() != null) + { + if (tableElement.tableconstraint().constraintelem().PRIMARY() != null && + tableElement.tableconstraint().constraintelem().KEY() != null) + { + tableElement.tableconstraint().constraintelem().columnlist().columnElem().forEach( + column -> primaryKeys.add(column.getText())); + } + } + } + } + + public record TableInfo( + String tableName, + Map columns, + Set primaryKeys + ) + { + } +} diff --git a/incubator/binding-pgsql/src/test/java/io/aklivity/zilla/runtime/binding/pgsql/parser/PgsqlTableParserTest.java b/incubator/binding-pgsql/src/test/java/io/aklivity/zilla/runtime/binding/pgsql/parser/PgsqlTableParserTest.java new file mode 100644 index 0000000000..0d733a07ef --- /dev/null +++ b/incubator/binding-pgsql/src/test/java/io/aklivity/zilla/runtime/binding/pgsql/parser/PgsqlTableParserTest.java @@ -0,0 +1,85 @@ +/* + * Copyright 2021-2023 Aklivity Inc + * + * Licensed under the Aklivity Community License (the "License"); you may not use + * this file except in compliance with the License. You may obtain a copy of the + * License at + * + * https://www.aklivity.io/aklivity-community-license/ + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OF ANY KIND, either express or implied. See the License for the + * specific language governing permissions and limitations under the License. + */ +package io.aklivity.zilla.runtime.binding.pgsql.parser; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertTrue; + +import org.junit.Before; +import org.junit.Test; + +import io.aklivity.zilla.runtime.binding.pgsql.parser.listener.SQLTableCommandListener; + +public class PgsqlTableParserTest +{ + private PgsqlParser parser; + + @Before + public void setUp() + { + parser = new PgsqlParser(); + } + + @Test + public void shouldParseWithPrimaryKeySQL() + { + String sql = "CREATE TABLE test (id INT PRIMARY KEY, name VARCHAR(100));"; + SQLTableCommandListener.TableInfo tableInfo = parser.parseTable(sql); + assertNotNull(tableInfo); + assertTrue(tableInfo.primaryKeys().contains("id")); + } + + @Test + public void shouldParseWithPrimaryKeysSQL() + { + String sql = """ + CREATE TABLE example_table ( + id INT PRIMARY KEY, + name VARCHAR(100), + age INT, + PRIMARY KEY (id, name) + );"""; + SQLTableCommandListener.TableInfo command = parser.parseTable(sql); + assertNotNull(command); + assertEquals(2, command.primaryKeys().size()); + assertEquals(3, command.columns().size()); + assertTrue(command.primaryKeys().contains("id")); + assertTrue(command.primaryKeys().contains("name")); + } + + @Test + public void shouldHandleEmptySQL() + { + String sql = ""; + SQLTableCommandListener.TableInfo command = parser.parseTable(sql); + assertNotNull(command); + } + + @Test + public void shouldHandleInvalidSQL() + { + String sql = "INVALID SQL"; + try + { + parser.parseTable(sql); + assertTrue("Expected an exception to be thrown", false); + } + catch (Exception e) + { + assertTrue(true); + } + } +} From 66622a5e1663c26e55d24e7e27d1dd4dd4cc8579 Mon Sep 17 00:00:00 2001 From: Akram Yakubov Date: Tue, 15 Oct 2024 16:53:15 -0700 Subject: [PATCH 02/26] WIP --- .../pgsql/parser/listener/SQLTableCommandListener.java | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SQLTableCommandListener.java b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SQLTableCommandListener.java index 5dfb3f06c4..0e31e29562 100644 --- a/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SQLTableCommandListener.java +++ b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SQLTableCommandListener.java @@ -20,12 +20,17 @@ public TableInfo tableInfo() return new TableInfo(tableName, columns, primaryKeys); } + @Override + public void enterQualified_name( + PostgreSQLParser.Qualified_nameContext ctx) + { + tableName = ctx.getText();s + } + @Override public void enterCreatestmt( PostgreSQLParser.CreatestmtContext ctx) { - tableName = ctx.qualified_name().get(0).getText(); - columns.clear(); primaryKeys.clear(); From 1b0c5abc96aa5694cead87901608d8f25eedc3d3 Mon Sep 17 00:00:00 2001 From: Akram Yakubov Date: Tue, 15 Oct 2024 16:53:28 -0700 Subject: [PATCH 03/26] Fix typo --- .../pgsql/parser/listener/SQLTableCommandListener.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SQLTableCommandListener.java b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SQLTableCommandListener.java index 0e31e29562..6612576526 100644 --- a/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SQLTableCommandListener.java +++ b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SQLTableCommandListener.java @@ -20,11 +20,11 @@ public TableInfo tableInfo() return new TableInfo(tableName, columns, primaryKeys); } - @Override + @Override public void enterQualified_name( PostgreSQLParser.Qualified_nameContext ctx) { - tableName = ctx.getText();s + tableName = ctx.getText(); } @Override From a99a47b363dab45be779619f671929537a11082d Mon Sep 17 00:00:00 2001 From: Akram Yakubov Date: Wed, 16 Oct 2024 09:56:25 -0700 Subject: [PATCH 04/26] Refactor code --- .../binding-pgsql/gen/PostgreSqlLexer.interp | 2074 +++++++ .../binding-pgsql/gen/PostgreSqlLexer.java | 5245 +++++++++++++++++ .../binding-pgsql/gen/PostgreSqlLexer.tokens | 1314 +++++ ...{PostgreSQLLexer.g4 => PostgreSqlLexer.g4} | 12 +- ...ostgreSQLParser.g4 => PostgreSqlParser.g4} | 8 +- .../parser/LexerDispatchingErrorListener.java | 64 +- .../ParserDispatchingErrorListener.java | 15 +- .../binding/pgsql/parser/PgsqlParser.java | 16 +- ...exerBase.java => PostgreSqlLexerBase.java} | 26 +- ...serBase.java => PostgreSqlParserBase.java} | 72 +- ...ener.java => SqlTableCommandListener.java} | 31 +- .../pgsql/parser/PgsqlTableParserTest.java | 8 +- 12 files changed, 8768 insertions(+), 117 deletions(-) create mode 100644 incubator/binding-pgsql/gen/PostgreSqlLexer.interp create mode 100644 incubator/binding-pgsql/gen/PostgreSqlLexer.java create mode 100644 incubator/binding-pgsql/gen/PostgreSqlLexer.tokens rename incubator/binding-pgsql/src/main/antlr4/io/aklivity/zilla/runtime/binding/pgsql/parser/{PostgreSQLLexer.g4 => PostgreSqlLexer.g4} (99%) rename incubator/binding-pgsql/src/main/antlr4/io/aklivity/zilla/runtime/binding/pgsql/parser/{PostgreSQLParser.g4 => PostgreSqlParser.g4} (99%) rename incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/{PostgreSQLLexerBase.java => PostgreSqlLexerBase.java} (76%) rename incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/{PostgreSQLParserBase.java => PostgreSqlParserBase.java} (63%) rename incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/{SQLTableCommandListener.java => SqlTableCommandListener.java} (66%) diff --git a/incubator/binding-pgsql/gen/PostgreSqlLexer.interp b/incubator/binding-pgsql/gen/PostgreSqlLexer.interp new file mode 100644 index 0000000000..328130ee21 --- /dev/null +++ b/incubator/binding-pgsql/gen/PostgreSqlLexer.interp @@ -0,0 +1,2074 @@ +token literal names: +null +'$' +'(' +')' +'[' +']' +',' +';' +':' +'*' +'=' +'.' +'+' +'-' +'/' +'^' +'<' +'>' +'<<' +'>>' +':=' +'<=' +'=>' +'>=' +'..' +'<>' +'::' +'%' +null +null +'ALL' +'ANALYSE' +'ANALYZE' +'AND' +'ANY' +'ARRAY' +'AS' +'ASC' +'ASYMMETRIC' +'BOTH' +'CASE' +'CAST' +'CHECK' +'COLLATE' +'COLUMN' +'CONSTRAINT' +'CREATE' +'CURRENT_CATALOG' +'CURRENT_DATE' +'CURRENT_ROLE' +'CURRENT_TIME' +'CURRENT_TIMESTAMP' +'CURRENT_USER' +'DEFAULT' +'DEFERRABLE' +'DESC' +'DISTINCT' +'DO' +'ELSE' +'EXCEPT' +'FALSE' +'FETCH' +'FOR' +'FOREIGN' +'FROM' +'GRANT' +'GROUP' +'HAVING' +'IN' +'INITIALLY' +'INTERSECT' +'INTO' +'LATERAL' +'LEADING' +'LIMIT' +'LOCALTIME' +'LOCALTIMESTAMP' +'NOT' +'NULL' +'OFFSET' +'ON' +'ONLY' +'OR' +'ORDER' +'PLACING' +'PRIMARY' +'REFERENCES' +'RETURNING' +'SELECT' +'SESSION_USER' +'SOME' +'SYMMETRIC' +'TABLE' +'THEN' +'TO' +'TRAILING' +'TRUE' +'UNION' +'UNIQUE' +'USER' +'USING' +'VARIADIC' +'WHEN' +'WHERE' +'WINDOW' +'WITH' +'AUTHORIZATION' +'BINARY' +'COLLATION' +'CONCURRENTLY' +'CROSS' +'CURRENT_SCHEMA' +'FREEZE' +'FULL' +'ILIKE' +'INNER' +'IS' +'ISNULL' +'JOIN' +'LEFT' +'LIKE' +'NATURAL' +'NOTNULL' +'OUTER' +'OVER' +'OVERLAPS' +'RIGHT' +'SIMILAR' +'VERBOSE' +'ABORT' +'ABSOLUTE' +'ACCESS' +'ACTION' +'ADD' +'ADMIN' +'AFTER' +'AGGREGATE' +'ALSO' +'ALTER' +'ALWAYS' +'ASSERTION' +'ASSIGNMENT' +'AT' +'ATTRIBUTE' +'BACKWARD' +'BEFORE' +'BEGIN' +'BY' +'CACHE' +'CALLED' +'CASCADE' +'CASCADED' +'CATALOG' +'CHAIN' +'CHARACTERISTICS' +'CHECKPOINT' +'CLASS' +'CLOSE' +'CLUSTER' +'COMMENT' +'COMMENTS' +'COMMIT' +'COMMITTED' +'CONFIGURATION' +'CONNECTION' +'CONSTRAINTS' +'CONTENT' +'CONTINUE' +'CONVERSION' +'COPY' +'COST' +'CSV' +'CURSOR' +'CYCLE' +'DATA' +'DATABASE' +'DAY' +'DEALLOCATE' +'DECLARE' +'DEFAULTS' +'DEFERRED' +'DEFINER' +'DELETE' +'DELIMITER' +'DELIMITERS' +'DICTIONARY' +'DISABLE' +'DISCARD' +'DOCUMENT' +'DOMAIN' +'DOUBLE' +'DROP' +'EACH' +'ENABLE' +'ENCODING' +'ENCRYPTED' +'ENUM' +'ESCAPE' +'EVENT' +'EXCLUDE' +'EXCLUDING' +'EXCLUSIVE' +'EXECUTE' +'EXPLAIN' +'EXTENSION' +'EXTERNAL' +'FAMILY' +'FIRST' +'FOLLOWING' +'FORCE' +'FORWARD' +'FUNCTION' +'FUNCTIONS' +'GLOBAL' +'GRANTED' +'HANDLER' +'HEADER' +'HOLD' +'HOUR' +'IDENTITY' +'IF' +'IMMEDIATE' +'IMMUTABLE' +'IMPLICIT' +'INCLUDING' +'INCREMENT' +'INDEX' +'INDEXES' +'INHERIT' +'INHERITS' +'INLINE' +'INSENSITIVE' +'INSERT' +'INSTEAD' +'INVOKER' +'ISOLATION' +'KEY' +'LABEL' +'LANGUAGE' +'LARGE' +'LAST' +'LEAKPROOF' +'LEVEL' +'LISTEN' +'LOAD' +'LOCAL' +'LOCATION' +'LOCK' +'MAPPING' +'MATCH' +'MATCHED' +'MATERIALIZED' +'MAXVALUE' +'MERGE' +'MINUTE' +'MINVALUE' +'MODE' +'MONTH' +'MOVE' +'NAME' +'NAMES' +'NEXT' +'NO' +'NOTHING' +'NOTIFY' +'NOWAIT' +'NULLS' +'OBJECT' +'OF' +'OFF' +'OIDS' +'OPERATOR' +'OPTION' +'OPTIONS' +'OWNED' +'OWNER' +'PARSER' +'PARTIAL' +'PARTITION' +'PASSING' +'PASSWORD' +'PLANS' +'PRECEDING' +'PREPARE' +'PREPARED' +'PRESERVE' +'PRIOR' +'PRIVILEGES' +'PROCEDURAL' +'PROCEDURE' +'PROGRAM' +'QUOTE' +'RANGE' +'READ' +'REASSIGN' +'RECHECK' +'RECURSIVE' +'REF' +'REFRESH' +'REINDEX' +'RELATIVE' +'RELEASE' +'RENAME' +'REPEATABLE' +'REPLACE' +'REPLICA' +'RESET' +'RESTART' +'RESTRICT' +'RETURNS' +'REVOKE' +'ROLE' +'ROLLBACK' +'ROWS' +'RULE' +'SAVEPOINT' +'SCHEMA' +'SCROLL' +'SEARCH' +'SECOND' +'SECURITY' +'SEQUENCE' +'SEQUENCES' +'SERIALIZABLE' +'SERVER' +'SESSION' +'SET' +'SHARE' +'SHOW' +'SIMPLE' +'SNAPSHOT' +'STABLE' +'STANDALONE' +'START' +'STATEMENT' +'STATISTICS' +'STDIN' +'STDOUT' +'STORAGE' +'STRICT' +'STRIP' +'SYSID' +'SYSTEM' +'TABLES' +'TABLESPACE' +'TEMP' +'TEMPLATE' +'TEMPORARY' +'TEXT' +'TRANSACTION' +'TRIGGER' +'TRUNCATE' +'TRUSTED' +'TYPE' +'TYPES' +'UNBOUNDED' +'UNCOMMITTED' +'UNENCRYPTED' +'UNKNOWN' +'UNLISTEN' +'UNLOGGED' +'UNTIL' +'UPDATE' +'VACUUM' +'VALID' +'VALIDATE' +'VALIDATOR' +'VARYING' +'VERSION' +'VIEW' +'VOLATILE' +'WHITESPACE' +'WITHOUT' +'WORK' +'WRAPPER' +'WRITE' +'XML' +'YEAR' +'YES' +'ZONE' +'BETWEEN' +'BIGINT' +'BIT' +'BOOLEAN' +'CHAR' +'CHARACTER' +'COALESCE' +'DEC' +'DECIMAL' +'EXISTS' +'EXTRACT' +'FLOAT' +'GREATEST' +'INOUT' +'INT' +'INTEGER' +'INTERVAL' +'LEAST' +'NATIONAL' +'NCHAR' +'NONE' +'NULLIF' +'NUMERIC' +'OVERLAY' +'POSITION' +'PRECISION' +'REAL' +'ROW' +'SETOF' +'SMALLINT' +'SUBSTRING' +'TIME' +'TIMESTAMP' +'TREAT' +'TRIM' +'VALUES' +'VARCHAR' +'XMLATTRIBUTES' +'XMLCOMMENT' +'XMLAGG' +'XML_IS_WELL_FORMED' +'XML_IS_WELL_FORMED_DOCUMENT' +'XML_IS_WELL_FORMED_CONTENT' +'XPATH' +'XPATH_EXISTS' +'XMLCONCAT' +'XMLELEMENT' +'XMLEXISTS' +'XMLFOREST' +'XMLPARSE' +'XMLPI' +'XMLROOT' +'XMLSERIALIZE' +'CALL' +'CURRENT' +'ATTACH' +'DETACH' +'EXPRESSION' +'GENERATED' +'LOGGED' +'STORED' +'INCLUDE' +'ROUTINE' +'TRANSFORM' +'IMPORT' +'POLICY' +'METHOD' +'REFERENCING' +'NEW' +'OLD' +'VALUE' +'SUBSCRIPTION' +'PUBLICATION' +'OUT' +'END' +'ROUTINES' +'SCHEMAS' +'PROCEDURES' +'INPUT' +'SUPPORT' +'PARALLEL' +'SQL' +'DEPENDS' +'OVERRIDING' +'CONFLICT' +'SKIP' +'LOCKED' +'TIES' +'ROLLUP' +'CUBE' +'GROUPING' +'SETS' +'TABLESAMPLE' +'ORDINALITY' +'XMLTABLE' +'COLUMNS' +'XMLNAMESPACES' +'ROWTYPE' +'NORMALIZED' +'WITHIN' +'FILTER' +'GROUPS' +'OTHERS' +'NFC' +'NFD' +'NFKC' +'NFKD' +'UESCAPE' +'VIEWS' +'NORMALIZE' +'DUMP' +'PRINT_STRICT_PARAMS' +'VARIABLE_CONFLICT' +'ERROR' +'USE_VARIABLE' +'USE_COLUMN' +'ALIAS' +'CONSTANT' +'PERFORM' +'GET' +'DIAGNOSTICS' +'STACKED' +'ELSIF' +'WHILE' +'REVERSE' +'FOREACH' +'SLICE' +'EXIT' +'RETURN' +'QUERY' +'RAISE' +'SQLSTATE' +'DEBUG' +'LOG' +'INFO' +'NOTICE' +'WARNING' +'EXCEPTION' +'ASSERT' +'LOOP' +'OPEN' +'ABS' +'CBRT' +'CEIL' +'CEILING' +'DEGREES' +'DIV' +'EXP' +'FACTORIAL' +'FLOOR' +'GCD' +'LCM' +'LN' +'LOG10' +'MIN_SCALE' +'MOD' +'PI' +'POWER' +'RADIANS' +'ROUND' +'SCALE' +'SIGN' +'SQRT' +'TRIM_SCALE' +'TRUNC' +'WIDTH_BUCKET' +'RANDOM' +'SETSEED' +'ACOS' +'ACOSD' +'ASIN' +'ASIND' +'ATAN' +'ATAND' +'ATAN2' +'ATAN2D' +'COS' +'COSD' +'COT' +'COTD' +'SIN' +'SIND' +'TAN' +'TAND' +'SINH' +'COSH' +'TANH' +'ASINH' +'ACOSH' +'ATANH' +'BIT_LENGTH' +'CHAR_LENGTH' +'CHARACTER_LENGTH' +'LOWER' +'OCTET_LENGTH' +'UPPER' +'ASCII' +'BTRIM' +'CHR' +'CONCAT' +'CONCAT_WS' +'FORMAT' +'INITCAP' +'LENGTH' +'LPAD' +'LTRIM' +'MD5' +'PARSE_IDENT' +'PG_CLIENT_ENCODING' +'QUOTE_IDENT' +'QUOTE_LITERAL' +'QUOTE_NULLABLE' +'REGEXP_COUNT' +'REGEXP_INSTR' +'REGEXP_LIKE' +'REGEXP_MATCH' +'REGEXP_MATCHES' +'REGEXP_REPLACE' +'REGEXP_SPLIT_TO_ARRAY' +'REGEXP_SPLIT_TO_TABLE' +'REGEXP_SUBSTR' +'REPEAT' +'RPAD' +'RTRIM' +'SPLIT_PART' +'STARTS_WITH' +'STRING_TO_ARRAY' +'STRING_TO_TABLE' +'STRPOS' +'SUBSTR' +'TO_ASCII' +'TO_HEX' +'TRANSLATE' +'UNISTR' +'AGE' +'CLOCK_TIMESTAMP' +'DATE_BIN' +'DATE_PART' +'DATE_TRUNC' +'ISFINITE' +'JUSTIFY_DAYS' +'JUSTIFY_HOURS' +'JUSTIFY_INTERVAL' +'MAKE_DATE' +'MAKE_INTERVAL' +'MAKE_TIME' +'MAKE_TIMESTAMP' +'MAKE_TIMESTAMPTZ' +'NOW' +'STATEMENT_TIMESTAMP' +'TIMEOFDAY' +'TRANSACTION_TIMESTAMP' +'TO_TIMESTAMP' +'TO_CHAR' +'TO_DATE' +'TO_NUMBER' +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +'\\\\' +null +null +null +null +null +null +null +null +null +'\'' + +token symbolic names: +null +Dollar +OPEN_PAREN +CLOSE_PAREN +OPEN_BRACKET +CLOSE_BRACKET +COMMA +SEMI +COLON +STAR +EQUAL +DOT +PLUS +MINUS +SLASH +CARET +LT +GT +LESS_LESS +GREATER_GREATER +COLON_EQUALS +LESS_EQUALS +EQUALS_GREATER +GREATER_EQUALS +DOT_DOT +NOT_EQUALS +TYPECAST +PERCENT +PARAM +Operator +ALL +ANALYSE +ANALYZE +AND +ANY +ARRAY +AS +ASC +ASYMMETRIC +BOTH +CASE +CAST +CHECK +COLLATE +COLUMN +CONSTRAINT +CREATE +CURRENT_CATALOG +CURRENT_DATE +CURRENT_ROLE +CURRENT_TIME +CURRENT_TIMESTAMP +CURRENT_USER +DEFAULT +DEFERRABLE +DESC +DISTINCT +DO +ELSE +EXCEPT +FALSE_P +FETCH +FOR +FOREIGN +FROM +GRANT +GROUP_P +HAVING +IN_P +INITIALLY +INTERSECT +INTO +LATERAL_P +LEADING +LIMIT +LOCALTIME +LOCALTIMESTAMP +NOT +NULL_P +OFFSET +ON +ONLY +OR +ORDER +PLACING +PRIMARY +REFERENCES +RETURNING +SELECT +SESSION_USER +SOME +SYMMETRIC +TABLE +THEN +TO +TRAILING +TRUE_P +UNION +UNIQUE +USER +USING +VARIADIC +WHEN +WHERE +WINDOW +WITH +AUTHORIZATION +BINARY +COLLATION +CONCURRENTLY +CROSS +CURRENT_SCHEMA +FREEZE +FULL +ILIKE +INNER_P +IS +ISNULL +JOIN +LEFT +LIKE +NATURAL +NOTNULL +OUTER_P +OVER +OVERLAPS +RIGHT +SIMILAR +VERBOSE +ABORT_P +ABSOLUTE_P +ACCESS +ACTION +ADD_P +ADMIN +AFTER +AGGREGATE +ALSO +ALTER +ALWAYS +ASSERTION +ASSIGNMENT +AT +ATTRIBUTE +BACKWARD +BEFORE +BEGIN_P +BY +CACHE +CALLED +CASCADE +CASCADED +CATALOG +CHAIN +CHARACTERISTICS +CHECKPOINT +CLASS +CLOSE +CLUSTER +COMMENT +COMMENTS +COMMIT +COMMITTED +CONFIGURATION +CONNECTION +CONSTRAINTS +CONTENT_P +CONTINUE_P +CONVERSION_P +COPY +COST +CSV +CURSOR +CYCLE +DATA_P +DATABASE +DAY_P +DEALLOCATE +DECLARE +DEFAULTS +DEFERRED +DEFINER +DELETE_P +DELIMITER +DELIMITERS +DICTIONARY +DISABLE_P +DISCARD +DOCUMENT_P +DOMAIN_P +DOUBLE_P +DROP +EACH +ENABLE_P +ENCODING +ENCRYPTED +ENUM_P +ESCAPE +EVENT +EXCLUDE +EXCLUDING +EXCLUSIVE +EXECUTE +EXPLAIN +EXTENSION +EXTERNAL +FAMILY +FIRST_P +FOLLOWING +FORCE +FORWARD +FUNCTION +FUNCTIONS +GLOBAL +GRANTED +HANDLER +HEADER_P +HOLD +HOUR_P +IDENTITY_P +IF_P +IMMEDIATE +IMMUTABLE +IMPLICIT_P +INCLUDING +INCREMENT +INDEX +INDEXES +INHERIT +INHERITS +INLINE_P +INSENSITIVE +INSERT +INSTEAD +INVOKER +ISOLATION +KEY +LABEL +LANGUAGE +LARGE_P +LAST_P +LEAKPROOF +LEVEL +LISTEN +LOAD +LOCAL +LOCATION +LOCK_P +MAPPING +MATCH +MATCHED +MATERIALIZED +MAXVALUE +MERGE +MINUTE_P +MINVALUE +MODE +MONTH_P +MOVE +NAME_P +NAMES +NEXT +NO +NOTHING +NOTIFY +NOWAIT +NULLS_P +OBJECT_P +OF +OFF +OIDS +OPERATOR +OPTION +OPTIONS +OWNED +OWNER +PARSER +PARTIAL +PARTITION +PASSING +PASSWORD +PLANS +PRECEDING +PREPARE +PREPARED +PRESERVE +PRIOR +PRIVILEGES +PROCEDURAL +PROCEDURE +PROGRAM +QUOTE +RANGE +READ +REASSIGN +RECHECK +RECURSIVE +REF +REFRESH +REINDEX +RELATIVE_P +RELEASE +RENAME +REPEATABLE +REPLACE +REPLICA +RESET +RESTART +RESTRICT +RETURNS +REVOKE +ROLE +ROLLBACK +ROWS +RULE +SAVEPOINT +SCHEMA +SCROLL +SEARCH +SECOND_P +SECURITY +SEQUENCE +SEQUENCES +SERIALIZABLE +SERVER +SESSION +SET +SHARE +SHOW +SIMPLE +SNAPSHOT +STABLE +STANDALONE_P +START +STATEMENT +STATISTICS +STDIN +STDOUT +STORAGE +STRICT_P +STRIP_P +SYSID +SYSTEM_P +TABLES +TABLESPACE +TEMP +TEMPLATE +TEMPORARY +TEXT_P +TRANSACTION +TRIGGER +TRUNCATE +TRUSTED +TYPE_P +TYPES_P +UNBOUNDED +UNCOMMITTED +UNENCRYPTED +UNKNOWN +UNLISTEN +UNLOGGED +UNTIL +UPDATE +VACUUM +VALID +VALIDATE +VALIDATOR +VARYING +VERSION_P +VIEW +VOLATILE +WHITESPACE_P +WITHOUT +WORK +WRAPPER +WRITE +XML_P +YEAR_P +YES_P +ZONE +BETWEEN +BIGINT +BIT +BOOLEAN_P +CHAR_P +CHARACTER +COALESCE +DEC +DECIMAL_P +EXISTS +EXTRACT +FLOAT_P +GREATEST +INOUT +INT_P +INTEGER +INTERVAL +LEAST +NATIONAL +NCHAR +NONE +NULLIF +NUMERIC +OVERLAY +POSITION +PRECISION +REAL +ROW +SETOF +SMALLINT +SUBSTRING +TIME +TIMESTAMP +TREAT +TRIM +VALUES +VARCHAR +XMLATTRIBUTES +XMLCOMMENT +XMLAGG +XML_IS_WELL_FORMED +XML_IS_WELL_FORMED_DOCUMENT +XML_IS_WELL_FORMED_CONTENT +XPATH +XPATH_EXISTS +XMLCONCAT +XMLELEMENT +XMLEXISTS +XMLFOREST +XMLPARSE +XMLPI +XMLROOT +XMLSERIALIZE +CALL +CURRENT_P +ATTACH +DETACH +EXPRESSION +GENERATED +LOGGED +STORED +INCLUDE +ROUTINE +TRANSFORM +IMPORT_P +POLICY +METHOD +REFERENCING +NEW +OLD +VALUE_P +SUBSCRIPTION +PUBLICATION +OUT_P +END_P +ROUTINES +SCHEMAS +PROCEDURES +INPUT_P +SUPPORT +PARALLEL +SQL_P +DEPENDS +OVERRIDING +CONFLICT +SKIP_P +LOCKED +TIES +ROLLUP +CUBE +GROUPING +SETS +TABLESAMPLE +ORDINALITY +XMLTABLE +COLUMNS +XMLNAMESPACES +ROWTYPE +NORMALIZED +WITHIN +FILTER +GROUPS +OTHERS +NFC +NFD +NFKC +NFKD +UESCAPE +VIEWS +NORMALIZE +DUMP +PRINT_STRICT_PARAMS +VARIABLE_CONFLICT +ERROR +USE_VARIABLE +USE_COLUMN +ALIAS +CONSTANT +PERFORM +GET +DIAGNOSTICS +STACKED +ELSIF +WHILE +REVERSE +FOREACH +SLICE +EXIT +RETURN +QUERY +RAISE +SQLSTATE +DEBUG +LOG +INFO +NOTICE +WARNING +EXCEPTION +ASSERT +LOOP +OPEN +ABS +CBRT +CEIL +CEILING +DEGREES +DIV +EXP +FACTORIAL +FLOOR +GCD +LCM +LN +LOG10 +MIN_SCALE +MOD +PI +POWER +RADIANS +ROUND +SCALE +SIGN +SQRT +TRIM_SCALE +TRUNC +WIDTH_BUCKET +RANDOM +SETSEED +ACOS +ACOSD +ASIN +ASIND +ATAN +ATAND +ATAN2 +ATAN2D +COS +COSD +COT +COTD +SIN +SIND +TAN +TAND +SINH +COSH +TANH +ASINH +ACOSH +ATANH +BIT_LENGTH +CHAR_LENGTH +CHARACTER_LENGTH +LOWER +OCTET_LENGTH +UPPER +ASCII +BTRIM +CHR +CONCAT +CONCAT_WS +FORMAT +INITCAP +LENGTH +LPAD +LTRIM +MD5 +PARSE_IDENT +PG_CLIENT_ENCODING +QUOTE_IDENT +QUOTE_LITERAL +QUOTE_NULLABLE +REGEXP_COUNT +REGEXP_INSTR +REGEXP_LIKE +REGEXP_MATCH +REGEXP_MATCHES +REGEXP_REPLACE +REGEXP_SPLIT_TO_ARRAY +REGEXP_SPLIT_TO_TABLE +REGEXP_SUBSTR +REPEAT +RPAD +RTRIM +SPLIT_PART +STARTS_WITH +STRING_TO_ARRAY +STRING_TO_TABLE +STRPOS +SUBSTR +TO_ASCII +TO_HEX +TRANSLATE +UNISTR +AGE +CLOCK_TIMESTAMP +DATE_BIN +DATE_PART +DATE_TRUNC +ISFINITE +JUSTIFY_DAYS +JUSTIFY_HOURS +JUSTIFY_INTERVAL +MAKE_DATE +MAKE_INTERVAL +MAKE_TIME +MAKE_TIMESTAMP +MAKE_TIMESTAMPTZ +NOW +STATEMENT_TIMESTAMP +TIMEOFDAY +TRANSACTION_TIMESTAMP +TO_TIMESTAMP +TO_CHAR +TO_DATE +TO_NUMBER +Identifier +QuotedIdentifier +UnterminatedQuotedIdentifier +InvalidQuotedIdentifier +InvalidUnterminatedQuotedIdentifier +UnicodeQuotedIdentifier +UnterminatedUnicodeQuotedIdentifier +InvalidUnicodeQuotedIdentifier +InvalidUnterminatedUnicodeQuotedIdentifier +StringConstant +UnterminatedStringConstant +UnicodeEscapeStringConstant +UnterminatedUnicodeEscapeStringConstant +BeginDollarStringConstant +BinaryStringConstant +UnterminatedBinaryStringConstant +InvalidBinaryStringConstant +InvalidUnterminatedBinaryStringConstant +HexadecimalStringConstant +UnterminatedHexadecimalStringConstant +InvalidHexadecimalStringConstant +InvalidUnterminatedHexadecimalStringConstant +Integral +NumericFail +Numeric +PLSQLVARIABLENAME +PLSQLIDENTIFIER +Whitespace +Newline +LineComment +BlockComment +UnterminatedBlockComment +MetaCommand +EndMetaCommand +ErrorCharacter +EscapeStringConstant +UnterminatedEscapeStringConstant +InvalidEscapeStringConstant +InvalidUnterminatedEscapeStringConstant +AfterEscapeStringConstantMode_NotContinued +AfterEscapeStringConstantWithNewlineMode_NotContinued +DollarText +EndDollarStringConstant +AfterEscapeStringConstantWithNewlineMode_Continued + +rule names: +Dollar +OPEN_PAREN +CLOSE_PAREN +OPEN_BRACKET +CLOSE_BRACKET +COMMA +SEMI +COLON +STAR +EQUAL +DOT +PLUS +MINUS +SLASH +CARET +LT +GT +LESS_LESS +GREATER_GREATER +COLON_EQUALS +LESS_EQUALS +EQUALS_GREATER +GREATER_EQUALS +DOT_DOT +NOT_EQUALS +TYPECAST +PERCENT +PARAM +Operator +OperatorEndingWithPlusMinus +OperatorCharacter +OperatorCharacterNotAllowPlusMinusAtEnd +OperatorCharacterAllowPlusMinusAtEnd +ALL +ANALYSE +ANALYZE +AND +ANY +ARRAY +AS +ASC +ASYMMETRIC +BOTH +CASE +CAST +CHECK +COLLATE +COLUMN +CONSTRAINT +CREATE +CURRENT_CATALOG +CURRENT_DATE +CURRENT_ROLE +CURRENT_TIME +CURRENT_TIMESTAMP +CURRENT_USER +DEFAULT +DEFERRABLE +DESC +DISTINCT +DO +ELSE +EXCEPT +FALSE_P +FETCH +FOR +FOREIGN +FROM +GRANT +GROUP_P +HAVING +IN_P +INITIALLY +INTERSECT +INTO +LATERAL_P +LEADING +LIMIT +LOCALTIME +LOCALTIMESTAMP +NOT +NULL_P +OFFSET +ON +ONLY +OR +ORDER +PLACING +PRIMARY +REFERENCES +RETURNING +SELECT +SESSION_USER +SOME +SYMMETRIC +TABLE +THEN +TO +TRAILING +TRUE_P +UNION +UNIQUE +USER +USING +VARIADIC +WHEN +WHERE +WINDOW +WITH +AUTHORIZATION +BINARY +COLLATION +CONCURRENTLY +CROSS +CURRENT_SCHEMA +FREEZE +FULL +ILIKE +INNER_P +IS +ISNULL +JOIN +LEFT +LIKE +NATURAL +NOTNULL +OUTER_P +OVER +OVERLAPS +RIGHT +SIMILAR +VERBOSE +ABORT_P +ABSOLUTE_P +ACCESS +ACTION +ADD_P +ADMIN +AFTER +AGGREGATE +ALSO +ALTER +ALWAYS +ASSERTION +ASSIGNMENT +AT +ATTRIBUTE +BACKWARD +BEFORE +BEGIN_P +BY +CACHE +CALLED +CASCADE +CASCADED +CATALOG +CHAIN +CHARACTERISTICS +CHECKPOINT +CLASS +CLOSE +CLUSTER +COMMENT +COMMENTS +COMMIT +COMMITTED +CONFIGURATION +CONNECTION +CONSTRAINTS +CONTENT_P +CONTINUE_P +CONVERSION_P +COPY +COST +CSV +CURSOR +CYCLE +DATA_P +DATABASE +DAY_P +DEALLOCATE +DECLARE +DEFAULTS +DEFERRED +DEFINER +DELETE_P +DELIMITER +DELIMITERS +DICTIONARY +DISABLE_P +DISCARD +DOCUMENT_P +DOMAIN_P +DOUBLE_P +DROP +EACH +ENABLE_P +ENCODING +ENCRYPTED +ENUM_P +ESCAPE +EVENT +EXCLUDE +EXCLUDING +EXCLUSIVE +EXECUTE +EXPLAIN +EXTENSION +EXTERNAL +FAMILY +FIRST_P +FOLLOWING +FORCE +FORWARD +FUNCTION +FUNCTIONS +GLOBAL +GRANTED +HANDLER +HEADER_P +HOLD +HOUR_P +IDENTITY_P +IF_P +IMMEDIATE +IMMUTABLE +IMPLICIT_P +INCLUDING +INCREMENT +INDEX +INDEXES +INHERIT +INHERITS +INLINE_P +INSENSITIVE +INSERT +INSTEAD +INVOKER +ISOLATION +KEY +LABEL +LANGUAGE +LARGE_P +LAST_P +LEAKPROOF +LEVEL +LISTEN +LOAD +LOCAL +LOCATION +LOCK_P +MAPPING +MATCH +MATCHED +MATERIALIZED +MAXVALUE +MERGE +MINUTE_P +MINVALUE +MODE +MONTH_P +MOVE +NAME_P +NAMES +NEXT +NO +NOTHING +NOTIFY +NOWAIT +NULLS_P +OBJECT_P +OF +OFF +OIDS +OPERATOR +OPTION +OPTIONS +OWNED +OWNER +PARSER +PARTIAL +PARTITION +PASSING +PASSWORD +PLANS +PRECEDING +PREPARE +PREPARED +PRESERVE +PRIOR +PRIVILEGES +PROCEDURAL +PROCEDURE +PROGRAM +QUOTE +RANGE +READ +REASSIGN +RECHECK +RECURSIVE +REF +REFRESH +REINDEX +RELATIVE_P +RELEASE +RENAME +REPEATABLE +REPLACE +REPLICA +RESET +RESTART +RESTRICT +RETURNS +REVOKE +ROLE +ROLLBACK +ROWS +RULE +SAVEPOINT +SCHEMA +SCROLL +SEARCH +SECOND_P +SECURITY +SEQUENCE +SEQUENCES +SERIALIZABLE +SERVER +SESSION +SET +SHARE +SHOW +SIMPLE +SNAPSHOT +STABLE +STANDALONE_P +START +STATEMENT +STATISTICS +STDIN +STDOUT +STORAGE +STRICT_P +STRIP_P +SYSID +SYSTEM_P +TABLES +TABLESPACE +TEMP +TEMPLATE +TEMPORARY +TEXT_P +TRANSACTION +TRIGGER +TRUNCATE +TRUSTED +TYPE_P +TYPES_P +UNBOUNDED +UNCOMMITTED +UNENCRYPTED +UNKNOWN +UNLISTEN +UNLOGGED +UNTIL +UPDATE +VACUUM +VALID +VALIDATE +VALIDATOR +VARYING +VERSION_P +VIEW +VOLATILE +WHITESPACE_P +WITHOUT +WORK +WRAPPER +WRITE +XML_P +YEAR_P +YES_P +ZONE +BETWEEN +BIGINT +BIT +BOOLEAN_P +CHAR_P +CHARACTER +COALESCE +DEC +DECIMAL_P +EXISTS +EXTRACT +FLOAT_P +GREATEST +INOUT +INT_P +INTEGER +INTERVAL +LEAST +NATIONAL +NCHAR +NONE +NULLIF +NUMERIC +OVERLAY +POSITION +PRECISION +REAL +ROW +SETOF +SMALLINT +SUBSTRING +TIME +TIMESTAMP +TREAT +TRIM +VALUES +VARCHAR +XMLATTRIBUTES +XMLCOMMENT +XMLAGG +XML_IS_WELL_FORMED +XML_IS_WELL_FORMED_DOCUMENT +XML_IS_WELL_FORMED_CONTENT +XPATH +XPATH_EXISTS +XMLCONCAT +XMLELEMENT +XMLEXISTS +XMLFOREST +XMLPARSE +XMLPI +XMLROOT +XMLSERIALIZE +CALL +CURRENT_P +ATTACH +DETACH +EXPRESSION +GENERATED +LOGGED +STORED +INCLUDE +ROUTINE +TRANSFORM +IMPORT_P +POLICY +METHOD +REFERENCING +NEW +OLD +VALUE_P +SUBSCRIPTION +PUBLICATION +OUT_P +END_P +ROUTINES +SCHEMAS +PROCEDURES +INPUT_P +SUPPORT +PARALLEL +SQL_P +DEPENDS +OVERRIDING +CONFLICT +SKIP_P +LOCKED +TIES +ROLLUP +CUBE +GROUPING +SETS +TABLESAMPLE +ORDINALITY +XMLTABLE +COLUMNS +XMLNAMESPACES +ROWTYPE +NORMALIZED +WITHIN +FILTER +GROUPS +OTHERS +NFC +NFD +NFKC +NFKD +UESCAPE +VIEWS +NORMALIZE +DUMP +PRINT_STRICT_PARAMS +VARIABLE_CONFLICT +ERROR +USE_VARIABLE +USE_COLUMN +ALIAS +CONSTANT +PERFORM +GET +DIAGNOSTICS +STACKED +ELSIF +WHILE +REVERSE +FOREACH +SLICE +EXIT +RETURN +QUERY +RAISE +SQLSTATE +DEBUG +LOG +INFO +NOTICE +WARNING +EXCEPTION +ASSERT +LOOP +OPEN +ABS +CBRT +CEIL +CEILING +DEGREES +DIV +EXP +FACTORIAL +FLOOR +GCD +LCM +LN +LOG10 +MIN_SCALE +MOD +PI +POWER +RADIANS +ROUND +SCALE +SIGN +SQRT +TRIM_SCALE +TRUNC +WIDTH_BUCKET +RANDOM +SETSEED +ACOS +ACOSD +ASIN +ASIND +ATAN +ATAND +ATAN2 +ATAN2D +COS +COSD +COT +COTD +SIN +SIND +TAN +TAND +SINH +COSH +TANH +ASINH +ACOSH +ATANH +BIT_LENGTH +CHAR_LENGTH +CHARACTER_LENGTH +LOWER +OCTET_LENGTH +UPPER +ASCII +BTRIM +CHR +CONCAT +CONCAT_WS +FORMAT +INITCAP +LENGTH +LPAD +LTRIM +MD5 +PARSE_IDENT +PG_CLIENT_ENCODING +QUOTE_IDENT +QUOTE_LITERAL +QUOTE_NULLABLE +REGEXP_COUNT +REGEXP_INSTR +REGEXP_LIKE +REGEXP_MATCH +REGEXP_MATCHES +REGEXP_REPLACE +REGEXP_SPLIT_TO_ARRAY +REGEXP_SPLIT_TO_TABLE +REGEXP_SUBSTR +REPEAT +RPAD +RTRIM +SPLIT_PART +STARTS_WITH +STRING_TO_ARRAY +STRING_TO_TABLE +STRPOS +SUBSTR +TO_ASCII +TO_HEX +TRANSLATE +UNISTR +AGE +CLOCK_TIMESTAMP +DATE_BIN +DATE_PART +DATE_TRUNC +ISFINITE +JUSTIFY_DAYS +JUSTIFY_HOURS +JUSTIFY_INTERVAL +MAKE_DATE +MAKE_INTERVAL +MAKE_TIME +MAKE_TIMESTAMP +MAKE_TIMESTAMPTZ +NOW +STATEMENT_TIMESTAMP +TIMEOFDAY +TRANSACTION_TIMESTAMP +TO_TIMESTAMP +TO_CHAR +TO_DATE +TO_NUMBER +Identifier +IdentifierStartChar +IdentifierChar +StrictIdentifierChar +QuotedIdentifier +UnterminatedQuotedIdentifier +InvalidQuotedIdentifier +InvalidUnterminatedQuotedIdentifier +UnicodeQuotedIdentifier +UnterminatedUnicodeQuotedIdentifier +InvalidUnicodeQuotedIdentifier +InvalidUnterminatedUnicodeQuotedIdentifier +StringConstant +UnterminatedStringConstant +BeginEscapeStringConstant +UnicodeEscapeStringConstant +UnterminatedUnicodeEscapeStringConstant +BeginDollarStringConstant +Tag +BinaryStringConstant +UnterminatedBinaryStringConstant +InvalidBinaryStringConstant +InvalidUnterminatedBinaryStringConstant +HexadecimalStringConstant +UnterminatedHexadecimalStringConstant +InvalidHexadecimalStringConstant +InvalidUnterminatedHexadecimalStringConstant +Integral +NumericFail +Numeric +Digits +PLSQLVARIABLENAME +PLSQLIDENTIFIER +Whitespace +Newline +LineComment +BlockComment +UnterminatedBlockComment +MetaCommand +EndMetaCommand +ErrorCharacter +EscapeStringConstant +UnterminatedEscapeStringConstant +EscapeStringText +InvalidEscapeStringConstant +InvalidUnterminatedEscapeStringConstant +InvalidEscapeStringText +AfterEscapeStringConstantMode_Whitespace +AfterEscapeStringConstantMode_Newline +AfterEscapeStringConstantMode_NotContinued +AfterEscapeStringConstantWithNewlineMode_Whitespace +AfterEscapeStringConstantWithNewlineMode_Newline +AfterEscapeStringConstantWithNewlineMode_Continued +AfterEscapeStringConstantWithNewlineMode_NotContinued +DollarText +EndDollarStringConstant + +channel names: +DEFAULT_TOKEN_CHANNEL +HIDDEN + +mode names: +DEFAULT_MODE +EscapeStringConstantMode +AfterEscapeStringConstantMode +AfterEscapeStringConstantWithNewlineMode +DollarQuotedStringMode + +atn: +[4, 0, 679, 6791, 6, -1, 6, -1, 6, -1, 6, -1, 6, -1, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7, 13, 2, 14, 7, 14, 2, 15, 7, 15, 2, 16, 7, 16, 2, 17, 7, 17, 2, 18, 7, 18, 2, 19, 7, 19, 2, 20, 7, 20, 2, 21, 7, 21, 2, 22, 7, 22, 2, 23, 7, 23, 2, 24, 7, 24, 2, 25, 7, 25, 2, 26, 7, 26, 2, 27, 7, 27, 2, 28, 7, 28, 2, 29, 7, 29, 2, 30, 7, 30, 2, 31, 7, 31, 2, 32, 7, 32, 2, 33, 7, 33, 2, 34, 7, 34, 2, 35, 7, 35, 2, 36, 7, 36, 2, 37, 7, 37, 2, 38, 7, 38, 2, 39, 7, 39, 2, 40, 7, 40, 2, 41, 7, 41, 2, 42, 7, 42, 2, 43, 7, 43, 2, 44, 7, 44, 2, 45, 7, 45, 2, 46, 7, 46, 2, 47, 7, 47, 2, 48, 7, 48, 2, 49, 7, 49, 2, 50, 7, 50, 2, 51, 7, 51, 2, 52, 7, 52, 2, 53, 7, 53, 2, 54, 7, 54, 2, 55, 7, 55, 2, 56, 7, 56, 2, 57, 7, 57, 2, 58, 7, 58, 2, 59, 7, 59, 2, 60, 7, 60, 2, 61, 7, 61, 2, 62, 7, 62, 2, 63, 7, 63, 2, 64, 7, 64, 2, 65, 7, 65, 2, 66, 7, 66, 2, 67, 7, 67, 2, 68, 7, 68, 2, 69, 7, 69, 2, 70, 7, 70, 2, 71, 7, 71, 2, 72, 7, 72, 2, 73, 7, 73, 2, 74, 7, 74, 2, 75, 7, 75, 2, 76, 7, 76, 2, 77, 7, 77, 2, 78, 7, 78, 2, 79, 7, 79, 2, 80, 7, 80, 2, 81, 7, 81, 2, 82, 7, 82, 2, 83, 7, 83, 2, 84, 7, 84, 2, 85, 7, 85, 2, 86, 7, 86, 2, 87, 7, 87, 2, 88, 7, 88, 2, 89, 7, 89, 2, 90, 7, 90, 2, 91, 7, 91, 2, 92, 7, 92, 2, 93, 7, 93, 2, 94, 7, 94, 2, 95, 7, 95, 2, 96, 7, 96, 2, 97, 7, 97, 2, 98, 7, 98, 2, 99, 7, 99, 2, 100, 7, 100, 2, 101, 7, 101, 2, 102, 7, 102, 2, 103, 7, 103, 2, 104, 7, 104, 2, 105, 7, 105, 2, 106, 7, 106, 2, 107, 7, 107, 2, 108, 7, 108, 2, 109, 7, 109, 2, 110, 7, 110, 2, 111, 7, 111, 2, 112, 7, 112, 2, 113, 7, 113, 2, 114, 7, 114, 2, 115, 7, 115, 2, 116, 7, 116, 2, 117, 7, 117, 2, 118, 7, 118, 2, 119, 7, 119, 2, 120, 7, 120, 2, 121, 7, 121, 2, 122, 7, 122, 2, 123, 7, 123, 2, 124, 7, 124, 2, 125, 7, 125, 2, 126, 7, 126, 2, 127, 7, 127, 2, 128, 7, 128, 2, 129, 7, 129, 2, 130, 7, 130, 2, 131, 7, 131, 2, 132, 7, 132, 2, 133, 7, 133, 2, 134, 7, 134, 2, 135, 7, 135, 2, 136, 7, 136, 2, 137, 7, 137, 2, 138, 7, 138, 2, 139, 7, 139, 2, 140, 7, 140, 2, 141, 7, 141, 2, 142, 7, 142, 2, 143, 7, 143, 2, 144, 7, 144, 2, 145, 7, 145, 2, 146, 7, 146, 2, 147, 7, 147, 2, 148, 7, 148, 2, 149, 7, 149, 2, 150, 7, 150, 2, 151, 7, 151, 2, 152, 7, 152, 2, 153, 7, 153, 2, 154, 7, 154, 2, 155, 7, 155, 2, 156, 7, 156, 2, 157, 7, 157, 2, 158, 7, 158, 2, 159, 7, 159, 2, 160, 7, 160, 2, 161, 7, 161, 2, 162, 7, 162, 2, 163, 7, 163, 2, 164, 7, 164, 2, 165, 7, 165, 2, 166, 7, 166, 2, 167, 7, 167, 2, 168, 7, 168, 2, 169, 7, 169, 2, 170, 7, 170, 2, 171, 7, 171, 2, 172, 7, 172, 2, 173, 7, 173, 2, 174, 7, 174, 2, 175, 7, 175, 2, 176, 7, 176, 2, 177, 7, 177, 2, 178, 7, 178, 2, 179, 7, 179, 2, 180, 7, 180, 2, 181, 7, 181, 2, 182, 7, 182, 2, 183, 7, 183, 2, 184, 7, 184, 2, 185, 7, 185, 2, 186, 7, 186, 2, 187, 7, 187, 2, 188, 7, 188, 2, 189, 7, 189, 2, 190, 7, 190, 2, 191, 7, 191, 2, 192, 7, 192, 2, 193, 7, 193, 2, 194, 7, 194, 2, 195, 7, 195, 2, 196, 7, 196, 2, 197, 7, 197, 2, 198, 7, 198, 2, 199, 7, 199, 2, 200, 7, 200, 2, 201, 7, 201, 2, 202, 7, 202, 2, 203, 7, 203, 2, 204, 7, 204, 2, 205, 7, 205, 2, 206, 7, 206, 2, 207, 7, 207, 2, 208, 7, 208, 2, 209, 7, 209, 2, 210, 7, 210, 2, 211, 7, 211, 2, 212, 7, 212, 2, 213, 7, 213, 2, 214, 7, 214, 2, 215, 7, 215, 2, 216, 7, 216, 2, 217, 7, 217, 2, 218, 7, 218, 2, 219, 7, 219, 2, 220, 7, 220, 2, 221, 7, 221, 2, 222, 7, 222, 2, 223, 7, 223, 2, 224, 7, 224, 2, 225, 7, 225, 2, 226, 7, 226, 2, 227, 7, 227, 2, 228, 7, 228, 2, 229, 7, 229, 2, 230, 7, 230, 2, 231, 7, 231, 2, 232, 7, 232, 2, 233, 7, 233, 2, 234, 7, 234, 2, 235, 7, 235, 2, 236, 7, 236, 2, 237, 7, 237, 2, 238, 7, 238, 2, 239, 7, 239, 2, 240, 7, 240, 2, 241, 7, 241, 2, 242, 7, 242, 2, 243, 7, 243, 2, 244, 7, 244, 2, 245, 7, 245, 2, 246, 7, 246, 2, 247, 7, 247, 2, 248, 7, 248, 2, 249, 7, 249, 2, 250, 7, 250, 2, 251, 7, 251, 2, 252, 7, 252, 2, 253, 7, 253, 2, 254, 7, 254, 2, 255, 7, 255, 2, 256, 7, 256, 2, 257, 7, 257, 2, 258, 7, 258, 2, 259, 7, 259, 2, 260, 7, 260, 2, 261, 7, 261, 2, 262, 7, 262, 2, 263, 7, 263, 2, 264, 7, 264, 2, 265, 7, 265, 2, 266, 7, 266, 2, 267, 7, 267, 2, 268, 7, 268, 2, 269, 7, 269, 2, 270, 7, 270, 2, 271, 7, 271, 2, 272, 7, 272, 2, 273, 7, 273, 2, 274, 7, 274, 2, 275, 7, 275, 2, 276, 7, 276, 2, 277, 7, 277, 2, 278, 7, 278, 2, 279, 7, 279, 2, 280, 7, 280, 2, 281, 7, 281, 2, 282, 7, 282, 2, 283, 7, 283, 2, 284, 7, 284, 2, 285, 7, 285, 2, 286, 7, 286, 2, 287, 7, 287, 2, 288, 7, 288, 2, 289, 7, 289, 2, 290, 7, 290, 2, 291, 7, 291, 2, 292, 7, 292, 2, 293, 7, 293, 2, 294, 7, 294, 2, 295, 7, 295, 2, 296, 7, 296, 2, 297, 7, 297, 2, 298, 7, 298, 2, 299, 7, 299, 2, 300, 7, 300, 2, 301, 7, 301, 2, 302, 7, 302, 2, 303, 7, 303, 2, 304, 7, 304, 2, 305, 7, 305, 2, 306, 7, 306, 2, 307, 7, 307, 2, 308, 7, 308, 2, 309, 7, 309, 2, 310, 7, 310, 2, 311, 7, 311, 2, 312, 7, 312, 2, 313, 7, 313, 2, 314, 7, 314, 2, 315, 7, 315, 2, 316, 7, 316, 2, 317, 7, 317, 2, 318, 7, 318, 2, 319, 7, 319, 2, 320, 7, 320, 2, 321, 7, 321, 2, 322, 7, 322, 2, 323, 7, 323, 2, 324, 7, 324, 2, 325, 7, 325, 2, 326, 7, 326, 2, 327, 7, 327, 2, 328, 7, 328, 2, 329, 7, 329, 2, 330, 7, 330, 2, 331, 7, 331, 2, 332, 7, 332, 2, 333, 7, 333, 2, 334, 7, 334, 2, 335, 7, 335, 2, 336, 7, 336, 2, 337, 7, 337, 2, 338, 7, 338, 2, 339, 7, 339, 2, 340, 7, 340, 2, 341, 7, 341, 2, 342, 7, 342, 2, 343, 7, 343, 2, 344, 7, 344, 2, 345, 7, 345, 2, 346, 7, 346, 2, 347, 7, 347, 2, 348, 7, 348, 2, 349, 7, 349, 2, 350, 7, 350, 2, 351, 7, 351, 2, 352, 7, 352, 2, 353, 7, 353, 2, 354, 7, 354, 2, 355, 7, 355, 2, 356, 7, 356, 2, 357, 7, 357, 2, 358, 7, 358, 2, 359, 7, 359, 2, 360, 7, 360, 2, 361, 7, 361, 2, 362, 7, 362, 2, 363, 7, 363, 2, 364, 7, 364, 2, 365, 7, 365, 2, 366, 7, 366, 2, 367, 7, 367, 2, 368, 7, 368, 2, 369, 7, 369, 2, 370, 7, 370, 2, 371, 7, 371, 2, 372, 7, 372, 2, 373, 7, 373, 2, 374, 7, 374, 2, 375, 7, 375, 2, 376, 7, 376, 2, 377, 7, 377, 2, 378, 7, 378, 2, 379, 7, 379, 2, 380, 7, 380, 2, 381, 7, 381, 2, 382, 7, 382, 2, 383, 7, 383, 2, 384, 7, 384, 2, 385, 7, 385, 2, 386, 7, 386, 2, 387, 7, 387, 2, 388, 7, 388, 2, 389, 7, 389, 2, 390, 7, 390, 2, 391, 7, 391, 2, 392, 7, 392, 2, 393, 7, 393, 2, 394, 7, 394, 2, 395, 7, 395, 2, 396, 7, 396, 2, 397, 7, 397, 2, 398, 7, 398, 2, 399, 7, 399, 2, 400, 7, 400, 2, 401, 7, 401, 2, 402, 7, 402, 2, 403, 7, 403, 2, 404, 7, 404, 2, 405, 7, 405, 2, 406, 7, 406, 2, 407, 7, 407, 2, 408, 7, 408, 2, 409, 7, 409, 2, 410, 7, 410, 2, 411, 7, 411, 2, 412, 7, 412, 2, 413, 7, 413, 2, 414, 7, 414, 2, 415, 7, 415, 2, 416, 7, 416, 2, 417, 7, 417, 2, 418, 7, 418, 2, 419, 7, 419, 2, 420, 7, 420, 2, 421, 7, 421, 2, 422, 7, 422, 2, 423, 7, 423, 2, 424, 7, 424, 2, 425, 7, 425, 2, 426, 7, 426, 2, 427, 7, 427, 2, 428, 7, 428, 2, 429, 7, 429, 2, 430, 7, 430, 2, 431, 7, 431, 2, 432, 7, 432, 2, 433, 7, 433, 2, 434, 7, 434, 2, 435, 7, 435, 2, 436, 7, 436, 2, 437, 7, 437, 2, 438, 7, 438, 2, 439, 7, 439, 2, 440, 7, 440, 2, 441, 7, 441, 2, 442, 7, 442, 2, 443, 7, 443, 2, 444, 7, 444, 2, 445, 7, 445, 2, 446, 7, 446, 2, 447, 7, 447, 2, 448, 7, 448, 2, 449, 7, 449, 2, 450, 7, 450, 2, 451, 7, 451, 2, 452, 7, 452, 2, 453, 7, 453, 2, 454, 7, 454, 2, 455, 7, 455, 2, 456, 7, 456, 2, 457, 7, 457, 2, 458, 7, 458, 2, 459, 7, 459, 2, 460, 7, 460, 2, 461, 7, 461, 2, 462, 7, 462, 2, 463, 7, 463, 2, 464, 7, 464, 2, 465, 7, 465, 2, 466, 7, 466, 2, 467, 7, 467, 2, 468, 7, 468, 2, 469, 7, 469, 2, 470, 7, 470, 2, 471, 7, 471, 2, 472, 7, 472, 2, 473, 7, 473, 2, 474, 7, 474, 2, 475, 7, 475, 2, 476, 7, 476, 2, 477, 7, 477, 2, 478, 7, 478, 2, 479, 7, 479, 2, 480, 7, 480, 2, 481, 7, 481, 2, 482, 7, 482, 2, 483, 7, 483, 2, 484, 7, 484, 2, 485, 7, 485, 2, 486, 7, 486, 2, 487, 7, 487, 2, 488, 7, 488, 2, 489, 7, 489, 2, 490, 7, 490, 2, 491, 7, 491, 2, 492, 7, 492, 2, 493, 7, 493, 2, 494, 7, 494, 2, 495, 7, 495, 2, 496, 7, 496, 2, 497, 7, 497, 2, 498, 7, 498, 2, 499, 7, 499, 2, 500, 7, 500, 2, 501, 7, 501, 2, 502, 7, 502, 2, 503, 7, 503, 2, 504, 7, 504, 2, 505, 7, 505, 2, 506, 7, 506, 2, 507, 7, 507, 2, 508, 7, 508, 2, 509, 7, 509, 2, 510, 7, 510, 2, 511, 7, 511, 2, 512, 7, 512, 2, 513, 7, 513, 2, 514, 7, 514, 2, 515, 7, 515, 2, 516, 7, 516, 2, 517, 7, 517, 2, 518, 7, 518, 2, 519, 7, 519, 2, 520, 7, 520, 2, 521, 7, 521, 2, 522, 7, 522, 2, 523, 7, 523, 2, 524, 7, 524, 2, 525, 7, 525, 2, 526, 7, 526, 2, 527, 7, 527, 2, 528, 7, 528, 2, 529, 7, 529, 2, 530, 7, 530, 2, 531, 7, 531, 2, 532, 7, 532, 2, 533, 7, 533, 2, 534, 7, 534, 2, 535, 7, 535, 2, 536, 7, 536, 2, 537, 7, 537, 2, 538, 7, 538, 2, 539, 7, 539, 2, 540, 7, 540, 2, 541, 7, 541, 2, 542, 7, 542, 2, 543, 7, 543, 2, 544, 7, 544, 2, 545, 7, 545, 2, 546, 7, 546, 2, 547, 7, 547, 2, 548, 7, 548, 2, 549, 7, 549, 2, 550, 7, 550, 2, 551, 7, 551, 2, 552, 7, 552, 2, 553, 7, 553, 2, 554, 7, 554, 2, 555, 7, 555, 2, 556, 7, 556, 2, 557, 7, 557, 2, 558, 7, 558, 2, 559, 7, 559, 2, 560, 7, 560, 2, 561, 7, 561, 2, 562, 7, 562, 2, 563, 7, 563, 2, 564, 7, 564, 2, 565, 7, 565, 2, 566, 7, 566, 2, 567, 7, 567, 2, 568, 7, 568, 2, 569, 7, 569, 2, 570, 7, 570, 2, 571, 7, 571, 2, 572, 7, 572, 2, 573, 7, 573, 2, 574, 7, 574, 2, 575, 7, 575, 2, 576, 7, 576, 2, 577, 7, 577, 2, 578, 7, 578, 2, 579, 7, 579, 2, 580, 7, 580, 2, 581, 7, 581, 2, 582, 7, 582, 2, 583, 7, 583, 2, 584, 7, 584, 2, 585, 7, 585, 2, 586, 7, 586, 2, 587, 7, 587, 2, 588, 7, 588, 2, 589, 7, 589, 2, 590, 7, 590, 2, 591, 7, 591, 2, 592, 7, 592, 2, 593, 7, 593, 2, 594, 7, 594, 2, 595, 7, 595, 2, 596, 7, 596, 2, 597, 7, 597, 2, 598, 7, 598, 2, 599, 7, 599, 2, 600, 7, 600, 2, 601, 7, 601, 2, 602, 7, 602, 2, 603, 7, 603, 2, 604, 7, 604, 2, 605, 7, 605, 2, 606, 7, 606, 2, 607, 7, 607, 2, 608, 7, 608, 2, 609, 7, 609, 2, 610, 7, 610, 2, 611, 7, 611, 2, 612, 7, 612, 2, 613, 7, 613, 2, 614, 7, 614, 2, 615, 7, 615, 2, 616, 7, 616, 2, 617, 7, 617, 2, 618, 7, 618, 2, 619, 7, 619, 2, 620, 7, 620, 2, 621, 7, 621, 2, 622, 7, 622, 2, 623, 7, 623, 2, 624, 7, 624, 2, 625, 7, 625, 2, 626, 7, 626, 2, 627, 7, 627, 2, 628, 7, 628, 2, 629, 7, 629, 2, 630, 7, 630, 2, 631, 7, 631, 2, 632, 7, 632, 2, 633, 7, 633, 2, 634, 7, 634, 2, 635, 7, 635, 2, 636, 7, 636, 2, 637, 7, 637, 2, 638, 7, 638, 2, 639, 7, 639, 2, 640, 7, 640, 2, 641, 7, 641, 2, 642, 7, 642, 2, 643, 7, 643, 2, 644, 7, 644, 2, 645, 7, 645, 2, 646, 7, 646, 2, 647, 7, 647, 2, 648, 7, 648, 2, 649, 7, 649, 2, 650, 7, 650, 2, 651, 7, 651, 2, 652, 7, 652, 2, 653, 7, 653, 2, 654, 7, 654, 2, 655, 7, 655, 2, 656, 7, 656, 2, 657, 7, 657, 2, 658, 7, 658, 2, 659, 7, 659, 2, 660, 7, 660, 2, 661, 7, 661, 2, 662, 7, 662, 2, 663, 7, 663, 2, 664, 7, 664, 2, 665, 7, 665, 2, 666, 7, 666, 2, 667, 7, 667, 2, 668, 7, 668, 2, 669, 7, 669, 2, 670, 7, 670, 2, 671, 7, 671, 2, 672, 7, 672, 2, 673, 7, 673, 2, 674, 7, 674, 2, 675, 7, 675, 2, 676, 7, 676, 2, 677, 7, 677, 2, 678, 7, 678, 2, 679, 7, 679, 2, 680, 7, 680, 2, 681, 7, 681, 2, 682, 7, 682, 2, 683, 7, 683, 2, 684, 7, 684, 2, 685, 7, 685, 2, 686, 7, 686, 2, 687, 7, 687, 2, 688, 7, 688, 2, 689, 7, 689, 2, 690, 7, 690, 2, 691, 7, 691, 2, 692, 7, 692, 2, 693, 7, 693, 2, 694, 7, 694, 1, 0, 1, 0, 1, 1, 1, 1, 1, 2, 1, 2, 1, 3, 1, 3, 1, 4, 1, 4, 1, 5, 1, 5, 1, 6, 1, 6, 1, 7, 1, 7, 1, 8, 1, 8, 1, 9, 1, 9, 1, 10, 1, 10, 1, 11, 1, 11, 1, 12, 1, 12, 1, 13, 1, 13, 1, 14, 1, 14, 1, 15, 1, 15, 1, 16, 1, 16, 1, 17, 1, 17, 1, 17, 1, 18, 1, 18, 1, 18, 1, 19, 1, 19, 1, 19, 1, 20, 1, 20, 1, 20, 1, 21, 1, 21, 1, 21, 1, 22, 1, 22, 1, 22, 1, 23, 1, 23, 1, 23, 1, 24, 1, 24, 1, 24, 1, 25, 1, 25, 1, 25, 1, 26, 1, 26, 1, 27, 1, 27, 4, 27, 1461, 8, 27, 11, 27, 12, 27, 1462, 1, 28, 1, 28, 1, 28, 1, 28, 4, 28, 1469, 8, 28, 11, 28, 12, 28, 1470, 1, 28, 1, 28, 1, 28, 3, 28, 1476, 8, 28, 1, 28, 1, 28, 4, 28, 1480, 8, 28, 11, 28, 12, 28, 1481, 1, 28, 3, 28, 1485, 8, 28, 1, 28, 1, 28, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 5, 29, 1494, 8, 29, 10, 29, 12, 29, 1497, 9, 29, 1, 29, 1, 29, 3, 29, 1501, 8, 29, 1, 29, 1, 29, 1, 29, 4, 29, 1506, 8, 29, 11, 29, 12, 29, 1507, 1, 29, 1, 29, 1, 30, 1, 30, 1, 31, 1, 31, 1, 32, 1, 32, 1, 33, 1, 33, 1, 33, 1, 33, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 36, 1, 36, 1, 36, 1, 36, 1, 37, 1, 37, 1, 37, 1, 37, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 39, 1, 39, 1, 39, 1, 40, 1, 40, 1, 40, 1, 40, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 60, 1, 60, 1, 60, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 65, 1, 65, 1, 65, 1, 65, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 71, 1, 71, 1, 71, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 80, 1, 80, 1, 80, 1, 80, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 83, 1, 83, 1, 83, 1, 84, 1, 84, 1, 84, 1, 84, 1, 84, 1, 85, 1, 85, 1, 85, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 88, 1, 88, 1, 88, 1, 88, 1, 88, 1, 88, 1, 88, 1, 88, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 93, 1, 93, 1, 93, 1, 93, 1, 93, 1, 94, 1, 94, 1, 94, 1, 94, 1, 94, 1, 94, 1, 94, 1, 94, 1, 94, 1, 94, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 97, 1, 97, 1, 97, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 102, 1, 102, 1, 102, 1, 102, 1, 102, 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 107, 1, 107, 1, 107, 1, 107, 1, 107, 1, 107, 1, 107, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 110, 1, 110, 1, 110, 1, 110, 1, 110, 1, 110, 1, 110, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 1, 113, 1, 113, 1, 113, 1, 113, 1, 113, 1, 113, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 115, 1, 115, 1, 115, 1, 115, 1, 115, 1, 115, 1, 115, 1, 116, 1, 116, 1, 116, 1, 116, 1, 116, 1, 117, 1, 117, 1, 117, 1, 117, 1, 117, 1, 117, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 119, 1, 119, 1, 119, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 122, 1, 122, 1, 122, 1, 122, 1, 122, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 126, 1, 126, 1, 126, 1, 126, 1, 126, 1, 126, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 129, 1, 129, 1, 129, 1, 129, 1, 129, 1, 129, 1, 130, 1, 130, 1, 130, 1, 130, 1, 130, 1, 130, 1, 130, 1, 130, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 132, 1, 132, 1, 132, 1, 132, 1, 132, 1, 132, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 1, 136, 1, 136, 1, 136, 1, 136, 1, 137, 1, 137, 1, 137, 1, 137, 1, 137, 1, 137, 1, 138, 1, 138, 1, 138, 1, 138, 1, 138, 1, 138, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 140, 1, 140, 1, 140, 1, 140, 1, 140, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 142, 1, 142, 1, 142, 1, 142, 1, 142, 1, 142, 1, 142, 1, 143, 1, 143, 1, 143, 1, 143, 1, 143, 1, 143, 1, 143, 1, 143, 1, 143, 1, 143, 1, 144, 1, 144, 1, 144, 1, 144, 1, 144, 1, 144, 1, 144, 1, 144, 1, 144, 1, 144, 1, 144, 1, 145, 1, 145, 1, 145, 1, 146, 1, 146, 1, 146, 1, 146, 1, 146, 1, 146, 1, 146, 1, 146, 1, 146, 1, 146, 1, 147, 1, 147, 1, 147, 1, 147, 1, 147, 1, 147, 1, 147, 1, 147, 1, 147, 1, 148, 1, 148, 1, 148, 1, 148, 1, 148, 1, 148, 1, 148, 1, 149, 1, 149, 1, 149, 1, 149, 1, 149, 1, 149, 1, 150, 1, 150, 1, 150, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 152, 1, 152, 1, 152, 1, 152, 1, 152, 1, 152, 1, 152, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 157, 1, 157, 1, 157, 1, 157, 1, 157, 1, 157, 1, 157, 1, 157, 1, 157, 1, 157, 1, 157, 1, 157, 1, 157, 1, 157, 1, 157, 1, 157, 1, 158, 1, 158, 1, 158, 1, 158, 1, 158, 1, 158, 1, 158, 1, 158, 1, 158, 1, 158, 1, 158, 1, 159, 1, 159, 1, 159, 1, 159, 1, 159, 1, 159, 1, 160, 1, 160, 1, 160, 1, 160, 1, 160, 1, 160, 1, 161, 1, 161, 1, 161, 1, 161, 1, 161, 1, 161, 1, 161, 1, 161, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 163, 1, 163, 1, 163, 1, 163, 1, 163, 1, 163, 1, 163, 1, 163, 1, 163, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 165, 1, 165, 1, 165, 1, 165, 1, 165, 1, 165, 1, 165, 1, 165, 1, 165, 1, 165, 1, 166, 1, 166, 1, 166, 1, 166, 1, 166, 1, 166, 1, 166, 1, 166, 1, 166, 1, 166, 1, 166, 1, 166, 1, 166, 1, 166, 1, 167, 1, 167, 1, 167, 1, 167, 1, 167, 1, 167, 1, 167, 1, 167, 1, 167, 1, 167, 1, 167, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 169, 1, 169, 1, 169, 1, 169, 1, 169, 1, 169, 1, 169, 1, 169, 1, 170, 1, 170, 1, 170, 1, 170, 1, 170, 1, 170, 1, 170, 1, 170, 1, 170, 1, 171, 1, 171, 1, 171, 1, 171, 1, 171, 1, 171, 1, 171, 1, 171, 1, 171, 1, 171, 1, 171, 1, 172, 1, 172, 1, 172, 1, 172, 1, 172, 1, 173, 1, 173, 1, 173, 1, 173, 1, 173, 1, 174, 1, 174, 1, 174, 1, 174, 1, 175, 1, 175, 1, 175, 1, 175, 1, 175, 1, 175, 1, 175, 1, 176, 1, 176, 1, 176, 1, 176, 1, 176, 1, 176, 1, 177, 1, 177, 1, 177, 1, 177, 1, 177, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 1, 179, 1, 179, 1, 179, 1, 179, 1, 180, 1, 180, 1, 180, 1, 180, 1, 180, 1, 180, 1, 180, 1, 180, 1, 180, 1, 180, 1, 180, 1, 181, 1, 181, 1, 181, 1, 181, 1, 181, 1, 181, 1, 181, 1, 181, 1, 182, 1, 182, 1, 182, 1, 182, 1, 182, 1, 182, 1, 182, 1, 182, 1, 182, 1, 183, 1, 183, 1, 183, 1, 183, 1, 183, 1, 183, 1, 183, 1, 183, 1, 183, 1, 184, 1, 184, 1, 184, 1, 184, 1, 184, 1, 184, 1, 184, 1, 184, 1, 185, 1, 185, 1, 185, 1, 185, 1, 185, 1, 185, 1, 185, 1, 186, 1, 186, 1, 186, 1, 186, 1, 186, 1, 186, 1, 186, 1, 186, 1, 186, 1, 186, 1, 187, 1, 187, 1, 187, 1, 187, 1, 187, 1, 187, 1, 187, 1, 187, 1, 187, 1, 187, 1, 187, 1, 188, 1, 188, 1, 188, 1, 188, 1, 188, 1, 188, 1, 188, 1, 188, 1, 188, 1, 188, 1, 188, 1, 189, 1, 189, 1, 189, 1, 189, 1, 189, 1, 189, 1, 189, 1, 189, 1, 190, 1, 190, 1, 190, 1, 190, 1, 190, 1, 190, 1, 190, 1, 190, 1, 191, 1, 191, 1, 191, 1, 191, 1, 191, 1, 191, 1, 191, 1, 191, 1, 191, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 193, 1, 193, 1, 193, 1, 193, 1, 193, 1, 193, 1, 193, 1, 194, 1, 194, 1, 194, 1, 194, 1, 194, 1, 195, 1, 195, 1, 195, 1, 195, 1, 195, 1, 196, 1, 196, 1, 196, 1, 196, 1, 196, 1, 196, 1, 196, 1, 197, 1, 197, 1, 197, 1, 197, 1, 197, 1, 197, 1, 197, 1, 197, 1, 197, 1, 198, 1, 198, 1, 198, 1, 198, 1, 198, 1, 198, 1, 198, 1, 198, 1, 198, 1, 198, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 201, 1, 201, 1, 201, 1, 201, 1, 201, 1, 201, 1, 202, 1, 202, 1, 202, 1, 202, 1, 202, 1, 202, 1, 202, 1, 202, 1, 203, 1, 203, 1, 203, 1, 203, 1, 203, 1, 203, 1, 203, 1, 203, 1, 203, 1, 203, 1, 204, 1, 204, 1, 204, 1, 204, 1, 204, 1, 204, 1, 204, 1, 204, 1, 204, 1, 204, 1, 205, 1, 205, 1, 205, 1, 205, 1, 205, 1, 205, 1, 205, 1, 205, 1, 206, 1, 206, 1, 206, 1, 206, 1, 206, 1, 206, 1, 206, 1, 206, 1, 207, 1, 207, 1, 207, 1, 207, 1, 207, 1, 207, 1, 207, 1, 207, 1, 207, 1, 207, 1, 208, 1, 208, 1, 208, 1, 208, 1, 208, 1, 208, 1, 208, 1, 208, 1, 208, 1, 209, 1, 209, 1, 209, 1, 209, 1, 209, 1, 209, 1, 209, 1, 210, 1, 210, 1, 210, 1, 210, 1, 210, 1, 210, 1, 211, 1, 211, 1, 211, 1, 211, 1, 211, 1, 211, 1, 211, 1, 211, 1, 211, 1, 211, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 213, 1, 213, 1, 213, 1, 213, 1, 213, 1, 213, 1, 213, 1, 213, 1, 214, 1, 214, 1, 214, 1, 214, 1, 214, 1, 214, 1, 214, 1, 214, 1, 214, 1, 215, 1, 215, 1, 215, 1, 215, 1, 215, 1, 215, 1, 215, 1, 215, 1, 215, 1, 215, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 217, 1, 217, 1, 217, 1, 217, 1, 217, 1, 217, 1, 217, 1, 217, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 219, 1, 219, 1, 219, 1, 219, 1, 219, 1, 219, 1, 219, 1, 220, 1, 220, 1, 220, 1, 220, 1, 220, 1, 221, 1, 221, 1, 221, 1, 221, 1, 221, 1, 222, 1, 222, 1, 222, 1, 222, 1, 222, 1, 222, 1, 222, 1, 222, 1, 222, 1, 223, 1, 223, 1, 223, 1, 224, 1, 224, 1, 224, 1, 224, 1, 224, 1, 224, 1, 224, 1, 224, 1, 224, 1, 224, 1, 225, 1, 225, 1, 225, 1, 225, 1, 225, 1, 225, 1, 225, 1, 225, 1, 225, 1, 225, 1, 226, 1, 226, 1, 226, 1, 226, 1, 226, 1, 226, 1, 226, 1, 226, 1, 226, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 228, 1, 228, 1, 228, 1, 228, 1, 228, 1, 228, 1, 228, 1, 228, 1, 228, 1, 228, 1, 229, 1, 229, 1, 229, 1, 229, 1, 229, 1, 229, 1, 230, 1, 230, 1, 230, 1, 230, 1, 230, 1, 230, 1, 230, 1, 230, 1, 231, 1, 231, 1, 231, 1, 231, 1, 231, 1, 231, 1, 231, 1, 231, 1, 232, 1, 232, 1, 232, 1, 232, 1, 232, 1, 232, 1, 232, 1, 232, 1, 232, 1, 233, 1, 233, 1, 233, 1, 233, 1, 233, 1, 233, 1, 233, 1, 234, 1, 234, 1, 234, 1, 234, 1, 234, 1, 234, 1, 234, 1, 234, 1, 234, 1, 234, 1, 234, 1, 234, 1, 235, 1, 235, 1, 235, 1, 235, 1, 235, 1, 235, 1, 235, 1, 236, 1, 236, 1, 236, 1, 236, 1, 236, 1, 236, 1, 236, 1, 236, 1, 237, 1, 237, 1, 237, 1, 237, 1, 237, 1, 237, 1, 237, 1, 237, 1, 238, 1, 238, 1, 238, 1, 238, 1, 238, 1, 238, 1, 238, 1, 238, 1, 238, 1, 238, 1, 239, 1, 239, 1, 239, 1, 239, 1, 240, 1, 240, 1, 240, 1, 240, 1, 240, 1, 240, 1, 241, 1, 241, 1, 241, 1, 241, 1, 241, 1, 241, 1, 241, 1, 241, 1, 241, 1, 242, 1, 242, 1, 242, 1, 242, 1, 242, 1, 242, 1, 243, 1, 243, 1, 243, 1, 243, 1, 243, 1, 244, 1, 244, 1, 244, 1, 244, 1, 244, 1, 244, 1, 244, 1, 244, 1, 244, 1, 244, 1, 245, 1, 245, 1, 245, 1, 245, 1, 245, 1, 245, 1, 246, 1, 246, 1, 246, 1, 246, 1, 246, 1, 246, 1, 246, 1, 247, 1, 247, 1, 247, 1, 247, 1, 247, 1, 248, 1, 248, 1, 248, 1, 248, 1, 248, 1, 248, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 1, 250, 1, 250, 1, 250, 1, 250, 1, 250, 1, 251, 1, 251, 1, 251, 1, 251, 1, 251, 1, 251, 1, 251, 1, 251, 1, 252, 1, 252, 1, 252, 1, 252, 1, 252, 1, 252, 1, 253, 1, 253, 1, 253, 1, 253, 1, 253, 1, 253, 1, 253, 1, 253, 1, 254, 1, 254, 1, 254, 1, 254, 1, 254, 1, 254, 1, 254, 1, 254, 1, 254, 1, 254, 1, 254, 1, 254, 1, 254, 1, 255, 1, 255, 1, 255, 1, 255, 1, 255, 1, 255, 1, 255, 1, 255, 1, 255, 1, 256, 1, 256, 1, 256, 1, 256, 1, 256, 1, 256, 1, 257, 1, 257, 1, 257, 1, 257, 1, 257, 1, 257, 1, 257, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 259, 1, 259, 1, 259, 1, 259, 1, 259, 1, 260, 1, 260, 1, 260, 1, 260, 1, 260, 1, 260, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 262, 1, 262, 1, 262, 1, 262, 1, 262, 1, 263, 1, 263, 1, 263, 1, 263, 1, 263, 1, 263, 1, 264, 1, 264, 1, 264, 1, 264, 1, 264, 1, 265, 1, 265, 1, 265, 1, 266, 1, 266, 1, 266, 1, 266, 1, 266, 1, 266, 1, 266, 1, 266, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, 268, 1, 268, 1, 268, 1, 268, 1, 268, 1, 268, 1, 268, 1, 269, 1, 269, 1, 269, 1, 269, 1, 269, 1, 269, 1, 270, 1, 270, 1, 270, 1, 270, 1, 270, 1, 270, 1, 270, 1, 271, 1, 271, 1, 271, 1, 272, 1, 272, 1, 272, 1, 272, 1, 273, 1, 273, 1, 273, 1, 273, 1, 273, 1, 274, 1, 274, 1, 274, 1, 274, 1, 274, 1, 274, 1, 274, 1, 274, 1, 274, 1, 275, 1, 275, 1, 275, 1, 275, 1, 275, 1, 275, 1, 275, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 279, 1, 279, 1, 279, 1, 279, 1, 279, 1, 279, 1, 279, 1, 280, 1, 280, 1, 280, 1, 280, 1, 280, 1, 280, 1, 280, 1, 280, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 282, 1, 282, 1, 282, 1, 282, 1, 282, 1, 282, 1, 282, 1, 282, 1, 283, 1, 283, 1, 283, 1, 283, 1, 283, 1, 283, 1, 283, 1, 283, 1, 283, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 285, 1, 285, 1, 285, 1, 285, 1, 285, 1, 285, 1, 285, 1, 285, 1, 285, 1, 285, 1, 286, 1, 286, 1, 286, 1, 286, 1, 286, 1, 286, 1, 286, 1, 286, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 288, 1, 288, 1, 288, 1, 288, 1, 288, 1, 288, 1, 288, 1, 288, 1, 288, 1, 289, 1, 289, 1, 289, 1, 289, 1, 289, 1, 289, 1, 290, 1, 290, 1, 290, 1, 290, 1, 290, 1, 290, 1, 290, 1, 290, 1, 290, 1, 290, 1, 290, 1, 291, 1, 291, 1, 291, 1, 291, 1, 291, 1, 291, 1, 291, 1, 291, 1, 291, 1, 291, 1, 291, 1, 292, 1, 292, 1, 292, 1, 292, 1, 292, 1, 292, 1, 292, 1, 292, 1, 292, 1, 292, 1, 293, 1, 293, 1, 293, 1, 293, 1, 293, 1, 293, 1, 293, 1, 293, 1, 294, 1, 294, 1, 294, 1, 294, 1, 294, 1, 294, 1, 295, 1, 295, 1, 295, 1, 295, 1, 295, 1, 295, 1, 296, 1, 296, 1, 296, 1, 296, 1, 296, 1, 297, 1, 297, 1, 297, 1, 297, 1, 297, 1, 297, 1, 297, 1, 297, 1, 297, 1, 298, 1, 298, 1, 298, 1, 298, 1, 298, 1, 298, 1, 298, 1, 298, 1, 299, 1, 299, 1, 299, 1, 299, 1, 299, 1, 299, 1, 299, 1, 299, 1, 299, 1, 299, 1, 300, 1, 300, 1, 300, 1, 300, 1, 301, 1, 301, 1, 301, 1, 301, 1, 301, 1, 301, 1, 301, 1, 301, 1, 302, 1, 302, 1, 302, 1, 302, 1, 302, 1, 302, 1, 302, 1, 302, 1, 303, 1, 303, 1, 303, 1, 303, 1, 303, 1, 303, 1, 303, 1, 303, 1, 303, 1, 304, 1, 304, 1, 304, 1, 304, 1, 304, 1, 304, 1, 304, 1, 304, 1, 305, 1, 305, 1, 305, 1, 305, 1, 305, 1, 305, 1, 305, 1, 306, 1, 306, 1, 306, 1, 306, 1, 306, 1, 306, 1, 306, 1, 306, 1, 306, 1, 306, 1, 306, 1, 307, 1, 307, 1, 307, 1, 307, 1, 307, 1, 307, 1, 307, 1, 307, 1, 308, 1, 308, 1, 308, 1, 308, 1, 308, 1, 308, 1, 308, 1, 308, 1, 309, 1, 309, 1, 309, 1, 309, 1, 309, 1, 309, 1, 310, 1, 310, 1, 310, 1, 310, 1, 310, 1, 310, 1, 310, 1, 310, 1, 311, 1, 311, 1, 311, 1, 311, 1, 311, 1, 311, 1, 311, 1, 311, 1, 311, 1, 312, 1, 312, 1, 312, 1, 312, 1, 312, 1, 312, 1, 312, 1, 312, 1, 313, 1, 313, 1, 313, 1, 313, 1, 313, 1, 313, 1, 313, 1, 314, 1, 314, 1, 314, 1, 314, 1, 314, 1, 315, 1, 315, 1, 315, 1, 315, 1, 315, 1, 315, 1, 315, 1, 315, 1, 315, 1, 316, 1, 316, 1, 316, 1, 316, 1, 316, 1, 317, 1, 317, 1, 317, 1, 317, 1, 317, 1, 318, 1, 318, 1, 318, 1, 318, 1, 318, 1, 318, 1, 318, 1, 318, 1, 318, 1, 318, 1, 319, 1, 319, 1, 319, 1, 319, 1, 319, 1, 319, 1, 319, 1, 320, 1, 320, 1, 320, 1, 320, 1, 320, 1, 320, 1, 320, 1, 321, 1, 321, 1, 321, 1, 321, 1, 321, 1, 321, 1, 321, 1, 322, 1, 322, 1, 322, 1, 322, 1, 322, 1, 322, 1, 322, 1, 323, 1, 323, 1, 323, 1, 323, 1, 323, 1, 323, 1, 323, 1, 323, 1, 323, 1, 324, 1, 324, 1, 324, 1, 324, 1, 324, 1, 324, 1, 324, 1, 324, 1, 324, 1, 325, 1, 325, 1, 325, 1, 325, 1, 325, 1, 325, 1, 325, 1, 325, 1, 325, 1, 325, 1, 326, 1, 326, 1, 326, 1, 326, 1, 326, 1, 326, 1, 326, 1, 326, 1, 326, 1, 326, 1, 326, 1, 326, 1, 326, 1, 327, 1, 327, 1, 327, 1, 327, 1, 327, 1, 327, 1, 327, 1, 328, 1, 328, 1, 328, 1, 328, 1, 328, 1, 328, 1, 328, 1, 328, 1, 329, 1, 329, 1, 329, 1, 329, 1, 330, 1, 330, 1, 330, 1, 330, 1, 330, 1, 330, 1, 331, 1, 331, 1, 331, 1, 331, 1, 331, 1, 332, 1, 332, 1, 332, 1, 332, 1, 332, 1, 332, 1, 332, 1, 333, 1, 333, 1, 333, 1, 333, 1, 333, 1, 333, 1, 333, 1, 333, 1, 333, 1, 334, 1, 334, 1, 334, 1, 334, 1, 334, 1, 334, 1, 334, 1, 335, 1, 335, 1, 335, 1, 335, 1, 335, 1, 335, 1, 335, 1, 335, 1, 335, 1, 335, 1, 335, 1, 336, 1, 336, 1, 336, 1, 336, 1, 336, 1, 336, 1, 337, 1, 337, 1, 337, 1, 337, 1, 337, 1, 337, 1, 337, 1, 337, 1, 337, 1, 337, 1, 338, 1, 338, 1, 338, 1, 338, 1, 338, 1, 338, 1, 338, 1, 338, 1, 338, 1, 338, 1, 338, 1, 339, 1, 339, 1, 339, 1, 339, 1, 339, 1, 339, 1, 340, 1, 340, 1, 340, 1, 340, 1, 340, 1, 340, 1, 340, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 342, 1, 342, 1, 342, 1, 342, 1, 342, 1, 342, 1, 342, 1, 343, 1, 343, 1, 343, 1, 343, 1, 343, 1, 343, 1, 344, 1, 344, 1, 344, 1, 344, 1, 344, 1, 344, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 346, 1, 346, 1, 346, 1, 346, 1, 346, 1, 346, 1, 346, 1, 347, 1, 347, 1, 347, 1, 347, 1, 347, 1, 347, 1, 347, 1, 347, 1, 347, 1, 347, 1, 347, 1, 348, 1, 348, 1, 348, 1, 348, 1, 348, 1, 349, 1, 349, 1, 349, 1, 349, 1, 349, 1, 349, 1, 349, 1, 349, 1, 349, 1, 350, 1, 350, 1, 350, 1, 350, 1, 350, 1, 350, 1, 350, 1, 350, 1, 350, 1, 350, 1, 351, 1, 351, 1, 351, 1, 351, 1, 351, 1, 352, 1, 352, 1, 352, 1, 352, 1, 352, 1, 352, 1, 352, 1, 352, 1, 352, 1, 352, 1, 352, 1, 352, 1, 353, 1, 353, 1, 353, 1, 353, 1, 353, 1, 353, 1, 353, 1, 353, 1, 354, 1, 354, 1, 354, 1, 354, 1, 354, 1, 354, 1, 354, 1, 354, 1, 354, 1, 355, 1, 355, 1, 355, 1, 355, 1, 355, 1, 355, 1, 355, 1, 355, 1, 356, 1, 356, 1, 356, 1, 356, 1, 356, 1, 357, 1, 357, 1, 357, 1, 357, 1, 357, 1, 357, 1, 358, 1, 358, 1, 358, 1, 358, 1, 358, 1, 358, 1, 358, 1, 358, 1, 358, 1, 358, 1, 359, 1, 359, 1, 359, 1, 359, 1, 359, 1, 359, 1, 359, 1, 359, 1, 359, 1, 359, 1, 359, 1, 359, 1, 360, 1, 360, 1, 360, 1, 360, 1, 360, 1, 360, 1, 360, 1, 360, 1, 360, 1, 360, 1, 360, 1, 360, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 362, 1, 362, 1, 362, 1, 362, 1, 362, 1, 362, 1, 362, 1, 362, 1, 362, 1, 363, 1, 363, 1, 363, 1, 363, 1, 363, 1, 363, 1, 363, 1, 363, 1, 363, 1, 364, 1, 364, 1, 364, 1, 364, 1, 364, 1, 364, 1, 365, 1, 365, 1, 365, 1, 365, 1, 365, 1, 365, 1, 365, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 367, 1, 367, 1, 367, 1, 367, 1, 367, 1, 367, 1, 368, 1, 368, 1, 368, 1, 368, 1, 368, 1, 368, 1, 368, 1, 368, 1, 368, 1, 369, 1, 369, 1, 369, 1, 369, 1, 369, 1, 369, 1, 369, 1, 369, 1, 369, 1, 369, 1, 370, 1, 370, 1, 370, 1, 370, 1, 370, 1, 370, 1, 370, 1, 370, 1, 371, 1, 371, 1, 371, 1, 371, 1, 371, 1, 371, 1, 371, 1, 371, 1, 372, 1, 372, 1, 372, 1, 372, 1, 372, 1, 373, 1, 373, 1, 373, 1, 373, 1, 373, 1, 373, 1, 373, 1, 373, 1, 373, 1, 374, 1, 374, 1, 374, 1, 374, 1, 374, 1, 374, 1, 374, 1, 374, 1, 374, 1, 374, 1, 374, 1, 375, 1, 375, 1, 375, 1, 375, 1, 375, 1, 375, 1, 375, 1, 375, 1, 376, 1, 376, 1, 376, 1, 376, 1, 376, 1, 377, 1, 377, 1, 377, 1, 377, 1, 377, 1, 377, 1, 377, 1, 377, 1, 378, 1, 378, 1, 378, 1, 378, 1, 378, 1, 378, 1, 379, 1, 379, 1, 379, 1, 379, 1, 380, 1, 380, 1, 380, 1, 380, 1, 380, 1, 381, 1, 381, 1, 381, 1, 381, 1, 382, 1, 382, 1, 382, 1, 382, 1, 382, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 384, 1, 384, 1, 384, 1, 384, 1, 384, 1, 384, 1, 384, 1, 385, 1, 385, 1, 385, 1, 385, 1, 386, 1, 386, 1, 386, 1, 386, 1, 386, 1, 386, 1, 386, 1, 386, 1, 387, 1, 387, 1, 387, 1, 387, 1, 387, 1, 388, 1, 388, 1, 388, 1, 388, 1, 388, 1, 388, 1, 388, 1, 388, 1, 388, 1, 388, 1, 389, 1, 389, 1, 389, 1, 389, 1, 389, 1, 389, 1, 389, 1, 389, 1, 389, 1, 390, 1, 390, 1, 390, 1, 390, 1, 391, 1, 391, 1, 391, 1, 391, 1, 391, 1, 391, 1, 391, 1, 391, 1, 392, 1, 392, 1, 392, 1, 392, 1, 392, 1, 392, 1, 392, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 394, 1, 394, 1, 394, 1, 394, 1, 394, 1, 394, 1, 395, 1, 395, 1, 395, 1, 395, 1, 395, 1, 395, 1, 395, 1, 395, 1, 395, 1, 396, 1, 396, 1, 396, 1, 396, 1, 396, 1, 396, 1, 397, 1, 397, 1, 397, 1, 397, 1, 398, 1, 398, 1, 398, 1, 398, 1, 398, 1, 398, 1, 398, 1, 398, 1, 399, 1, 399, 1, 399, 1, 399, 1, 399, 1, 399, 1, 399, 1, 399, 1, 399, 1, 400, 1, 400, 1, 400, 1, 400, 1, 400, 1, 400, 1, 401, 1, 401, 1, 401, 1, 401, 1, 401, 1, 401, 1, 401, 1, 401, 1, 401, 1, 402, 1, 402, 1, 402, 1, 402, 1, 402, 1, 402, 1, 403, 1, 403, 1, 403, 1, 403, 1, 403, 1, 404, 1, 404, 1, 404, 1, 404, 1, 404, 1, 404, 1, 404, 1, 405, 1, 405, 1, 405, 1, 405, 1, 405, 1, 405, 1, 405, 1, 405, 1, 406, 1, 406, 1, 406, 1, 406, 1, 406, 1, 406, 1, 406, 1, 406, 1, 407, 1, 407, 1, 407, 1, 407, 1, 407, 1, 407, 1, 407, 1, 407, 1, 407, 1, 408, 1, 408, 1, 408, 1, 408, 1, 408, 1, 408, 1, 408, 1, 408, 1, 408, 1, 408, 1, 409, 1, 409, 1, 409, 1, 409, 1, 409, 1, 410, 1, 410, 1, 410, 1, 410, 1, 411, 1, 411, 1, 411, 1, 411, 1, 411, 1, 411, 1, 412, 1, 412, 1, 412, 1, 412, 1, 412, 1, 412, 1, 412, 1, 412, 1, 412, 1, 413, 1, 413, 1, 413, 1, 413, 1, 413, 1, 413, 1, 413, 1, 413, 1, 413, 1, 413, 1, 414, 1, 414, 1, 414, 1, 414, 1, 414, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 416, 1, 416, 1, 416, 1, 416, 1, 416, 1, 416, 1, 417, 1, 417, 1, 417, 1, 417, 1, 417, 1, 418, 1, 418, 1, 418, 1, 418, 1, 418, 1, 418, 1, 418, 1, 419, 1, 419, 1, 419, 1, 419, 1, 419, 1, 419, 1, 419, 1, 419, 1, 420, 1, 420, 1, 420, 1, 420, 1, 420, 1, 420, 1, 420, 1, 420, 1, 420, 1, 420, 1, 420, 1, 420, 1, 420, 1, 420, 1, 421, 1, 421, 1, 421, 1, 421, 1, 421, 1, 421, 1, 421, 1, 421, 1, 421, 1, 421, 1, 421, 1, 422, 1, 422, 1, 422, 1, 422, 1, 422, 1, 422, 1, 422, 1, 423, 1, 423, 1, 423, 1, 423, 1, 423, 1, 423, 1, 423, 1, 423, 1, 423, 1, 423, 1, 423, 1, 423, 1, 423, 1, 423, 1, 423, 1, 423, 1, 423, 1, 423, 1, 423, 1, 424, 1, 424, 1, 424, 1, 424, 1, 424, 1, 424, 1, 424, 1, 424, 1, 424, 1, 424, 1, 424, 1, 424, 1, 424, 1, 424, 1, 424, 1, 424, 1, 424, 1, 424, 1, 424, 1, 424, 1, 424, 1, 424, 1, 424, 1, 424, 1, 424, 1, 424, 1, 424, 1, 424, 1, 425, 1, 425, 1, 425, 1, 425, 1, 425, 1, 425, 1, 425, 1, 425, 1, 425, 1, 425, 1, 425, 1, 425, 1, 425, 1, 425, 1, 425, 1, 425, 1, 425, 1, 425, 1, 425, 1, 425, 1, 425, 1, 425, 1, 425, 1, 425, 1, 425, 1, 425, 1, 425, 1, 426, 1, 426, 1, 426, 1, 426, 1, 426, 1, 426, 1, 427, 1, 427, 1, 427, 1, 427, 1, 427, 1, 427, 1, 427, 1, 427, 1, 427, 1, 427, 1, 427, 1, 427, 1, 427, 1, 428, 1, 428, 1, 428, 1, 428, 1, 428, 1, 428, 1, 428, 1, 428, 1, 428, 1, 428, 1, 429, 1, 429, 1, 429, 1, 429, 1, 429, 1, 429, 1, 429, 1, 429, 1, 429, 1, 429, 1, 429, 1, 430, 1, 430, 1, 430, 1, 430, 1, 430, 1, 430, 1, 430, 1, 430, 1, 430, 1, 430, 1, 431, 1, 431, 1, 431, 1, 431, 1, 431, 1, 431, 1, 431, 1, 431, 1, 431, 1, 431, 1, 432, 1, 432, 1, 432, 1, 432, 1, 432, 1, 432, 1, 432, 1, 432, 1, 432, 1, 433, 1, 433, 1, 433, 1, 433, 1, 433, 1, 433, 1, 434, 1, 434, 1, 434, 1, 434, 1, 434, 1, 434, 1, 434, 1, 434, 1, 435, 1, 435, 1, 435, 1, 435, 1, 435, 1, 435, 1, 435, 1, 435, 1, 435, 1, 435, 1, 435, 1, 435, 1, 435, 1, 436, 1, 436, 1, 436, 1, 436, 1, 436, 1, 437, 1, 437, 1, 437, 1, 437, 1, 437, 1, 437, 1, 437, 1, 437, 1, 438, 1, 438, 1, 438, 1, 438, 1, 438, 1, 438, 1, 438, 1, 439, 1, 439, 1, 439, 1, 439, 1, 439, 1, 439, 1, 439, 1, 440, 1, 440, 1, 440, 1, 440, 1, 440, 1, 440, 1, 440, 1, 440, 1, 440, 1, 440, 1, 440, 1, 441, 1, 441, 1, 441, 1, 441, 1, 441, 1, 441, 1, 441, 1, 441, 1, 441, 1, 441, 1, 442, 1, 442, 1, 442, 1, 442, 1, 442, 1, 442, 1, 442, 1, 443, 1, 443, 1, 443, 1, 443, 1, 443, 1, 443, 1, 443, 1, 444, 1, 444, 1, 444, 1, 444, 1, 444, 1, 444, 1, 444, 1, 444, 1, 445, 1, 445, 1, 445, 1, 445, 1, 445, 1, 445, 1, 445, 1, 445, 1, 446, 1, 446, 1, 446, 1, 446, 1, 446, 1, 446, 1, 446, 1, 446, 1, 446, 1, 446, 1, 447, 1, 447, 1, 447, 1, 447, 1, 447, 1, 447, 1, 447, 1, 448, 1, 448, 1, 448, 1, 448, 1, 448, 1, 448, 1, 448, 1, 449, 1, 449, 1, 449, 1, 449, 1, 449, 1, 449, 1, 449, 1, 450, 1, 450, 1, 450, 1, 450, 1, 450, 1, 450, 1, 450, 1, 450, 1, 450, 1, 450, 1, 450, 1, 450, 1, 451, 1, 451, 1, 451, 1, 451, 1, 452, 1, 452, 1, 452, 1, 452, 1, 453, 1, 453, 1, 453, 1, 453, 1, 453, 1, 453, 1, 454, 1, 454, 1, 454, 1, 454, 1, 454, 1, 454, 1, 454, 1, 454, 1, 454, 1, 454, 1, 454, 1, 454, 1, 454, 1, 455, 1, 455, 1, 455, 1, 455, 1, 455, 1, 455, 1, 455, 1, 455, 1, 455, 1, 455, 1, 455, 1, 455, 1, 456, 1, 456, 1, 456, 1, 456, 1, 457, 1, 457, 1, 457, 1, 457, 1, 458, 1, 458, 1, 458, 1, 458, 1, 458, 1, 458, 1, 458, 1, 458, 1, 458, 1, 459, 1, 459, 1, 459, 1, 459, 1, 459, 1, 459, 1, 459, 1, 459, 1, 460, 1, 460, 1, 460, 1, 460, 1, 460, 1, 460, 1, 460, 1, 460, 1, 460, 1, 460, 1, 460, 1, 461, 1, 461, 1, 461, 1, 461, 1, 461, 1, 461, 1, 462, 1, 462, 1, 462, 1, 462, 1, 462, 1, 462, 1, 462, 1, 462, 1, 463, 1, 463, 1, 463, 1, 463, 1, 463, 1, 463, 1, 463, 1, 463, 1, 463, 1, 464, 1, 464, 1, 464, 1, 464, 1, 465, 1, 465, 1, 465, 1, 465, 1, 465, 1, 465, 1, 465, 1, 465, 1, 466, 1, 466, 1, 466, 1, 466, 1, 466, 1, 466, 1, 466, 1, 466, 1, 466, 1, 466, 1, 466, 1, 467, 1, 467, 1, 467, 1, 467, 1, 467, 1, 467, 1, 467, 1, 467, 1, 467, 1, 468, 1, 468, 1, 468, 1, 468, 1, 468, 1, 469, 1, 469, 1, 469, 1, 469, 1, 469, 1, 469, 1, 469, 1, 470, 1, 470, 1, 470, 1, 470, 1, 470, 1, 471, 1, 471, 1, 471, 1, 471, 1, 471, 1, 471, 1, 471, 1, 472, 1, 472, 1, 472, 1, 472, 1, 472, 1, 473, 1, 473, 1, 473, 1, 473, 1, 473, 1, 473, 1, 473, 1, 473, 1, 473, 1, 474, 1, 474, 1, 474, 1, 474, 1, 474, 1, 475, 1, 475, 1, 475, 1, 475, 1, 475, 1, 475, 1, 475, 1, 475, 1, 475, 1, 475, 1, 475, 1, 475, 1, 476, 1, 476, 1, 476, 1, 476, 1, 476, 1, 476, 1, 476, 1, 476, 1, 476, 1, 476, 1, 476, 1, 477, 1, 477, 1, 477, 1, 477, 1, 477, 1, 477, 1, 477, 1, 477, 1, 477, 1, 478, 1, 478, 1, 478, 1, 478, 1, 478, 1, 478, 1, 478, 1, 478, 1, 479, 1, 479, 1, 479, 1, 479, 1, 479, 1, 479, 1, 479, 1, 479, 1, 479, 1, 479, 1, 479, 1, 479, 1, 479, 1, 479, 1, 480, 1, 480, 1, 480, 1, 480, 1, 480, 1, 480, 1, 480, 1, 480, 1, 481, 1, 481, 1, 481, 1, 481, 1, 481, 1, 481, 1, 481, 1, 481, 1, 481, 1, 481, 1, 481, 1, 482, 1, 482, 1, 482, 1, 482, 1, 482, 1, 482, 1, 482, 1, 483, 1, 483, 1, 483, 1, 483, 1, 483, 1, 483, 1, 483, 1, 484, 1, 484, 1, 484, 1, 484, 1, 484, 1, 484, 1, 484, 1, 485, 1, 485, 1, 485, 1, 485, 1, 485, 1, 485, 1, 485, 1, 486, 1, 486, 1, 486, 1, 486, 1, 487, 1, 487, 1, 487, 1, 487, 1, 488, 1, 488, 1, 488, 1, 488, 1, 488, 1, 489, 1, 489, 1, 489, 1, 489, 1, 489, 1, 490, 1, 490, 1, 490, 1, 490, 1, 490, 1, 490, 1, 490, 1, 490, 1, 491, 1, 491, 1, 491, 1, 491, 1, 491, 1, 491, 1, 492, 1, 492, 1, 492, 1, 492, 1, 492, 1, 492, 1, 492, 1, 492, 1, 492, 1, 492, 1, 493, 1, 493, 1, 493, 1, 493, 1, 493, 1, 494, 1, 494, 1, 494, 1, 494, 1, 494, 1, 494, 1, 494, 1, 494, 1, 494, 1, 494, 1, 494, 1, 494, 1, 494, 1, 494, 1, 494, 1, 494, 1, 494, 1, 494, 1, 494, 1, 494, 1, 495, 1, 495, 1, 495, 1, 495, 1, 495, 1, 495, 1, 495, 1, 495, 1, 495, 1, 495, 1, 495, 1, 495, 1, 495, 1, 495, 1, 495, 1, 495, 1, 495, 1, 495, 1, 496, 1, 496, 1, 496, 1, 496, 1, 496, 1, 496, 1, 497, 1, 497, 1, 497, 1, 497, 1, 497, 1, 497, 1, 497, 1, 497, 1, 497, 1, 497, 1, 497, 1, 497, 1, 497, 1, 498, 1, 498, 1, 498, 1, 498, 1, 498, 1, 498, 1, 498, 1, 498, 1, 498, 1, 498, 1, 498, 1, 499, 1, 499, 1, 499, 1, 499, 1, 499, 1, 499, 1, 500, 1, 500, 1, 500, 1, 500, 1, 500, 1, 500, 1, 500, 1, 500, 1, 500, 1, 501, 1, 501, 1, 501, 1, 501, 1, 501, 1, 501, 1, 501, 1, 501, 1, 502, 1, 502, 1, 502, 1, 502, 1, 503, 1, 503, 1, 503, 1, 503, 1, 503, 1, 503, 1, 503, 1, 503, 1, 503, 1, 503, 1, 503, 1, 503, 1, 504, 1, 504, 1, 504, 1, 504, 1, 504, 1, 504, 1, 504, 1, 504, 1, 505, 1, 505, 1, 505, 1, 505, 1, 505, 1, 505, 1, 506, 1, 506, 1, 506, 1, 506, 1, 506, 1, 506, 1, 507, 1, 507, 1, 507, 1, 507, 1, 507, 1, 507, 1, 507, 1, 507, 1, 508, 1, 508, 1, 508, 1, 508, 1, 508, 1, 508, 1, 508, 1, 508, 1, 509, 1, 509, 1, 509, 1, 509, 1, 509, 1, 509, 1, 510, 1, 510, 1, 510, 1, 510, 1, 510, 1, 511, 1, 511, 1, 511, 1, 511, 1, 511, 1, 511, 1, 511, 1, 512, 1, 512, 1, 512, 1, 512, 1, 512, 1, 512, 1, 513, 1, 513, 1, 513, 1, 513, 1, 513, 1, 513, 1, 514, 1, 514, 1, 514, 1, 514, 1, 514, 1, 514, 1, 514, 1, 514, 1, 514, 1, 515, 1, 515, 1, 515, 1, 515, 1, 515, 1, 515, 1, 516, 1, 516, 1, 516, 1, 516, 1, 517, 1, 517, 1, 517, 1, 517, 1, 517, 1, 518, 1, 518, 1, 518, 1, 518, 1, 518, 1, 518, 1, 518, 1, 519, 1, 519, 1, 519, 1, 519, 1, 519, 1, 519, 1, 519, 1, 519, 1, 520, 1, 520, 1, 520, 1, 520, 1, 520, 1, 520, 1, 520, 1, 520, 1, 520, 1, 520, 1, 521, 1, 521, 1, 521, 1, 521, 1, 521, 1, 521, 1, 521, 1, 522, 1, 522, 1, 522, 1, 522, 1, 522, 1, 523, 1, 523, 1, 523, 1, 523, 1, 523, 1, 524, 1, 524, 1, 524, 1, 524, 1, 525, 1, 525, 1, 525, 1, 525, 1, 525, 1, 526, 1, 526, 1, 526, 1, 526, 1, 526, 1, 527, 1, 527, 1, 527, 1, 527, 1, 527, 1, 527, 1, 527, 1, 527, 1, 528, 1, 528, 1, 528, 1, 528, 1, 528, 1, 528, 1, 528, 1, 528, 1, 529, 1, 529, 1, 529, 1, 529, 1, 530, 1, 530, 1, 530, 1, 530, 1, 531, 1, 531, 1, 531, 1, 531, 1, 531, 1, 531, 1, 531, 1, 531, 1, 531, 1, 531, 1, 532, 1, 532, 1, 532, 1, 532, 1, 532, 1, 532, 1, 533, 1, 533, 1, 533, 1, 533, 1, 534, 1, 534, 1, 534, 1, 534, 1, 535, 1, 535, 1, 535, 1, 536, 1, 536, 1, 536, 1, 536, 1, 536, 1, 536, 1, 537, 1, 537, 1, 537, 1, 537, 1, 537, 1, 537, 1, 537, 1, 537, 1, 537, 1, 537, 1, 538, 1, 538, 1, 538, 1, 538, 1, 539, 1, 539, 1, 539, 1, 540, 1, 540, 1, 540, 1, 540, 1, 540, 1, 540, 1, 541, 1, 541, 1, 541, 1, 541, 1, 541, 1, 541, 1, 541, 1, 541, 1, 542, 1, 542, 1, 542, 1, 542, 1, 542, 1, 542, 1, 543, 1, 543, 1, 543, 1, 543, 1, 543, 1, 543, 1, 544, 1, 544, 1, 544, 1, 544, 1, 544, 1, 545, 1, 545, 1, 545, 1, 545, 1, 545, 1, 546, 1, 546, 1, 546, 1, 546, 1, 546, 1, 546, 1, 546, 1, 546, 1, 546, 1, 546, 1, 546, 1, 547, 1, 547, 1, 547, 1, 547, 1, 547, 1, 547, 1, 548, 1, 548, 1, 548, 1, 548, 1, 548, 1, 548, 1, 548, 1, 548, 1, 548, 1, 548, 1, 548, 1, 548, 1, 548, 1, 549, 1, 549, 1, 549, 1, 549, 1, 549, 1, 549, 1, 549, 1, 550, 1, 550, 1, 550, 1, 550, 1, 550, 1, 550, 1, 550, 1, 550, 1, 551, 1, 551, 1, 551, 1, 551, 1, 551, 1, 552, 1, 552, 1, 552, 1, 552, 1, 552, 1, 552, 1, 553, 1, 553, 1, 553, 1, 553, 1, 553, 1, 554, 1, 554, 1, 554, 1, 554, 1, 554, 1, 554, 1, 555, 1, 555, 1, 555, 1, 555, 1, 555, 1, 556, 1, 556, 1, 556, 1, 556, 1, 556, 1, 556, 1, 557, 1, 557, 1, 557, 1, 557, 1, 557, 1, 557, 1, 558, 1, 558, 1, 558, 1, 558, 1, 558, 1, 558, 1, 558, 1, 559, 1, 559, 1, 559, 1, 559, 1, 560, 1, 560, 1, 560, 1, 560, 1, 560, 1, 561, 1, 561, 1, 561, 1, 561, 1, 562, 1, 562, 1, 562, 1, 562, 1, 562, 1, 563, 1, 563, 1, 563, 1, 563, 1, 564, 1, 564, 1, 564, 1, 564, 1, 564, 1, 565, 1, 565, 1, 565, 1, 565, 1, 566, 1, 566, 1, 566, 1, 566, 1, 566, 1, 567, 1, 567, 1, 567, 1, 567, 1, 567, 1, 568, 1, 568, 1, 568, 1, 568, 1, 568, 1, 569, 1, 569, 1, 569, 1, 569, 1, 569, 1, 570, 1, 570, 1, 570, 1, 570, 1, 570, 1, 570, 1, 571, 1, 571, 1, 571, 1, 571, 1, 571, 1, 571, 1, 572, 1, 572, 1, 572, 1, 572, 1, 572, 1, 572, 1, 573, 1, 573, 1, 573, 1, 573, 1, 573, 1, 573, 1, 573, 1, 573, 1, 573, 1, 573, 1, 573, 1, 574, 1, 574, 1, 574, 1, 574, 1, 574, 1, 574, 1, 574, 1, 574, 1, 574, 1, 574, 1, 574, 1, 574, 1, 575, 1, 575, 1, 575, 1, 575, 1, 575, 1, 575, 1, 575, 1, 575, 1, 575, 1, 575, 1, 575, 1, 575, 1, 575, 1, 575, 1, 575, 1, 575, 1, 575, 1, 576, 1, 576, 1, 576, 1, 576, 1, 576, 1, 576, 1, 577, 1, 577, 1, 577, 1, 577, 1, 577, 1, 577, 1, 577, 1, 577, 1, 577, 1, 577, 1, 577, 1, 577, 1, 577, 1, 578, 1, 578, 1, 578, 1, 578, 1, 578, 1, 578, 1, 579, 1, 579, 1, 579, 1, 579, 1, 579, 1, 579, 1, 580, 1, 580, 1, 580, 1, 580, 1, 580, 1, 580, 1, 581, 1, 581, 1, 581, 1, 581, 1, 582, 1, 582, 1, 582, 1, 582, 1, 582, 1, 582, 1, 582, 1, 583, 1, 583, 1, 583, 1, 583, 1, 583, 1, 583, 1, 583, 1, 583, 1, 583, 1, 583, 1, 584, 1, 584, 1, 584, 1, 584, 1, 584, 1, 584, 1, 584, 1, 585, 1, 585, 1, 585, 1, 585, 1, 585, 1, 585, 1, 585, 1, 585, 1, 586, 1, 586, 1, 586, 1, 586, 1, 586, 1, 586, 1, 586, 1, 587, 1, 587, 1, 587, 1, 587, 1, 587, 1, 588, 1, 588, 1, 588, 1, 588, 1, 588, 1, 588, 1, 589, 1, 589, 1, 589, 1, 589, 1, 590, 1, 590, 1, 590, 1, 590, 1, 590, 1, 590, 1, 590, 1, 590, 1, 590, 1, 590, 1, 590, 1, 590, 1, 591, 1, 591, 1, 591, 1, 591, 1, 591, 1, 591, 1, 591, 1, 591, 1, 591, 1, 591, 1, 591, 1, 591, 1, 591, 1, 591, 1, 591, 1, 591, 1, 591, 1, 591, 1, 591, 1, 592, 1, 592, 1, 592, 1, 592, 1, 592, 1, 592, 1, 592, 1, 592, 1, 592, 1, 592, 1, 592, 1, 592, 1, 593, 1, 593, 1, 593, 1, 593, 1, 593, 1, 593, 1, 593, 1, 593, 1, 593, 1, 593, 1, 593, 1, 593, 1, 593, 1, 593, 1, 594, 1, 594, 1, 594, 1, 594, 1, 594, 1, 594, 1, 594, 1, 594, 1, 594, 1, 594, 1, 594, 1, 594, 1, 594, 1, 594, 1, 594, 1, 595, 1, 595, 1, 595, 1, 595, 1, 595, 1, 595, 1, 595, 1, 595, 1, 595, 1, 595, 1, 595, 1, 595, 1, 595, 1, 596, 1, 596, 1, 596, 1, 596, 1, 596, 1, 596, 1, 596, 1, 596, 1, 596, 1, 596, 1, 596, 1, 596, 1, 596, 1, 597, 1, 597, 1, 597, 1, 597, 1, 597, 1, 597, 1, 597, 1, 597, 1, 597, 1, 597, 1, 597, 1, 597, 1, 598, 1, 598, 1, 598, 1, 598, 1, 598, 1, 598, 1, 598, 1, 598, 1, 598, 1, 598, 1, 598, 1, 598, 1, 598, 1, 599, 1, 599, 1, 599, 1, 599, 1, 599, 1, 599, 1, 599, 1, 599, 1, 599, 1, 599, 1, 599, 1, 599, 1, 599, 1, 599, 1, 599, 1, 600, 1, 600, 1, 600, 1, 600, 1, 600, 1, 600, 1, 600, 1, 600, 1, 600, 1, 600, 1, 600, 1, 600, 1, 600, 1, 600, 1, 600, 1, 601, 1, 601, 1, 601, 1, 601, 1, 601, 1, 601, 1, 601, 1, 601, 1, 601, 1, 601, 1, 601, 1, 601, 1, 601, 1, 601, 1, 601, 1, 601, 1, 601, 1, 601, 1, 601, 1, 601, 1, 601, 1, 601, 1, 602, 1, 602, 1, 602, 1, 602, 1, 602, 1, 602, 1, 602, 1, 602, 1, 602, 1, 602, 1, 602, 1, 602, 1, 602, 1, 602, 1, 602, 1, 602, 1, 602, 1, 602, 1, 602, 1, 602, 1, 602, 1, 602, 1, 603, 1, 603, 1, 603, 1, 603, 1, 603, 1, 603, 1, 603, 1, 603, 1, 603, 1, 603, 1, 603, 1, 603, 1, 603, 1, 603, 1, 604, 1, 604, 1, 604, 1, 604, 1, 604, 1, 604, 1, 604, 1, 605, 1, 605, 1, 605, 1, 605, 1, 605, 1, 606, 1, 606, 1, 606, 1, 606, 1, 606, 1, 606, 1, 607, 1, 607, 1, 607, 1, 607, 1, 607, 1, 607, 1, 607, 1, 607, 1, 607, 1, 607, 1, 607, 1, 608, 1, 608, 1, 608, 1, 608, 1, 608, 1, 608, 1, 608, 1, 608, 1, 608, 1, 608, 1, 608, 1, 608, 1, 609, 1, 609, 1, 609, 1, 609, 1, 609, 1, 609, 1, 609, 1, 609, 1, 609, 1, 609, 1, 609, 1, 609, 1, 609, 1, 609, 1, 609, 1, 609, 1, 610, 1, 610, 1, 610, 1, 610, 1, 610, 1, 610, 1, 610, 1, 610, 1, 610, 1, 610, 1, 610, 1, 610, 1, 610, 1, 610, 1, 610, 1, 610, 1, 611, 1, 611, 1, 611, 1, 611, 1, 611, 1, 611, 1, 611, 1, 612, 1, 612, 1, 612, 1, 612, 1, 612, 1, 612, 1, 612, 1, 613, 1, 613, 1, 613, 1, 613, 1, 613, 1, 613, 1, 613, 1, 613, 1, 613, 1, 614, 1, 614, 1, 614, 1, 614, 1, 614, 1, 614, 1, 614, 1, 615, 1, 615, 1, 615, 1, 615, 1, 615, 1, 615, 1, 615, 1, 615, 1, 615, 1, 615, 1, 616, 1, 616, 1, 616, 1, 616, 1, 616, 1, 616, 1, 616, 1, 617, 1, 617, 1, 617, 1, 617, 1, 618, 1, 618, 1, 618, 1, 618, 1, 618, 1, 618, 1, 618, 1, 618, 1, 618, 1, 618, 1, 618, 1, 618, 1, 618, 1, 618, 1, 618, 1, 618, 1, 619, 1, 619, 1, 619, 1, 619, 1, 619, 1, 619, 1, 619, 1, 619, 1, 619, 1, 620, 1, 620, 1, 620, 1, 620, 1, 620, 1, 620, 1, 620, 1, 620, 1, 620, 1, 620, 1, 621, 1, 621, 1, 621, 1, 621, 1, 621, 1, 621, 1, 621, 1, 621, 1, 621, 1, 621, 1, 621, 1, 622, 1, 622, 1, 622, 1, 622, 1, 622, 1, 622, 1, 622, 1, 622, 1, 622, 1, 623, 1, 623, 1, 623, 1, 623, 1, 623, 1, 623, 1, 623, 1, 623, 1, 623, 1, 623, 1, 623, 1, 623, 1, 623, 1, 624, 1, 624, 1, 624, 1, 624, 1, 624, 1, 624, 1, 624, 1, 624, 1, 624, 1, 624, 1, 624, 1, 624, 1, 624, 1, 624, 1, 625, 1, 625, 1, 625, 1, 625, 1, 625, 1, 625, 1, 625, 1, 625, 1, 625, 1, 625, 1, 625, 1, 625, 1, 625, 1, 625, 1, 625, 1, 625, 1, 625, 1, 626, 1, 626, 1, 626, 1, 626, 1, 626, 1, 626, 1, 626, 1, 626, 1, 626, 1, 626, 1, 627, 1, 627, 1, 627, 1, 627, 1, 627, 1, 627, 1, 627, 1, 627, 1, 627, 1, 627, 1, 627, 1, 627, 1, 627, 1, 627, 1, 628, 1, 628, 1, 628, 1, 628, 1, 628, 1, 628, 1, 628, 1, 628, 1, 628, 1, 628, 1, 629, 1, 629, 1, 629, 1, 629, 1, 629, 1, 629, 1, 629, 1, 629, 1, 629, 1, 629, 1, 629, 1, 629, 1, 629, 1, 629, 1, 629, 1, 630, 1, 630, 1, 630, 1, 630, 1, 630, 1, 630, 1, 630, 1, 630, 1, 630, 1, 630, 1, 630, 1, 630, 1, 630, 1, 630, 1, 630, 1, 630, 1, 630, 1, 631, 1, 631, 1, 631, 1, 631, 1, 632, 1, 632, 1, 632, 1, 632, 1, 632, 1, 632, 1, 632, 1, 632, 1, 632, 1, 632, 1, 632, 1, 632, 1, 632, 1, 632, 1, 632, 1, 632, 1, 632, 1, 632, 1, 632, 1, 632, 1, 633, 1, 633, 1, 633, 1, 633, 1, 633, 1, 633, 1, 633, 1, 633, 1, 633, 1, 633, 1, 634, 1, 634, 1, 634, 1, 634, 1, 634, 1, 634, 1, 634, 1, 634, 1, 634, 1, 634, 1, 634, 1, 634, 1, 634, 1, 634, 1, 634, 1, 634, 1, 634, 1, 634, 1, 634, 1, 634, 1, 634, 1, 634, 1, 635, 1, 635, 1, 635, 1, 635, 1, 635, 1, 635, 1, 635, 1, 635, 1, 635, 1, 635, 1, 635, 1, 635, 1, 635, 1, 636, 1, 636, 1, 636, 1, 636, 1, 636, 1, 636, 1, 636, 1, 636, 1, 637, 1, 637, 1, 637, 1, 637, 1, 637, 1, 637, 1, 637, 1, 637, 1, 638, 1, 638, 1, 638, 1, 638, 1, 638, 1, 638, 1, 638, 1, 638, 1, 638, 1, 638, 1, 639, 1, 639, 5, 639, 6323, 8, 639, 10, 639, 12, 639, 6326, 9, 639, 1, 640, 1, 640, 1, 640, 1, 640, 1, 640, 1, 640, 3, 640, 6334, 8, 640, 1, 641, 1, 641, 3, 641, 6338, 8, 641, 1, 642, 1, 642, 3, 642, 6342, 8, 642, 1, 643, 1, 643, 1, 643, 1, 644, 1, 644, 1, 644, 1, 644, 5, 644, 6351, 8, 644, 10, 644, 12, 644, 6354, 9, 644, 1, 645, 1, 645, 1, 645, 1, 646, 1, 646, 1, 646, 1, 646, 5, 646, 6363, 8, 646, 10, 646, 12, 646, 6366, 9, 646, 1, 647, 1, 647, 1, 647, 1, 647, 1, 648, 1, 648, 1, 648, 1, 648, 1, 649, 1, 649, 1, 649, 1, 649, 1, 650, 1, 650, 1, 650, 1, 650, 1, 651, 1, 651, 1, 651, 1, 652, 1, 652, 1, 652, 1, 652, 5, 652, 6391, 8, 652, 10, 652, 12, 652, 6394, 9, 652, 1, 653, 1, 653, 1, 653, 1, 653, 1, 653, 1, 653, 1, 654, 1, 654, 1, 654, 1, 655, 1, 655, 1, 655, 1, 655, 1, 656, 1, 656, 3, 656, 6411, 8, 656, 1, 656, 1, 656, 1, 656, 1, 656, 1, 656, 1, 657, 1, 657, 5, 657, 6420, 8, 657, 10, 657, 12, 657, 6423, 9, 657, 1, 658, 1, 658, 1, 658, 1, 659, 1, 659, 1, 659, 5, 659, 6431, 8, 659, 10, 659, 12, 659, 6434, 9, 659, 1, 660, 1, 660, 1, 660, 1, 661, 1, 661, 1, 661, 1, 662, 1, 662, 1, 662, 1, 663, 1, 663, 1, 663, 5, 663, 6448, 8, 663, 10, 663, 12, 663, 6451, 9, 663, 1, 664, 1, 664, 1, 664, 1, 665, 1, 665, 1, 665, 1, 666, 1, 666, 1, 667, 1, 667, 1, 667, 1, 667, 1, 667, 1, 667, 1, 668, 1, 668, 1, 668, 3, 668, 6470, 8, 668, 1, 668, 1, 668, 3, 668, 6474, 8, 668, 1, 668, 3, 668, 6477, 8, 668, 1, 668, 1, 668, 1, 668, 1, 668, 3, 668, 6483, 8, 668, 1, 668, 3, 668, 6486, 8, 668, 1, 668, 1, 668, 1, 668, 3, 668, 6491, 8, 668, 1, 668, 1, 668, 3, 668, 6495, 8, 668, 1, 669, 4, 669, 6498, 8, 669, 11, 669, 12, 669, 6499, 1, 670, 1, 670, 1, 670, 5, 670, 6505, 8, 670, 10, 670, 12, 670, 6508, 9, 670, 1, 671, 1, 671, 1, 671, 1, 671, 1, 671, 1, 671, 1, 671, 1, 671, 5, 671, 6518, 8, 671, 10, 671, 12, 671, 6521, 9, 671, 1, 671, 1, 671, 1, 672, 4, 672, 6526, 8, 672, 11, 672, 12, 672, 6527, 1, 672, 1, 672, 1, 673, 1, 673, 3, 673, 6534, 8, 673, 1, 673, 3, 673, 6537, 8, 673, 1, 673, 1, 673, 1, 674, 1, 674, 1, 674, 1, 674, 5, 674, 6545, 8, 674, 10, 674, 12, 674, 6548, 9, 674, 1, 674, 1, 674, 1, 675, 1, 675, 1, 675, 1, 675, 5, 675, 6556, 8, 675, 10, 675, 12, 675, 6559, 9, 675, 1, 675, 1, 675, 1, 675, 4, 675, 6564, 8, 675, 11, 675, 12, 675, 6565, 1, 675, 1, 675, 4, 675, 6570, 8, 675, 11, 675, 12, 675, 6571, 1, 675, 5, 675, 6575, 8, 675, 10, 675, 12, 675, 6578, 9, 675, 1, 675, 5, 675, 6581, 8, 675, 10, 675, 12, 675, 6584, 9, 675, 1, 675, 1, 675, 1, 675, 1, 675, 1, 675, 1, 676, 1, 676, 1, 676, 1, 676, 5, 676, 6595, 8, 676, 10, 676, 12, 676, 6598, 9, 676, 1, 676, 1, 676, 1, 676, 4, 676, 6603, 8, 676, 11, 676, 12, 676, 6604, 1, 676, 1, 676, 4, 676, 6609, 8, 676, 11, 676, 12, 676, 6610, 1, 676, 3, 676, 6614, 8, 676, 5, 676, 6616, 8, 676, 10, 676, 12, 676, 6619, 9, 676, 1, 676, 4, 676, 6622, 8, 676, 11, 676, 12, 676, 6623, 1, 676, 4, 676, 6627, 8, 676, 11, 676, 12, 676, 6628, 1, 676, 5, 676, 6632, 8, 676, 10, 676, 12, 676, 6635, 9, 676, 1, 676, 3, 676, 6638, 8, 676, 1, 676, 1, 676, 1, 677, 1, 677, 1, 677, 1, 677, 5, 677, 6646, 8, 677, 10, 677, 12, 677, 6649, 9, 677, 1, 677, 5, 677, 6652, 8, 677, 10, 677, 12, 677, 6655, 9, 677, 1, 677, 1, 677, 5, 677, 6659, 8, 677, 10, 677, 12, 677, 6662, 9, 677, 3, 677, 6664, 8, 677, 1, 678, 1, 678, 1, 678, 1, 679, 1, 679, 1, 680, 1, 680, 1, 680, 1, 680, 1, 680, 1, 681, 1, 681, 3, 681, 6678, 8, 681, 1, 681, 1, 681, 1, 682, 1, 682, 1, 682, 1, 682, 1, 682, 1, 682, 1, 682, 1, 682, 1, 682, 1, 682, 1, 682, 1, 682, 1, 682, 1, 682, 1, 682, 1, 682, 1, 682, 1, 682, 1, 682, 1, 682, 3, 682, 6702, 8, 682, 1, 682, 5, 682, 6705, 8, 682, 10, 682, 12, 682, 6708, 9, 682, 1, 683, 1, 683, 1, 683, 1, 683, 1, 683, 1, 684, 1, 684, 3, 684, 6717, 8, 684, 1, 684, 1, 684, 1, 685, 1, 685, 1, 685, 1, 685, 1, 685, 5, 685, 6726, 8, 685, 10, 685, 12, 685, 6729, 9, 685, 1, 686, 1, 686, 1, 686, 1, 686, 1, 686, 1, 687, 1, 687, 1, 687, 1, 687, 1, 687, 1, 687, 1, 688, 1, 688, 1, 688, 1, 688, 1, 688, 1, 689, 1, 689, 1, 689, 1, 689, 1, 689, 1, 690, 1, 690, 1, 690, 1, 690, 1, 690, 1, 691, 1, 691, 1, 691, 1, 691, 1, 691, 1, 692, 1, 692, 1, 692, 1, 692, 1, 692, 1, 693, 4, 693, 6768, 8, 693, 11, 693, 12, 693, 6769, 1, 693, 1, 693, 5, 693, 6774, 8, 693, 10, 693, 12, 693, 6777, 9, 693, 3, 693, 6779, 8, 693, 1, 694, 1, 694, 3, 694, 6783, 8, 694, 1, 694, 1, 694, 1, 694, 1, 694, 1, 694, 1, 694, 1, 694, 0, 0, 695, 5, 1, 7, 2, 9, 3, 11, 4, 13, 5, 15, 6, 17, 7, 19, 8, 21, 9, 23, 10, 25, 11, 27, 12, 29, 13, 31, 14, 33, 15, 35, 16, 37, 17, 39, 18, 41, 19, 43, 20, 45, 21, 47, 22, 49, 23, 51, 24, 53, 25, 55, 26, 57, 27, 59, 28, 61, 29, 63, 0, 65, 0, 67, 0, 69, 0, 71, 30, 73, 31, 75, 32, 77, 33, 79, 34, 81, 35, 83, 36, 85, 37, 87, 38, 89, 39, 91, 40, 93, 41, 95, 42, 97, 43, 99, 44, 101, 45, 103, 46, 105, 47, 107, 48, 109, 49, 111, 50, 113, 51, 115, 52, 117, 53, 119, 54, 121, 55, 123, 56, 125, 57, 127, 58, 129, 59, 131, 60, 133, 61, 135, 62, 137, 63, 139, 64, 141, 65, 143, 66, 145, 67, 147, 68, 149, 69, 151, 70, 153, 71, 155, 72, 157, 73, 159, 74, 161, 75, 163, 76, 165, 77, 167, 78, 169, 79, 171, 80, 173, 81, 175, 82, 177, 83, 179, 84, 181, 85, 183, 86, 185, 87, 187, 88, 189, 89, 191, 90, 193, 91, 195, 92, 197, 93, 199, 94, 201, 95, 203, 96, 205, 97, 207, 98, 209, 99, 211, 100, 213, 101, 215, 102, 217, 103, 219, 104, 221, 105, 223, 106, 225, 107, 227, 108, 229, 109, 231, 110, 233, 111, 235, 112, 237, 113, 239, 114, 241, 115, 243, 116, 245, 117, 247, 118, 249, 119, 251, 120, 253, 121, 255, 122, 257, 123, 259, 124, 261, 125, 263, 126, 265, 127, 267, 128, 269, 129, 271, 130, 273, 131, 275, 132, 277, 133, 279, 134, 281, 135, 283, 136, 285, 137, 287, 138, 289, 139, 291, 140, 293, 141, 295, 142, 297, 143, 299, 144, 301, 145, 303, 146, 305, 147, 307, 148, 309, 149, 311, 150, 313, 151, 315, 152, 317, 153, 319, 154, 321, 155, 323, 156, 325, 157, 327, 158, 329, 159, 331, 160, 333, 161, 335, 162, 337, 163, 339, 164, 341, 165, 343, 166, 345, 167, 347, 168, 349, 169, 351, 170, 353, 171, 355, 172, 357, 173, 359, 174, 361, 175, 363, 176, 365, 177, 367, 178, 369, 179, 371, 180, 373, 181, 375, 182, 377, 183, 379, 184, 381, 185, 383, 186, 385, 187, 387, 188, 389, 189, 391, 190, 393, 191, 395, 192, 397, 193, 399, 194, 401, 195, 403, 196, 405, 197, 407, 198, 409, 199, 411, 200, 413, 201, 415, 202, 417, 203, 419, 204, 421, 205, 423, 206, 425, 207, 427, 208, 429, 209, 431, 210, 433, 211, 435, 212, 437, 213, 439, 214, 441, 215, 443, 216, 445, 217, 447, 218, 449, 219, 451, 220, 453, 221, 455, 222, 457, 223, 459, 224, 461, 225, 463, 226, 465, 227, 467, 228, 469, 229, 471, 230, 473, 231, 475, 232, 477, 233, 479, 234, 481, 235, 483, 236, 485, 237, 487, 238, 489, 239, 491, 240, 493, 241, 495, 242, 497, 243, 499, 244, 501, 245, 503, 246, 505, 247, 507, 248, 509, 249, 511, 250, 513, 251, 515, 252, 517, 253, 519, 254, 521, 255, 523, 256, 525, 257, 527, 258, 529, 259, 531, 260, 533, 261, 535, 262, 537, 263, 539, 264, 541, 265, 543, 266, 545, 267, 547, 268, 549, 269, 551, 270, 553, 271, 555, 272, 557, 273, 559, 274, 561, 275, 563, 276, 565, 277, 567, 278, 569, 279, 571, 280, 573, 281, 575, 282, 577, 283, 579, 284, 581, 285, 583, 286, 585, 287, 587, 288, 589, 289, 591, 290, 593, 291, 595, 292, 597, 293, 599, 294, 601, 295, 603, 296, 605, 297, 607, 298, 609, 299, 611, 300, 613, 301, 615, 302, 617, 303, 619, 304, 621, 305, 623, 306, 625, 307, 627, 308, 629, 309, 631, 310, 633, 311, 635, 312, 637, 313, 639, 314, 641, 315, 643, 316, 645, 317, 647, 318, 649, 319, 651, 320, 653, 321, 655, 322, 657, 323, 659, 324, 661, 325, 663, 326, 665, 327, 667, 328, 669, 329, 671, 330, 673, 331, 675, 332, 677, 333, 679, 334, 681, 335, 683, 336, 685, 337, 687, 338, 689, 339, 691, 340, 693, 341, 695, 342, 697, 343, 699, 344, 701, 345, 703, 346, 705, 347, 707, 348, 709, 349, 711, 350, 713, 351, 715, 352, 717, 353, 719, 354, 721, 355, 723, 356, 725, 357, 727, 358, 729, 359, 731, 360, 733, 361, 735, 362, 737, 363, 739, 364, 741, 365, 743, 366, 745, 367, 747, 368, 749, 369, 751, 370, 753, 371, 755, 372, 757, 373, 759, 374, 761, 375, 763, 376, 765, 377, 767, 378, 769, 379, 771, 380, 773, 381, 775, 382, 777, 383, 779, 384, 781, 385, 783, 386, 785, 387, 787, 388, 789, 389, 791, 390, 793, 391, 795, 392, 797, 393, 799, 394, 801, 395, 803, 396, 805, 397, 807, 398, 809, 399, 811, 400, 813, 401, 815, 402, 817, 403, 819, 404, 821, 405, 823, 406, 825, 407, 827, 408, 829, 409, 831, 410, 833, 411, 835, 412, 837, 413, 839, 414, 841, 415, 843, 416, 845, 417, 847, 418, 849, 419, 851, 420, 853, 421, 855, 422, 857, 423, 859, 424, 861, 425, 863, 426, 865, 427, 867, 428, 869, 429, 871, 430, 873, 431, 875, 432, 877, 433, 879, 434, 881, 435, 883, 436, 885, 437, 887, 438, 889, 439, 891, 440, 893, 441, 895, 442, 897, 443, 899, 444, 901, 445, 903, 446, 905, 447, 907, 448, 909, 449, 911, 450, 913, 451, 915, 452, 917, 453, 919, 454, 921, 455, 923, 456, 925, 457, 927, 458, 929, 459, 931, 460, 933, 461, 935, 462, 937, 463, 939, 464, 941, 465, 943, 466, 945, 467, 947, 468, 949, 469, 951, 470, 953, 471, 955, 472, 957, 473, 959, 474, 961, 475, 963, 476, 965, 477, 967, 478, 969, 479, 971, 480, 973, 481, 975, 482, 977, 483, 979, 484, 981, 485, 983, 486, 985, 487, 987, 488, 989, 489, 991, 490, 993, 491, 995, 492, 997, 493, 999, 494, 1001, 495, 1003, 496, 1005, 497, 1007, 498, 1009, 499, 1011, 500, 1013, 501, 1015, 502, 1017, 503, 1019, 504, 1021, 505, 1023, 506, 1025, 507, 1027, 508, 1029, 509, 1031, 510, 1033, 511, 1035, 512, 1037, 513, 1039, 514, 1041, 515, 1043, 516, 1045, 517, 1047, 518, 1049, 519, 1051, 520, 1053, 521, 1055, 522, 1057, 523, 1059, 524, 1061, 525, 1063, 526, 1065, 527, 1067, 528, 1069, 529, 1071, 530, 1073, 531, 1075, 532, 1077, 533, 1079, 534, 1081, 535, 1083, 536, 1085, 537, 1087, 538, 1089, 539, 1091, 540, 1093, 541, 1095, 542, 1097, 543, 1099, 544, 1101, 545, 1103, 546, 1105, 547, 1107, 548, 1109, 549, 1111, 550, 1113, 551, 1115, 552, 1117, 553, 1119, 554, 1121, 555, 1123, 556, 1125, 557, 1127, 558, 1129, 559, 1131, 560, 1133, 561, 1135, 562, 1137, 563, 1139, 564, 1141, 565, 1143, 566, 1145, 567, 1147, 568, 1149, 569, 1151, 570, 1153, 571, 1155, 572, 1157, 573, 1159, 574, 1161, 575, 1163, 576, 1165, 577, 1167, 578, 1169, 579, 1171, 580, 1173, 581, 1175, 582, 1177, 583, 1179, 584, 1181, 585, 1183, 586, 1185, 587, 1187, 588, 1189, 589, 1191, 590, 1193, 591, 1195, 592, 1197, 593, 1199, 594, 1201, 595, 1203, 596, 1205, 597, 1207, 598, 1209, 599, 1211, 600, 1213, 601, 1215, 602, 1217, 603, 1219, 604, 1221, 605, 1223, 606, 1225, 607, 1227, 608, 1229, 609, 1231, 610, 1233, 611, 1235, 612, 1237, 613, 1239, 614, 1241, 615, 1243, 616, 1245, 617, 1247, 618, 1249, 619, 1251, 620, 1253, 621, 1255, 622, 1257, 623, 1259, 624, 1261, 625, 1263, 626, 1265, 627, 1267, 628, 1269, 629, 1271, 630, 1273, 631, 1275, 632, 1277, 633, 1279, 634, 1281, 635, 1283, 636, 1285, 0, 1287, 0, 1289, 0, 1291, 637, 1293, 638, 1295, 639, 1297, 640, 1299, 641, 1301, 642, 1303, 643, 1305, 644, 1307, 645, 1309, 646, 1311, 0, 1313, 647, 1315, 648, 1317, 649, 1319, 0, 1321, 650, 1323, 651, 1325, 652, 1327, 653, 1329, 654, 1331, 655, 1333, 656, 1335, 657, 1337, 658, 1339, 659, 1341, 660, 1343, 0, 1345, 661, 1347, 662, 1349, 663, 1351, 664, 1353, 665, 1355, 666, 1357, 667, 1359, 668, 1361, 669, 1363, 670, 1365, 671, 1367, 672, 1369, 0, 1371, 673, 1373, 674, 1375, 0, 1377, 0, 1379, 0, 1381, 675, 1383, 0, 1385, 0, 1387, 679, 1389, 676, 1391, 677, 1393, 678, 5, 0, 1, 2, 3, 4, 51, 1, 0, 48, 57, 2, 0, 43, 43, 45, 45, 9, 0, 33, 33, 35, 35, 37, 38, 42, 42, 60, 64, 94, 94, 96, 96, 124, 124, 126, 126, 2, 0, 42, 43, 60, 62, 8, 0, 33, 33, 35, 35, 37, 38, 63, 64, 94, 94, 96, 96, 124, 124, 126, 126, 2, 0, 65, 65, 97, 97, 2, 0, 76, 76, 108, 108, 2, 0, 78, 78, 110, 110, 2, 0, 89, 89, 121, 121, 2, 0, 83, 83, 115, 115, 2, 0, 69, 69, 101, 101, 2, 0, 90, 90, 122, 122, 2, 0, 68, 68, 100, 100, 2, 0, 82, 82, 114, 114, 2, 0, 67, 67, 99, 99, 2, 0, 77, 77, 109, 109, 2, 0, 84, 84, 116, 116, 2, 0, 73, 73, 105, 105, 2, 0, 66, 66, 98, 98, 2, 0, 79, 79, 111, 111, 2, 0, 72, 72, 104, 104, 2, 0, 75, 75, 107, 107, 2, 0, 85, 85, 117, 117, 2, 0, 71, 71, 103, 103, 2, 0, 80, 80, 112, 112, 2, 0, 70, 70, 102, 102, 2, 0, 88, 88, 120, 120, 2, 0, 86, 86, 118, 118, 2, 0, 81, 81, 113, 113, 2, 0, 87, 87, 119, 119, 2, 0, 74, 74, 106, 106, 9, 0, 65, 90, 95, 95, 97, 122, 170, 170, 181, 181, 186, 186, 192, 214, 216, 246, 248, 255, 2, 0, 256, 55295, 57344, 65535, 1, 0, 55296, 56319, 1, 0, 56320, 57343, 2, 0, 0, 0, 34, 34, 1, 0, 34, 34, 1, 0, 39, 39, 1, 0, 48, 49, 3, 0, 48, 57, 65, 70, 97, 102, 3, 0, 65, 90, 95, 95, 97, 122, 5, 0, 36, 36, 48, 57, 65, 90, 95, 95, 97, 122, 2, 0, 34, 34, 92, 92, 2, 0, 9, 9, 32, 32, 2, 0, 10, 10, 13, 13, 2, 0, 42, 42, 47, 47, 4, 0, 10, 10, 13, 13, 34, 34, 92, 92, 3, 0, 10, 10, 13, 13, 34, 34, 3, 0, 85, 85, 117, 117, 120, 120, 2, 0, 39, 39, 92, 92, 1, 0, 36, 36, 6863, 0, 5, 1, 0, 0, 0, 0, 7, 1, 0, 0, 0, 0, 9, 1, 0, 0, 0, 0, 11, 1, 0, 0, 0, 0, 13, 1, 0, 0, 0, 0, 15, 1, 0, 0, 0, 0, 17, 1, 0, 0, 0, 0, 19, 1, 0, 0, 0, 0, 21, 1, 0, 0, 0, 0, 23, 1, 0, 0, 0, 0, 25, 1, 0, 0, 0, 0, 27, 1, 0, 0, 0, 0, 29, 1, 0, 0, 0, 0, 31, 1, 0, 0, 0, 0, 33, 1, 0, 0, 0, 0, 35, 1, 0, 0, 0, 0, 37, 1, 0, 0, 0, 0, 39, 1, 0, 0, 0, 0, 41, 1, 0, 0, 0, 0, 43, 1, 0, 0, 0, 0, 45, 1, 0, 0, 0, 0, 47, 1, 0, 0, 0, 0, 49, 1, 0, 0, 0, 0, 51, 1, 0, 0, 0, 0, 53, 1, 0, 0, 0, 0, 55, 1, 0, 0, 0, 0, 57, 1, 0, 0, 0, 0, 59, 1, 0, 0, 0, 0, 61, 1, 0, 0, 0, 0, 63, 1, 0, 0, 0, 0, 71, 1, 0, 0, 0, 0, 73, 1, 0, 0, 0, 0, 75, 1, 0, 0, 0, 0, 77, 1, 0, 0, 0, 0, 79, 1, 0, 0, 0, 0, 81, 1, 0, 0, 0, 0, 83, 1, 0, 0, 0, 0, 85, 1, 0, 0, 0, 0, 87, 1, 0, 0, 0, 0, 89, 1, 0, 0, 0, 0, 91, 1, 0, 0, 0, 0, 93, 1, 0, 0, 0, 0, 95, 1, 0, 0, 0, 0, 97, 1, 0, 0, 0, 0, 99, 1, 0, 0, 0, 0, 101, 1, 0, 0, 0, 0, 103, 1, 0, 0, 0, 0, 105, 1, 0, 0, 0, 0, 107, 1, 0, 0, 0, 0, 109, 1, 0, 0, 0, 0, 111, 1, 0, 0, 0, 0, 113, 1, 0, 0, 0, 0, 115, 1, 0, 0, 0, 0, 117, 1, 0, 0, 0, 0, 119, 1, 0, 0, 0, 0, 121, 1, 0, 0, 0, 0, 123, 1, 0, 0, 0, 0, 125, 1, 0, 0, 0, 0, 127, 1, 0, 0, 0, 0, 129, 1, 0, 0, 0, 0, 131, 1, 0, 0, 0, 0, 133, 1, 0, 0, 0, 0, 135, 1, 0, 0, 0, 0, 137, 1, 0, 0, 0, 0, 139, 1, 0, 0, 0, 0, 141, 1, 0, 0, 0, 0, 143, 1, 0, 0, 0, 0, 145, 1, 0, 0, 0, 0, 147, 1, 0, 0, 0, 0, 149, 1, 0, 0, 0, 0, 151, 1, 0, 0, 0, 0, 153, 1, 0, 0, 0, 0, 155, 1, 0, 0, 0, 0, 157, 1, 0, 0, 0, 0, 159, 1, 0, 0, 0, 0, 161, 1, 0, 0, 0, 0, 163, 1, 0, 0, 0, 0, 165, 1, 0, 0, 0, 0, 167, 1, 0, 0, 0, 0, 169, 1, 0, 0, 0, 0, 171, 1, 0, 0, 0, 0, 173, 1, 0, 0, 0, 0, 175, 1, 0, 0, 0, 0, 177, 1, 0, 0, 0, 0, 179, 1, 0, 0, 0, 0, 181, 1, 0, 0, 0, 0, 183, 1, 0, 0, 0, 0, 185, 1, 0, 0, 0, 0, 187, 1, 0, 0, 0, 0, 189, 1, 0, 0, 0, 0, 191, 1, 0, 0, 0, 0, 193, 1, 0, 0, 0, 0, 195, 1, 0, 0, 0, 0, 197, 1, 0, 0, 0, 0, 199, 1, 0, 0, 0, 0, 201, 1, 0, 0, 0, 0, 203, 1, 0, 0, 0, 0, 205, 1, 0, 0, 0, 0, 207, 1, 0, 0, 0, 0, 209, 1, 0, 0, 0, 0, 211, 1, 0, 0, 0, 0, 213, 1, 0, 0, 0, 0, 215, 1, 0, 0, 0, 0, 217, 1, 0, 0, 0, 0, 219, 1, 0, 0, 0, 0, 221, 1, 0, 0, 0, 0, 223, 1, 0, 0, 0, 0, 225, 1, 0, 0, 0, 0, 227, 1, 0, 0, 0, 0, 229, 1, 0, 0, 0, 0, 231, 1, 0, 0, 0, 0, 233, 1, 0, 0, 0, 0, 235, 1, 0, 0, 0, 0, 237, 1, 0, 0, 0, 0, 239, 1, 0, 0, 0, 0, 241, 1, 0, 0, 0, 0, 243, 1, 0, 0, 0, 0, 245, 1, 0, 0, 0, 0, 247, 1, 0, 0, 0, 0, 249, 1, 0, 0, 0, 0, 251, 1, 0, 0, 0, 0, 253, 1, 0, 0, 0, 0, 255, 1, 0, 0, 0, 0, 257, 1, 0, 0, 0, 0, 259, 1, 0, 0, 0, 0, 261, 1, 0, 0, 0, 0, 263, 1, 0, 0, 0, 0, 265, 1, 0, 0, 0, 0, 267, 1, 0, 0, 0, 0, 269, 1, 0, 0, 0, 0, 271, 1, 0, 0, 0, 0, 273, 1, 0, 0, 0, 0, 275, 1, 0, 0, 0, 0, 277, 1, 0, 0, 0, 0, 279, 1, 0, 0, 0, 0, 281, 1, 0, 0, 0, 0, 283, 1, 0, 0, 0, 0, 285, 1, 0, 0, 0, 0, 287, 1, 0, 0, 0, 0, 289, 1, 0, 0, 0, 0, 291, 1, 0, 0, 0, 0, 293, 1, 0, 0, 0, 0, 295, 1, 0, 0, 0, 0, 297, 1, 0, 0, 0, 0, 299, 1, 0, 0, 0, 0, 301, 1, 0, 0, 0, 0, 303, 1, 0, 0, 0, 0, 305, 1, 0, 0, 0, 0, 307, 1, 0, 0, 0, 0, 309, 1, 0, 0, 0, 0, 311, 1, 0, 0, 0, 0, 313, 1, 0, 0, 0, 0, 315, 1, 0, 0, 0, 0, 317, 1, 0, 0, 0, 0, 319, 1, 0, 0, 0, 0, 321, 1, 0, 0, 0, 0, 323, 1, 0, 0, 0, 0, 325, 1, 0, 0, 0, 0, 327, 1, 0, 0, 0, 0, 329, 1, 0, 0, 0, 0, 331, 1, 0, 0, 0, 0, 333, 1, 0, 0, 0, 0, 335, 1, 0, 0, 0, 0, 337, 1, 0, 0, 0, 0, 339, 1, 0, 0, 0, 0, 341, 1, 0, 0, 0, 0, 343, 1, 0, 0, 0, 0, 345, 1, 0, 0, 0, 0, 347, 1, 0, 0, 0, 0, 349, 1, 0, 0, 0, 0, 351, 1, 0, 0, 0, 0, 353, 1, 0, 0, 0, 0, 355, 1, 0, 0, 0, 0, 357, 1, 0, 0, 0, 0, 359, 1, 0, 0, 0, 0, 361, 1, 0, 0, 0, 0, 363, 1, 0, 0, 0, 0, 365, 1, 0, 0, 0, 0, 367, 1, 0, 0, 0, 0, 369, 1, 0, 0, 0, 0, 371, 1, 0, 0, 0, 0, 373, 1, 0, 0, 0, 0, 375, 1, 0, 0, 0, 0, 377, 1, 0, 0, 0, 0, 379, 1, 0, 0, 0, 0, 381, 1, 0, 0, 0, 0, 383, 1, 0, 0, 0, 0, 385, 1, 0, 0, 0, 0, 387, 1, 0, 0, 0, 0, 389, 1, 0, 0, 0, 0, 391, 1, 0, 0, 0, 0, 393, 1, 0, 0, 0, 0, 395, 1, 0, 0, 0, 0, 397, 1, 0, 0, 0, 0, 399, 1, 0, 0, 0, 0, 401, 1, 0, 0, 0, 0, 403, 1, 0, 0, 0, 0, 405, 1, 0, 0, 0, 0, 407, 1, 0, 0, 0, 0, 409, 1, 0, 0, 0, 0, 411, 1, 0, 0, 0, 0, 413, 1, 0, 0, 0, 0, 415, 1, 0, 0, 0, 0, 417, 1, 0, 0, 0, 0, 419, 1, 0, 0, 0, 0, 421, 1, 0, 0, 0, 0, 423, 1, 0, 0, 0, 0, 425, 1, 0, 0, 0, 0, 427, 1, 0, 0, 0, 0, 429, 1, 0, 0, 0, 0, 431, 1, 0, 0, 0, 0, 433, 1, 0, 0, 0, 0, 435, 1, 0, 0, 0, 0, 437, 1, 0, 0, 0, 0, 439, 1, 0, 0, 0, 0, 441, 1, 0, 0, 0, 0, 443, 1, 0, 0, 0, 0, 445, 1, 0, 0, 0, 0, 447, 1, 0, 0, 0, 0, 449, 1, 0, 0, 0, 0, 451, 1, 0, 0, 0, 0, 453, 1, 0, 0, 0, 0, 455, 1, 0, 0, 0, 0, 457, 1, 0, 0, 0, 0, 459, 1, 0, 0, 0, 0, 461, 1, 0, 0, 0, 0, 463, 1, 0, 0, 0, 0, 465, 1, 0, 0, 0, 0, 467, 1, 0, 0, 0, 0, 469, 1, 0, 0, 0, 0, 471, 1, 0, 0, 0, 0, 473, 1, 0, 0, 0, 0, 475, 1, 0, 0, 0, 0, 477, 1, 0, 0, 0, 0, 479, 1, 0, 0, 0, 0, 481, 1, 0, 0, 0, 0, 483, 1, 0, 0, 0, 0, 485, 1, 0, 0, 0, 0, 487, 1, 0, 0, 0, 0, 489, 1, 0, 0, 0, 0, 491, 1, 0, 0, 0, 0, 493, 1, 0, 0, 0, 0, 495, 1, 0, 0, 0, 0, 497, 1, 0, 0, 0, 0, 499, 1, 0, 0, 0, 0, 501, 1, 0, 0, 0, 0, 503, 1, 0, 0, 0, 0, 505, 1, 0, 0, 0, 0, 507, 1, 0, 0, 0, 0, 509, 1, 0, 0, 0, 0, 511, 1, 0, 0, 0, 0, 513, 1, 0, 0, 0, 0, 515, 1, 0, 0, 0, 0, 517, 1, 0, 0, 0, 0, 519, 1, 0, 0, 0, 0, 521, 1, 0, 0, 0, 0, 523, 1, 0, 0, 0, 0, 525, 1, 0, 0, 0, 0, 527, 1, 0, 0, 0, 0, 529, 1, 0, 0, 0, 0, 531, 1, 0, 0, 0, 0, 533, 1, 0, 0, 0, 0, 535, 1, 0, 0, 0, 0, 537, 1, 0, 0, 0, 0, 539, 1, 0, 0, 0, 0, 541, 1, 0, 0, 0, 0, 543, 1, 0, 0, 0, 0, 545, 1, 0, 0, 0, 0, 547, 1, 0, 0, 0, 0, 549, 1, 0, 0, 0, 0, 551, 1, 0, 0, 0, 0, 553, 1, 0, 0, 0, 0, 555, 1, 0, 0, 0, 0, 557, 1, 0, 0, 0, 0, 559, 1, 0, 0, 0, 0, 561, 1, 0, 0, 0, 0, 563, 1, 0, 0, 0, 0, 565, 1, 0, 0, 0, 0, 567, 1, 0, 0, 0, 0, 569, 1, 0, 0, 0, 0, 571, 1, 0, 0, 0, 0, 573, 1, 0, 0, 0, 0, 575, 1, 0, 0, 0, 0, 577, 1, 0, 0, 0, 0, 579, 1, 0, 0, 0, 0, 581, 1, 0, 0, 0, 0, 583, 1, 0, 0, 0, 0, 585, 1, 0, 0, 0, 0, 587, 1, 0, 0, 0, 0, 589, 1, 0, 0, 0, 0, 591, 1, 0, 0, 0, 0, 593, 1, 0, 0, 0, 0, 595, 1, 0, 0, 0, 0, 597, 1, 0, 0, 0, 0, 599, 1, 0, 0, 0, 0, 601, 1, 0, 0, 0, 0, 603, 1, 0, 0, 0, 0, 605, 1, 0, 0, 0, 0, 607, 1, 0, 0, 0, 0, 609, 1, 0, 0, 0, 0, 611, 1, 0, 0, 0, 0, 613, 1, 0, 0, 0, 0, 615, 1, 0, 0, 0, 0, 617, 1, 0, 0, 0, 0, 619, 1, 0, 0, 0, 0, 621, 1, 0, 0, 0, 0, 623, 1, 0, 0, 0, 0, 625, 1, 0, 0, 0, 0, 627, 1, 0, 0, 0, 0, 629, 1, 0, 0, 0, 0, 631, 1, 0, 0, 0, 0, 633, 1, 0, 0, 0, 0, 635, 1, 0, 0, 0, 0, 637, 1, 0, 0, 0, 0, 639, 1, 0, 0, 0, 0, 641, 1, 0, 0, 0, 0, 643, 1, 0, 0, 0, 0, 645, 1, 0, 0, 0, 0, 647, 1, 0, 0, 0, 0, 649, 1, 0, 0, 0, 0, 651, 1, 0, 0, 0, 0, 653, 1, 0, 0, 0, 0, 655, 1, 0, 0, 0, 0, 657, 1, 0, 0, 0, 0, 659, 1, 0, 0, 0, 0, 661, 1, 0, 0, 0, 0, 663, 1, 0, 0, 0, 0, 665, 1, 0, 0, 0, 0, 667, 1, 0, 0, 0, 0, 669, 1, 0, 0, 0, 0, 671, 1, 0, 0, 0, 0, 673, 1, 0, 0, 0, 0, 675, 1, 0, 0, 0, 0, 677, 1, 0, 0, 0, 0, 679, 1, 0, 0, 0, 0, 681, 1, 0, 0, 0, 0, 683, 1, 0, 0, 0, 0, 685, 1, 0, 0, 0, 0, 687, 1, 0, 0, 0, 0, 689, 1, 0, 0, 0, 0, 691, 1, 0, 0, 0, 0, 693, 1, 0, 0, 0, 0, 695, 1, 0, 0, 0, 0, 697, 1, 0, 0, 0, 0, 699, 1, 0, 0, 0, 0, 701, 1, 0, 0, 0, 0, 703, 1, 0, 0, 0, 0, 705, 1, 0, 0, 0, 0, 707, 1, 0, 0, 0, 0, 709, 1, 0, 0, 0, 0, 711, 1, 0, 0, 0, 0, 713, 1, 0, 0, 0, 0, 715, 1, 0, 0, 0, 0, 717, 1, 0, 0, 0, 0, 719, 1, 0, 0, 0, 0, 721, 1, 0, 0, 0, 0, 723, 1, 0, 0, 0, 0, 725, 1, 0, 0, 0, 0, 727, 1, 0, 0, 0, 0, 729, 1, 0, 0, 0, 0, 731, 1, 0, 0, 0, 0, 733, 1, 0, 0, 0, 0, 735, 1, 0, 0, 0, 0, 737, 1, 0, 0, 0, 0, 739, 1, 0, 0, 0, 0, 741, 1, 0, 0, 0, 0, 743, 1, 0, 0, 0, 0, 745, 1, 0, 0, 0, 0, 747, 1, 0, 0, 0, 0, 749, 1, 0, 0, 0, 0, 751, 1, 0, 0, 0, 0, 753, 1, 0, 0, 0, 0, 755, 1, 0, 0, 0, 0, 757, 1, 0, 0, 0, 0, 759, 1, 0, 0, 0, 0, 761, 1, 0, 0, 0, 0, 763, 1, 0, 0, 0, 0, 765, 1, 0, 0, 0, 0, 767, 1, 0, 0, 0, 0, 769, 1, 0, 0, 0, 0, 771, 1, 0, 0, 0, 0, 773, 1, 0, 0, 0, 0, 775, 1, 0, 0, 0, 0, 777, 1, 0, 0, 0, 0, 779, 1, 0, 0, 0, 0, 781, 1, 0, 0, 0, 0, 783, 1, 0, 0, 0, 0, 785, 1, 0, 0, 0, 0, 787, 1, 0, 0, 0, 0, 789, 1, 0, 0, 0, 0, 791, 1, 0, 0, 0, 0, 793, 1, 0, 0, 0, 0, 795, 1, 0, 0, 0, 0, 797, 1, 0, 0, 0, 0, 799, 1, 0, 0, 0, 0, 801, 1, 0, 0, 0, 0, 803, 1, 0, 0, 0, 0, 805, 1, 0, 0, 0, 0, 807, 1, 0, 0, 0, 0, 809, 1, 0, 0, 0, 0, 811, 1, 0, 0, 0, 0, 813, 1, 0, 0, 0, 0, 815, 1, 0, 0, 0, 0, 817, 1, 0, 0, 0, 0, 819, 1, 0, 0, 0, 0, 821, 1, 0, 0, 0, 0, 823, 1, 0, 0, 0, 0, 825, 1, 0, 0, 0, 0, 827, 1, 0, 0, 0, 0, 829, 1, 0, 0, 0, 0, 831, 1, 0, 0, 0, 0, 833, 1, 0, 0, 0, 0, 835, 1, 0, 0, 0, 0, 837, 1, 0, 0, 0, 0, 839, 1, 0, 0, 0, 0, 841, 1, 0, 0, 0, 0, 843, 1, 0, 0, 0, 0, 845, 1, 0, 0, 0, 0, 847, 1, 0, 0, 0, 0, 849, 1, 0, 0, 0, 0, 851, 1, 0, 0, 0, 0, 853, 1, 0, 0, 0, 0, 855, 1, 0, 0, 0, 0, 857, 1, 0, 0, 0, 0, 859, 1, 0, 0, 0, 0, 861, 1, 0, 0, 0, 0, 863, 1, 0, 0, 0, 0, 865, 1, 0, 0, 0, 0, 867, 1, 0, 0, 0, 0, 869, 1, 0, 0, 0, 0, 871, 1, 0, 0, 0, 0, 873, 1, 0, 0, 0, 0, 875, 1, 0, 0, 0, 0, 877, 1, 0, 0, 0, 0, 879, 1, 0, 0, 0, 0, 881, 1, 0, 0, 0, 0, 883, 1, 0, 0, 0, 0, 885, 1, 0, 0, 0, 0, 887, 1, 0, 0, 0, 0, 889, 1, 0, 0, 0, 0, 891, 1, 0, 0, 0, 0, 893, 1, 0, 0, 0, 0, 895, 1, 0, 0, 0, 0, 897, 1, 0, 0, 0, 0, 899, 1, 0, 0, 0, 0, 901, 1, 0, 0, 0, 0, 903, 1, 0, 0, 0, 0, 905, 1, 0, 0, 0, 0, 907, 1, 0, 0, 0, 0, 909, 1, 0, 0, 0, 0, 911, 1, 0, 0, 0, 0, 913, 1, 0, 0, 0, 0, 915, 1, 0, 0, 0, 0, 917, 1, 0, 0, 0, 0, 919, 1, 0, 0, 0, 0, 921, 1, 0, 0, 0, 0, 923, 1, 0, 0, 0, 0, 925, 1, 0, 0, 0, 0, 927, 1, 0, 0, 0, 0, 929, 1, 0, 0, 0, 0, 931, 1, 0, 0, 0, 0, 933, 1, 0, 0, 0, 0, 935, 1, 0, 0, 0, 0, 937, 1, 0, 0, 0, 0, 939, 1, 0, 0, 0, 0, 941, 1, 0, 0, 0, 0, 943, 1, 0, 0, 0, 0, 945, 1, 0, 0, 0, 0, 947, 1, 0, 0, 0, 0, 949, 1, 0, 0, 0, 0, 951, 1, 0, 0, 0, 0, 953, 1, 0, 0, 0, 0, 955, 1, 0, 0, 0, 0, 957, 1, 0, 0, 0, 0, 959, 1, 0, 0, 0, 0, 961, 1, 0, 0, 0, 0, 963, 1, 0, 0, 0, 0, 965, 1, 0, 0, 0, 0, 967, 1, 0, 0, 0, 0, 969, 1, 0, 0, 0, 0, 971, 1, 0, 0, 0, 0, 973, 1, 0, 0, 0, 0, 975, 1, 0, 0, 0, 0, 977, 1, 0, 0, 0, 0, 979, 1, 0, 0, 0, 0, 981, 1, 0, 0, 0, 0, 983, 1, 0, 0, 0, 0, 985, 1, 0, 0, 0, 0, 987, 1, 0, 0, 0, 0, 989, 1, 0, 0, 0, 0, 991, 1, 0, 0, 0, 0, 993, 1, 0, 0, 0, 0, 995, 1, 0, 0, 0, 0, 997, 1, 0, 0, 0, 0, 999, 1, 0, 0, 0, 0, 1001, 1, 0, 0, 0, 0, 1003, 1, 0, 0, 0, 0, 1005, 1, 0, 0, 0, 0, 1007, 1, 0, 0, 0, 0, 1009, 1, 0, 0, 0, 0, 1011, 1, 0, 0, 0, 0, 1013, 1, 0, 0, 0, 0, 1015, 1, 0, 0, 0, 0, 1017, 1, 0, 0, 0, 0, 1019, 1, 0, 0, 0, 0, 1021, 1, 0, 0, 0, 0, 1023, 1, 0, 0, 0, 0, 1025, 1, 0, 0, 0, 0, 1027, 1, 0, 0, 0, 0, 1029, 1, 0, 0, 0, 0, 1031, 1, 0, 0, 0, 0, 1033, 1, 0, 0, 0, 0, 1035, 1, 0, 0, 0, 0, 1037, 1, 0, 0, 0, 0, 1039, 1, 0, 0, 0, 0, 1041, 1, 0, 0, 0, 0, 1043, 1, 0, 0, 0, 0, 1045, 1, 0, 0, 0, 0, 1047, 1, 0, 0, 0, 0, 1049, 1, 0, 0, 0, 0, 1051, 1, 0, 0, 0, 0, 1053, 1, 0, 0, 0, 0, 1055, 1, 0, 0, 0, 0, 1057, 1, 0, 0, 0, 0, 1059, 1, 0, 0, 0, 0, 1061, 1, 0, 0, 0, 0, 1063, 1, 0, 0, 0, 0, 1065, 1, 0, 0, 0, 0, 1067, 1, 0, 0, 0, 0, 1069, 1, 0, 0, 0, 0, 1071, 1, 0, 0, 0, 0, 1073, 1, 0, 0, 0, 0, 1075, 1, 0, 0, 0, 0, 1077, 1, 0, 0, 0, 0, 1079, 1, 0, 0, 0, 0, 1081, 1, 0, 0, 0, 0, 1083, 1, 0, 0, 0, 0, 1085, 1, 0, 0, 0, 0, 1087, 1, 0, 0, 0, 0, 1089, 1, 0, 0, 0, 0, 1091, 1, 0, 0, 0, 0, 1093, 1, 0, 0, 0, 0, 1095, 1, 0, 0, 0, 0, 1097, 1, 0, 0, 0, 0, 1099, 1, 0, 0, 0, 0, 1101, 1, 0, 0, 0, 0, 1103, 1, 0, 0, 0, 0, 1105, 1, 0, 0, 0, 0, 1107, 1, 0, 0, 0, 0, 1109, 1, 0, 0, 0, 0, 1111, 1, 0, 0, 0, 0, 1113, 1, 0, 0, 0, 0, 1115, 1, 0, 0, 0, 0, 1117, 1, 0, 0, 0, 0, 1119, 1, 0, 0, 0, 0, 1121, 1, 0, 0, 0, 0, 1123, 1, 0, 0, 0, 0, 1125, 1, 0, 0, 0, 0, 1127, 1, 0, 0, 0, 0, 1129, 1, 0, 0, 0, 0, 1131, 1, 0, 0, 0, 0, 1133, 1, 0, 0, 0, 0, 1135, 1, 0, 0, 0, 0, 1137, 1, 0, 0, 0, 0, 1139, 1, 0, 0, 0, 0, 1141, 1, 0, 0, 0, 0, 1143, 1, 0, 0, 0, 0, 1145, 1, 0, 0, 0, 0, 1147, 1, 0, 0, 0, 0, 1149, 1, 0, 0, 0, 0, 1151, 1, 0, 0, 0, 0, 1153, 1, 0, 0, 0, 0, 1155, 1, 0, 0, 0, 0, 1157, 1, 0, 0, 0, 0, 1159, 1, 0, 0, 0, 0, 1161, 1, 0, 0, 0, 0, 1163, 1, 0, 0, 0, 0, 1165, 1, 0, 0, 0, 0, 1167, 1, 0, 0, 0, 0, 1169, 1, 0, 0, 0, 0, 1171, 1, 0, 0, 0, 0, 1173, 1, 0, 0, 0, 0, 1175, 1, 0, 0, 0, 0, 1177, 1, 0, 0, 0, 0, 1179, 1, 0, 0, 0, 0, 1181, 1, 0, 0, 0, 0, 1183, 1, 0, 0, 0, 0, 1185, 1, 0, 0, 0, 0, 1187, 1, 0, 0, 0, 0, 1189, 1, 0, 0, 0, 0, 1191, 1, 0, 0, 0, 0, 1193, 1, 0, 0, 0, 0, 1195, 1, 0, 0, 0, 0, 1197, 1, 0, 0, 0, 0, 1199, 1, 0, 0, 0, 0, 1201, 1, 0, 0, 0, 0, 1203, 1, 0, 0, 0, 0, 1205, 1, 0, 0, 0, 0, 1207, 1, 0, 0, 0, 0, 1209, 1, 0, 0, 0, 0, 1211, 1, 0, 0, 0, 0, 1213, 1, 0, 0, 0, 0, 1215, 1, 0, 0, 0, 0, 1217, 1, 0, 0, 0, 0, 1219, 1, 0, 0, 0, 0, 1221, 1, 0, 0, 0, 0, 1223, 1, 0, 0, 0, 0, 1225, 1, 0, 0, 0, 0, 1227, 1, 0, 0, 0, 0, 1229, 1, 0, 0, 0, 0, 1231, 1, 0, 0, 0, 0, 1233, 1, 0, 0, 0, 0, 1235, 1, 0, 0, 0, 0, 1237, 1, 0, 0, 0, 0, 1239, 1, 0, 0, 0, 0, 1241, 1, 0, 0, 0, 0, 1243, 1, 0, 0, 0, 0, 1245, 1, 0, 0, 0, 0, 1247, 1, 0, 0, 0, 0, 1249, 1, 0, 0, 0, 0, 1251, 1, 0, 0, 0, 0, 1253, 1, 0, 0, 0, 0, 1255, 1, 0, 0, 0, 0, 1257, 1, 0, 0, 0, 0, 1259, 1, 0, 0, 0, 0, 1261, 1, 0, 0, 0, 0, 1263, 1, 0, 0, 0, 0, 1265, 1, 0, 0, 0, 0, 1267, 1, 0, 0, 0, 0, 1269, 1, 0, 0, 0, 0, 1271, 1, 0, 0, 0, 0, 1273, 1, 0, 0, 0, 0, 1275, 1, 0, 0, 0, 0, 1277, 1, 0, 0, 0, 0, 1279, 1, 0, 0, 0, 0, 1281, 1, 0, 0, 0, 0, 1283, 1, 0, 0, 0, 0, 1291, 1, 0, 0, 0, 0, 1293, 1, 0, 0, 0, 0, 1295, 1, 0, 0, 0, 0, 1297, 1, 0, 0, 0, 0, 1299, 1, 0, 0, 0, 0, 1301, 1, 0, 0, 0, 0, 1303, 1, 0, 0, 0, 0, 1305, 1, 0, 0, 0, 0, 1307, 1, 0, 0, 0, 0, 1309, 1, 0, 0, 0, 0, 1311, 1, 0, 0, 0, 0, 1313, 1, 0, 0, 0, 0, 1315, 1, 0, 0, 0, 0, 1317, 1, 0, 0, 0, 0, 1321, 1, 0, 0, 0, 0, 1323, 1, 0, 0, 0, 0, 1325, 1, 0, 0, 0, 0, 1327, 1, 0, 0, 0, 0, 1329, 1, 0, 0, 0, 0, 1331, 1, 0, 0, 0, 0, 1333, 1, 0, 0, 0, 0, 1335, 1, 0, 0, 0, 0, 1337, 1, 0, 0, 0, 0, 1339, 1, 0, 0, 0, 0, 1341, 1, 0, 0, 0, 0, 1345, 1, 0, 0, 0, 0, 1347, 1, 0, 0, 0, 0, 1349, 1, 0, 0, 0, 0, 1351, 1, 0, 0, 0, 0, 1353, 1, 0, 0, 0, 0, 1355, 1, 0, 0, 0, 0, 1357, 1, 0, 0, 0, 0, 1359, 1, 0, 0, 0, 0, 1361, 1, 0, 0, 0, 0, 1363, 1, 0, 0, 0, 1, 1365, 1, 0, 0, 0, 1, 1367, 1, 0, 0, 0, 1, 1371, 1, 0, 0, 0, 1, 1373, 1, 0, 0, 0, 2, 1377, 1, 0, 0, 0, 2, 1379, 1, 0, 0, 0, 2, 1381, 1, 0, 0, 0, 3, 1383, 1, 0, 0, 0, 3, 1385, 1, 0, 0, 0, 3, 1387, 1, 0, 0, 0, 3, 1389, 1, 0, 0, 0, 4, 1391, 1, 0, 0, 0, 4, 1393, 1, 0, 0, 0, 5, 1395, 1, 0, 0, 0, 7, 1397, 1, 0, 0, 0, 9, 1399, 1, 0, 0, 0, 11, 1401, 1, 0, 0, 0, 13, 1403, 1, 0, 0, 0, 15, 1405, 1, 0, 0, 0, 17, 1407, 1, 0, 0, 0, 19, 1409, 1, 0, 0, 0, 21, 1411, 1, 0, 0, 0, 23, 1413, 1, 0, 0, 0, 25, 1415, 1, 0, 0, 0, 27, 1417, 1, 0, 0, 0, 29, 1419, 1, 0, 0, 0, 31, 1421, 1, 0, 0, 0, 33, 1423, 1, 0, 0, 0, 35, 1425, 1, 0, 0, 0, 37, 1427, 1, 0, 0, 0, 39, 1429, 1, 0, 0, 0, 41, 1432, 1, 0, 0, 0, 43, 1435, 1, 0, 0, 0, 45, 1438, 1, 0, 0, 0, 47, 1441, 1, 0, 0, 0, 49, 1444, 1, 0, 0, 0, 51, 1447, 1, 0, 0, 0, 53, 1450, 1, 0, 0, 0, 55, 1453, 1, 0, 0, 0, 57, 1456, 1, 0, 0, 0, 59, 1458, 1, 0, 0, 0, 61, 1484, 1, 0, 0, 0, 63, 1495, 1, 0, 0, 0, 65, 1511, 1, 0, 0, 0, 67, 1513, 1, 0, 0, 0, 69, 1515, 1, 0, 0, 0, 71, 1517, 1, 0, 0, 0, 73, 1521, 1, 0, 0, 0, 75, 1529, 1, 0, 0, 0, 77, 1537, 1, 0, 0, 0, 79, 1541, 1, 0, 0, 0, 81, 1545, 1, 0, 0, 0, 83, 1551, 1, 0, 0, 0, 85, 1554, 1, 0, 0, 0, 87, 1558, 1, 0, 0, 0, 89, 1569, 1, 0, 0, 0, 91, 1574, 1, 0, 0, 0, 93, 1579, 1, 0, 0, 0, 95, 1584, 1, 0, 0, 0, 97, 1590, 1, 0, 0, 0, 99, 1598, 1, 0, 0, 0, 101, 1605, 1, 0, 0, 0, 103, 1616, 1, 0, 0, 0, 105, 1623, 1, 0, 0, 0, 107, 1639, 1, 0, 0, 0, 109, 1652, 1, 0, 0, 0, 111, 1665, 1, 0, 0, 0, 113, 1678, 1, 0, 0, 0, 115, 1696, 1, 0, 0, 0, 117, 1709, 1, 0, 0, 0, 119, 1717, 1, 0, 0, 0, 121, 1728, 1, 0, 0, 0, 123, 1733, 1, 0, 0, 0, 125, 1742, 1, 0, 0, 0, 127, 1745, 1, 0, 0, 0, 129, 1750, 1, 0, 0, 0, 131, 1757, 1, 0, 0, 0, 133, 1763, 1, 0, 0, 0, 135, 1769, 1, 0, 0, 0, 137, 1773, 1, 0, 0, 0, 139, 1781, 1, 0, 0, 0, 141, 1786, 1, 0, 0, 0, 143, 1792, 1, 0, 0, 0, 145, 1798, 1, 0, 0, 0, 147, 1805, 1, 0, 0, 0, 149, 1808, 1, 0, 0, 0, 151, 1818, 1, 0, 0, 0, 153, 1828, 1, 0, 0, 0, 155, 1833, 1, 0, 0, 0, 157, 1841, 1, 0, 0, 0, 159, 1849, 1, 0, 0, 0, 161, 1855, 1, 0, 0, 0, 163, 1865, 1, 0, 0, 0, 165, 1880, 1, 0, 0, 0, 167, 1884, 1, 0, 0, 0, 169, 1889, 1, 0, 0, 0, 171, 1896, 1, 0, 0, 0, 173, 1899, 1, 0, 0, 0, 175, 1904, 1, 0, 0, 0, 177, 1907, 1, 0, 0, 0, 179, 1913, 1, 0, 0, 0, 181, 1921, 1, 0, 0, 0, 183, 1929, 1, 0, 0, 0, 185, 1940, 1, 0, 0, 0, 187, 1950, 1, 0, 0, 0, 189, 1957, 1, 0, 0, 0, 191, 1970, 1, 0, 0, 0, 193, 1975, 1, 0, 0, 0, 195, 1985, 1, 0, 0, 0, 197, 1991, 1, 0, 0, 0, 199, 1996, 1, 0, 0, 0, 201, 1999, 1, 0, 0, 0, 203, 2008, 1, 0, 0, 0, 205, 2013, 1, 0, 0, 0, 207, 2019, 1, 0, 0, 0, 209, 2026, 1, 0, 0, 0, 211, 2031, 1, 0, 0, 0, 213, 2037, 1, 0, 0, 0, 215, 2046, 1, 0, 0, 0, 217, 2051, 1, 0, 0, 0, 219, 2057, 1, 0, 0, 0, 221, 2064, 1, 0, 0, 0, 223, 2069, 1, 0, 0, 0, 225, 2083, 1, 0, 0, 0, 227, 2090, 1, 0, 0, 0, 229, 2100, 1, 0, 0, 0, 231, 2113, 1, 0, 0, 0, 233, 2119, 1, 0, 0, 0, 235, 2134, 1, 0, 0, 0, 237, 2141, 1, 0, 0, 0, 239, 2146, 1, 0, 0, 0, 241, 2152, 1, 0, 0, 0, 243, 2158, 1, 0, 0, 0, 245, 2161, 1, 0, 0, 0, 247, 2168, 1, 0, 0, 0, 249, 2173, 1, 0, 0, 0, 251, 2178, 1, 0, 0, 0, 253, 2183, 1, 0, 0, 0, 255, 2191, 1, 0, 0, 0, 257, 2199, 1, 0, 0, 0, 259, 2205, 1, 0, 0, 0, 261, 2210, 1, 0, 0, 0, 263, 2219, 1, 0, 0, 0, 265, 2225, 1, 0, 0, 0, 267, 2233, 1, 0, 0, 0, 269, 2241, 1, 0, 0, 0, 271, 2247, 1, 0, 0, 0, 273, 2256, 1, 0, 0, 0, 275, 2263, 1, 0, 0, 0, 277, 2270, 1, 0, 0, 0, 279, 2274, 1, 0, 0, 0, 281, 2280, 1, 0, 0, 0, 283, 2286, 1, 0, 0, 0, 285, 2296, 1, 0, 0, 0, 287, 2301, 1, 0, 0, 0, 289, 2307, 1, 0, 0, 0, 291, 2314, 1, 0, 0, 0, 293, 2324, 1, 0, 0, 0, 295, 2335, 1, 0, 0, 0, 297, 2338, 1, 0, 0, 0, 299, 2348, 1, 0, 0, 0, 301, 2357, 1, 0, 0, 0, 303, 2364, 1, 0, 0, 0, 305, 2370, 1, 0, 0, 0, 307, 2373, 1, 0, 0, 0, 309, 2379, 1, 0, 0, 0, 311, 2386, 1, 0, 0, 0, 313, 2394, 1, 0, 0, 0, 315, 2403, 1, 0, 0, 0, 317, 2411, 1, 0, 0, 0, 319, 2417, 1, 0, 0, 0, 321, 2433, 1, 0, 0, 0, 323, 2444, 1, 0, 0, 0, 325, 2450, 1, 0, 0, 0, 327, 2456, 1, 0, 0, 0, 329, 2464, 1, 0, 0, 0, 331, 2472, 1, 0, 0, 0, 333, 2481, 1, 0, 0, 0, 335, 2488, 1, 0, 0, 0, 337, 2498, 1, 0, 0, 0, 339, 2512, 1, 0, 0, 0, 341, 2523, 1, 0, 0, 0, 343, 2535, 1, 0, 0, 0, 345, 2543, 1, 0, 0, 0, 347, 2552, 1, 0, 0, 0, 349, 2563, 1, 0, 0, 0, 351, 2568, 1, 0, 0, 0, 353, 2573, 1, 0, 0, 0, 355, 2577, 1, 0, 0, 0, 357, 2584, 1, 0, 0, 0, 359, 2590, 1, 0, 0, 0, 361, 2595, 1, 0, 0, 0, 363, 2604, 1, 0, 0, 0, 365, 2608, 1, 0, 0, 0, 367, 2619, 1, 0, 0, 0, 369, 2627, 1, 0, 0, 0, 371, 2636, 1, 0, 0, 0, 373, 2645, 1, 0, 0, 0, 375, 2653, 1, 0, 0, 0, 377, 2660, 1, 0, 0, 0, 379, 2670, 1, 0, 0, 0, 381, 2681, 1, 0, 0, 0, 383, 2692, 1, 0, 0, 0, 385, 2700, 1, 0, 0, 0, 387, 2708, 1, 0, 0, 0, 389, 2717, 1, 0, 0, 0, 391, 2724, 1, 0, 0, 0, 393, 2731, 1, 0, 0, 0, 395, 2736, 1, 0, 0, 0, 397, 2741, 1, 0, 0, 0, 399, 2748, 1, 0, 0, 0, 401, 2757, 1, 0, 0, 0, 403, 2767, 1, 0, 0, 0, 405, 2772, 1, 0, 0, 0, 407, 2779, 1, 0, 0, 0, 409, 2785, 1, 0, 0, 0, 411, 2793, 1, 0, 0, 0, 413, 2803, 1, 0, 0, 0, 415, 2813, 1, 0, 0, 0, 417, 2821, 1, 0, 0, 0, 419, 2829, 1, 0, 0, 0, 421, 2839, 1, 0, 0, 0, 423, 2848, 1, 0, 0, 0, 425, 2855, 1, 0, 0, 0, 427, 2861, 1, 0, 0, 0, 429, 2871, 1, 0, 0, 0, 431, 2877, 1, 0, 0, 0, 433, 2885, 1, 0, 0, 0, 435, 2894, 1, 0, 0, 0, 437, 2904, 1, 0, 0, 0, 439, 2911, 1, 0, 0, 0, 441, 2919, 1, 0, 0, 0, 443, 2927, 1, 0, 0, 0, 445, 2934, 1, 0, 0, 0, 447, 2939, 1, 0, 0, 0, 449, 2944, 1, 0, 0, 0, 451, 2953, 1, 0, 0, 0, 453, 2956, 1, 0, 0, 0, 455, 2966, 1, 0, 0, 0, 457, 2976, 1, 0, 0, 0, 459, 2985, 1, 0, 0, 0, 461, 2995, 1, 0, 0, 0, 463, 3005, 1, 0, 0, 0, 465, 3011, 1, 0, 0, 0, 467, 3019, 1, 0, 0, 0, 469, 3027, 1, 0, 0, 0, 471, 3036, 1, 0, 0, 0, 473, 3043, 1, 0, 0, 0, 475, 3055, 1, 0, 0, 0, 477, 3062, 1, 0, 0, 0, 479, 3070, 1, 0, 0, 0, 481, 3078, 1, 0, 0, 0, 483, 3088, 1, 0, 0, 0, 485, 3092, 1, 0, 0, 0, 487, 3098, 1, 0, 0, 0, 489, 3107, 1, 0, 0, 0, 491, 3113, 1, 0, 0, 0, 493, 3118, 1, 0, 0, 0, 495, 3128, 1, 0, 0, 0, 497, 3134, 1, 0, 0, 0, 499, 3141, 1, 0, 0, 0, 501, 3146, 1, 0, 0, 0, 503, 3152, 1, 0, 0, 0, 505, 3161, 1, 0, 0, 0, 507, 3166, 1, 0, 0, 0, 509, 3174, 1, 0, 0, 0, 511, 3180, 1, 0, 0, 0, 513, 3188, 1, 0, 0, 0, 515, 3201, 1, 0, 0, 0, 517, 3210, 1, 0, 0, 0, 519, 3216, 1, 0, 0, 0, 521, 3223, 1, 0, 0, 0, 523, 3232, 1, 0, 0, 0, 525, 3237, 1, 0, 0, 0, 527, 3243, 1, 0, 0, 0, 529, 3248, 1, 0, 0, 0, 531, 3253, 1, 0, 0, 0, 533, 3259, 1, 0, 0, 0, 535, 3264, 1, 0, 0, 0, 537, 3267, 1, 0, 0, 0, 539, 3275, 1, 0, 0, 0, 541, 3282, 1, 0, 0, 0, 543, 3289, 1, 0, 0, 0, 545, 3295, 1, 0, 0, 0, 547, 3302, 1, 0, 0, 0, 549, 3305, 1, 0, 0, 0, 551, 3309, 1, 0, 0, 0, 553, 3314, 1, 0, 0, 0, 555, 3323, 1, 0, 0, 0, 557, 3330, 1, 0, 0, 0, 559, 3338, 1, 0, 0, 0, 561, 3344, 1, 0, 0, 0, 563, 3350, 1, 0, 0, 0, 565, 3357, 1, 0, 0, 0, 567, 3365, 1, 0, 0, 0, 569, 3375, 1, 0, 0, 0, 571, 3383, 1, 0, 0, 0, 573, 3392, 1, 0, 0, 0, 575, 3398, 1, 0, 0, 0, 577, 3408, 1, 0, 0, 0, 579, 3416, 1, 0, 0, 0, 581, 3425, 1, 0, 0, 0, 583, 3434, 1, 0, 0, 0, 585, 3440, 1, 0, 0, 0, 587, 3451, 1, 0, 0, 0, 589, 3462, 1, 0, 0, 0, 591, 3472, 1, 0, 0, 0, 593, 3480, 1, 0, 0, 0, 595, 3486, 1, 0, 0, 0, 597, 3492, 1, 0, 0, 0, 599, 3497, 1, 0, 0, 0, 601, 3506, 1, 0, 0, 0, 603, 3514, 1, 0, 0, 0, 605, 3524, 1, 0, 0, 0, 607, 3528, 1, 0, 0, 0, 609, 3536, 1, 0, 0, 0, 611, 3544, 1, 0, 0, 0, 613, 3553, 1, 0, 0, 0, 615, 3561, 1, 0, 0, 0, 617, 3568, 1, 0, 0, 0, 619, 3579, 1, 0, 0, 0, 621, 3587, 1, 0, 0, 0, 623, 3595, 1, 0, 0, 0, 625, 3601, 1, 0, 0, 0, 627, 3609, 1, 0, 0, 0, 629, 3618, 1, 0, 0, 0, 631, 3626, 1, 0, 0, 0, 633, 3633, 1, 0, 0, 0, 635, 3638, 1, 0, 0, 0, 637, 3647, 1, 0, 0, 0, 639, 3652, 1, 0, 0, 0, 641, 3657, 1, 0, 0, 0, 643, 3667, 1, 0, 0, 0, 645, 3674, 1, 0, 0, 0, 647, 3681, 1, 0, 0, 0, 649, 3688, 1, 0, 0, 0, 651, 3695, 1, 0, 0, 0, 653, 3704, 1, 0, 0, 0, 655, 3713, 1, 0, 0, 0, 657, 3723, 1, 0, 0, 0, 659, 3736, 1, 0, 0, 0, 661, 3743, 1, 0, 0, 0, 663, 3751, 1, 0, 0, 0, 665, 3755, 1, 0, 0, 0, 667, 3761, 1, 0, 0, 0, 669, 3766, 1, 0, 0, 0, 671, 3773, 1, 0, 0, 0, 673, 3782, 1, 0, 0, 0, 675, 3789, 1, 0, 0, 0, 677, 3800, 1, 0, 0, 0, 679, 3806, 1, 0, 0, 0, 681, 3816, 1, 0, 0, 0, 683, 3827, 1, 0, 0, 0, 685, 3833, 1, 0, 0, 0, 687, 3840, 1, 0, 0, 0, 689, 3848, 1, 0, 0, 0, 691, 3855, 1, 0, 0, 0, 693, 3861, 1, 0, 0, 0, 695, 3867, 1, 0, 0, 0, 697, 3874, 1, 0, 0, 0, 699, 3881, 1, 0, 0, 0, 701, 3892, 1, 0, 0, 0, 703, 3897, 1, 0, 0, 0, 705, 3906, 1, 0, 0, 0, 707, 3916, 1, 0, 0, 0, 709, 3921, 1, 0, 0, 0, 711, 3933, 1, 0, 0, 0, 713, 3941, 1, 0, 0, 0, 715, 3950, 1, 0, 0, 0, 717, 3958, 1, 0, 0, 0, 719, 3963, 1, 0, 0, 0, 721, 3969, 1, 0, 0, 0, 723, 3979, 1, 0, 0, 0, 725, 3991, 1, 0, 0, 0, 727, 4003, 1, 0, 0, 0, 729, 4011, 1, 0, 0, 0, 731, 4020, 1, 0, 0, 0, 733, 4029, 1, 0, 0, 0, 735, 4035, 1, 0, 0, 0, 737, 4042, 1, 0, 0, 0, 739, 4049, 1, 0, 0, 0, 741, 4055, 1, 0, 0, 0, 743, 4064, 1, 0, 0, 0, 745, 4074, 1, 0, 0, 0, 747, 4082, 1, 0, 0, 0, 749, 4090, 1, 0, 0, 0, 751, 4095, 1, 0, 0, 0, 753, 4104, 1, 0, 0, 0, 755, 4115, 1, 0, 0, 0, 757, 4123, 1, 0, 0, 0, 759, 4128, 1, 0, 0, 0, 761, 4136, 1, 0, 0, 0, 763, 4142, 1, 0, 0, 0, 765, 4146, 1, 0, 0, 0, 767, 4151, 1, 0, 0, 0, 769, 4155, 1, 0, 0, 0, 771, 4160, 1, 0, 0, 0, 773, 4168, 1, 0, 0, 0, 775, 4175, 1, 0, 0, 0, 777, 4179, 1, 0, 0, 0, 779, 4187, 1, 0, 0, 0, 781, 4192, 1, 0, 0, 0, 783, 4202, 1, 0, 0, 0, 785, 4211, 1, 0, 0, 0, 787, 4215, 1, 0, 0, 0, 789, 4223, 1, 0, 0, 0, 791, 4230, 1, 0, 0, 0, 793, 4238, 1, 0, 0, 0, 795, 4244, 1, 0, 0, 0, 797, 4253, 1, 0, 0, 0, 799, 4259, 1, 0, 0, 0, 801, 4263, 1, 0, 0, 0, 803, 4271, 1, 0, 0, 0, 805, 4280, 1, 0, 0, 0, 807, 4286, 1, 0, 0, 0, 809, 4295, 1, 0, 0, 0, 811, 4301, 1, 0, 0, 0, 813, 4306, 1, 0, 0, 0, 815, 4313, 1, 0, 0, 0, 817, 4321, 1, 0, 0, 0, 819, 4329, 1, 0, 0, 0, 821, 4338, 1, 0, 0, 0, 823, 4348, 1, 0, 0, 0, 825, 4353, 1, 0, 0, 0, 827, 4357, 1, 0, 0, 0, 829, 4363, 1, 0, 0, 0, 831, 4372, 1, 0, 0, 0, 833, 4382, 1, 0, 0, 0, 835, 4387, 1, 0, 0, 0, 837, 4397, 1, 0, 0, 0, 839, 4403, 1, 0, 0, 0, 841, 4408, 1, 0, 0, 0, 843, 4415, 1, 0, 0, 0, 845, 4423, 1, 0, 0, 0, 847, 4437, 1, 0, 0, 0, 849, 4448, 1, 0, 0, 0, 851, 4455, 1, 0, 0, 0, 853, 4474, 1, 0, 0, 0, 855, 4502, 1, 0, 0, 0, 857, 4529, 1, 0, 0, 0, 859, 4535, 1, 0, 0, 0, 861, 4548, 1, 0, 0, 0, 863, 4558, 1, 0, 0, 0, 865, 4569, 1, 0, 0, 0, 867, 4579, 1, 0, 0, 0, 869, 4589, 1, 0, 0, 0, 871, 4598, 1, 0, 0, 0, 873, 4604, 1, 0, 0, 0, 875, 4612, 1, 0, 0, 0, 877, 4625, 1, 0, 0, 0, 879, 4630, 1, 0, 0, 0, 881, 4638, 1, 0, 0, 0, 883, 4645, 1, 0, 0, 0, 885, 4652, 1, 0, 0, 0, 887, 4663, 1, 0, 0, 0, 889, 4673, 1, 0, 0, 0, 891, 4680, 1, 0, 0, 0, 893, 4687, 1, 0, 0, 0, 895, 4695, 1, 0, 0, 0, 897, 4703, 1, 0, 0, 0, 899, 4713, 1, 0, 0, 0, 901, 4720, 1, 0, 0, 0, 903, 4727, 1, 0, 0, 0, 905, 4734, 1, 0, 0, 0, 907, 4746, 1, 0, 0, 0, 909, 4750, 1, 0, 0, 0, 911, 4754, 1, 0, 0, 0, 913, 4760, 1, 0, 0, 0, 915, 4773, 1, 0, 0, 0, 917, 4785, 1, 0, 0, 0, 919, 4789, 1, 0, 0, 0, 921, 4793, 1, 0, 0, 0, 923, 4802, 1, 0, 0, 0, 925, 4810, 1, 0, 0, 0, 927, 4821, 1, 0, 0, 0, 929, 4827, 1, 0, 0, 0, 931, 4835, 1, 0, 0, 0, 933, 4844, 1, 0, 0, 0, 935, 4848, 1, 0, 0, 0, 937, 4856, 1, 0, 0, 0, 939, 4867, 1, 0, 0, 0, 941, 4876, 1, 0, 0, 0, 943, 4881, 1, 0, 0, 0, 945, 4888, 1, 0, 0, 0, 947, 4893, 1, 0, 0, 0, 949, 4900, 1, 0, 0, 0, 951, 4905, 1, 0, 0, 0, 953, 4914, 1, 0, 0, 0, 955, 4919, 1, 0, 0, 0, 957, 4931, 1, 0, 0, 0, 959, 4942, 1, 0, 0, 0, 961, 4951, 1, 0, 0, 0, 963, 4959, 1, 0, 0, 0, 965, 4973, 1, 0, 0, 0, 967, 4981, 1, 0, 0, 0, 969, 4992, 1, 0, 0, 0, 971, 4999, 1, 0, 0, 0, 973, 5006, 1, 0, 0, 0, 975, 5013, 1, 0, 0, 0, 977, 5020, 1, 0, 0, 0, 979, 5024, 1, 0, 0, 0, 981, 5028, 1, 0, 0, 0, 983, 5033, 1, 0, 0, 0, 985, 5038, 1, 0, 0, 0, 987, 5046, 1, 0, 0, 0, 989, 5052, 1, 0, 0, 0, 991, 5062, 1, 0, 0, 0, 993, 5067, 1, 0, 0, 0, 995, 5087, 1, 0, 0, 0, 997, 5105, 1, 0, 0, 0, 999, 5111, 1, 0, 0, 0, 1001, 5124, 1, 0, 0, 0, 1003, 5135, 1, 0, 0, 0, 1005, 5141, 1, 0, 0, 0, 1007, 5150, 1, 0, 0, 0, 1009, 5158, 1, 0, 0, 0, 1011, 5162, 1, 0, 0, 0, 1013, 5174, 1, 0, 0, 0, 1015, 5182, 1, 0, 0, 0, 1017, 5188, 1, 0, 0, 0, 1019, 5194, 1, 0, 0, 0, 1021, 5202, 1, 0, 0, 0, 1023, 5210, 1, 0, 0, 0, 1025, 5216, 1, 0, 0, 0, 1027, 5221, 1, 0, 0, 0, 1029, 5228, 1, 0, 0, 0, 1031, 5234, 1, 0, 0, 0, 1033, 5240, 1, 0, 0, 0, 1035, 5249, 1, 0, 0, 0, 1037, 5255, 1, 0, 0, 0, 1039, 5259, 1, 0, 0, 0, 1041, 5264, 1, 0, 0, 0, 1043, 5271, 1, 0, 0, 0, 1045, 5279, 1, 0, 0, 0, 1047, 5289, 1, 0, 0, 0, 1049, 5296, 1, 0, 0, 0, 1051, 5301, 1, 0, 0, 0, 1053, 5306, 1, 0, 0, 0, 1055, 5310, 1, 0, 0, 0, 1057, 5315, 1, 0, 0, 0, 1059, 5320, 1, 0, 0, 0, 1061, 5328, 1, 0, 0, 0, 1063, 5336, 1, 0, 0, 0, 1065, 5340, 1, 0, 0, 0, 1067, 5344, 1, 0, 0, 0, 1069, 5354, 1, 0, 0, 0, 1071, 5360, 1, 0, 0, 0, 1073, 5364, 1, 0, 0, 0, 1075, 5368, 1, 0, 0, 0, 1077, 5371, 1, 0, 0, 0, 1079, 5377, 1, 0, 0, 0, 1081, 5387, 1, 0, 0, 0, 1083, 5391, 1, 0, 0, 0, 1085, 5394, 1, 0, 0, 0, 1087, 5400, 1, 0, 0, 0, 1089, 5408, 1, 0, 0, 0, 1091, 5414, 1, 0, 0, 0, 1093, 5420, 1, 0, 0, 0, 1095, 5425, 1, 0, 0, 0, 1097, 5430, 1, 0, 0, 0, 1099, 5441, 1, 0, 0, 0, 1101, 5447, 1, 0, 0, 0, 1103, 5460, 1, 0, 0, 0, 1105, 5467, 1, 0, 0, 0, 1107, 5475, 1, 0, 0, 0, 1109, 5480, 1, 0, 0, 0, 1111, 5486, 1, 0, 0, 0, 1113, 5491, 1, 0, 0, 0, 1115, 5497, 1, 0, 0, 0, 1117, 5502, 1, 0, 0, 0, 1119, 5508, 1, 0, 0, 0, 1121, 5514, 1, 0, 0, 0, 1123, 5521, 1, 0, 0, 0, 1125, 5525, 1, 0, 0, 0, 1127, 5530, 1, 0, 0, 0, 1129, 5534, 1, 0, 0, 0, 1131, 5539, 1, 0, 0, 0, 1133, 5543, 1, 0, 0, 0, 1135, 5548, 1, 0, 0, 0, 1137, 5552, 1, 0, 0, 0, 1139, 5557, 1, 0, 0, 0, 1141, 5562, 1, 0, 0, 0, 1143, 5567, 1, 0, 0, 0, 1145, 5572, 1, 0, 0, 0, 1147, 5578, 1, 0, 0, 0, 1149, 5584, 1, 0, 0, 0, 1151, 5590, 1, 0, 0, 0, 1153, 5601, 1, 0, 0, 0, 1155, 5613, 1, 0, 0, 0, 1157, 5630, 1, 0, 0, 0, 1159, 5636, 1, 0, 0, 0, 1161, 5649, 1, 0, 0, 0, 1163, 5655, 1, 0, 0, 0, 1165, 5661, 1, 0, 0, 0, 1167, 5667, 1, 0, 0, 0, 1169, 5671, 1, 0, 0, 0, 1171, 5678, 1, 0, 0, 0, 1173, 5688, 1, 0, 0, 0, 1175, 5695, 1, 0, 0, 0, 1177, 5703, 1, 0, 0, 0, 1179, 5710, 1, 0, 0, 0, 1181, 5715, 1, 0, 0, 0, 1183, 5721, 1, 0, 0, 0, 1185, 5725, 1, 0, 0, 0, 1187, 5737, 1, 0, 0, 0, 1189, 5756, 1, 0, 0, 0, 1191, 5768, 1, 0, 0, 0, 1193, 5782, 1, 0, 0, 0, 1195, 5797, 1, 0, 0, 0, 1197, 5810, 1, 0, 0, 0, 1199, 5823, 1, 0, 0, 0, 1201, 5835, 1, 0, 0, 0, 1203, 5848, 1, 0, 0, 0, 1205, 5863, 1, 0, 0, 0, 1207, 5878, 1, 0, 0, 0, 1209, 5900, 1, 0, 0, 0, 1211, 5922, 1, 0, 0, 0, 1213, 5936, 1, 0, 0, 0, 1215, 5943, 1, 0, 0, 0, 1217, 5948, 1, 0, 0, 0, 1219, 5954, 1, 0, 0, 0, 1221, 5965, 1, 0, 0, 0, 1223, 5977, 1, 0, 0, 0, 1225, 5993, 1, 0, 0, 0, 1227, 6009, 1, 0, 0, 0, 1229, 6016, 1, 0, 0, 0, 1231, 6023, 1, 0, 0, 0, 1233, 6032, 1, 0, 0, 0, 1235, 6039, 1, 0, 0, 0, 1237, 6049, 1, 0, 0, 0, 1239, 6056, 1, 0, 0, 0, 1241, 6060, 1, 0, 0, 0, 1243, 6076, 1, 0, 0, 0, 1245, 6085, 1, 0, 0, 0, 1247, 6095, 1, 0, 0, 0, 1249, 6106, 1, 0, 0, 0, 1251, 6115, 1, 0, 0, 0, 1253, 6128, 1, 0, 0, 0, 1255, 6142, 1, 0, 0, 0, 1257, 6159, 1, 0, 0, 0, 1259, 6169, 1, 0, 0, 0, 1261, 6183, 1, 0, 0, 0, 1263, 6193, 1, 0, 0, 0, 1265, 6208, 1, 0, 0, 0, 1267, 6225, 1, 0, 0, 0, 1269, 6229, 1, 0, 0, 0, 1271, 6249, 1, 0, 0, 0, 1273, 6259, 1, 0, 0, 0, 1275, 6281, 1, 0, 0, 0, 1277, 6294, 1, 0, 0, 0, 1279, 6302, 1, 0, 0, 0, 1281, 6310, 1, 0, 0, 0, 1283, 6320, 1, 0, 0, 0, 1285, 6333, 1, 0, 0, 0, 1287, 6337, 1, 0, 0, 0, 1289, 6341, 1, 0, 0, 0, 1291, 6343, 1, 0, 0, 0, 1293, 6346, 1, 0, 0, 0, 1295, 6355, 1, 0, 0, 0, 1297, 6358, 1, 0, 0, 0, 1299, 6367, 1, 0, 0, 0, 1301, 6371, 1, 0, 0, 0, 1303, 6375, 1, 0, 0, 0, 1305, 6379, 1, 0, 0, 0, 1307, 6383, 1, 0, 0, 0, 1309, 6386, 1, 0, 0, 0, 1311, 6395, 1, 0, 0, 0, 1313, 6401, 1, 0, 0, 0, 1315, 6404, 1, 0, 0, 0, 1317, 6408, 1, 0, 0, 0, 1319, 6417, 1, 0, 0, 0, 1321, 6424, 1, 0, 0, 0, 1323, 6427, 1, 0, 0, 0, 1325, 6435, 1, 0, 0, 0, 1327, 6438, 1, 0, 0, 0, 1329, 6441, 1, 0, 0, 0, 1331, 6444, 1, 0, 0, 0, 1333, 6452, 1, 0, 0, 0, 1335, 6455, 1, 0, 0, 0, 1337, 6458, 1, 0, 0, 0, 1339, 6460, 1, 0, 0, 0, 1341, 6494, 1, 0, 0, 0, 1343, 6497, 1, 0, 0, 0, 1345, 6501, 1, 0, 0, 0, 1347, 6509, 1, 0, 0, 0, 1349, 6525, 1, 0, 0, 0, 1351, 6536, 1, 0, 0, 0, 1353, 6540, 1, 0, 0, 0, 1355, 6551, 1, 0, 0, 0, 1357, 6590, 1, 0, 0, 0, 1359, 6641, 1, 0, 0, 0, 1361, 6665, 1, 0, 0, 0, 1363, 6668, 1, 0, 0, 0, 1365, 6670, 1, 0, 0, 0, 1367, 6675, 1, 0, 0, 0, 1369, 6706, 1, 0, 0, 0, 1371, 6709, 1, 0, 0, 0, 1373, 6714, 1, 0, 0, 0, 1375, 6727, 1, 0, 0, 0, 1377, 6730, 1, 0, 0, 0, 1379, 6735, 1, 0, 0, 0, 1381, 6741, 1, 0, 0, 0, 1383, 6746, 1, 0, 0, 0, 1385, 6751, 1, 0, 0, 0, 1387, 6756, 1, 0, 0, 0, 1389, 6761, 1, 0, 0, 0, 1391, 6778, 1, 0, 0, 0, 1393, 6780, 1, 0, 0, 0, 1395, 1396, 5, 36, 0, 0, 1396, 6, 1, 0, 0, 0, 1397, 1398, 5, 40, 0, 0, 1398, 8, 1, 0, 0, 0, 1399, 1400, 5, 41, 0, 0, 1400, 10, 1, 0, 0, 0, 1401, 1402, 5, 91, 0, 0, 1402, 12, 1, 0, 0, 0, 1403, 1404, 5, 93, 0, 0, 1404, 14, 1, 0, 0, 0, 1405, 1406, 5, 44, 0, 0, 1406, 16, 1, 0, 0, 0, 1407, 1408, 5, 59, 0, 0, 1408, 18, 1, 0, 0, 0, 1409, 1410, 5, 58, 0, 0, 1410, 20, 1, 0, 0, 0, 1411, 1412, 5, 42, 0, 0, 1412, 22, 1, 0, 0, 0, 1413, 1414, 5, 61, 0, 0, 1414, 24, 1, 0, 0, 0, 1415, 1416, 5, 46, 0, 0, 1416, 26, 1, 0, 0, 0, 1417, 1418, 5, 43, 0, 0, 1418, 28, 1, 0, 0, 0, 1419, 1420, 5, 45, 0, 0, 1420, 30, 1, 0, 0, 0, 1421, 1422, 5, 47, 0, 0, 1422, 32, 1, 0, 0, 0, 1423, 1424, 5, 94, 0, 0, 1424, 34, 1, 0, 0, 0, 1425, 1426, 5, 60, 0, 0, 1426, 36, 1, 0, 0, 0, 1427, 1428, 5, 62, 0, 0, 1428, 38, 1, 0, 0, 0, 1429, 1430, 5, 60, 0, 0, 1430, 1431, 5, 60, 0, 0, 1431, 40, 1, 0, 0, 0, 1432, 1433, 5, 62, 0, 0, 1433, 1434, 5, 62, 0, 0, 1434, 42, 1, 0, 0, 0, 1435, 1436, 5, 58, 0, 0, 1436, 1437, 5, 61, 0, 0, 1437, 44, 1, 0, 0, 0, 1438, 1439, 5, 60, 0, 0, 1439, 1440, 5, 61, 0, 0, 1440, 46, 1, 0, 0, 0, 1441, 1442, 5, 61, 0, 0, 1442, 1443, 5, 62, 0, 0, 1443, 48, 1, 0, 0, 0, 1444, 1445, 5, 62, 0, 0, 1445, 1446, 5, 61, 0, 0, 1446, 50, 1, 0, 0, 0, 1447, 1448, 5, 46, 0, 0, 1448, 1449, 5, 46, 0, 0, 1449, 52, 1, 0, 0, 0, 1450, 1451, 5, 60, 0, 0, 1451, 1452, 5, 62, 0, 0, 1452, 54, 1, 0, 0, 0, 1453, 1454, 5, 58, 0, 0, 1454, 1455, 5, 58, 0, 0, 1455, 56, 1, 0, 0, 0, 1456, 1457, 5, 37, 0, 0, 1457, 58, 1, 0, 0, 0, 1458, 1460, 5, 36, 0, 0, 1459, 1461, 7, 0, 0, 0, 1460, 1459, 1, 0, 0, 0, 1461, 1462, 1, 0, 0, 0, 1462, 1460, 1, 0, 0, 0, 1462, 1463, 1, 0, 0, 0, 1463, 60, 1, 0, 0, 0, 1464, 1480, 3, 65, 30, 0, 1465, 1469, 5, 43, 0, 0, 1466, 1467, 5, 45, 0, 0, 1467, 1469, 4, 28, 0, 0, 1468, 1465, 1, 0, 0, 0, 1468, 1466, 1, 0, 0, 0, 1469, 1470, 1, 0, 0, 0, 1470, 1468, 1, 0, 0, 0, 1470, 1471, 1, 0, 0, 0, 1471, 1475, 1, 0, 0, 0, 1472, 1476, 3, 65, 30, 0, 1473, 1474, 5, 47, 0, 0, 1474, 1476, 4, 28, 1, 0, 1475, 1472, 1, 0, 0, 0, 1475, 1473, 1, 0, 0, 0, 1476, 1480, 1, 0, 0, 0, 1477, 1478, 5, 47, 0, 0, 1478, 1480, 4, 28, 2, 0, 1479, 1464, 1, 0, 0, 0, 1479, 1468, 1, 0, 0, 0, 1479, 1477, 1, 0, 0, 0, 1480, 1481, 1, 0, 0, 0, 1481, 1479, 1, 0, 0, 0, 1481, 1482, 1, 0, 0, 0, 1482, 1485, 1, 0, 0, 0, 1483, 1485, 7, 1, 0, 0, 1484, 1479, 1, 0, 0, 0, 1484, 1483, 1, 0, 0, 0, 1485, 1486, 1, 0, 0, 0, 1486, 1487, 6, 28, 0, 0, 1487, 62, 1, 0, 0, 0, 1488, 1494, 3, 67, 31, 0, 1489, 1490, 5, 45, 0, 0, 1490, 1494, 4, 29, 3, 0, 1491, 1492, 5, 47, 0, 0, 1492, 1494, 4, 29, 4, 0, 1493, 1488, 1, 0, 0, 0, 1493, 1489, 1, 0, 0, 0, 1493, 1491, 1, 0, 0, 0, 1494, 1497, 1, 0, 0, 0, 1495, 1493, 1, 0, 0, 0, 1495, 1496, 1, 0, 0, 0, 1496, 1498, 1, 0, 0, 0, 1497, 1495, 1, 0, 0, 0, 1498, 1500, 3, 69, 32, 0, 1499, 1501, 3, 61, 28, 0, 1500, 1499, 1, 0, 0, 0, 1500, 1501, 1, 0, 0, 0, 1501, 1505, 1, 0, 0, 0, 1502, 1506, 5, 43, 0, 0, 1503, 1504, 5, 45, 0, 0, 1504, 1506, 4, 29, 5, 0, 1505, 1502, 1, 0, 0, 0, 1505, 1503, 1, 0, 0, 0, 1506, 1507, 1, 0, 0, 0, 1507, 1505, 1, 0, 0, 0, 1507, 1508, 1, 0, 0, 0, 1508, 1509, 1, 0, 0, 0, 1509, 1510, 6, 29, 1, 0, 1510, 64, 1, 0, 0, 0, 1511, 1512, 7, 2, 0, 0, 1512, 66, 1, 0, 0, 0, 1513, 1514, 7, 3, 0, 0, 1514, 68, 1, 0, 0, 0, 1515, 1516, 7, 4, 0, 0, 1516, 70, 1, 0, 0, 0, 1517, 1518, 7, 5, 0, 0, 1518, 1519, 7, 6, 0, 0, 1519, 1520, 7, 6, 0, 0, 1520, 72, 1, 0, 0, 0, 1521, 1522, 7, 5, 0, 0, 1522, 1523, 7, 7, 0, 0, 1523, 1524, 7, 5, 0, 0, 1524, 1525, 7, 6, 0, 0, 1525, 1526, 7, 8, 0, 0, 1526, 1527, 7, 9, 0, 0, 1527, 1528, 7, 10, 0, 0, 1528, 74, 1, 0, 0, 0, 1529, 1530, 7, 5, 0, 0, 1530, 1531, 7, 7, 0, 0, 1531, 1532, 7, 5, 0, 0, 1532, 1533, 7, 6, 0, 0, 1533, 1534, 7, 8, 0, 0, 1534, 1535, 7, 11, 0, 0, 1535, 1536, 7, 10, 0, 0, 1536, 76, 1, 0, 0, 0, 1537, 1538, 7, 5, 0, 0, 1538, 1539, 7, 7, 0, 0, 1539, 1540, 7, 12, 0, 0, 1540, 78, 1, 0, 0, 0, 1541, 1542, 7, 5, 0, 0, 1542, 1543, 7, 7, 0, 0, 1543, 1544, 7, 8, 0, 0, 1544, 80, 1, 0, 0, 0, 1545, 1546, 7, 5, 0, 0, 1546, 1547, 7, 13, 0, 0, 1547, 1548, 7, 13, 0, 0, 1548, 1549, 7, 5, 0, 0, 1549, 1550, 7, 8, 0, 0, 1550, 82, 1, 0, 0, 0, 1551, 1552, 7, 5, 0, 0, 1552, 1553, 7, 9, 0, 0, 1553, 84, 1, 0, 0, 0, 1554, 1555, 7, 5, 0, 0, 1555, 1556, 7, 9, 0, 0, 1556, 1557, 7, 14, 0, 0, 1557, 86, 1, 0, 0, 0, 1558, 1559, 7, 5, 0, 0, 1559, 1560, 7, 9, 0, 0, 1560, 1561, 7, 8, 0, 0, 1561, 1562, 7, 15, 0, 0, 1562, 1563, 7, 15, 0, 0, 1563, 1564, 7, 10, 0, 0, 1564, 1565, 7, 16, 0, 0, 1565, 1566, 7, 13, 0, 0, 1566, 1567, 7, 17, 0, 0, 1567, 1568, 7, 14, 0, 0, 1568, 88, 1, 0, 0, 0, 1569, 1570, 7, 18, 0, 0, 1570, 1571, 7, 19, 0, 0, 1571, 1572, 7, 16, 0, 0, 1572, 1573, 7, 20, 0, 0, 1573, 90, 1, 0, 0, 0, 1574, 1575, 7, 14, 0, 0, 1575, 1576, 7, 5, 0, 0, 1576, 1577, 7, 9, 0, 0, 1577, 1578, 7, 10, 0, 0, 1578, 92, 1, 0, 0, 0, 1579, 1580, 7, 14, 0, 0, 1580, 1581, 7, 5, 0, 0, 1581, 1582, 7, 9, 0, 0, 1582, 1583, 7, 16, 0, 0, 1583, 94, 1, 0, 0, 0, 1584, 1585, 7, 14, 0, 0, 1585, 1586, 7, 20, 0, 0, 1586, 1587, 7, 10, 0, 0, 1587, 1588, 7, 14, 0, 0, 1588, 1589, 7, 21, 0, 0, 1589, 96, 1, 0, 0, 0, 1590, 1591, 7, 14, 0, 0, 1591, 1592, 7, 19, 0, 0, 1592, 1593, 7, 6, 0, 0, 1593, 1594, 7, 6, 0, 0, 1594, 1595, 7, 5, 0, 0, 1595, 1596, 7, 16, 0, 0, 1596, 1597, 7, 10, 0, 0, 1597, 98, 1, 0, 0, 0, 1598, 1599, 7, 14, 0, 0, 1599, 1600, 7, 19, 0, 0, 1600, 1601, 7, 6, 0, 0, 1601, 1602, 7, 22, 0, 0, 1602, 1603, 7, 15, 0, 0, 1603, 1604, 7, 7, 0, 0, 1604, 100, 1, 0, 0, 0, 1605, 1606, 7, 14, 0, 0, 1606, 1607, 7, 19, 0, 0, 1607, 1608, 7, 7, 0, 0, 1608, 1609, 7, 9, 0, 0, 1609, 1610, 7, 16, 0, 0, 1610, 1611, 7, 13, 0, 0, 1611, 1612, 7, 5, 0, 0, 1612, 1613, 7, 17, 0, 0, 1613, 1614, 7, 7, 0, 0, 1614, 1615, 7, 16, 0, 0, 1615, 102, 1, 0, 0, 0, 1616, 1617, 7, 14, 0, 0, 1617, 1618, 7, 13, 0, 0, 1618, 1619, 7, 10, 0, 0, 1619, 1620, 7, 5, 0, 0, 1620, 1621, 7, 16, 0, 0, 1621, 1622, 7, 10, 0, 0, 1622, 104, 1, 0, 0, 0, 1623, 1624, 7, 14, 0, 0, 1624, 1625, 7, 22, 0, 0, 1625, 1626, 7, 13, 0, 0, 1626, 1627, 7, 13, 0, 0, 1627, 1628, 7, 10, 0, 0, 1628, 1629, 7, 7, 0, 0, 1629, 1630, 7, 16, 0, 0, 1630, 1631, 5, 95, 0, 0, 1631, 1632, 7, 14, 0, 0, 1632, 1633, 7, 5, 0, 0, 1633, 1634, 7, 16, 0, 0, 1634, 1635, 7, 5, 0, 0, 1635, 1636, 7, 6, 0, 0, 1636, 1637, 7, 19, 0, 0, 1637, 1638, 7, 23, 0, 0, 1638, 106, 1, 0, 0, 0, 1639, 1640, 7, 14, 0, 0, 1640, 1641, 7, 22, 0, 0, 1641, 1642, 7, 13, 0, 0, 1642, 1643, 7, 13, 0, 0, 1643, 1644, 7, 10, 0, 0, 1644, 1645, 7, 7, 0, 0, 1645, 1646, 7, 16, 0, 0, 1646, 1647, 5, 95, 0, 0, 1647, 1648, 7, 12, 0, 0, 1648, 1649, 7, 5, 0, 0, 1649, 1650, 7, 16, 0, 0, 1650, 1651, 7, 10, 0, 0, 1651, 108, 1, 0, 0, 0, 1652, 1653, 7, 14, 0, 0, 1653, 1654, 7, 22, 0, 0, 1654, 1655, 7, 13, 0, 0, 1655, 1656, 7, 13, 0, 0, 1656, 1657, 7, 10, 0, 0, 1657, 1658, 7, 7, 0, 0, 1658, 1659, 7, 16, 0, 0, 1659, 1660, 5, 95, 0, 0, 1660, 1661, 7, 13, 0, 0, 1661, 1662, 7, 19, 0, 0, 1662, 1663, 7, 6, 0, 0, 1663, 1664, 7, 10, 0, 0, 1664, 110, 1, 0, 0, 0, 1665, 1666, 7, 14, 0, 0, 1666, 1667, 7, 22, 0, 0, 1667, 1668, 7, 13, 0, 0, 1668, 1669, 7, 13, 0, 0, 1669, 1670, 7, 10, 0, 0, 1670, 1671, 7, 7, 0, 0, 1671, 1672, 7, 16, 0, 0, 1672, 1673, 5, 95, 0, 0, 1673, 1674, 7, 16, 0, 0, 1674, 1675, 7, 17, 0, 0, 1675, 1676, 7, 15, 0, 0, 1676, 1677, 7, 10, 0, 0, 1677, 112, 1, 0, 0, 0, 1678, 1679, 7, 14, 0, 0, 1679, 1680, 7, 22, 0, 0, 1680, 1681, 7, 13, 0, 0, 1681, 1682, 7, 13, 0, 0, 1682, 1683, 7, 10, 0, 0, 1683, 1684, 7, 7, 0, 0, 1684, 1685, 7, 16, 0, 0, 1685, 1686, 5, 95, 0, 0, 1686, 1687, 7, 16, 0, 0, 1687, 1688, 7, 17, 0, 0, 1688, 1689, 7, 15, 0, 0, 1689, 1690, 7, 10, 0, 0, 1690, 1691, 7, 9, 0, 0, 1691, 1692, 7, 16, 0, 0, 1692, 1693, 7, 5, 0, 0, 1693, 1694, 7, 15, 0, 0, 1694, 1695, 7, 24, 0, 0, 1695, 114, 1, 0, 0, 0, 1696, 1697, 7, 14, 0, 0, 1697, 1698, 7, 22, 0, 0, 1698, 1699, 7, 13, 0, 0, 1699, 1700, 7, 13, 0, 0, 1700, 1701, 7, 10, 0, 0, 1701, 1702, 7, 7, 0, 0, 1702, 1703, 7, 16, 0, 0, 1703, 1704, 5, 95, 0, 0, 1704, 1705, 7, 22, 0, 0, 1705, 1706, 7, 9, 0, 0, 1706, 1707, 7, 10, 0, 0, 1707, 1708, 7, 13, 0, 0, 1708, 116, 1, 0, 0, 0, 1709, 1710, 7, 12, 0, 0, 1710, 1711, 7, 10, 0, 0, 1711, 1712, 7, 25, 0, 0, 1712, 1713, 7, 5, 0, 0, 1713, 1714, 7, 22, 0, 0, 1714, 1715, 7, 6, 0, 0, 1715, 1716, 7, 16, 0, 0, 1716, 118, 1, 0, 0, 0, 1717, 1718, 7, 12, 0, 0, 1718, 1719, 7, 10, 0, 0, 1719, 1720, 7, 25, 0, 0, 1720, 1721, 7, 10, 0, 0, 1721, 1722, 7, 13, 0, 0, 1722, 1723, 7, 13, 0, 0, 1723, 1724, 7, 5, 0, 0, 1724, 1725, 7, 18, 0, 0, 1725, 1726, 7, 6, 0, 0, 1726, 1727, 7, 10, 0, 0, 1727, 120, 1, 0, 0, 0, 1728, 1729, 7, 12, 0, 0, 1729, 1730, 7, 10, 0, 0, 1730, 1731, 7, 9, 0, 0, 1731, 1732, 7, 14, 0, 0, 1732, 122, 1, 0, 0, 0, 1733, 1734, 7, 12, 0, 0, 1734, 1735, 7, 17, 0, 0, 1735, 1736, 7, 9, 0, 0, 1736, 1737, 7, 16, 0, 0, 1737, 1738, 7, 17, 0, 0, 1738, 1739, 7, 7, 0, 0, 1739, 1740, 7, 14, 0, 0, 1740, 1741, 7, 16, 0, 0, 1741, 124, 1, 0, 0, 0, 1742, 1743, 7, 12, 0, 0, 1743, 1744, 7, 19, 0, 0, 1744, 126, 1, 0, 0, 0, 1745, 1746, 7, 10, 0, 0, 1746, 1747, 7, 6, 0, 0, 1747, 1748, 7, 9, 0, 0, 1748, 1749, 7, 10, 0, 0, 1749, 128, 1, 0, 0, 0, 1750, 1751, 7, 10, 0, 0, 1751, 1752, 7, 26, 0, 0, 1752, 1753, 7, 14, 0, 0, 1753, 1754, 7, 10, 0, 0, 1754, 1755, 7, 24, 0, 0, 1755, 1756, 7, 16, 0, 0, 1756, 130, 1, 0, 0, 0, 1757, 1758, 7, 25, 0, 0, 1758, 1759, 7, 5, 0, 0, 1759, 1760, 7, 6, 0, 0, 1760, 1761, 7, 9, 0, 0, 1761, 1762, 7, 10, 0, 0, 1762, 132, 1, 0, 0, 0, 1763, 1764, 7, 25, 0, 0, 1764, 1765, 7, 10, 0, 0, 1765, 1766, 7, 16, 0, 0, 1766, 1767, 7, 14, 0, 0, 1767, 1768, 7, 20, 0, 0, 1768, 134, 1, 0, 0, 0, 1769, 1770, 7, 25, 0, 0, 1770, 1771, 7, 19, 0, 0, 1771, 1772, 7, 13, 0, 0, 1772, 136, 1, 0, 0, 0, 1773, 1774, 7, 25, 0, 0, 1774, 1775, 7, 19, 0, 0, 1775, 1776, 7, 13, 0, 0, 1776, 1777, 7, 10, 0, 0, 1777, 1778, 7, 17, 0, 0, 1778, 1779, 7, 23, 0, 0, 1779, 1780, 7, 7, 0, 0, 1780, 138, 1, 0, 0, 0, 1781, 1782, 7, 25, 0, 0, 1782, 1783, 7, 13, 0, 0, 1783, 1784, 7, 19, 0, 0, 1784, 1785, 7, 15, 0, 0, 1785, 140, 1, 0, 0, 0, 1786, 1787, 7, 23, 0, 0, 1787, 1788, 7, 13, 0, 0, 1788, 1789, 7, 5, 0, 0, 1789, 1790, 7, 7, 0, 0, 1790, 1791, 7, 16, 0, 0, 1791, 142, 1, 0, 0, 0, 1792, 1793, 7, 23, 0, 0, 1793, 1794, 7, 13, 0, 0, 1794, 1795, 7, 19, 0, 0, 1795, 1796, 7, 22, 0, 0, 1796, 1797, 7, 24, 0, 0, 1797, 144, 1, 0, 0, 0, 1798, 1799, 7, 20, 0, 0, 1799, 1800, 7, 5, 0, 0, 1800, 1801, 7, 27, 0, 0, 1801, 1802, 7, 17, 0, 0, 1802, 1803, 7, 7, 0, 0, 1803, 1804, 7, 23, 0, 0, 1804, 146, 1, 0, 0, 0, 1805, 1806, 7, 17, 0, 0, 1806, 1807, 7, 7, 0, 0, 1807, 148, 1, 0, 0, 0, 1808, 1809, 7, 17, 0, 0, 1809, 1810, 7, 7, 0, 0, 1810, 1811, 7, 17, 0, 0, 1811, 1812, 7, 16, 0, 0, 1812, 1813, 7, 17, 0, 0, 1813, 1814, 7, 5, 0, 0, 1814, 1815, 7, 6, 0, 0, 1815, 1816, 7, 6, 0, 0, 1816, 1817, 7, 8, 0, 0, 1817, 150, 1, 0, 0, 0, 1818, 1819, 7, 17, 0, 0, 1819, 1820, 7, 7, 0, 0, 1820, 1821, 7, 16, 0, 0, 1821, 1822, 7, 10, 0, 0, 1822, 1823, 7, 13, 0, 0, 1823, 1824, 7, 9, 0, 0, 1824, 1825, 7, 10, 0, 0, 1825, 1826, 7, 14, 0, 0, 1826, 1827, 7, 16, 0, 0, 1827, 152, 1, 0, 0, 0, 1828, 1829, 7, 17, 0, 0, 1829, 1830, 7, 7, 0, 0, 1830, 1831, 7, 16, 0, 0, 1831, 1832, 7, 19, 0, 0, 1832, 154, 1, 0, 0, 0, 1833, 1834, 7, 6, 0, 0, 1834, 1835, 7, 5, 0, 0, 1835, 1836, 7, 16, 0, 0, 1836, 1837, 7, 10, 0, 0, 1837, 1838, 7, 13, 0, 0, 1838, 1839, 7, 5, 0, 0, 1839, 1840, 7, 6, 0, 0, 1840, 156, 1, 0, 0, 0, 1841, 1842, 7, 6, 0, 0, 1842, 1843, 7, 10, 0, 0, 1843, 1844, 7, 5, 0, 0, 1844, 1845, 7, 12, 0, 0, 1845, 1846, 7, 17, 0, 0, 1846, 1847, 7, 7, 0, 0, 1847, 1848, 7, 23, 0, 0, 1848, 158, 1, 0, 0, 0, 1849, 1850, 7, 6, 0, 0, 1850, 1851, 7, 17, 0, 0, 1851, 1852, 7, 15, 0, 0, 1852, 1853, 7, 17, 0, 0, 1853, 1854, 7, 16, 0, 0, 1854, 160, 1, 0, 0, 0, 1855, 1856, 7, 6, 0, 0, 1856, 1857, 7, 19, 0, 0, 1857, 1858, 7, 14, 0, 0, 1858, 1859, 7, 5, 0, 0, 1859, 1860, 7, 6, 0, 0, 1860, 1861, 7, 16, 0, 0, 1861, 1862, 7, 17, 0, 0, 1862, 1863, 7, 15, 0, 0, 1863, 1864, 7, 10, 0, 0, 1864, 162, 1, 0, 0, 0, 1865, 1866, 7, 6, 0, 0, 1866, 1867, 7, 19, 0, 0, 1867, 1868, 7, 14, 0, 0, 1868, 1869, 7, 5, 0, 0, 1869, 1870, 7, 6, 0, 0, 1870, 1871, 7, 16, 0, 0, 1871, 1872, 7, 17, 0, 0, 1872, 1873, 7, 15, 0, 0, 1873, 1874, 7, 10, 0, 0, 1874, 1875, 7, 9, 0, 0, 1875, 1876, 7, 16, 0, 0, 1876, 1877, 7, 5, 0, 0, 1877, 1878, 7, 15, 0, 0, 1878, 1879, 7, 24, 0, 0, 1879, 164, 1, 0, 0, 0, 1880, 1881, 7, 7, 0, 0, 1881, 1882, 7, 19, 0, 0, 1882, 1883, 7, 16, 0, 0, 1883, 166, 1, 0, 0, 0, 1884, 1885, 7, 7, 0, 0, 1885, 1886, 7, 22, 0, 0, 1886, 1887, 7, 6, 0, 0, 1887, 1888, 7, 6, 0, 0, 1888, 168, 1, 0, 0, 0, 1889, 1890, 7, 19, 0, 0, 1890, 1891, 7, 25, 0, 0, 1891, 1892, 7, 25, 0, 0, 1892, 1893, 7, 9, 0, 0, 1893, 1894, 7, 10, 0, 0, 1894, 1895, 7, 16, 0, 0, 1895, 170, 1, 0, 0, 0, 1896, 1897, 7, 19, 0, 0, 1897, 1898, 7, 7, 0, 0, 1898, 172, 1, 0, 0, 0, 1899, 1900, 7, 19, 0, 0, 1900, 1901, 7, 7, 0, 0, 1901, 1902, 7, 6, 0, 0, 1902, 1903, 7, 8, 0, 0, 1903, 174, 1, 0, 0, 0, 1904, 1905, 7, 19, 0, 0, 1905, 1906, 7, 13, 0, 0, 1906, 176, 1, 0, 0, 0, 1907, 1908, 7, 19, 0, 0, 1908, 1909, 7, 13, 0, 0, 1909, 1910, 7, 12, 0, 0, 1910, 1911, 7, 10, 0, 0, 1911, 1912, 7, 13, 0, 0, 1912, 178, 1, 0, 0, 0, 1913, 1914, 7, 24, 0, 0, 1914, 1915, 7, 6, 0, 0, 1915, 1916, 7, 5, 0, 0, 1916, 1917, 7, 14, 0, 0, 1917, 1918, 7, 17, 0, 0, 1918, 1919, 7, 7, 0, 0, 1919, 1920, 7, 23, 0, 0, 1920, 180, 1, 0, 0, 0, 1921, 1922, 7, 24, 0, 0, 1922, 1923, 7, 13, 0, 0, 1923, 1924, 7, 17, 0, 0, 1924, 1925, 7, 15, 0, 0, 1925, 1926, 7, 5, 0, 0, 1926, 1927, 7, 13, 0, 0, 1927, 1928, 7, 8, 0, 0, 1928, 182, 1, 0, 0, 0, 1929, 1930, 7, 13, 0, 0, 1930, 1931, 7, 10, 0, 0, 1931, 1932, 7, 25, 0, 0, 1932, 1933, 7, 10, 0, 0, 1933, 1934, 7, 13, 0, 0, 1934, 1935, 7, 10, 0, 0, 1935, 1936, 7, 7, 0, 0, 1936, 1937, 7, 14, 0, 0, 1937, 1938, 7, 10, 0, 0, 1938, 1939, 7, 9, 0, 0, 1939, 184, 1, 0, 0, 0, 1940, 1941, 7, 13, 0, 0, 1941, 1942, 7, 10, 0, 0, 1942, 1943, 7, 16, 0, 0, 1943, 1944, 7, 22, 0, 0, 1944, 1945, 7, 13, 0, 0, 1945, 1946, 7, 7, 0, 0, 1946, 1947, 7, 17, 0, 0, 1947, 1948, 7, 7, 0, 0, 1948, 1949, 7, 23, 0, 0, 1949, 186, 1, 0, 0, 0, 1950, 1951, 7, 9, 0, 0, 1951, 1952, 7, 10, 0, 0, 1952, 1953, 7, 6, 0, 0, 1953, 1954, 7, 10, 0, 0, 1954, 1955, 7, 14, 0, 0, 1955, 1956, 7, 16, 0, 0, 1956, 188, 1, 0, 0, 0, 1957, 1958, 7, 9, 0, 0, 1958, 1959, 7, 10, 0, 0, 1959, 1960, 7, 9, 0, 0, 1960, 1961, 7, 9, 0, 0, 1961, 1962, 7, 17, 0, 0, 1962, 1963, 7, 19, 0, 0, 1963, 1964, 7, 7, 0, 0, 1964, 1965, 5, 95, 0, 0, 1965, 1966, 7, 22, 0, 0, 1966, 1967, 7, 9, 0, 0, 1967, 1968, 7, 10, 0, 0, 1968, 1969, 7, 13, 0, 0, 1969, 190, 1, 0, 0, 0, 1970, 1971, 7, 9, 0, 0, 1971, 1972, 7, 19, 0, 0, 1972, 1973, 7, 15, 0, 0, 1973, 1974, 7, 10, 0, 0, 1974, 192, 1, 0, 0, 0, 1975, 1976, 7, 9, 0, 0, 1976, 1977, 7, 8, 0, 0, 1977, 1978, 7, 15, 0, 0, 1978, 1979, 7, 15, 0, 0, 1979, 1980, 7, 10, 0, 0, 1980, 1981, 7, 16, 0, 0, 1981, 1982, 7, 13, 0, 0, 1982, 1983, 7, 17, 0, 0, 1983, 1984, 7, 14, 0, 0, 1984, 194, 1, 0, 0, 0, 1985, 1986, 7, 16, 0, 0, 1986, 1987, 7, 5, 0, 0, 1987, 1988, 7, 18, 0, 0, 1988, 1989, 7, 6, 0, 0, 1989, 1990, 7, 10, 0, 0, 1990, 196, 1, 0, 0, 0, 1991, 1992, 7, 16, 0, 0, 1992, 1993, 7, 20, 0, 0, 1993, 1994, 7, 10, 0, 0, 1994, 1995, 7, 7, 0, 0, 1995, 198, 1, 0, 0, 0, 1996, 1997, 7, 16, 0, 0, 1997, 1998, 7, 19, 0, 0, 1998, 200, 1, 0, 0, 0, 1999, 2000, 7, 16, 0, 0, 2000, 2001, 7, 13, 0, 0, 2001, 2002, 7, 5, 0, 0, 2002, 2003, 7, 17, 0, 0, 2003, 2004, 7, 6, 0, 0, 2004, 2005, 7, 17, 0, 0, 2005, 2006, 7, 7, 0, 0, 2006, 2007, 7, 23, 0, 0, 2007, 202, 1, 0, 0, 0, 2008, 2009, 7, 16, 0, 0, 2009, 2010, 7, 13, 0, 0, 2010, 2011, 7, 22, 0, 0, 2011, 2012, 7, 10, 0, 0, 2012, 204, 1, 0, 0, 0, 2013, 2014, 7, 22, 0, 0, 2014, 2015, 7, 7, 0, 0, 2015, 2016, 7, 17, 0, 0, 2016, 2017, 7, 19, 0, 0, 2017, 2018, 7, 7, 0, 0, 2018, 206, 1, 0, 0, 0, 2019, 2020, 7, 22, 0, 0, 2020, 2021, 7, 7, 0, 0, 2021, 2022, 7, 17, 0, 0, 2022, 2023, 7, 28, 0, 0, 2023, 2024, 7, 22, 0, 0, 2024, 2025, 7, 10, 0, 0, 2025, 208, 1, 0, 0, 0, 2026, 2027, 7, 22, 0, 0, 2027, 2028, 7, 9, 0, 0, 2028, 2029, 7, 10, 0, 0, 2029, 2030, 7, 13, 0, 0, 2030, 210, 1, 0, 0, 0, 2031, 2032, 7, 22, 0, 0, 2032, 2033, 7, 9, 0, 0, 2033, 2034, 7, 17, 0, 0, 2034, 2035, 7, 7, 0, 0, 2035, 2036, 7, 23, 0, 0, 2036, 212, 1, 0, 0, 0, 2037, 2038, 7, 27, 0, 0, 2038, 2039, 7, 5, 0, 0, 2039, 2040, 7, 13, 0, 0, 2040, 2041, 7, 17, 0, 0, 2041, 2042, 7, 5, 0, 0, 2042, 2043, 7, 12, 0, 0, 2043, 2044, 7, 17, 0, 0, 2044, 2045, 7, 14, 0, 0, 2045, 214, 1, 0, 0, 0, 2046, 2047, 7, 29, 0, 0, 2047, 2048, 7, 20, 0, 0, 2048, 2049, 7, 10, 0, 0, 2049, 2050, 7, 7, 0, 0, 2050, 216, 1, 0, 0, 0, 2051, 2052, 7, 29, 0, 0, 2052, 2053, 7, 20, 0, 0, 2053, 2054, 7, 10, 0, 0, 2054, 2055, 7, 13, 0, 0, 2055, 2056, 7, 10, 0, 0, 2056, 218, 1, 0, 0, 0, 2057, 2058, 7, 29, 0, 0, 2058, 2059, 7, 17, 0, 0, 2059, 2060, 7, 7, 0, 0, 2060, 2061, 7, 12, 0, 0, 2061, 2062, 7, 19, 0, 0, 2062, 2063, 7, 29, 0, 0, 2063, 220, 1, 0, 0, 0, 2064, 2065, 7, 29, 0, 0, 2065, 2066, 7, 17, 0, 0, 2066, 2067, 7, 16, 0, 0, 2067, 2068, 7, 20, 0, 0, 2068, 222, 1, 0, 0, 0, 2069, 2070, 7, 5, 0, 0, 2070, 2071, 7, 22, 0, 0, 2071, 2072, 7, 16, 0, 0, 2072, 2073, 7, 20, 0, 0, 2073, 2074, 7, 19, 0, 0, 2074, 2075, 7, 13, 0, 0, 2075, 2076, 7, 17, 0, 0, 2076, 2077, 7, 11, 0, 0, 2077, 2078, 7, 5, 0, 0, 2078, 2079, 7, 16, 0, 0, 2079, 2080, 7, 17, 0, 0, 2080, 2081, 7, 19, 0, 0, 2081, 2082, 7, 7, 0, 0, 2082, 224, 1, 0, 0, 0, 2083, 2084, 7, 18, 0, 0, 2084, 2085, 7, 17, 0, 0, 2085, 2086, 7, 7, 0, 0, 2086, 2087, 7, 5, 0, 0, 2087, 2088, 7, 13, 0, 0, 2088, 2089, 7, 8, 0, 0, 2089, 226, 1, 0, 0, 0, 2090, 2091, 7, 14, 0, 0, 2091, 2092, 7, 19, 0, 0, 2092, 2093, 7, 6, 0, 0, 2093, 2094, 7, 6, 0, 0, 2094, 2095, 7, 5, 0, 0, 2095, 2096, 7, 16, 0, 0, 2096, 2097, 7, 17, 0, 0, 2097, 2098, 7, 19, 0, 0, 2098, 2099, 7, 7, 0, 0, 2099, 228, 1, 0, 0, 0, 2100, 2101, 7, 14, 0, 0, 2101, 2102, 7, 19, 0, 0, 2102, 2103, 7, 7, 0, 0, 2103, 2104, 7, 14, 0, 0, 2104, 2105, 7, 22, 0, 0, 2105, 2106, 7, 13, 0, 0, 2106, 2107, 7, 13, 0, 0, 2107, 2108, 7, 10, 0, 0, 2108, 2109, 7, 7, 0, 0, 2109, 2110, 7, 16, 0, 0, 2110, 2111, 7, 6, 0, 0, 2111, 2112, 7, 8, 0, 0, 2112, 230, 1, 0, 0, 0, 2113, 2114, 7, 14, 0, 0, 2114, 2115, 7, 13, 0, 0, 2115, 2116, 7, 19, 0, 0, 2116, 2117, 7, 9, 0, 0, 2117, 2118, 7, 9, 0, 0, 2118, 232, 1, 0, 0, 0, 2119, 2120, 7, 14, 0, 0, 2120, 2121, 7, 22, 0, 0, 2121, 2122, 7, 13, 0, 0, 2122, 2123, 7, 13, 0, 0, 2123, 2124, 7, 10, 0, 0, 2124, 2125, 7, 7, 0, 0, 2125, 2126, 7, 16, 0, 0, 2126, 2127, 5, 95, 0, 0, 2127, 2128, 7, 9, 0, 0, 2128, 2129, 7, 14, 0, 0, 2129, 2130, 7, 20, 0, 0, 2130, 2131, 7, 10, 0, 0, 2131, 2132, 7, 15, 0, 0, 2132, 2133, 7, 5, 0, 0, 2133, 234, 1, 0, 0, 0, 2134, 2135, 7, 25, 0, 0, 2135, 2136, 7, 13, 0, 0, 2136, 2137, 7, 10, 0, 0, 2137, 2138, 7, 10, 0, 0, 2138, 2139, 7, 11, 0, 0, 2139, 2140, 7, 10, 0, 0, 2140, 236, 1, 0, 0, 0, 2141, 2142, 7, 25, 0, 0, 2142, 2143, 7, 22, 0, 0, 2143, 2144, 7, 6, 0, 0, 2144, 2145, 7, 6, 0, 0, 2145, 238, 1, 0, 0, 0, 2146, 2147, 7, 17, 0, 0, 2147, 2148, 7, 6, 0, 0, 2148, 2149, 7, 17, 0, 0, 2149, 2150, 7, 21, 0, 0, 2150, 2151, 7, 10, 0, 0, 2151, 240, 1, 0, 0, 0, 2152, 2153, 7, 17, 0, 0, 2153, 2154, 7, 7, 0, 0, 2154, 2155, 7, 7, 0, 0, 2155, 2156, 7, 10, 0, 0, 2156, 2157, 7, 13, 0, 0, 2157, 242, 1, 0, 0, 0, 2158, 2159, 7, 17, 0, 0, 2159, 2160, 7, 9, 0, 0, 2160, 244, 1, 0, 0, 0, 2161, 2162, 7, 17, 0, 0, 2162, 2163, 7, 9, 0, 0, 2163, 2164, 7, 7, 0, 0, 2164, 2165, 7, 22, 0, 0, 2165, 2166, 7, 6, 0, 0, 2166, 2167, 7, 6, 0, 0, 2167, 246, 1, 0, 0, 0, 2168, 2169, 7, 30, 0, 0, 2169, 2170, 7, 19, 0, 0, 2170, 2171, 7, 17, 0, 0, 2171, 2172, 7, 7, 0, 0, 2172, 248, 1, 0, 0, 0, 2173, 2174, 7, 6, 0, 0, 2174, 2175, 7, 10, 0, 0, 2175, 2176, 7, 25, 0, 0, 2176, 2177, 7, 16, 0, 0, 2177, 250, 1, 0, 0, 0, 2178, 2179, 7, 6, 0, 0, 2179, 2180, 7, 17, 0, 0, 2180, 2181, 7, 21, 0, 0, 2181, 2182, 7, 10, 0, 0, 2182, 252, 1, 0, 0, 0, 2183, 2184, 7, 7, 0, 0, 2184, 2185, 7, 5, 0, 0, 2185, 2186, 7, 16, 0, 0, 2186, 2187, 7, 22, 0, 0, 2187, 2188, 7, 13, 0, 0, 2188, 2189, 7, 5, 0, 0, 2189, 2190, 7, 6, 0, 0, 2190, 254, 1, 0, 0, 0, 2191, 2192, 7, 7, 0, 0, 2192, 2193, 7, 19, 0, 0, 2193, 2194, 7, 16, 0, 0, 2194, 2195, 7, 7, 0, 0, 2195, 2196, 7, 22, 0, 0, 2196, 2197, 7, 6, 0, 0, 2197, 2198, 7, 6, 0, 0, 2198, 256, 1, 0, 0, 0, 2199, 2200, 7, 19, 0, 0, 2200, 2201, 7, 22, 0, 0, 2201, 2202, 7, 16, 0, 0, 2202, 2203, 7, 10, 0, 0, 2203, 2204, 7, 13, 0, 0, 2204, 258, 1, 0, 0, 0, 2205, 2206, 7, 19, 0, 0, 2206, 2207, 7, 27, 0, 0, 2207, 2208, 7, 10, 0, 0, 2208, 2209, 7, 13, 0, 0, 2209, 260, 1, 0, 0, 0, 2210, 2211, 7, 19, 0, 0, 2211, 2212, 7, 27, 0, 0, 2212, 2213, 7, 10, 0, 0, 2213, 2214, 7, 13, 0, 0, 2214, 2215, 7, 6, 0, 0, 2215, 2216, 7, 5, 0, 0, 2216, 2217, 7, 24, 0, 0, 2217, 2218, 7, 9, 0, 0, 2218, 262, 1, 0, 0, 0, 2219, 2220, 7, 13, 0, 0, 2220, 2221, 7, 17, 0, 0, 2221, 2222, 7, 23, 0, 0, 2222, 2223, 7, 20, 0, 0, 2223, 2224, 7, 16, 0, 0, 2224, 264, 1, 0, 0, 0, 2225, 2226, 7, 9, 0, 0, 2226, 2227, 7, 17, 0, 0, 2227, 2228, 7, 15, 0, 0, 2228, 2229, 7, 17, 0, 0, 2229, 2230, 7, 6, 0, 0, 2230, 2231, 7, 5, 0, 0, 2231, 2232, 7, 13, 0, 0, 2232, 266, 1, 0, 0, 0, 2233, 2234, 7, 27, 0, 0, 2234, 2235, 7, 10, 0, 0, 2235, 2236, 7, 13, 0, 0, 2236, 2237, 7, 18, 0, 0, 2237, 2238, 7, 19, 0, 0, 2238, 2239, 7, 9, 0, 0, 2239, 2240, 7, 10, 0, 0, 2240, 268, 1, 0, 0, 0, 2241, 2242, 7, 5, 0, 0, 2242, 2243, 7, 18, 0, 0, 2243, 2244, 7, 19, 0, 0, 2244, 2245, 7, 13, 0, 0, 2245, 2246, 7, 16, 0, 0, 2246, 270, 1, 0, 0, 0, 2247, 2248, 7, 5, 0, 0, 2248, 2249, 7, 18, 0, 0, 2249, 2250, 7, 9, 0, 0, 2250, 2251, 7, 19, 0, 0, 2251, 2252, 7, 6, 0, 0, 2252, 2253, 7, 22, 0, 0, 2253, 2254, 7, 16, 0, 0, 2254, 2255, 7, 10, 0, 0, 2255, 272, 1, 0, 0, 0, 2256, 2257, 7, 5, 0, 0, 2257, 2258, 7, 14, 0, 0, 2258, 2259, 7, 14, 0, 0, 2259, 2260, 7, 10, 0, 0, 2260, 2261, 7, 9, 0, 0, 2261, 2262, 7, 9, 0, 0, 2262, 274, 1, 0, 0, 0, 2263, 2264, 7, 5, 0, 0, 2264, 2265, 7, 14, 0, 0, 2265, 2266, 7, 16, 0, 0, 2266, 2267, 7, 17, 0, 0, 2267, 2268, 7, 19, 0, 0, 2268, 2269, 7, 7, 0, 0, 2269, 276, 1, 0, 0, 0, 2270, 2271, 7, 5, 0, 0, 2271, 2272, 7, 12, 0, 0, 2272, 2273, 7, 12, 0, 0, 2273, 278, 1, 0, 0, 0, 2274, 2275, 7, 5, 0, 0, 2275, 2276, 7, 12, 0, 0, 2276, 2277, 7, 15, 0, 0, 2277, 2278, 7, 17, 0, 0, 2278, 2279, 7, 7, 0, 0, 2279, 280, 1, 0, 0, 0, 2280, 2281, 7, 5, 0, 0, 2281, 2282, 7, 25, 0, 0, 2282, 2283, 7, 16, 0, 0, 2283, 2284, 7, 10, 0, 0, 2284, 2285, 7, 13, 0, 0, 2285, 282, 1, 0, 0, 0, 2286, 2287, 7, 5, 0, 0, 2287, 2288, 7, 23, 0, 0, 2288, 2289, 7, 23, 0, 0, 2289, 2290, 7, 13, 0, 0, 2290, 2291, 7, 10, 0, 0, 2291, 2292, 7, 23, 0, 0, 2292, 2293, 7, 5, 0, 0, 2293, 2294, 7, 16, 0, 0, 2294, 2295, 7, 10, 0, 0, 2295, 284, 1, 0, 0, 0, 2296, 2297, 7, 5, 0, 0, 2297, 2298, 7, 6, 0, 0, 2298, 2299, 7, 9, 0, 0, 2299, 2300, 7, 19, 0, 0, 2300, 286, 1, 0, 0, 0, 2301, 2302, 7, 5, 0, 0, 2302, 2303, 7, 6, 0, 0, 2303, 2304, 7, 16, 0, 0, 2304, 2305, 7, 10, 0, 0, 2305, 2306, 7, 13, 0, 0, 2306, 288, 1, 0, 0, 0, 2307, 2308, 7, 5, 0, 0, 2308, 2309, 7, 6, 0, 0, 2309, 2310, 7, 29, 0, 0, 2310, 2311, 7, 5, 0, 0, 2311, 2312, 7, 8, 0, 0, 2312, 2313, 7, 9, 0, 0, 2313, 290, 1, 0, 0, 0, 2314, 2315, 7, 5, 0, 0, 2315, 2316, 7, 9, 0, 0, 2316, 2317, 7, 9, 0, 0, 2317, 2318, 7, 10, 0, 0, 2318, 2319, 7, 13, 0, 0, 2319, 2320, 7, 16, 0, 0, 2320, 2321, 7, 17, 0, 0, 2321, 2322, 7, 19, 0, 0, 2322, 2323, 7, 7, 0, 0, 2323, 292, 1, 0, 0, 0, 2324, 2325, 7, 5, 0, 0, 2325, 2326, 7, 9, 0, 0, 2326, 2327, 7, 9, 0, 0, 2327, 2328, 7, 17, 0, 0, 2328, 2329, 7, 23, 0, 0, 2329, 2330, 7, 7, 0, 0, 2330, 2331, 7, 15, 0, 0, 2331, 2332, 7, 10, 0, 0, 2332, 2333, 7, 7, 0, 0, 2333, 2334, 7, 16, 0, 0, 2334, 294, 1, 0, 0, 0, 2335, 2336, 7, 5, 0, 0, 2336, 2337, 7, 16, 0, 0, 2337, 296, 1, 0, 0, 0, 2338, 2339, 7, 5, 0, 0, 2339, 2340, 7, 16, 0, 0, 2340, 2341, 7, 16, 0, 0, 2341, 2342, 7, 13, 0, 0, 2342, 2343, 7, 17, 0, 0, 2343, 2344, 7, 18, 0, 0, 2344, 2345, 7, 22, 0, 0, 2345, 2346, 7, 16, 0, 0, 2346, 2347, 7, 10, 0, 0, 2347, 298, 1, 0, 0, 0, 2348, 2349, 7, 18, 0, 0, 2349, 2350, 7, 5, 0, 0, 2350, 2351, 7, 14, 0, 0, 2351, 2352, 7, 21, 0, 0, 2352, 2353, 7, 29, 0, 0, 2353, 2354, 7, 5, 0, 0, 2354, 2355, 7, 13, 0, 0, 2355, 2356, 7, 12, 0, 0, 2356, 300, 1, 0, 0, 0, 2357, 2358, 7, 18, 0, 0, 2358, 2359, 7, 10, 0, 0, 2359, 2360, 7, 25, 0, 0, 2360, 2361, 7, 19, 0, 0, 2361, 2362, 7, 13, 0, 0, 2362, 2363, 7, 10, 0, 0, 2363, 302, 1, 0, 0, 0, 2364, 2365, 7, 18, 0, 0, 2365, 2366, 7, 10, 0, 0, 2366, 2367, 7, 23, 0, 0, 2367, 2368, 7, 17, 0, 0, 2368, 2369, 7, 7, 0, 0, 2369, 304, 1, 0, 0, 0, 2370, 2371, 7, 18, 0, 0, 2371, 2372, 7, 8, 0, 0, 2372, 306, 1, 0, 0, 0, 2373, 2374, 7, 14, 0, 0, 2374, 2375, 7, 5, 0, 0, 2375, 2376, 7, 14, 0, 0, 2376, 2377, 7, 20, 0, 0, 2377, 2378, 7, 10, 0, 0, 2378, 308, 1, 0, 0, 0, 2379, 2380, 7, 14, 0, 0, 2380, 2381, 7, 5, 0, 0, 2381, 2382, 7, 6, 0, 0, 2382, 2383, 7, 6, 0, 0, 2383, 2384, 7, 10, 0, 0, 2384, 2385, 7, 12, 0, 0, 2385, 310, 1, 0, 0, 0, 2386, 2387, 7, 14, 0, 0, 2387, 2388, 7, 5, 0, 0, 2388, 2389, 7, 9, 0, 0, 2389, 2390, 7, 14, 0, 0, 2390, 2391, 7, 5, 0, 0, 2391, 2392, 7, 12, 0, 0, 2392, 2393, 7, 10, 0, 0, 2393, 312, 1, 0, 0, 0, 2394, 2395, 7, 14, 0, 0, 2395, 2396, 7, 5, 0, 0, 2396, 2397, 7, 9, 0, 0, 2397, 2398, 7, 14, 0, 0, 2398, 2399, 7, 5, 0, 0, 2399, 2400, 7, 12, 0, 0, 2400, 2401, 7, 10, 0, 0, 2401, 2402, 7, 12, 0, 0, 2402, 314, 1, 0, 0, 0, 2403, 2404, 7, 14, 0, 0, 2404, 2405, 7, 5, 0, 0, 2405, 2406, 7, 16, 0, 0, 2406, 2407, 7, 5, 0, 0, 2407, 2408, 7, 6, 0, 0, 2408, 2409, 7, 19, 0, 0, 2409, 2410, 7, 23, 0, 0, 2410, 316, 1, 0, 0, 0, 2411, 2412, 7, 14, 0, 0, 2412, 2413, 7, 20, 0, 0, 2413, 2414, 7, 5, 0, 0, 2414, 2415, 7, 17, 0, 0, 2415, 2416, 7, 7, 0, 0, 2416, 318, 1, 0, 0, 0, 2417, 2418, 7, 14, 0, 0, 2418, 2419, 7, 20, 0, 0, 2419, 2420, 7, 5, 0, 0, 2420, 2421, 7, 13, 0, 0, 2421, 2422, 7, 5, 0, 0, 2422, 2423, 7, 14, 0, 0, 2423, 2424, 7, 16, 0, 0, 2424, 2425, 7, 10, 0, 0, 2425, 2426, 7, 13, 0, 0, 2426, 2427, 7, 17, 0, 0, 2427, 2428, 7, 9, 0, 0, 2428, 2429, 7, 16, 0, 0, 2429, 2430, 7, 17, 0, 0, 2430, 2431, 7, 14, 0, 0, 2431, 2432, 7, 9, 0, 0, 2432, 320, 1, 0, 0, 0, 2433, 2434, 7, 14, 0, 0, 2434, 2435, 7, 20, 0, 0, 2435, 2436, 7, 10, 0, 0, 2436, 2437, 7, 14, 0, 0, 2437, 2438, 7, 21, 0, 0, 2438, 2439, 7, 24, 0, 0, 2439, 2440, 7, 19, 0, 0, 2440, 2441, 7, 17, 0, 0, 2441, 2442, 7, 7, 0, 0, 2442, 2443, 7, 16, 0, 0, 2443, 322, 1, 0, 0, 0, 2444, 2445, 7, 14, 0, 0, 2445, 2446, 7, 6, 0, 0, 2446, 2447, 7, 5, 0, 0, 2447, 2448, 7, 9, 0, 0, 2448, 2449, 7, 9, 0, 0, 2449, 324, 1, 0, 0, 0, 2450, 2451, 7, 14, 0, 0, 2451, 2452, 7, 6, 0, 0, 2452, 2453, 7, 19, 0, 0, 2453, 2454, 7, 9, 0, 0, 2454, 2455, 7, 10, 0, 0, 2455, 326, 1, 0, 0, 0, 2456, 2457, 7, 14, 0, 0, 2457, 2458, 7, 6, 0, 0, 2458, 2459, 7, 22, 0, 0, 2459, 2460, 7, 9, 0, 0, 2460, 2461, 7, 16, 0, 0, 2461, 2462, 7, 10, 0, 0, 2462, 2463, 7, 13, 0, 0, 2463, 328, 1, 0, 0, 0, 2464, 2465, 7, 14, 0, 0, 2465, 2466, 7, 19, 0, 0, 2466, 2467, 7, 15, 0, 0, 2467, 2468, 7, 15, 0, 0, 2468, 2469, 7, 10, 0, 0, 2469, 2470, 7, 7, 0, 0, 2470, 2471, 7, 16, 0, 0, 2471, 330, 1, 0, 0, 0, 2472, 2473, 7, 14, 0, 0, 2473, 2474, 7, 19, 0, 0, 2474, 2475, 7, 15, 0, 0, 2475, 2476, 7, 15, 0, 0, 2476, 2477, 7, 10, 0, 0, 2477, 2478, 7, 7, 0, 0, 2478, 2479, 7, 16, 0, 0, 2479, 2480, 7, 9, 0, 0, 2480, 332, 1, 0, 0, 0, 2481, 2482, 7, 14, 0, 0, 2482, 2483, 7, 19, 0, 0, 2483, 2484, 7, 15, 0, 0, 2484, 2485, 7, 15, 0, 0, 2485, 2486, 7, 17, 0, 0, 2486, 2487, 7, 16, 0, 0, 2487, 334, 1, 0, 0, 0, 2488, 2489, 7, 14, 0, 0, 2489, 2490, 7, 19, 0, 0, 2490, 2491, 7, 15, 0, 0, 2491, 2492, 7, 15, 0, 0, 2492, 2493, 7, 17, 0, 0, 2493, 2494, 7, 16, 0, 0, 2494, 2495, 7, 16, 0, 0, 2495, 2496, 7, 10, 0, 0, 2496, 2497, 7, 12, 0, 0, 2497, 336, 1, 0, 0, 0, 2498, 2499, 7, 14, 0, 0, 2499, 2500, 7, 19, 0, 0, 2500, 2501, 7, 7, 0, 0, 2501, 2502, 7, 25, 0, 0, 2502, 2503, 7, 17, 0, 0, 2503, 2504, 7, 23, 0, 0, 2504, 2505, 7, 22, 0, 0, 2505, 2506, 7, 13, 0, 0, 2506, 2507, 7, 5, 0, 0, 2507, 2508, 7, 16, 0, 0, 2508, 2509, 7, 17, 0, 0, 2509, 2510, 7, 19, 0, 0, 2510, 2511, 7, 7, 0, 0, 2511, 338, 1, 0, 0, 0, 2512, 2513, 7, 14, 0, 0, 2513, 2514, 7, 19, 0, 0, 2514, 2515, 7, 7, 0, 0, 2515, 2516, 7, 7, 0, 0, 2516, 2517, 7, 10, 0, 0, 2517, 2518, 7, 14, 0, 0, 2518, 2519, 7, 16, 0, 0, 2519, 2520, 7, 17, 0, 0, 2520, 2521, 7, 19, 0, 0, 2521, 2522, 7, 7, 0, 0, 2522, 340, 1, 0, 0, 0, 2523, 2524, 7, 14, 0, 0, 2524, 2525, 7, 19, 0, 0, 2525, 2526, 7, 7, 0, 0, 2526, 2527, 7, 9, 0, 0, 2527, 2528, 7, 16, 0, 0, 2528, 2529, 7, 13, 0, 0, 2529, 2530, 7, 5, 0, 0, 2530, 2531, 7, 17, 0, 0, 2531, 2532, 7, 7, 0, 0, 2532, 2533, 7, 16, 0, 0, 2533, 2534, 7, 9, 0, 0, 2534, 342, 1, 0, 0, 0, 2535, 2536, 7, 14, 0, 0, 2536, 2537, 7, 19, 0, 0, 2537, 2538, 7, 7, 0, 0, 2538, 2539, 7, 16, 0, 0, 2539, 2540, 7, 10, 0, 0, 2540, 2541, 7, 7, 0, 0, 2541, 2542, 7, 16, 0, 0, 2542, 344, 1, 0, 0, 0, 2543, 2544, 7, 14, 0, 0, 2544, 2545, 7, 19, 0, 0, 2545, 2546, 7, 7, 0, 0, 2546, 2547, 7, 16, 0, 0, 2547, 2548, 7, 17, 0, 0, 2548, 2549, 7, 7, 0, 0, 2549, 2550, 7, 22, 0, 0, 2550, 2551, 7, 10, 0, 0, 2551, 346, 1, 0, 0, 0, 2552, 2553, 7, 14, 0, 0, 2553, 2554, 7, 19, 0, 0, 2554, 2555, 7, 7, 0, 0, 2555, 2556, 7, 27, 0, 0, 2556, 2557, 7, 10, 0, 0, 2557, 2558, 7, 13, 0, 0, 2558, 2559, 7, 9, 0, 0, 2559, 2560, 7, 17, 0, 0, 2560, 2561, 7, 19, 0, 0, 2561, 2562, 7, 7, 0, 0, 2562, 348, 1, 0, 0, 0, 2563, 2564, 7, 14, 0, 0, 2564, 2565, 7, 19, 0, 0, 2565, 2566, 7, 24, 0, 0, 2566, 2567, 7, 8, 0, 0, 2567, 350, 1, 0, 0, 0, 2568, 2569, 7, 14, 0, 0, 2569, 2570, 7, 19, 0, 0, 2570, 2571, 7, 9, 0, 0, 2571, 2572, 7, 16, 0, 0, 2572, 352, 1, 0, 0, 0, 2573, 2574, 7, 14, 0, 0, 2574, 2575, 7, 9, 0, 0, 2575, 2576, 7, 27, 0, 0, 2576, 354, 1, 0, 0, 0, 2577, 2578, 7, 14, 0, 0, 2578, 2579, 7, 22, 0, 0, 2579, 2580, 7, 13, 0, 0, 2580, 2581, 7, 9, 0, 0, 2581, 2582, 7, 19, 0, 0, 2582, 2583, 7, 13, 0, 0, 2583, 356, 1, 0, 0, 0, 2584, 2585, 7, 14, 0, 0, 2585, 2586, 7, 8, 0, 0, 2586, 2587, 7, 14, 0, 0, 2587, 2588, 7, 6, 0, 0, 2588, 2589, 7, 10, 0, 0, 2589, 358, 1, 0, 0, 0, 2590, 2591, 7, 12, 0, 0, 2591, 2592, 7, 5, 0, 0, 2592, 2593, 7, 16, 0, 0, 2593, 2594, 7, 5, 0, 0, 2594, 360, 1, 0, 0, 0, 2595, 2596, 7, 12, 0, 0, 2596, 2597, 7, 5, 0, 0, 2597, 2598, 7, 16, 0, 0, 2598, 2599, 7, 5, 0, 0, 2599, 2600, 7, 18, 0, 0, 2600, 2601, 7, 5, 0, 0, 2601, 2602, 7, 9, 0, 0, 2602, 2603, 7, 10, 0, 0, 2603, 362, 1, 0, 0, 0, 2604, 2605, 7, 12, 0, 0, 2605, 2606, 7, 5, 0, 0, 2606, 2607, 7, 8, 0, 0, 2607, 364, 1, 0, 0, 0, 2608, 2609, 7, 12, 0, 0, 2609, 2610, 7, 10, 0, 0, 2610, 2611, 7, 5, 0, 0, 2611, 2612, 7, 6, 0, 0, 2612, 2613, 7, 6, 0, 0, 2613, 2614, 7, 19, 0, 0, 2614, 2615, 7, 14, 0, 0, 2615, 2616, 7, 5, 0, 0, 2616, 2617, 7, 16, 0, 0, 2617, 2618, 7, 10, 0, 0, 2618, 366, 1, 0, 0, 0, 2619, 2620, 7, 12, 0, 0, 2620, 2621, 7, 10, 0, 0, 2621, 2622, 7, 14, 0, 0, 2622, 2623, 7, 6, 0, 0, 2623, 2624, 7, 5, 0, 0, 2624, 2625, 7, 13, 0, 0, 2625, 2626, 7, 10, 0, 0, 2626, 368, 1, 0, 0, 0, 2627, 2628, 7, 12, 0, 0, 2628, 2629, 7, 10, 0, 0, 2629, 2630, 7, 25, 0, 0, 2630, 2631, 7, 5, 0, 0, 2631, 2632, 7, 22, 0, 0, 2632, 2633, 7, 6, 0, 0, 2633, 2634, 7, 16, 0, 0, 2634, 2635, 7, 9, 0, 0, 2635, 370, 1, 0, 0, 0, 2636, 2637, 7, 12, 0, 0, 2637, 2638, 7, 10, 0, 0, 2638, 2639, 7, 25, 0, 0, 2639, 2640, 7, 10, 0, 0, 2640, 2641, 7, 13, 0, 0, 2641, 2642, 7, 13, 0, 0, 2642, 2643, 7, 10, 0, 0, 2643, 2644, 7, 12, 0, 0, 2644, 372, 1, 0, 0, 0, 2645, 2646, 7, 12, 0, 0, 2646, 2647, 7, 10, 0, 0, 2647, 2648, 7, 25, 0, 0, 2648, 2649, 7, 17, 0, 0, 2649, 2650, 7, 7, 0, 0, 2650, 2651, 7, 10, 0, 0, 2651, 2652, 7, 13, 0, 0, 2652, 374, 1, 0, 0, 0, 2653, 2654, 7, 12, 0, 0, 2654, 2655, 7, 10, 0, 0, 2655, 2656, 7, 6, 0, 0, 2656, 2657, 7, 10, 0, 0, 2657, 2658, 7, 16, 0, 0, 2658, 2659, 7, 10, 0, 0, 2659, 376, 1, 0, 0, 0, 2660, 2661, 7, 12, 0, 0, 2661, 2662, 7, 10, 0, 0, 2662, 2663, 7, 6, 0, 0, 2663, 2664, 7, 17, 0, 0, 2664, 2665, 7, 15, 0, 0, 2665, 2666, 7, 17, 0, 0, 2666, 2667, 7, 16, 0, 0, 2667, 2668, 7, 10, 0, 0, 2668, 2669, 7, 13, 0, 0, 2669, 378, 1, 0, 0, 0, 2670, 2671, 7, 12, 0, 0, 2671, 2672, 7, 10, 0, 0, 2672, 2673, 7, 6, 0, 0, 2673, 2674, 7, 17, 0, 0, 2674, 2675, 7, 15, 0, 0, 2675, 2676, 7, 17, 0, 0, 2676, 2677, 7, 16, 0, 0, 2677, 2678, 7, 10, 0, 0, 2678, 2679, 7, 13, 0, 0, 2679, 2680, 7, 9, 0, 0, 2680, 380, 1, 0, 0, 0, 2681, 2682, 7, 12, 0, 0, 2682, 2683, 7, 17, 0, 0, 2683, 2684, 7, 14, 0, 0, 2684, 2685, 7, 16, 0, 0, 2685, 2686, 7, 17, 0, 0, 2686, 2687, 7, 19, 0, 0, 2687, 2688, 7, 7, 0, 0, 2688, 2689, 7, 5, 0, 0, 2689, 2690, 7, 13, 0, 0, 2690, 2691, 7, 8, 0, 0, 2691, 382, 1, 0, 0, 0, 2692, 2693, 7, 12, 0, 0, 2693, 2694, 7, 17, 0, 0, 2694, 2695, 7, 9, 0, 0, 2695, 2696, 7, 5, 0, 0, 2696, 2697, 7, 18, 0, 0, 2697, 2698, 7, 6, 0, 0, 2698, 2699, 7, 10, 0, 0, 2699, 384, 1, 0, 0, 0, 2700, 2701, 7, 12, 0, 0, 2701, 2702, 7, 17, 0, 0, 2702, 2703, 7, 9, 0, 0, 2703, 2704, 7, 14, 0, 0, 2704, 2705, 7, 5, 0, 0, 2705, 2706, 7, 13, 0, 0, 2706, 2707, 7, 12, 0, 0, 2707, 386, 1, 0, 0, 0, 2708, 2709, 7, 12, 0, 0, 2709, 2710, 7, 19, 0, 0, 2710, 2711, 7, 14, 0, 0, 2711, 2712, 7, 22, 0, 0, 2712, 2713, 7, 15, 0, 0, 2713, 2714, 7, 10, 0, 0, 2714, 2715, 7, 7, 0, 0, 2715, 2716, 7, 16, 0, 0, 2716, 388, 1, 0, 0, 0, 2717, 2718, 7, 12, 0, 0, 2718, 2719, 7, 19, 0, 0, 2719, 2720, 7, 15, 0, 0, 2720, 2721, 7, 5, 0, 0, 2721, 2722, 7, 17, 0, 0, 2722, 2723, 7, 7, 0, 0, 2723, 390, 1, 0, 0, 0, 2724, 2725, 7, 12, 0, 0, 2725, 2726, 7, 19, 0, 0, 2726, 2727, 7, 22, 0, 0, 2727, 2728, 7, 18, 0, 0, 2728, 2729, 7, 6, 0, 0, 2729, 2730, 7, 10, 0, 0, 2730, 392, 1, 0, 0, 0, 2731, 2732, 7, 12, 0, 0, 2732, 2733, 7, 13, 0, 0, 2733, 2734, 7, 19, 0, 0, 2734, 2735, 7, 24, 0, 0, 2735, 394, 1, 0, 0, 0, 2736, 2737, 7, 10, 0, 0, 2737, 2738, 7, 5, 0, 0, 2738, 2739, 7, 14, 0, 0, 2739, 2740, 7, 20, 0, 0, 2740, 396, 1, 0, 0, 0, 2741, 2742, 7, 10, 0, 0, 2742, 2743, 7, 7, 0, 0, 2743, 2744, 7, 5, 0, 0, 2744, 2745, 7, 18, 0, 0, 2745, 2746, 7, 6, 0, 0, 2746, 2747, 7, 10, 0, 0, 2747, 398, 1, 0, 0, 0, 2748, 2749, 7, 10, 0, 0, 2749, 2750, 7, 7, 0, 0, 2750, 2751, 7, 14, 0, 0, 2751, 2752, 7, 19, 0, 0, 2752, 2753, 7, 12, 0, 0, 2753, 2754, 7, 17, 0, 0, 2754, 2755, 7, 7, 0, 0, 2755, 2756, 7, 23, 0, 0, 2756, 400, 1, 0, 0, 0, 2757, 2758, 7, 10, 0, 0, 2758, 2759, 7, 7, 0, 0, 2759, 2760, 7, 14, 0, 0, 2760, 2761, 7, 13, 0, 0, 2761, 2762, 7, 8, 0, 0, 2762, 2763, 7, 24, 0, 0, 2763, 2764, 7, 16, 0, 0, 2764, 2765, 7, 10, 0, 0, 2765, 2766, 7, 12, 0, 0, 2766, 402, 1, 0, 0, 0, 2767, 2768, 7, 10, 0, 0, 2768, 2769, 7, 7, 0, 0, 2769, 2770, 7, 22, 0, 0, 2770, 2771, 7, 15, 0, 0, 2771, 404, 1, 0, 0, 0, 2772, 2773, 7, 10, 0, 0, 2773, 2774, 7, 9, 0, 0, 2774, 2775, 7, 14, 0, 0, 2775, 2776, 7, 5, 0, 0, 2776, 2777, 7, 24, 0, 0, 2777, 2778, 7, 10, 0, 0, 2778, 406, 1, 0, 0, 0, 2779, 2780, 7, 10, 0, 0, 2780, 2781, 7, 27, 0, 0, 2781, 2782, 7, 10, 0, 0, 2782, 2783, 7, 7, 0, 0, 2783, 2784, 7, 16, 0, 0, 2784, 408, 1, 0, 0, 0, 2785, 2786, 7, 10, 0, 0, 2786, 2787, 7, 26, 0, 0, 2787, 2788, 7, 14, 0, 0, 2788, 2789, 7, 6, 0, 0, 2789, 2790, 7, 22, 0, 0, 2790, 2791, 7, 12, 0, 0, 2791, 2792, 7, 10, 0, 0, 2792, 410, 1, 0, 0, 0, 2793, 2794, 7, 10, 0, 0, 2794, 2795, 7, 26, 0, 0, 2795, 2796, 7, 14, 0, 0, 2796, 2797, 7, 6, 0, 0, 2797, 2798, 7, 22, 0, 0, 2798, 2799, 7, 12, 0, 0, 2799, 2800, 7, 17, 0, 0, 2800, 2801, 7, 7, 0, 0, 2801, 2802, 7, 23, 0, 0, 2802, 412, 1, 0, 0, 0, 2803, 2804, 7, 10, 0, 0, 2804, 2805, 7, 26, 0, 0, 2805, 2806, 7, 14, 0, 0, 2806, 2807, 7, 6, 0, 0, 2807, 2808, 7, 22, 0, 0, 2808, 2809, 7, 9, 0, 0, 2809, 2810, 7, 17, 0, 0, 2810, 2811, 7, 27, 0, 0, 2811, 2812, 7, 10, 0, 0, 2812, 414, 1, 0, 0, 0, 2813, 2814, 7, 10, 0, 0, 2814, 2815, 7, 26, 0, 0, 2815, 2816, 7, 10, 0, 0, 2816, 2817, 7, 14, 0, 0, 2817, 2818, 7, 22, 0, 0, 2818, 2819, 7, 16, 0, 0, 2819, 2820, 7, 10, 0, 0, 2820, 416, 1, 0, 0, 0, 2821, 2822, 7, 10, 0, 0, 2822, 2823, 7, 26, 0, 0, 2823, 2824, 7, 24, 0, 0, 2824, 2825, 7, 6, 0, 0, 2825, 2826, 7, 5, 0, 0, 2826, 2827, 7, 17, 0, 0, 2827, 2828, 7, 7, 0, 0, 2828, 418, 1, 0, 0, 0, 2829, 2830, 7, 10, 0, 0, 2830, 2831, 7, 26, 0, 0, 2831, 2832, 7, 16, 0, 0, 2832, 2833, 7, 10, 0, 0, 2833, 2834, 7, 7, 0, 0, 2834, 2835, 7, 9, 0, 0, 2835, 2836, 7, 17, 0, 0, 2836, 2837, 7, 19, 0, 0, 2837, 2838, 7, 7, 0, 0, 2838, 420, 1, 0, 0, 0, 2839, 2840, 7, 10, 0, 0, 2840, 2841, 7, 26, 0, 0, 2841, 2842, 7, 16, 0, 0, 2842, 2843, 7, 10, 0, 0, 2843, 2844, 7, 13, 0, 0, 2844, 2845, 7, 7, 0, 0, 2845, 2846, 7, 5, 0, 0, 2846, 2847, 7, 6, 0, 0, 2847, 422, 1, 0, 0, 0, 2848, 2849, 7, 25, 0, 0, 2849, 2850, 7, 5, 0, 0, 2850, 2851, 7, 15, 0, 0, 2851, 2852, 7, 17, 0, 0, 2852, 2853, 7, 6, 0, 0, 2853, 2854, 7, 8, 0, 0, 2854, 424, 1, 0, 0, 0, 2855, 2856, 7, 25, 0, 0, 2856, 2857, 7, 17, 0, 0, 2857, 2858, 7, 13, 0, 0, 2858, 2859, 7, 9, 0, 0, 2859, 2860, 7, 16, 0, 0, 2860, 426, 1, 0, 0, 0, 2861, 2862, 7, 25, 0, 0, 2862, 2863, 7, 19, 0, 0, 2863, 2864, 7, 6, 0, 0, 2864, 2865, 7, 6, 0, 0, 2865, 2866, 7, 19, 0, 0, 2866, 2867, 7, 29, 0, 0, 2867, 2868, 7, 17, 0, 0, 2868, 2869, 7, 7, 0, 0, 2869, 2870, 7, 23, 0, 0, 2870, 428, 1, 0, 0, 0, 2871, 2872, 7, 25, 0, 0, 2872, 2873, 7, 19, 0, 0, 2873, 2874, 7, 13, 0, 0, 2874, 2875, 7, 14, 0, 0, 2875, 2876, 7, 10, 0, 0, 2876, 430, 1, 0, 0, 0, 2877, 2878, 7, 25, 0, 0, 2878, 2879, 7, 19, 0, 0, 2879, 2880, 7, 13, 0, 0, 2880, 2881, 7, 29, 0, 0, 2881, 2882, 7, 5, 0, 0, 2882, 2883, 7, 13, 0, 0, 2883, 2884, 7, 12, 0, 0, 2884, 432, 1, 0, 0, 0, 2885, 2886, 7, 25, 0, 0, 2886, 2887, 7, 22, 0, 0, 2887, 2888, 7, 7, 0, 0, 2888, 2889, 7, 14, 0, 0, 2889, 2890, 7, 16, 0, 0, 2890, 2891, 7, 17, 0, 0, 2891, 2892, 7, 19, 0, 0, 2892, 2893, 7, 7, 0, 0, 2893, 434, 1, 0, 0, 0, 2894, 2895, 7, 25, 0, 0, 2895, 2896, 7, 22, 0, 0, 2896, 2897, 7, 7, 0, 0, 2897, 2898, 7, 14, 0, 0, 2898, 2899, 7, 16, 0, 0, 2899, 2900, 7, 17, 0, 0, 2900, 2901, 7, 19, 0, 0, 2901, 2902, 7, 7, 0, 0, 2902, 2903, 7, 9, 0, 0, 2903, 436, 1, 0, 0, 0, 2904, 2905, 7, 23, 0, 0, 2905, 2906, 7, 6, 0, 0, 2906, 2907, 7, 19, 0, 0, 2907, 2908, 7, 18, 0, 0, 2908, 2909, 7, 5, 0, 0, 2909, 2910, 7, 6, 0, 0, 2910, 438, 1, 0, 0, 0, 2911, 2912, 7, 23, 0, 0, 2912, 2913, 7, 13, 0, 0, 2913, 2914, 7, 5, 0, 0, 2914, 2915, 7, 7, 0, 0, 2915, 2916, 7, 16, 0, 0, 2916, 2917, 7, 10, 0, 0, 2917, 2918, 7, 12, 0, 0, 2918, 440, 1, 0, 0, 0, 2919, 2920, 7, 20, 0, 0, 2920, 2921, 7, 5, 0, 0, 2921, 2922, 7, 7, 0, 0, 2922, 2923, 7, 12, 0, 0, 2923, 2924, 7, 6, 0, 0, 2924, 2925, 7, 10, 0, 0, 2925, 2926, 7, 13, 0, 0, 2926, 442, 1, 0, 0, 0, 2927, 2928, 7, 20, 0, 0, 2928, 2929, 7, 10, 0, 0, 2929, 2930, 7, 5, 0, 0, 2930, 2931, 7, 12, 0, 0, 2931, 2932, 7, 10, 0, 0, 2932, 2933, 7, 13, 0, 0, 2933, 444, 1, 0, 0, 0, 2934, 2935, 7, 20, 0, 0, 2935, 2936, 7, 19, 0, 0, 2936, 2937, 7, 6, 0, 0, 2937, 2938, 7, 12, 0, 0, 2938, 446, 1, 0, 0, 0, 2939, 2940, 7, 20, 0, 0, 2940, 2941, 7, 19, 0, 0, 2941, 2942, 7, 22, 0, 0, 2942, 2943, 7, 13, 0, 0, 2943, 448, 1, 0, 0, 0, 2944, 2945, 7, 17, 0, 0, 2945, 2946, 7, 12, 0, 0, 2946, 2947, 7, 10, 0, 0, 2947, 2948, 7, 7, 0, 0, 2948, 2949, 7, 16, 0, 0, 2949, 2950, 7, 17, 0, 0, 2950, 2951, 7, 16, 0, 0, 2951, 2952, 7, 8, 0, 0, 2952, 450, 1, 0, 0, 0, 2953, 2954, 7, 17, 0, 0, 2954, 2955, 7, 25, 0, 0, 2955, 452, 1, 0, 0, 0, 2956, 2957, 7, 17, 0, 0, 2957, 2958, 7, 15, 0, 0, 2958, 2959, 7, 15, 0, 0, 2959, 2960, 7, 10, 0, 0, 2960, 2961, 7, 12, 0, 0, 2961, 2962, 7, 17, 0, 0, 2962, 2963, 7, 5, 0, 0, 2963, 2964, 7, 16, 0, 0, 2964, 2965, 7, 10, 0, 0, 2965, 454, 1, 0, 0, 0, 2966, 2967, 7, 17, 0, 0, 2967, 2968, 7, 15, 0, 0, 2968, 2969, 7, 15, 0, 0, 2969, 2970, 7, 22, 0, 0, 2970, 2971, 7, 16, 0, 0, 2971, 2972, 7, 5, 0, 0, 2972, 2973, 7, 18, 0, 0, 2973, 2974, 7, 6, 0, 0, 2974, 2975, 7, 10, 0, 0, 2975, 456, 1, 0, 0, 0, 2976, 2977, 7, 17, 0, 0, 2977, 2978, 7, 15, 0, 0, 2978, 2979, 7, 24, 0, 0, 2979, 2980, 7, 6, 0, 0, 2980, 2981, 7, 17, 0, 0, 2981, 2982, 7, 14, 0, 0, 2982, 2983, 7, 17, 0, 0, 2983, 2984, 7, 16, 0, 0, 2984, 458, 1, 0, 0, 0, 2985, 2986, 7, 17, 0, 0, 2986, 2987, 7, 7, 0, 0, 2987, 2988, 7, 14, 0, 0, 2988, 2989, 7, 6, 0, 0, 2989, 2990, 7, 22, 0, 0, 2990, 2991, 7, 12, 0, 0, 2991, 2992, 7, 17, 0, 0, 2992, 2993, 7, 7, 0, 0, 2993, 2994, 7, 23, 0, 0, 2994, 460, 1, 0, 0, 0, 2995, 2996, 7, 17, 0, 0, 2996, 2997, 7, 7, 0, 0, 2997, 2998, 7, 14, 0, 0, 2998, 2999, 7, 13, 0, 0, 2999, 3000, 7, 10, 0, 0, 3000, 3001, 7, 15, 0, 0, 3001, 3002, 7, 10, 0, 0, 3002, 3003, 7, 7, 0, 0, 3003, 3004, 7, 16, 0, 0, 3004, 462, 1, 0, 0, 0, 3005, 3006, 7, 17, 0, 0, 3006, 3007, 7, 7, 0, 0, 3007, 3008, 7, 12, 0, 0, 3008, 3009, 7, 10, 0, 0, 3009, 3010, 7, 26, 0, 0, 3010, 464, 1, 0, 0, 0, 3011, 3012, 7, 17, 0, 0, 3012, 3013, 7, 7, 0, 0, 3013, 3014, 7, 12, 0, 0, 3014, 3015, 7, 10, 0, 0, 3015, 3016, 7, 26, 0, 0, 3016, 3017, 7, 10, 0, 0, 3017, 3018, 7, 9, 0, 0, 3018, 466, 1, 0, 0, 0, 3019, 3020, 7, 17, 0, 0, 3020, 3021, 7, 7, 0, 0, 3021, 3022, 7, 20, 0, 0, 3022, 3023, 7, 10, 0, 0, 3023, 3024, 7, 13, 0, 0, 3024, 3025, 7, 17, 0, 0, 3025, 3026, 7, 16, 0, 0, 3026, 468, 1, 0, 0, 0, 3027, 3028, 7, 17, 0, 0, 3028, 3029, 7, 7, 0, 0, 3029, 3030, 7, 20, 0, 0, 3030, 3031, 7, 10, 0, 0, 3031, 3032, 7, 13, 0, 0, 3032, 3033, 7, 17, 0, 0, 3033, 3034, 7, 16, 0, 0, 3034, 3035, 7, 9, 0, 0, 3035, 470, 1, 0, 0, 0, 3036, 3037, 7, 17, 0, 0, 3037, 3038, 7, 7, 0, 0, 3038, 3039, 7, 6, 0, 0, 3039, 3040, 7, 17, 0, 0, 3040, 3041, 7, 7, 0, 0, 3041, 3042, 7, 10, 0, 0, 3042, 472, 1, 0, 0, 0, 3043, 3044, 7, 17, 0, 0, 3044, 3045, 7, 7, 0, 0, 3045, 3046, 7, 9, 0, 0, 3046, 3047, 7, 10, 0, 0, 3047, 3048, 7, 7, 0, 0, 3048, 3049, 7, 9, 0, 0, 3049, 3050, 7, 17, 0, 0, 3050, 3051, 7, 16, 0, 0, 3051, 3052, 7, 17, 0, 0, 3052, 3053, 7, 27, 0, 0, 3053, 3054, 7, 10, 0, 0, 3054, 474, 1, 0, 0, 0, 3055, 3056, 7, 17, 0, 0, 3056, 3057, 7, 7, 0, 0, 3057, 3058, 7, 9, 0, 0, 3058, 3059, 7, 10, 0, 0, 3059, 3060, 7, 13, 0, 0, 3060, 3061, 7, 16, 0, 0, 3061, 476, 1, 0, 0, 0, 3062, 3063, 7, 17, 0, 0, 3063, 3064, 7, 7, 0, 0, 3064, 3065, 7, 9, 0, 0, 3065, 3066, 7, 16, 0, 0, 3066, 3067, 7, 10, 0, 0, 3067, 3068, 7, 5, 0, 0, 3068, 3069, 7, 12, 0, 0, 3069, 478, 1, 0, 0, 0, 3070, 3071, 7, 17, 0, 0, 3071, 3072, 7, 7, 0, 0, 3072, 3073, 7, 27, 0, 0, 3073, 3074, 7, 19, 0, 0, 3074, 3075, 7, 21, 0, 0, 3075, 3076, 7, 10, 0, 0, 3076, 3077, 7, 13, 0, 0, 3077, 480, 1, 0, 0, 0, 3078, 3079, 7, 17, 0, 0, 3079, 3080, 7, 9, 0, 0, 3080, 3081, 7, 19, 0, 0, 3081, 3082, 7, 6, 0, 0, 3082, 3083, 7, 5, 0, 0, 3083, 3084, 7, 16, 0, 0, 3084, 3085, 7, 17, 0, 0, 3085, 3086, 7, 19, 0, 0, 3086, 3087, 7, 7, 0, 0, 3087, 482, 1, 0, 0, 0, 3088, 3089, 7, 21, 0, 0, 3089, 3090, 7, 10, 0, 0, 3090, 3091, 7, 8, 0, 0, 3091, 484, 1, 0, 0, 0, 3092, 3093, 7, 6, 0, 0, 3093, 3094, 7, 5, 0, 0, 3094, 3095, 7, 18, 0, 0, 3095, 3096, 7, 10, 0, 0, 3096, 3097, 7, 6, 0, 0, 3097, 486, 1, 0, 0, 0, 3098, 3099, 7, 6, 0, 0, 3099, 3100, 7, 5, 0, 0, 3100, 3101, 7, 7, 0, 0, 3101, 3102, 7, 23, 0, 0, 3102, 3103, 7, 22, 0, 0, 3103, 3104, 7, 5, 0, 0, 3104, 3105, 7, 23, 0, 0, 3105, 3106, 7, 10, 0, 0, 3106, 488, 1, 0, 0, 0, 3107, 3108, 7, 6, 0, 0, 3108, 3109, 7, 5, 0, 0, 3109, 3110, 7, 13, 0, 0, 3110, 3111, 7, 23, 0, 0, 3111, 3112, 7, 10, 0, 0, 3112, 490, 1, 0, 0, 0, 3113, 3114, 7, 6, 0, 0, 3114, 3115, 7, 5, 0, 0, 3115, 3116, 7, 9, 0, 0, 3116, 3117, 7, 16, 0, 0, 3117, 492, 1, 0, 0, 0, 3118, 3119, 7, 6, 0, 0, 3119, 3120, 7, 10, 0, 0, 3120, 3121, 7, 5, 0, 0, 3121, 3122, 7, 21, 0, 0, 3122, 3123, 7, 24, 0, 0, 3123, 3124, 7, 13, 0, 0, 3124, 3125, 7, 19, 0, 0, 3125, 3126, 7, 19, 0, 0, 3126, 3127, 7, 25, 0, 0, 3127, 494, 1, 0, 0, 0, 3128, 3129, 7, 6, 0, 0, 3129, 3130, 7, 10, 0, 0, 3130, 3131, 7, 27, 0, 0, 3131, 3132, 7, 10, 0, 0, 3132, 3133, 7, 6, 0, 0, 3133, 496, 1, 0, 0, 0, 3134, 3135, 7, 6, 0, 0, 3135, 3136, 7, 17, 0, 0, 3136, 3137, 7, 9, 0, 0, 3137, 3138, 7, 16, 0, 0, 3138, 3139, 7, 10, 0, 0, 3139, 3140, 7, 7, 0, 0, 3140, 498, 1, 0, 0, 0, 3141, 3142, 7, 6, 0, 0, 3142, 3143, 7, 19, 0, 0, 3143, 3144, 7, 5, 0, 0, 3144, 3145, 7, 12, 0, 0, 3145, 500, 1, 0, 0, 0, 3146, 3147, 7, 6, 0, 0, 3147, 3148, 7, 19, 0, 0, 3148, 3149, 7, 14, 0, 0, 3149, 3150, 7, 5, 0, 0, 3150, 3151, 7, 6, 0, 0, 3151, 502, 1, 0, 0, 0, 3152, 3153, 7, 6, 0, 0, 3153, 3154, 7, 19, 0, 0, 3154, 3155, 7, 14, 0, 0, 3155, 3156, 7, 5, 0, 0, 3156, 3157, 7, 16, 0, 0, 3157, 3158, 7, 17, 0, 0, 3158, 3159, 7, 19, 0, 0, 3159, 3160, 7, 7, 0, 0, 3160, 504, 1, 0, 0, 0, 3161, 3162, 7, 6, 0, 0, 3162, 3163, 7, 19, 0, 0, 3163, 3164, 7, 14, 0, 0, 3164, 3165, 7, 21, 0, 0, 3165, 506, 1, 0, 0, 0, 3166, 3167, 7, 15, 0, 0, 3167, 3168, 7, 5, 0, 0, 3168, 3169, 7, 24, 0, 0, 3169, 3170, 7, 24, 0, 0, 3170, 3171, 7, 17, 0, 0, 3171, 3172, 7, 7, 0, 0, 3172, 3173, 7, 23, 0, 0, 3173, 508, 1, 0, 0, 0, 3174, 3175, 7, 15, 0, 0, 3175, 3176, 7, 5, 0, 0, 3176, 3177, 7, 16, 0, 0, 3177, 3178, 7, 14, 0, 0, 3178, 3179, 7, 20, 0, 0, 3179, 510, 1, 0, 0, 0, 3180, 3181, 7, 15, 0, 0, 3181, 3182, 7, 5, 0, 0, 3182, 3183, 7, 16, 0, 0, 3183, 3184, 7, 14, 0, 0, 3184, 3185, 7, 20, 0, 0, 3185, 3186, 7, 10, 0, 0, 3186, 3187, 7, 12, 0, 0, 3187, 512, 1, 0, 0, 0, 3188, 3189, 7, 15, 0, 0, 3189, 3190, 7, 5, 0, 0, 3190, 3191, 7, 16, 0, 0, 3191, 3192, 7, 10, 0, 0, 3192, 3193, 7, 13, 0, 0, 3193, 3194, 7, 17, 0, 0, 3194, 3195, 7, 5, 0, 0, 3195, 3196, 7, 6, 0, 0, 3196, 3197, 7, 17, 0, 0, 3197, 3198, 7, 11, 0, 0, 3198, 3199, 7, 10, 0, 0, 3199, 3200, 7, 12, 0, 0, 3200, 514, 1, 0, 0, 0, 3201, 3202, 7, 15, 0, 0, 3202, 3203, 7, 5, 0, 0, 3203, 3204, 7, 26, 0, 0, 3204, 3205, 7, 27, 0, 0, 3205, 3206, 7, 5, 0, 0, 3206, 3207, 7, 6, 0, 0, 3207, 3208, 7, 22, 0, 0, 3208, 3209, 7, 10, 0, 0, 3209, 516, 1, 0, 0, 0, 3210, 3211, 7, 15, 0, 0, 3211, 3212, 7, 10, 0, 0, 3212, 3213, 7, 13, 0, 0, 3213, 3214, 7, 23, 0, 0, 3214, 3215, 7, 10, 0, 0, 3215, 518, 1, 0, 0, 0, 3216, 3217, 7, 15, 0, 0, 3217, 3218, 7, 17, 0, 0, 3218, 3219, 7, 7, 0, 0, 3219, 3220, 7, 22, 0, 0, 3220, 3221, 7, 16, 0, 0, 3221, 3222, 7, 10, 0, 0, 3222, 520, 1, 0, 0, 0, 3223, 3224, 7, 15, 0, 0, 3224, 3225, 7, 17, 0, 0, 3225, 3226, 7, 7, 0, 0, 3226, 3227, 7, 27, 0, 0, 3227, 3228, 7, 5, 0, 0, 3228, 3229, 7, 6, 0, 0, 3229, 3230, 7, 22, 0, 0, 3230, 3231, 7, 10, 0, 0, 3231, 522, 1, 0, 0, 0, 3232, 3233, 7, 15, 0, 0, 3233, 3234, 7, 19, 0, 0, 3234, 3235, 7, 12, 0, 0, 3235, 3236, 7, 10, 0, 0, 3236, 524, 1, 0, 0, 0, 3237, 3238, 7, 15, 0, 0, 3238, 3239, 7, 19, 0, 0, 3239, 3240, 7, 7, 0, 0, 3240, 3241, 7, 16, 0, 0, 3241, 3242, 7, 20, 0, 0, 3242, 526, 1, 0, 0, 0, 3243, 3244, 7, 15, 0, 0, 3244, 3245, 7, 19, 0, 0, 3245, 3246, 7, 27, 0, 0, 3246, 3247, 7, 10, 0, 0, 3247, 528, 1, 0, 0, 0, 3248, 3249, 7, 7, 0, 0, 3249, 3250, 7, 5, 0, 0, 3250, 3251, 7, 15, 0, 0, 3251, 3252, 7, 10, 0, 0, 3252, 530, 1, 0, 0, 0, 3253, 3254, 7, 7, 0, 0, 3254, 3255, 7, 5, 0, 0, 3255, 3256, 7, 15, 0, 0, 3256, 3257, 7, 10, 0, 0, 3257, 3258, 7, 9, 0, 0, 3258, 532, 1, 0, 0, 0, 3259, 3260, 7, 7, 0, 0, 3260, 3261, 7, 10, 0, 0, 3261, 3262, 7, 26, 0, 0, 3262, 3263, 7, 16, 0, 0, 3263, 534, 1, 0, 0, 0, 3264, 3265, 7, 7, 0, 0, 3265, 3266, 7, 19, 0, 0, 3266, 536, 1, 0, 0, 0, 3267, 3268, 7, 7, 0, 0, 3268, 3269, 7, 19, 0, 0, 3269, 3270, 7, 16, 0, 0, 3270, 3271, 7, 20, 0, 0, 3271, 3272, 7, 17, 0, 0, 3272, 3273, 7, 7, 0, 0, 3273, 3274, 7, 23, 0, 0, 3274, 538, 1, 0, 0, 0, 3275, 3276, 7, 7, 0, 0, 3276, 3277, 7, 19, 0, 0, 3277, 3278, 7, 16, 0, 0, 3278, 3279, 7, 17, 0, 0, 3279, 3280, 7, 25, 0, 0, 3280, 3281, 7, 8, 0, 0, 3281, 540, 1, 0, 0, 0, 3282, 3283, 7, 7, 0, 0, 3283, 3284, 7, 19, 0, 0, 3284, 3285, 7, 29, 0, 0, 3285, 3286, 7, 5, 0, 0, 3286, 3287, 7, 17, 0, 0, 3287, 3288, 7, 16, 0, 0, 3288, 542, 1, 0, 0, 0, 3289, 3290, 7, 7, 0, 0, 3290, 3291, 7, 22, 0, 0, 3291, 3292, 7, 6, 0, 0, 3292, 3293, 7, 6, 0, 0, 3293, 3294, 7, 9, 0, 0, 3294, 544, 1, 0, 0, 0, 3295, 3296, 7, 19, 0, 0, 3296, 3297, 7, 18, 0, 0, 3297, 3298, 7, 30, 0, 0, 3298, 3299, 7, 10, 0, 0, 3299, 3300, 7, 14, 0, 0, 3300, 3301, 7, 16, 0, 0, 3301, 546, 1, 0, 0, 0, 3302, 3303, 7, 19, 0, 0, 3303, 3304, 7, 25, 0, 0, 3304, 548, 1, 0, 0, 0, 3305, 3306, 7, 19, 0, 0, 3306, 3307, 7, 25, 0, 0, 3307, 3308, 7, 25, 0, 0, 3308, 550, 1, 0, 0, 0, 3309, 3310, 7, 19, 0, 0, 3310, 3311, 7, 17, 0, 0, 3311, 3312, 7, 12, 0, 0, 3312, 3313, 7, 9, 0, 0, 3313, 552, 1, 0, 0, 0, 3314, 3315, 7, 19, 0, 0, 3315, 3316, 7, 24, 0, 0, 3316, 3317, 7, 10, 0, 0, 3317, 3318, 7, 13, 0, 0, 3318, 3319, 7, 5, 0, 0, 3319, 3320, 7, 16, 0, 0, 3320, 3321, 7, 19, 0, 0, 3321, 3322, 7, 13, 0, 0, 3322, 554, 1, 0, 0, 0, 3323, 3324, 7, 19, 0, 0, 3324, 3325, 7, 24, 0, 0, 3325, 3326, 7, 16, 0, 0, 3326, 3327, 7, 17, 0, 0, 3327, 3328, 7, 19, 0, 0, 3328, 3329, 7, 7, 0, 0, 3329, 556, 1, 0, 0, 0, 3330, 3331, 7, 19, 0, 0, 3331, 3332, 7, 24, 0, 0, 3332, 3333, 7, 16, 0, 0, 3333, 3334, 7, 17, 0, 0, 3334, 3335, 7, 19, 0, 0, 3335, 3336, 7, 7, 0, 0, 3336, 3337, 7, 9, 0, 0, 3337, 558, 1, 0, 0, 0, 3338, 3339, 7, 19, 0, 0, 3339, 3340, 7, 29, 0, 0, 3340, 3341, 7, 7, 0, 0, 3341, 3342, 7, 10, 0, 0, 3342, 3343, 7, 12, 0, 0, 3343, 560, 1, 0, 0, 0, 3344, 3345, 7, 19, 0, 0, 3345, 3346, 7, 29, 0, 0, 3346, 3347, 7, 7, 0, 0, 3347, 3348, 7, 10, 0, 0, 3348, 3349, 7, 13, 0, 0, 3349, 562, 1, 0, 0, 0, 3350, 3351, 7, 24, 0, 0, 3351, 3352, 7, 5, 0, 0, 3352, 3353, 7, 13, 0, 0, 3353, 3354, 7, 9, 0, 0, 3354, 3355, 7, 10, 0, 0, 3355, 3356, 7, 13, 0, 0, 3356, 564, 1, 0, 0, 0, 3357, 3358, 7, 24, 0, 0, 3358, 3359, 7, 5, 0, 0, 3359, 3360, 7, 13, 0, 0, 3360, 3361, 7, 16, 0, 0, 3361, 3362, 7, 17, 0, 0, 3362, 3363, 7, 5, 0, 0, 3363, 3364, 7, 6, 0, 0, 3364, 566, 1, 0, 0, 0, 3365, 3366, 7, 24, 0, 0, 3366, 3367, 7, 5, 0, 0, 3367, 3368, 7, 13, 0, 0, 3368, 3369, 7, 16, 0, 0, 3369, 3370, 7, 17, 0, 0, 3370, 3371, 7, 16, 0, 0, 3371, 3372, 7, 17, 0, 0, 3372, 3373, 7, 19, 0, 0, 3373, 3374, 7, 7, 0, 0, 3374, 568, 1, 0, 0, 0, 3375, 3376, 7, 24, 0, 0, 3376, 3377, 7, 5, 0, 0, 3377, 3378, 7, 9, 0, 0, 3378, 3379, 7, 9, 0, 0, 3379, 3380, 7, 17, 0, 0, 3380, 3381, 7, 7, 0, 0, 3381, 3382, 7, 23, 0, 0, 3382, 570, 1, 0, 0, 0, 3383, 3384, 7, 24, 0, 0, 3384, 3385, 7, 5, 0, 0, 3385, 3386, 7, 9, 0, 0, 3386, 3387, 7, 9, 0, 0, 3387, 3388, 7, 29, 0, 0, 3388, 3389, 7, 19, 0, 0, 3389, 3390, 7, 13, 0, 0, 3390, 3391, 7, 12, 0, 0, 3391, 572, 1, 0, 0, 0, 3392, 3393, 7, 24, 0, 0, 3393, 3394, 7, 6, 0, 0, 3394, 3395, 7, 5, 0, 0, 3395, 3396, 7, 7, 0, 0, 3396, 3397, 7, 9, 0, 0, 3397, 574, 1, 0, 0, 0, 3398, 3399, 7, 24, 0, 0, 3399, 3400, 7, 13, 0, 0, 3400, 3401, 7, 10, 0, 0, 3401, 3402, 7, 14, 0, 0, 3402, 3403, 7, 10, 0, 0, 3403, 3404, 7, 12, 0, 0, 3404, 3405, 7, 17, 0, 0, 3405, 3406, 7, 7, 0, 0, 3406, 3407, 7, 23, 0, 0, 3407, 576, 1, 0, 0, 0, 3408, 3409, 7, 24, 0, 0, 3409, 3410, 7, 13, 0, 0, 3410, 3411, 7, 10, 0, 0, 3411, 3412, 7, 24, 0, 0, 3412, 3413, 7, 5, 0, 0, 3413, 3414, 7, 13, 0, 0, 3414, 3415, 7, 10, 0, 0, 3415, 578, 1, 0, 0, 0, 3416, 3417, 7, 24, 0, 0, 3417, 3418, 7, 13, 0, 0, 3418, 3419, 7, 10, 0, 0, 3419, 3420, 7, 24, 0, 0, 3420, 3421, 7, 5, 0, 0, 3421, 3422, 7, 13, 0, 0, 3422, 3423, 7, 10, 0, 0, 3423, 3424, 7, 12, 0, 0, 3424, 580, 1, 0, 0, 0, 3425, 3426, 7, 24, 0, 0, 3426, 3427, 7, 13, 0, 0, 3427, 3428, 7, 10, 0, 0, 3428, 3429, 7, 9, 0, 0, 3429, 3430, 7, 10, 0, 0, 3430, 3431, 7, 13, 0, 0, 3431, 3432, 7, 27, 0, 0, 3432, 3433, 7, 10, 0, 0, 3433, 582, 1, 0, 0, 0, 3434, 3435, 7, 24, 0, 0, 3435, 3436, 7, 13, 0, 0, 3436, 3437, 7, 17, 0, 0, 3437, 3438, 7, 19, 0, 0, 3438, 3439, 7, 13, 0, 0, 3439, 584, 1, 0, 0, 0, 3440, 3441, 7, 24, 0, 0, 3441, 3442, 7, 13, 0, 0, 3442, 3443, 7, 17, 0, 0, 3443, 3444, 7, 27, 0, 0, 3444, 3445, 7, 17, 0, 0, 3445, 3446, 7, 6, 0, 0, 3446, 3447, 7, 10, 0, 0, 3447, 3448, 7, 23, 0, 0, 3448, 3449, 7, 10, 0, 0, 3449, 3450, 7, 9, 0, 0, 3450, 586, 1, 0, 0, 0, 3451, 3452, 7, 24, 0, 0, 3452, 3453, 7, 13, 0, 0, 3453, 3454, 7, 19, 0, 0, 3454, 3455, 7, 14, 0, 0, 3455, 3456, 7, 10, 0, 0, 3456, 3457, 7, 12, 0, 0, 3457, 3458, 7, 22, 0, 0, 3458, 3459, 7, 13, 0, 0, 3459, 3460, 7, 5, 0, 0, 3460, 3461, 7, 6, 0, 0, 3461, 588, 1, 0, 0, 0, 3462, 3463, 7, 24, 0, 0, 3463, 3464, 7, 13, 0, 0, 3464, 3465, 7, 19, 0, 0, 3465, 3466, 7, 14, 0, 0, 3466, 3467, 7, 10, 0, 0, 3467, 3468, 7, 12, 0, 0, 3468, 3469, 7, 22, 0, 0, 3469, 3470, 7, 13, 0, 0, 3470, 3471, 7, 10, 0, 0, 3471, 590, 1, 0, 0, 0, 3472, 3473, 7, 24, 0, 0, 3473, 3474, 7, 13, 0, 0, 3474, 3475, 7, 19, 0, 0, 3475, 3476, 7, 23, 0, 0, 3476, 3477, 7, 13, 0, 0, 3477, 3478, 7, 5, 0, 0, 3478, 3479, 7, 15, 0, 0, 3479, 592, 1, 0, 0, 0, 3480, 3481, 7, 28, 0, 0, 3481, 3482, 7, 22, 0, 0, 3482, 3483, 7, 19, 0, 0, 3483, 3484, 7, 16, 0, 0, 3484, 3485, 7, 10, 0, 0, 3485, 594, 1, 0, 0, 0, 3486, 3487, 7, 13, 0, 0, 3487, 3488, 7, 5, 0, 0, 3488, 3489, 7, 7, 0, 0, 3489, 3490, 7, 23, 0, 0, 3490, 3491, 7, 10, 0, 0, 3491, 596, 1, 0, 0, 0, 3492, 3493, 7, 13, 0, 0, 3493, 3494, 7, 10, 0, 0, 3494, 3495, 7, 5, 0, 0, 3495, 3496, 7, 12, 0, 0, 3496, 598, 1, 0, 0, 0, 3497, 3498, 7, 13, 0, 0, 3498, 3499, 7, 10, 0, 0, 3499, 3500, 7, 5, 0, 0, 3500, 3501, 7, 9, 0, 0, 3501, 3502, 7, 9, 0, 0, 3502, 3503, 7, 17, 0, 0, 3503, 3504, 7, 23, 0, 0, 3504, 3505, 7, 7, 0, 0, 3505, 600, 1, 0, 0, 0, 3506, 3507, 7, 13, 0, 0, 3507, 3508, 7, 10, 0, 0, 3508, 3509, 7, 14, 0, 0, 3509, 3510, 7, 20, 0, 0, 3510, 3511, 7, 10, 0, 0, 3511, 3512, 7, 14, 0, 0, 3512, 3513, 7, 21, 0, 0, 3513, 602, 1, 0, 0, 0, 3514, 3515, 7, 13, 0, 0, 3515, 3516, 7, 10, 0, 0, 3516, 3517, 7, 14, 0, 0, 3517, 3518, 7, 22, 0, 0, 3518, 3519, 7, 13, 0, 0, 3519, 3520, 7, 9, 0, 0, 3520, 3521, 7, 17, 0, 0, 3521, 3522, 7, 27, 0, 0, 3522, 3523, 7, 10, 0, 0, 3523, 604, 1, 0, 0, 0, 3524, 3525, 7, 13, 0, 0, 3525, 3526, 7, 10, 0, 0, 3526, 3527, 7, 25, 0, 0, 3527, 606, 1, 0, 0, 0, 3528, 3529, 7, 13, 0, 0, 3529, 3530, 7, 10, 0, 0, 3530, 3531, 7, 25, 0, 0, 3531, 3532, 7, 13, 0, 0, 3532, 3533, 7, 10, 0, 0, 3533, 3534, 7, 9, 0, 0, 3534, 3535, 7, 20, 0, 0, 3535, 608, 1, 0, 0, 0, 3536, 3537, 7, 13, 0, 0, 3537, 3538, 7, 10, 0, 0, 3538, 3539, 7, 17, 0, 0, 3539, 3540, 7, 7, 0, 0, 3540, 3541, 7, 12, 0, 0, 3541, 3542, 7, 10, 0, 0, 3542, 3543, 7, 26, 0, 0, 3543, 610, 1, 0, 0, 0, 3544, 3545, 7, 13, 0, 0, 3545, 3546, 7, 10, 0, 0, 3546, 3547, 7, 6, 0, 0, 3547, 3548, 7, 5, 0, 0, 3548, 3549, 7, 16, 0, 0, 3549, 3550, 7, 17, 0, 0, 3550, 3551, 7, 27, 0, 0, 3551, 3552, 7, 10, 0, 0, 3552, 612, 1, 0, 0, 0, 3553, 3554, 7, 13, 0, 0, 3554, 3555, 7, 10, 0, 0, 3555, 3556, 7, 6, 0, 0, 3556, 3557, 7, 10, 0, 0, 3557, 3558, 7, 5, 0, 0, 3558, 3559, 7, 9, 0, 0, 3559, 3560, 7, 10, 0, 0, 3560, 614, 1, 0, 0, 0, 3561, 3562, 7, 13, 0, 0, 3562, 3563, 7, 10, 0, 0, 3563, 3564, 7, 7, 0, 0, 3564, 3565, 7, 5, 0, 0, 3565, 3566, 7, 15, 0, 0, 3566, 3567, 7, 10, 0, 0, 3567, 616, 1, 0, 0, 0, 3568, 3569, 7, 13, 0, 0, 3569, 3570, 7, 10, 0, 0, 3570, 3571, 7, 24, 0, 0, 3571, 3572, 7, 10, 0, 0, 3572, 3573, 7, 5, 0, 0, 3573, 3574, 7, 16, 0, 0, 3574, 3575, 7, 5, 0, 0, 3575, 3576, 7, 18, 0, 0, 3576, 3577, 7, 6, 0, 0, 3577, 3578, 7, 10, 0, 0, 3578, 618, 1, 0, 0, 0, 3579, 3580, 7, 13, 0, 0, 3580, 3581, 7, 10, 0, 0, 3581, 3582, 7, 24, 0, 0, 3582, 3583, 7, 6, 0, 0, 3583, 3584, 7, 5, 0, 0, 3584, 3585, 7, 14, 0, 0, 3585, 3586, 7, 10, 0, 0, 3586, 620, 1, 0, 0, 0, 3587, 3588, 7, 13, 0, 0, 3588, 3589, 7, 10, 0, 0, 3589, 3590, 7, 24, 0, 0, 3590, 3591, 7, 6, 0, 0, 3591, 3592, 7, 17, 0, 0, 3592, 3593, 7, 14, 0, 0, 3593, 3594, 7, 5, 0, 0, 3594, 622, 1, 0, 0, 0, 3595, 3596, 7, 13, 0, 0, 3596, 3597, 7, 10, 0, 0, 3597, 3598, 7, 9, 0, 0, 3598, 3599, 7, 10, 0, 0, 3599, 3600, 7, 16, 0, 0, 3600, 624, 1, 0, 0, 0, 3601, 3602, 7, 13, 0, 0, 3602, 3603, 7, 10, 0, 0, 3603, 3604, 7, 9, 0, 0, 3604, 3605, 7, 16, 0, 0, 3605, 3606, 7, 5, 0, 0, 3606, 3607, 7, 13, 0, 0, 3607, 3608, 7, 16, 0, 0, 3608, 626, 1, 0, 0, 0, 3609, 3610, 7, 13, 0, 0, 3610, 3611, 7, 10, 0, 0, 3611, 3612, 7, 9, 0, 0, 3612, 3613, 7, 16, 0, 0, 3613, 3614, 7, 13, 0, 0, 3614, 3615, 7, 17, 0, 0, 3615, 3616, 7, 14, 0, 0, 3616, 3617, 7, 16, 0, 0, 3617, 628, 1, 0, 0, 0, 3618, 3619, 7, 13, 0, 0, 3619, 3620, 7, 10, 0, 0, 3620, 3621, 7, 16, 0, 0, 3621, 3622, 7, 22, 0, 0, 3622, 3623, 7, 13, 0, 0, 3623, 3624, 7, 7, 0, 0, 3624, 3625, 7, 9, 0, 0, 3625, 630, 1, 0, 0, 0, 3626, 3627, 7, 13, 0, 0, 3627, 3628, 7, 10, 0, 0, 3628, 3629, 7, 27, 0, 0, 3629, 3630, 7, 19, 0, 0, 3630, 3631, 7, 21, 0, 0, 3631, 3632, 7, 10, 0, 0, 3632, 632, 1, 0, 0, 0, 3633, 3634, 7, 13, 0, 0, 3634, 3635, 7, 19, 0, 0, 3635, 3636, 7, 6, 0, 0, 3636, 3637, 7, 10, 0, 0, 3637, 634, 1, 0, 0, 0, 3638, 3639, 7, 13, 0, 0, 3639, 3640, 7, 19, 0, 0, 3640, 3641, 7, 6, 0, 0, 3641, 3642, 7, 6, 0, 0, 3642, 3643, 7, 18, 0, 0, 3643, 3644, 7, 5, 0, 0, 3644, 3645, 7, 14, 0, 0, 3645, 3646, 7, 21, 0, 0, 3646, 636, 1, 0, 0, 0, 3647, 3648, 7, 13, 0, 0, 3648, 3649, 7, 19, 0, 0, 3649, 3650, 7, 29, 0, 0, 3650, 3651, 7, 9, 0, 0, 3651, 638, 1, 0, 0, 0, 3652, 3653, 7, 13, 0, 0, 3653, 3654, 7, 22, 0, 0, 3654, 3655, 7, 6, 0, 0, 3655, 3656, 7, 10, 0, 0, 3656, 640, 1, 0, 0, 0, 3657, 3658, 7, 9, 0, 0, 3658, 3659, 7, 5, 0, 0, 3659, 3660, 7, 27, 0, 0, 3660, 3661, 7, 10, 0, 0, 3661, 3662, 7, 24, 0, 0, 3662, 3663, 7, 19, 0, 0, 3663, 3664, 7, 17, 0, 0, 3664, 3665, 7, 7, 0, 0, 3665, 3666, 7, 16, 0, 0, 3666, 642, 1, 0, 0, 0, 3667, 3668, 7, 9, 0, 0, 3668, 3669, 7, 14, 0, 0, 3669, 3670, 7, 20, 0, 0, 3670, 3671, 7, 10, 0, 0, 3671, 3672, 7, 15, 0, 0, 3672, 3673, 7, 5, 0, 0, 3673, 644, 1, 0, 0, 0, 3674, 3675, 7, 9, 0, 0, 3675, 3676, 7, 14, 0, 0, 3676, 3677, 7, 13, 0, 0, 3677, 3678, 7, 19, 0, 0, 3678, 3679, 7, 6, 0, 0, 3679, 3680, 7, 6, 0, 0, 3680, 646, 1, 0, 0, 0, 3681, 3682, 7, 9, 0, 0, 3682, 3683, 7, 10, 0, 0, 3683, 3684, 7, 5, 0, 0, 3684, 3685, 7, 13, 0, 0, 3685, 3686, 7, 14, 0, 0, 3686, 3687, 7, 20, 0, 0, 3687, 648, 1, 0, 0, 0, 3688, 3689, 7, 9, 0, 0, 3689, 3690, 7, 10, 0, 0, 3690, 3691, 7, 14, 0, 0, 3691, 3692, 7, 19, 0, 0, 3692, 3693, 7, 7, 0, 0, 3693, 3694, 7, 12, 0, 0, 3694, 650, 1, 0, 0, 0, 3695, 3696, 7, 9, 0, 0, 3696, 3697, 7, 10, 0, 0, 3697, 3698, 7, 14, 0, 0, 3698, 3699, 7, 22, 0, 0, 3699, 3700, 7, 13, 0, 0, 3700, 3701, 7, 17, 0, 0, 3701, 3702, 7, 16, 0, 0, 3702, 3703, 7, 8, 0, 0, 3703, 652, 1, 0, 0, 0, 3704, 3705, 7, 9, 0, 0, 3705, 3706, 7, 10, 0, 0, 3706, 3707, 7, 28, 0, 0, 3707, 3708, 7, 22, 0, 0, 3708, 3709, 7, 10, 0, 0, 3709, 3710, 7, 7, 0, 0, 3710, 3711, 7, 14, 0, 0, 3711, 3712, 7, 10, 0, 0, 3712, 654, 1, 0, 0, 0, 3713, 3714, 7, 9, 0, 0, 3714, 3715, 7, 10, 0, 0, 3715, 3716, 7, 28, 0, 0, 3716, 3717, 7, 22, 0, 0, 3717, 3718, 7, 10, 0, 0, 3718, 3719, 7, 7, 0, 0, 3719, 3720, 7, 14, 0, 0, 3720, 3721, 7, 10, 0, 0, 3721, 3722, 7, 9, 0, 0, 3722, 656, 1, 0, 0, 0, 3723, 3724, 7, 9, 0, 0, 3724, 3725, 7, 10, 0, 0, 3725, 3726, 7, 13, 0, 0, 3726, 3727, 7, 17, 0, 0, 3727, 3728, 7, 5, 0, 0, 3728, 3729, 7, 6, 0, 0, 3729, 3730, 7, 17, 0, 0, 3730, 3731, 7, 11, 0, 0, 3731, 3732, 7, 5, 0, 0, 3732, 3733, 7, 18, 0, 0, 3733, 3734, 7, 6, 0, 0, 3734, 3735, 7, 10, 0, 0, 3735, 658, 1, 0, 0, 0, 3736, 3737, 7, 9, 0, 0, 3737, 3738, 7, 10, 0, 0, 3738, 3739, 7, 13, 0, 0, 3739, 3740, 7, 27, 0, 0, 3740, 3741, 7, 10, 0, 0, 3741, 3742, 7, 13, 0, 0, 3742, 660, 1, 0, 0, 0, 3743, 3744, 7, 9, 0, 0, 3744, 3745, 7, 10, 0, 0, 3745, 3746, 7, 9, 0, 0, 3746, 3747, 7, 9, 0, 0, 3747, 3748, 7, 17, 0, 0, 3748, 3749, 7, 19, 0, 0, 3749, 3750, 7, 7, 0, 0, 3750, 662, 1, 0, 0, 0, 3751, 3752, 7, 9, 0, 0, 3752, 3753, 7, 10, 0, 0, 3753, 3754, 7, 16, 0, 0, 3754, 664, 1, 0, 0, 0, 3755, 3756, 7, 9, 0, 0, 3756, 3757, 7, 20, 0, 0, 3757, 3758, 7, 5, 0, 0, 3758, 3759, 7, 13, 0, 0, 3759, 3760, 7, 10, 0, 0, 3760, 666, 1, 0, 0, 0, 3761, 3762, 7, 9, 0, 0, 3762, 3763, 7, 20, 0, 0, 3763, 3764, 7, 19, 0, 0, 3764, 3765, 7, 29, 0, 0, 3765, 668, 1, 0, 0, 0, 3766, 3767, 7, 9, 0, 0, 3767, 3768, 7, 17, 0, 0, 3768, 3769, 7, 15, 0, 0, 3769, 3770, 7, 24, 0, 0, 3770, 3771, 7, 6, 0, 0, 3771, 3772, 7, 10, 0, 0, 3772, 670, 1, 0, 0, 0, 3773, 3774, 7, 9, 0, 0, 3774, 3775, 7, 7, 0, 0, 3775, 3776, 7, 5, 0, 0, 3776, 3777, 7, 24, 0, 0, 3777, 3778, 7, 9, 0, 0, 3778, 3779, 7, 20, 0, 0, 3779, 3780, 7, 19, 0, 0, 3780, 3781, 7, 16, 0, 0, 3781, 672, 1, 0, 0, 0, 3782, 3783, 7, 9, 0, 0, 3783, 3784, 7, 16, 0, 0, 3784, 3785, 7, 5, 0, 0, 3785, 3786, 7, 18, 0, 0, 3786, 3787, 7, 6, 0, 0, 3787, 3788, 7, 10, 0, 0, 3788, 674, 1, 0, 0, 0, 3789, 3790, 7, 9, 0, 0, 3790, 3791, 7, 16, 0, 0, 3791, 3792, 7, 5, 0, 0, 3792, 3793, 7, 7, 0, 0, 3793, 3794, 7, 12, 0, 0, 3794, 3795, 7, 5, 0, 0, 3795, 3796, 7, 6, 0, 0, 3796, 3797, 7, 19, 0, 0, 3797, 3798, 7, 7, 0, 0, 3798, 3799, 7, 10, 0, 0, 3799, 676, 1, 0, 0, 0, 3800, 3801, 7, 9, 0, 0, 3801, 3802, 7, 16, 0, 0, 3802, 3803, 7, 5, 0, 0, 3803, 3804, 7, 13, 0, 0, 3804, 3805, 7, 16, 0, 0, 3805, 678, 1, 0, 0, 0, 3806, 3807, 7, 9, 0, 0, 3807, 3808, 7, 16, 0, 0, 3808, 3809, 7, 5, 0, 0, 3809, 3810, 7, 16, 0, 0, 3810, 3811, 7, 10, 0, 0, 3811, 3812, 7, 15, 0, 0, 3812, 3813, 7, 10, 0, 0, 3813, 3814, 7, 7, 0, 0, 3814, 3815, 7, 16, 0, 0, 3815, 680, 1, 0, 0, 0, 3816, 3817, 7, 9, 0, 0, 3817, 3818, 7, 16, 0, 0, 3818, 3819, 7, 5, 0, 0, 3819, 3820, 7, 16, 0, 0, 3820, 3821, 7, 17, 0, 0, 3821, 3822, 7, 9, 0, 0, 3822, 3823, 7, 16, 0, 0, 3823, 3824, 7, 17, 0, 0, 3824, 3825, 7, 14, 0, 0, 3825, 3826, 7, 9, 0, 0, 3826, 682, 1, 0, 0, 0, 3827, 3828, 7, 9, 0, 0, 3828, 3829, 7, 16, 0, 0, 3829, 3830, 7, 12, 0, 0, 3830, 3831, 7, 17, 0, 0, 3831, 3832, 7, 7, 0, 0, 3832, 684, 1, 0, 0, 0, 3833, 3834, 7, 9, 0, 0, 3834, 3835, 7, 16, 0, 0, 3835, 3836, 7, 12, 0, 0, 3836, 3837, 7, 19, 0, 0, 3837, 3838, 7, 22, 0, 0, 3838, 3839, 7, 16, 0, 0, 3839, 686, 1, 0, 0, 0, 3840, 3841, 7, 9, 0, 0, 3841, 3842, 7, 16, 0, 0, 3842, 3843, 7, 19, 0, 0, 3843, 3844, 7, 13, 0, 0, 3844, 3845, 7, 5, 0, 0, 3845, 3846, 7, 23, 0, 0, 3846, 3847, 7, 10, 0, 0, 3847, 688, 1, 0, 0, 0, 3848, 3849, 7, 9, 0, 0, 3849, 3850, 7, 16, 0, 0, 3850, 3851, 7, 13, 0, 0, 3851, 3852, 7, 17, 0, 0, 3852, 3853, 7, 14, 0, 0, 3853, 3854, 7, 16, 0, 0, 3854, 690, 1, 0, 0, 0, 3855, 3856, 7, 9, 0, 0, 3856, 3857, 7, 16, 0, 0, 3857, 3858, 7, 13, 0, 0, 3858, 3859, 7, 17, 0, 0, 3859, 3860, 7, 24, 0, 0, 3860, 692, 1, 0, 0, 0, 3861, 3862, 7, 9, 0, 0, 3862, 3863, 7, 8, 0, 0, 3863, 3864, 7, 9, 0, 0, 3864, 3865, 7, 17, 0, 0, 3865, 3866, 7, 12, 0, 0, 3866, 694, 1, 0, 0, 0, 3867, 3868, 7, 9, 0, 0, 3868, 3869, 7, 8, 0, 0, 3869, 3870, 7, 9, 0, 0, 3870, 3871, 7, 16, 0, 0, 3871, 3872, 7, 10, 0, 0, 3872, 3873, 7, 15, 0, 0, 3873, 696, 1, 0, 0, 0, 3874, 3875, 7, 16, 0, 0, 3875, 3876, 7, 5, 0, 0, 3876, 3877, 7, 18, 0, 0, 3877, 3878, 7, 6, 0, 0, 3878, 3879, 7, 10, 0, 0, 3879, 3880, 7, 9, 0, 0, 3880, 698, 1, 0, 0, 0, 3881, 3882, 7, 16, 0, 0, 3882, 3883, 7, 5, 0, 0, 3883, 3884, 7, 18, 0, 0, 3884, 3885, 7, 6, 0, 0, 3885, 3886, 7, 10, 0, 0, 3886, 3887, 7, 9, 0, 0, 3887, 3888, 7, 24, 0, 0, 3888, 3889, 7, 5, 0, 0, 3889, 3890, 7, 14, 0, 0, 3890, 3891, 7, 10, 0, 0, 3891, 700, 1, 0, 0, 0, 3892, 3893, 7, 16, 0, 0, 3893, 3894, 7, 10, 0, 0, 3894, 3895, 7, 15, 0, 0, 3895, 3896, 7, 24, 0, 0, 3896, 702, 1, 0, 0, 0, 3897, 3898, 7, 16, 0, 0, 3898, 3899, 7, 10, 0, 0, 3899, 3900, 7, 15, 0, 0, 3900, 3901, 7, 24, 0, 0, 3901, 3902, 7, 6, 0, 0, 3902, 3903, 7, 5, 0, 0, 3903, 3904, 7, 16, 0, 0, 3904, 3905, 7, 10, 0, 0, 3905, 704, 1, 0, 0, 0, 3906, 3907, 7, 16, 0, 0, 3907, 3908, 7, 10, 0, 0, 3908, 3909, 7, 15, 0, 0, 3909, 3910, 7, 24, 0, 0, 3910, 3911, 7, 19, 0, 0, 3911, 3912, 7, 13, 0, 0, 3912, 3913, 7, 5, 0, 0, 3913, 3914, 7, 13, 0, 0, 3914, 3915, 7, 8, 0, 0, 3915, 706, 1, 0, 0, 0, 3916, 3917, 7, 16, 0, 0, 3917, 3918, 7, 10, 0, 0, 3918, 3919, 7, 26, 0, 0, 3919, 3920, 7, 16, 0, 0, 3920, 708, 1, 0, 0, 0, 3921, 3922, 7, 16, 0, 0, 3922, 3923, 7, 13, 0, 0, 3923, 3924, 7, 5, 0, 0, 3924, 3925, 7, 7, 0, 0, 3925, 3926, 7, 9, 0, 0, 3926, 3927, 7, 5, 0, 0, 3927, 3928, 7, 14, 0, 0, 3928, 3929, 7, 16, 0, 0, 3929, 3930, 7, 17, 0, 0, 3930, 3931, 7, 19, 0, 0, 3931, 3932, 7, 7, 0, 0, 3932, 710, 1, 0, 0, 0, 3933, 3934, 7, 16, 0, 0, 3934, 3935, 7, 13, 0, 0, 3935, 3936, 7, 17, 0, 0, 3936, 3937, 7, 23, 0, 0, 3937, 3938, 7, 23, 0, 0, 3938, 3939, 7, 10, 0, 0, 3939, 3940, 7, 13, 0, 0, 3940, 712, 1, 0, 0, 0, 3941, 3942, 7, 16, 0, 0, 3942, 3943, 7, 13, 0, 0, 3943, 3944, 7, 22, 0, 0, 3944, 3945, 7, 7, 0, 0, 3945, 3946, 7, 14, 0, 0, 3946, 3947, 7, 5, 0, 0, 3947, 3948, 7, 16, 0, 0, 3948, 3949, 7, 10, 0, 0, 3949, 714, 1, 0, 0, 0, 3950, 3951, 7, 16, 0, 0, 3951, 3952, 7, 13, 0, 0, 3952, 3953, 7, 22, 0, 0, 3953, 3954, 7, 9, 0, 0, 3954, 3955, 7, 16, 0, 0, 3955, 3956, 7, 10, 0, 0, 3956, 3957, 7, 12, 0, 0, 3957, 716, 1, 0, 0, 0, 3958, 3959, 7, 16, 0, 0, 3959, 3960, 7, 8, 0, 0, 3960, 3961, 7, 24, 0, 0, 3961, 3962, 7, 10, 0, 0, 3962, 718, 1, 0, 0, 0, 3963, 3964, 7, 16, 0, 0, 3964, 3965, 7, 8, 0, 0, 3965, 3966, 7, 24, 0, 0, 3966, 3967, 7, 10, 0, 0, 3967, 3968, 7, 9, 0, 0, 3968, 720, 1, 0, 0, 0, 3969, 3970, 7, 22, 0, 0, 3970, 3971, 7, 7, 0, 0, 3971, 3972, 7, 18, 0, 0, 3972, 3973, 7, 19, 0, 0, 3973, 3974, 7, 22, 0, 0, 3974, 3975, 7, 7, 0, 0, 3975, 3976, 7, 12, 0, 0, 3976, 3977, 7, 10, 0, 0, 3977, 3978, 7, 12, 0, 0, 3978, 722, 1, 0, 0, 0, 3979, 3980, 7, 22, 0, 0, 3980, 3981, 7, 7, 0, 0, 3981, 3982, 7, 14, 0, 0, 3982, 3983, 7, 19, 0, 0, 3983, 3984, 7, 15, 0, 0, 3984, 3985, 7, 15, 0, 0, 3985, 3986, 7, 17, 0, 0, 3986, 3987, 7, 16, 0, 0, 3987, 3988, 7, 16, 0, 0, 3988, 3989, 7, 10, 0, 0, 3989, 3990, 7, 12, 0, 0, 3990, 724, 1, 0, 0, 0, 3991, 3992, 7, 22, 0, 0, 3992, 3993, 7, 7, 0, 0, 3993, 3994, 7, 10, 0, 0, 3994, 3995, 7, 7, 0, 0, 3995, 3996, 7, 14, 0, 0, 3996, 3997, 7, 13, 0, 0, 3997, 3998, 7, 8, 0, 0, 3998, 3999, 7, 24, 0, 0, 3999, 4000, 7, 16, 0, 0, 4000, 4001, 7, 10, 0, 0, 4001, 4002, 7, 12, 0, 0, 4002, 726, 1, 0, 0, 0, 4003, 4004, 7, 22, 0, 0, 4004, 4005, 7, 7, 0, 0, 4005, 4006, 7, 21, 0, 0, 4006, 4007, 7, 7, 0, 0, 4007, 4008, 7, 19, 0, 0, 4008, 4009, 7, 29, 0, 0, 4009, 4010, 7, 7, 0, 0, 4010, 728, 1, 0, 0, 0, 4011, 4012, 7, 22, 0, 0, 4012, 4013, 7, 7, 0, 0, 4013, 4014, 7, 6, 0, 0, 4014, 4015, 7, 17, 0, 0, 4015, 4016, 7, 9, 0, 0, 4016, 4017, 7, 16, 0, 0, 4017, 4018, 7, 10, 0, 0, 4018, 4019, 7, 7, 0, 0, 4019, 730, 1, 0, 0, 0, 4020, 4021, 7, 22, 0, 0, 4021, 4022, 7, 7, 0, 0, 4022, 4023, 7, 6, 0, 0, 4023, 4024, 7, 19, 0, 0, 4024, 4025, 7, 23, 0, 0, 4025, 4026, 7, 23, 0, 0, 4026, 4027, 7, 10, 0, 0, 4027, 4028, 7, 12, 0, 0, 4028, 732, 1, 0, 0, 0, 4029, 4030, 7, 22, 0, 0, 4030, 4031, 7, 7, 0, 0, 4031, 4032, 7, 16, 0, 0, 4032, 4033, 7, 17, 0, 0, 4033, 4034, 7, 6, 0, 0, 4034, 734, 1, 0, 0, 0, 4035, 4036, 7, 22, 0, 0, 4036, 4037, 7, 24, 0, 0, 4037, 4038, 7, 12, 0, 0, 4038, 4039, 7, 5, 0, 0, 4039, 4040, 7, 16, 0, 0, 4040, 4041, 7, 10, 0, 0, 4041, 736, 1, 0, 0, 0, 4042, 4043, 7, 27, 0, 0, 4043, 4044, 7, 5, 0, 0, 4044, 4045, 7, 14, 0, 0, 4045, 4046, 7, 22, 0, 0, 4046, 4047, 7, 22, 0, 0, 4047, 4048, 7, 15, 0, 0, 4048, 738, 1, 0, 0, 0, 4049, 4050, 7, 27, 0, 0, 4050, 4051, 7, 5, 0, 0, 4051, 4052, 7, 6, 0, 0, 4052, 4053, 7, 17, 0, 0, 4053, 4054, 7, 12, 0, 0, 4054, 740, 1, 0, 0, 0, 4055, 4056, 7, 27, 0, 0, 4056, 4057, 7, 5, 0, 0, 4057, 4058, 7, 6, 0, 0, 4058, 4059, 7, 17, 0, 0, 4059, 4060, 7, 12, 0, 0, 4060, 4061, 7, 5, 0, 0, 4061, 4062, 7, 16, 0, 0, 4062, 4063, 7, 10, 0, 0, 4063, 742, 1, 0, 0, 0, 4064, 4065, 7, 27, 0, 0, 4065, 4066, 7, 5, 0, 0, 4066, 4067, 7, 6, 0, 0, 4067, 4068, 7, 17, 0, 0, 4068, 4069, 7, 12, 0, 0, 4069, 4070, 7, 5, 0, 0, 4070, 4071, 7, 16, 0, 0, 4071, 4072, 7, 19, 0, 0, 4072, 4073, 7, 13, 0, 0, 4073, 744, 1, 0, 0, 0, 4074, 4075, 7, 27, 0, 0, 4075, 4076, 7, 5, 0, 0, 4076, 4077, 7, 13, 0, 0, 4077, 4078, 7, 8, 0, 0, 4078, 4079, 7, 17, 0, 0, 4079, 4080, 7, 7, 0, 0, 4080, 4081, 7, 23, 0, 0, 4081, 746, 1, 0, 0, 0, 4082, 4083, 7, 27, 0, 0, 4083, 4084, 7, 10, 0, 0, 4084, 4085, 7, 13, 0, 0, 4085, 4086, 7, 9, 0, 0, 4086, 4087, 7, 17, 0, 0, 4087, 4088, 7, 19, 0, 0, 4088, 4089, 7, 7, 0, 0, 4089, 748, 1, 0, 0, 0, 4090, 4091, 7, 27, 0, 0, 4091, 4092, 7, 17, 0, 0, 4092, 4093, 7, 10, 0, 0, 4093, 4094, 7, 29, 0, 0, 4094, 750, 1, 0, 0, 0, 4095, 4096, 7, 27, 0, 0, 4096, 4097, 7, 19, 0, 0, 4097, 4098, 7, 6, 0, 0, 4098, 4099, 7, 5, 0, 0, 4099, 4100, 7, 16, 0, 0, 4100, 4101, 7, 17, 0, 0, 4101, 4102, 7, 6, 0, 0, 4102, 4103, 7, 10, 0, 0, 4103, 752, 1, 0, 0, 0, 4104, 4105, 7, 29, 0, 0, 4105, 4106, 7, 20, 0, 0, 4106, 4107, 7, 17, 0, 0, 4107, 4108, 7, 16, 0, 0, 4108, 4109, 7, 10, 0, 0, 4109, 4110, 7, 9, 0, 0, 4110, 4111, 7, 24, 0, 0, 4111, 4112, 7, 5, 0, 0, 4112, 4113, 7, 14, 0, 0, 4113, 4114, 7, 10, 0, 0, 4114, 754, 1, 0, 0, 0, 4115, 4116, 7, 29, 0, 0, 4116, 4117, 7, 17, 0, 0, 4117, 4118, 7, 16, 0, 0, 4118, 4119, 7, 20, 0, 0, 4119, 4120, 7, 19, 0, 0, 4120, 4121, 7, 22, 0, 0, 4121, 4122, 7, 16, 0, 0, 4122, 756, 1, 0, 0, 0, 4123, 4124, 7, 29, 0, 0, 4124, 4125, 7, 19, 0, 0, 4125, 4126, 7, 13, 0, 0, 4126, 4127, 7, 21, 0, 0, 4127, 758, 1, 0, 0, 0, 4128, 4129, 7, 29, 0, 0, 4129, 4130, 7, 13, 0, 0, 4130, 4131, 7, 5, 0, 0, 4131, 4132, 7, 24, 0, 0, 4132, 4133, 7, 24, 0, 0, 4133, 4134, 7, 10, 0, 0, 4134, 4135, 7, 13, 0, 0, 4135, 760, 1, 0, 0, 0, 4136, 4137, 7, 29, 0, 0, 4137, 4138, 7, 13, 0, 0, 4138, 4139, 7, 17, 0, 0, 4139, 4140, 7, 16, 0, 0, 4140, 4141, 7, 10, 0, 0, 4141, 762, 1, 0, 0, 0, 4142, 4143, 7, 26, 0, 0, 4143, 4144, 7, 15, 0, 0, 4144, 4145, 7, 6, 0, 0, 4145, 764, 1, 0, 0, 0, 4146, 4147, 7, 8, 0, 0, 4147, 4148, 7, 10, 0, 0, 4148, 4149, 7, 5, 0, 0, 4149, 4150, 7, 13, 0, 0, 4150, 766, 1, 0, 0, 0, 4151, 4152, 7, 8, 0, 0, 4152, 4153, 7, 10, 0, 0, 4153, 4154, 7, 9, 0, 0, 4154, 768, 1, 0, 0, 0, 4155, 4156, 7, 11, 0, 0, 4156, 4157, 7, 19, 0, 0, 4157, 4158, 7, 7, 0, 0, 4158, 4159, 7, 10, 0, 0, 4159, 770, 1, 0, 0, 0, 4160, 4161, 7, 18, 0, 0, 4161, 4162, 7, 10, 0, 0, 4162, 4163, 7, 16, 0, 0, 4163, 4164, 7, 29, 0, 0, 4164, 4165, 7, 10, 0, 0, 4165, 4166, 7, 10, 0, 0, 4166, 4167, 7, 7, 0, 0, 4167, 772, 1, 0, 0, 0, 4168, 4169, 7, 18, 0, 0, 4169, 4170, 7, 17, 0, 0, 4170, 4171, 7, 23, 0, 0, 4171, 4172, 7, 17, 0, 0, 4172, 4173, 7, 7, 0, 0, 4173, 4174, 7, 16, 0, 0, 4174, 774, 1, 0, 0, 0, 4175, 4176, 7, 18, 0, 0, 4176, 4177, 7, 17, 0, 0, 4177, 4178, 7, 16, 0, 0, 4178, 776, 1, 0, 0, 0, 4179, 4180, 7, 18, 0, 0, 4180, 4181, 7, 19, 0, 0, 4181, 4182, 7, 19, 0, 0, 4182, 4183, 7, 6, 0, 0, 4183, 4184, 7, 10, 0, 0, 4184, 4185, 7, 5, 0, 0, 4185, 4186, 7, 7, 0, 0, 4186, 778, 1, 0, 0, 0, 4187, 4188, 7, 14, 0, 0, 4188, 4189, 7, 20, 0, 0, 4189, 4190, 7, 5, 0, 0, 4190, 4191, 7, 13, 0, 0, 4191, 780, 1, 0, 0, 0, 4192, 4193, 7, 14, 0, 0, 4193, 4194, 7, 20, 0, 0, 4194, 4195, 7, 5, 0, 0, 4195, 4196, 7, 13, 0, 0, 4196, 4197, 7, 5, 0, 0, 4197, 4198, 7, 14, 0, 0, 4198, 4199, 7, 16, 0, 0, 4199, 4200, 7, 10, 0, 0, 4200, 4201, 7, 13, 0, 0, 4201, 782, 1, 0, 0, 0, 4202, 4203, 7, 14, 0, 0, 4203, 4204, 7, 19, 0, 0, 4204, 4205, 7, 5, 0, 0, 4205, 4206, 7, 6, 0, 0, 4206, 4207, 7, 10, 0, 0, 4207, 4208, 7, 9, 0, 0, 4208, 4209, 7, 14, 0, 0, 4209, 4210, 7, 10, 0, 0, 4210, 784, 1, 0, 0, 0, 4211, 4212, 7, 12, 0, 0, 4212, 4213, 7, 10, 0, 0, 4213, 4214, 7, 14, 0, 0, 4214, 786, 1, 0, 0, 0, 4215, 4216, 7, 12, 0, 0, 4216, 4217, 7, 10, 0, 0, 4217, 4218, 7, 14, 0, 0, 4218, 4219, 7, 17, 0, 0, 4219, 4220, 7, 15, 0, 0, 4220, 4221, 7, 5, 0, 0, 4221, 4222, 7, 6, 0, 0, 4222, 788, 1, 0, 0, 0, 4223, 4224, 7, 10, 0, 0, 4224, 4225, 7, 26, 0, 0, 4225, 4226, 7, 17, 0, 0, 4226, 4227, 7, 9, 0, 0, 4227, 4228, 7, 16, 0, 0, 4228, 4229, 7, 9, 0, 0, 4229, 790, 1, 0, 0, 0, 4230, 4231, 7, 10, 0, 0, 4231, 4232, 7, 26, 0, 0, 4232, 4233, 7, 16, 0, 0, 4233, 4234, 7, 13, 0, 0, 4234, 4235, 7, 5, 0, 0, 4235, 4236, 7, 14, 0, 0, 4236, 4237, 7, 16, 0, 0, 4237, 792, 1, 0, 0, 0, 4238, 4239, 7, 25, 0, 0, 4239, 4240, 7, 6, 0, 0, 4240, 4241, 7, 19, 0, 0, 4241, 4242, 7, 5, 0, 0, 4242, 4243, 7, 16, 0, 0, 4243, 794, 1, 0, 0, 0, 4244, 4245, 7, 23, 0, 0, 4245, 4246, 7, 13, 0, 0, 4246, 4247, 7, 10, 0, 0, 4247, 4248, 7, 5, 0, 0, 4248, 4249, 7, 16, 0, 0, 4249, 4250, 7, 10, 0, 0, 4250, 4251, 7, 9, 0, 0, 4251, 4252, 7, 16, 0, 0, 4252, 796, 1, 0, 0, 0, 4253, 4254, 7, 17, 0, 0, 4254, 4255, 7, 7, 0, 0, 4255, 4256, 7, 19, 0, 0, 4256, 4257, 7, 22, 0, 0, 4257, 4258, 7, 16, 0, 0, 4258, 798, 1, 0, 0, 0, 4259, 4260, 7, 17, 0, 0, 4260, 4261, 7, 7, 0, 0, 4261, 4262, 7, 16, 0, 0, 4262, 800, 1, 0, 0, 0, 4263, 4264, 7, 17, 0, 0, 4264, 4265, 7, 7, 0, 0, 4265, 4266, 7, 16, 0, 0, 4266, 4267, 7, 10, 0, 0, 4267, 4268, 7, 23, 0, 0, 4268, 4269, 7, 10, 0, 0, 4269, 4270, 7, 13, 0, 0, 4270, 802, 1, 0, 0, 0, 4271, 4272, 7, 17, 0, 0, 4272, 4273, 7, 7, 0, 0, 4273, 4274, 7, 16, 0, 0, 4274, 4275, 7, 10, 0, 0, 4275, 4276, 7, 13, 0, 0, 4276, 4277, 7, 27, 0, 0, 4277, 4278, 7, 5, 0, 0, 4278, 4279, 7, 6, 0, 0, 4279, 804, 1, 0, 0, 0, 4280, 4281, 7, 6, 0, 0, 4281, 4282, 7, 10, 0, 0, 4282, 4283, 7, 5, 0, 0, 4283, 4284, 7, 9, 0, 0, 4284, 4285, 7, 16, 0, 0, 4285, 806, 1, 0, 0, 0, 4286, 4287, 7, 7, 0, 0, 4287, 4288, 7, 5, 0, 0, 4288, 4289, 7, 16, 0, 0, 4289, 4290, 7, 17, 0, 0, 4290, 4291, 7, 19, 0, 0, 4291, 4292, 7, 7, 0, 0, 4292, 4293, 7, 5, 0, 0, 4293, 4294, 7, 6, 0, 0, 4294, 808, 1, 0, 0, 0, 4295, 4296, 7, 7, 0, 0, 4296, 4297, 7, 14, 0, 0, 4297, 4298, 7, 20, 0, 0, 4298, 4299, 7, 5, 0, 0, 4299, 4300, 7, 13, 0, 0, 4300, 810, 1, 0, 0, 0, 4301, 4302, 7, 7, 0, 0, 4302, 4303, 7, 19, 0, 0, 4303, 4304, 7, 7, 0, 0, 4304, 4305, 7, 10, 0, 0, 4305, 812, 1, 0, 0, 0, 4306, 4307, 7, 7, 0, 0, 4307, 4308, 7, 22, 0, 0, 4308, 4309, 7, 6, 0, 0, 4309, 4310, 7, 6, 0, 0, 4310, 4311, 7, 17, 0, 0, 4311, 4312, 7, 25, 0, 0, 4312, 814, 1, 0, 0, 0, 4313, 4314, 7, 7, 0, 0, 4314, 4315, 7, 22, 0, 0, 4315, 4316, 7, 15, 0, 0, 4316, 4317, 7, 10, 0, 0, 4317, 4318, 7, 13, 0, 0, 4318, 4319, 7, 17, 0, 0, 4319, 4320, 7, 14, 0, 0, 4320, 816, 1, 0, 0, 0, 4321, 4322, 7, 19, 0, 0, 4322, 4323, 7, 27, 0, 0, 4323, 4324, 7, 10, 0, 0, 4324, 4325, 7, 13, 0, 0, 4325, 4326, 7, 6, 0, 0, 4326, 4327, 7, 5, 0, 0, 4327, 4328, 7, 8, 0, 0, 4328, 818, 1, 0, 0, 0, 4329, 4330, 7, 24, 0, 0, 4330, 4331, 7, 19, 0, 0, 4331, 4332, 7, 9, 0, 0, 4332, 4333, 7, 17, 0, 0, 4333, 4334, 7, 16, 0, 0, 4334, 4335, 7, 17, 0, 0, 4335, 4336, 7, 19, 0, 0, 4336, 4337, 7, 7, 0, 0, 4337, 820, 1, 0, 0, 0, 4338, 4339, 7, 24, 0, 0, 4339, 4340, 7, 13, 0, 0, 4340, 4341, 7, 10, 0, 0, 4341, 4342, 7, 14, 0, 0, 4342, 4343, 7, 17, 0, 0, 4343, 4344, 7, 9, 0, 0, 4344, 4345, 7, 17, 0, 0, 4345, 4346, 7, 19, 0, 0, 4346, 4347, 7, 7, 0, 0, 4347, 822, 1, 0, 0, 0, 4348, 4349, 7, 13, 0, 0, 4349, 4350, 7, 10, 0, 0, 4350, 4351, 7, 5, 0, 0, 4351, 4352, 7, 6, 0, 0, 4352, 824, 1, 0, 0, 0, 4353, 4354, 7, 13, 0, 0, 4354, 4355, 7, 19, 0, 0, 4355, 4356, 7, 29, 0, 0, 4356, 826, 1, 0, 0, 0, 4357, 4358, 7, 9, 0, 0, 4358, 4359, 7, 10, 0, 0, 4359, 4360, 7, 16, 0, 0, 4360, 4361, 7, 19, 0, 0, 4361, 4362, 7, 25, 0, 0, 4362, 828, 1, 0, 0, 0, 4363, 4364, 7, 9, 0, 0, 4364, 4365, 7, 15, 0, 0, 4365, 4366, 7, 5, 0, 0, 4366, 4367, 7, 6, 0, 0, 4367, 4368, 7, 6, 0, 0, 4368, 4369, 7, 17, 0, 0, 4369, 4370, 7, 7, 0, 0, 4370, 4371, 7, 16, 0, 0, 4371, 830, 1, 0, 0, 0, 4372, 4373, 7, 9, 0, 0, 4373, 4374, 7, 22, 0, 0, 4374, 4375, 7, 18, 0, 0, 4375, 4376, 7, 9, 0, 0, 4376, 4377, 7, 16, 0, 0, 4377, 4378, 7, 13, 0, 0, 4378, 4379, 7, 17, 0, 0, 4379, 4380, 7, 7, 0, 0, 4380, 4381, 7, 23, 0, 0, 4381, 832, 1, 0, 0, 0, 4382, 4383, 7, 16, 0, 0, 4383, 4384, 7, 17, 0, 0, 4384, 4385, 7, 15, 0, 0, 4385, 4386, 7, 10, 0, 0, 4386, 834, 1, 0, 0, 0, 4387, 4388, 7, 16, 0, 0, 4388, 4389, 7, 17, 0, 0, 4389, 4390, 7, 15, 0, 0, 4390, 4391, 7, 10, 0, 0, 4391, 4392, 7, 9, 0, 0, 4392, 4393, 7, 16, 0, 0, 4393, 4394, 7, 5, 0, 0, 4394, 4395, 7, 15, 0, 0, 4395, 4396, 7, 24, 0, 0, 4396, 836, 1, 0, 0, 0, 4397, 4398, 7, 16, 0, 0, 4398, 4399, 7, 13, 0, 0, 4399, 4400, 7, 10, 0, 0, 4400, 4401, 7, 5, 0, 0, 4401, 4402, 7, 16, 0, 0, 4402, 838, 1, 0, 0, 0, 4403, 4404, 7, 16, 0, 0, 4404, 4405, 7, 13, 0, 0, 4405, 4406, 7, 17, 0, 0, 4406, 4407, 7, 15, 0, 0, 4407, 840, 1, 0, 0, 0, 4408, 4409, 7, 27, 0, 0, 4409, 4410, 7, 5, 0, 0, 4410, 4411, 7, 6, 0, 0, 4411, 4412, 7, 22, 0, 0, 4412, 4413, 7, 10, 0, 0, 4413, 4414, 7, 9, 0, 0, 4414, 842, 1, 0, 0, 0, 4415, 4416, 7, 27, 0, 0, 4416, 4417, 7, 5, 0, 0, 4417, 4418, 7, 13, 0, 0, 4418, 4419, 7, 14, 0, 0, 4419, 4420, 7, 20, 0, 0, 4420, 4421, 7, 5, 0, 0, 4421, 4422, 7, 13, 0, 0, 4422, 844, 1, 0, 0, 0, 4423, 4424, 7, 26, 0, 0, 4424, 4425, 7, 15, 0, 0, 4425, 4426, 7, 6, 0, 0, 4426, 4427, 7, 5, 0, 0, 4427, 4428, 7, 16, 0, 0, 4428, 4429, 7, 16, 0, 0, 4429, 4430, 7, 13, 0, 0, 4430, 4431, 7, 17, 0, 0, 4431, 4432, 7, 18, 0, 0, 4432, 4433, 7, 22, 0, 0, 4433, 4434, 7, 16, 0, 0, 4434, 4435, 7, 10, 0, 0, 4435, 4436, 7, 9, 0, 0, 4436, 846, 1, 0, 0, 0, 4437, 4438, 7, 26, 0, 0, 4438, 4439, 7, 15, 0, 0, 4439, 4440, 7, 6, 0, 0, 4440, 4441, 7, 14, 0, 0, 4441, 4442, 7, 19, 0, 0, 4442, 4443, 7, 15, 0, 0, 4443, 4444, 7, 15, 0, 0, 4444, 4445, 7, 10, 0, 0, 4445, 4446, 7, 7, 0, 0, 4446, 4447, 7, 16, 0, 0, 4447, 848, 1, 0, 0, 0, 4448, 4449, 7, 26, 0, 0, 4449, 4450, 7, 15, 0, 0, 4450, 4451, 7, 6, 0, 0, 4451, 4452, 7, 5, 0, 0, 4452, 4453, 7, 23, 0, 0, 4453, 4454, 7, 23, 0, 0, 4454, 850, 1, 0, 0, 0, 4455, 4456, 7, 26, 0, 0, 4456, 4457, 7, 15, 0, 0, 4457, 4458, 7, 6, 0, 0, 4458, 4459, 5, 95, 0, 0, 4459, 4460, 7, 17, 0, 0, 4460, 4461, 7, 9, 0, 0, 4461, 4462, 5, 95, 0, 0, 4462, 4463, 7, 29, 0, 0, 4463, 4464, 7, 10, 0, 0, 4464, 4465, 7, 6, 0, 0, 4465, 4466, 7, 6, 0, 0, 4466, 4467, 5, 95, 0, 0, 4467, 4468, 7, 25, 0, 0, 4468, 4469, 7, 19, 0, 0, 4469, 4470, 7, 13, 0, 0, 4470, 4471, 7, 15, 0, 0, 4471, 4472, 7, 10, 0, 0, 4472, 4473, 7, 12, 0, 0, 4473, 852, 1, 0, 0, 0, 4474, 4475, 7, 26, 0, 0, 4475, 4476, 7, 15, 0, 0, 4476, 4477, 7, 6, 0, 0, 4477, 4478, 5, 95, 0, 0, 4478, 4479, 7, 17, 0, 0, 4479, 4480, 7, 9, 0, 0, 4480, 4481, 5, 95, 0, 0, 4481, 4482, 7, 29, 0, 0, 4482, 4483, 7, 10, 0, 0, 4483, 4484, 7, 6, 0, 0, 4484, 4485, 7, 6, 0, 0, 4485, 4486, 5, 95, 0, 0, 4486, 4487, 7, 25, 0, 0, 4487, 4488, 7, 19, 0, 0, 4488, 4489, 7, 13, 0, 0, 4489, 4490, 7, 15, 0, 0, 4490, 4491, 7, 10, 0, 0, 4491, 4492, 7, 12, 0, 0, 4492, 4493, 5, 95, 0, 0, 4493, 4494, 7, 12, 0, 0, 4494, 4495, 7, 19, 0, 0, 4495, 4496, 7, 14, 0, 0, 4496, 4497, 7, 22, 0, 0, 4497, 4498, 7, 15, 0, 0, 4498, 4499, 7, 10, 0, 0, 4499, 4500, 7, 7, 0, 0, 4500, 4501, 7, 16, 0, 0, 4501, 854, 1, 0, 0, 0, 4502, 4503, 7, 26, 0, 0, 4503, 4504, 7, 15, 0, 0, 4504, 4505, 7, 6, 0, 0, 4505, 4506, 5, 95, 0, 0, 4506, 4507, 7, 17, 0, 0, 4507, 4508, 7, 9, 0, 0, 4508, 4509, 5, 95, 0, 0, 4509, 4510, 7, 29, 0, 0, 4510, 4511, 7, 10, 0, 0, 4511, 4512, 7, 6, 0, 0, 4512, 4513, 7, 6, 0, 0, 4513, 4514, 5, 95, 0, 0, 4514, 4515, 7, 25, 0, 0, 4515, 4516, 7, 19, 0, 0, 4516, 4517, 7, 13, 0, 0, 4517, 4518, 7, 15, 0, 0, 4518, 4519, 7, 10, 0, 0, 4519, 4520, 7, 12, 0, 0, 4520, 4521, 5, 95, 0, 0, 4521, 4522, 7, 14, 0, 0, 4522, 4523, 7, 19, 0, 0, 4523, 4524, 7, 7, 0, 0, 4524, 4525, 7, 16, 0, 0, 4525, 4526, 7, 10, 0, 0, 4526, 4527, 7, 7, 0, 0, 4527, 4528, 7, 16, 0, 0, 4528, 856, 1, 0, 0, 0, 4529, 4530, 7, 26, 0, 0, 4530, 4531, 7, 24, 0, 0, 4531, 4532, 7, 5, 0, 0, 4532, 4533, 7, 16, 0, 0, 4533, 4534, 7, 20, 0, 0, 4534, 858, 1, 0, 0, 0, 4535, 4536, 7, 26, 0, 0, 4536, 4537, 7, 24, 0, 0, 4537, 4538, 7, 5, 0, 0, 4538, 4539, 7, 16, 0, 0, 4539, 4540, 7, 20, 0, 0, 4540, 4541, 5, 95, 0, 0, 4541, 4542, 7, 10, 0, 0, 4542, 4543, 7, 26, 0, 0, 4543, 4544, 7, 17, 0, 0, 4544, 4545, 7, 9, 0, 0, 4545, 4546, 7, 16, 0, 0, 4546, 4547, 7, 9, 0, 0, 4547, 860, 1, 0, 0, 0, 4548, 4549, 7, 26, 0, 0, 4549, 4550, 7, 15, 0, 0, 4550, 4551, 7, 6, 0, 0, 4551, 4552, 7, 14, 0, 0, 4552, 4553, 7, 19, 0, 0, 4553, 4554, 7, 7, 0, 0, 4554, 4555, 7, 14, 0, 0, 4555, 4556, 7, 5, 0, 0, 4556, 4557, 7, 16, 0, 0, 4557, 862, 1, 0, 0, 0, 4558, 4559, 7, 26, 0, 0, 4559, 4560, 7, 15, 0, 0, 4560, 4561, 7, 6, 0, 0, 4561, 4562, 7, 10, 0, 0, 4562, 4563, 7, 6, 0, 0, 4563, 4564, 7, 10, 0, 0, 4564, 4565, 7, 15, 0, 0, 4565, 4566, 7, 10, 0, 0, 4566, 4567, 7, 7, 0, 0, 4567, 4568, 7, 16, 0, 0, 4568, 864, 1, 0, 0, 0, 4569, 4570, 7, 26, 0, 0, 4570, 4571, 7, 15, 0, 0, 4571, 4572, 7, 6, 0, 0, 4572, 4573, 7, 10, 0, 0, 4573, 4574, 7, 26, 0, 0, 4574, 4575, 7, 17, 0, 0, 4575, 4576, 7, 9, 0, 0, 4576, 4577, 7, 16, 0, 0, 4577, 4578, 7, 9, 0, 0, 4578, 866, 1, 0, 0, 0, 4579, 4580, 7, 26, 0, 0, 4580, 4581, 7, 15, 0, 0, 4581, 4582, 7, 6, 0, 0, 4582, 4583, 7, 25, 0, 0, 4583, 4584, 7, 19, 0, 0, 4584, 4585, 7, 13, 0, 0, 4585, 4586, 7, 10, 0, 0, 4586, 4587, 7, 9, 0, 0, 4587, 4588, 7, 16, 0, 0, 4588, 868, 1, 0, 0, 0, 4589, 4590, 7, 26, 0, 0, 4590, 4591, 7, 15, 0, 0, 4591, 4592, 7, 6, 0, 0, 4592, 4593, 7, 24, 0, 0, 4593, 4594, 7, 5, 0, 0, 4594, 4595, 7, 13, 0, 0, 4595, 4596, 7, 9, 0, 0, 4596, 4597, 7, 10, 0, 0, 4597, 870, 1, 0, 0, 0, 4598, 4599, 7, 26, 0, 0, 4599, 4600, 7, 15, 0, 0, 4600, 4601, 7, 6, 0, 0, 4601, 4602, 7, 24, 0, 0, 4602, 4603, 7, 17, 0, 0, 4603, 872, 1, 0, 0, 0, 4604, 4605, 7, 26, 0, 0, 4605, 4606, 7, 15, 0, 0, 4606, 4607, 7, 6, 0, 0, 4607, 4608, 7, 13, 0, 0, 4608, 4609, 7, 19, 0, 0, 4609, 4610, 7, 19, 0, 0, 4610, 4611, 7, 16, 0, 0, 4611, 874, 1, 0, 0, 0, 4612, 4613, 7, 26, 0, 0, 4613, 4614, 7, 15, 0, 0, 4614, 4615, 7, 6, 0, 0, 4615, 4616, 7, 9, 0, 0, 4616, 4617, 7, 10, 0, 0, 4617, 4618, 7, 13, 0, 0, 4618, 4619, 7, 17, 0, 0, 4619, 4620, 7, 5, 0, 0, 4620, 4621, 7, 6, 0, 0, 4621, 4622, 7, 17, 0, 0, 4622, 4623, 7, 11, 0, 0, 4623, 4624, 7, 10, 0, 0, 4624, 876, 1, 0, 0, 0, 4625, 4626, 7, 14, 0, 0, 4626, 4627, 7, 5, 0, 0, 4627, 4628, 7, 6, 0, 0, 4628, 4629, 7, 6, 0, 0, 4629, 878, 1, 0, 0, 0, 4630, 4631, 7, 14, 0, 0, 4631, 4632, 7, 22, 0, 0, 4632, 4633, 7, 13, 0, 0, 4633, 4634, 7, 13, 0, 0, 4634, 4635, 7, 10, 0, 0, 4635, 4636, 7, 7, 0, 0, 4636, 4637, 7, 16, 0, 0, 4637, 880, 1, 0, 0, 0, 4638, 4639, 7, 5, 0, 0, 4639, 4640, 7, 16, 0, 0, 4640, 4641, 7, 16, 0, 0, 4641, 4642, 7, 5, 0, 0, 4642, 4643, 7, 14, 0, 0, 4643, 4644, 7, 20, 0, 0, 4644, 882, 1, 0, 0, 0, 4645, 4646, 7, 12, 0, 0, 4646, 4647, 7, 10, 0, 0, 4647, 4648, 7, 16, 0, 0, 4648, 4649, 7, 5, 0, 0, 4649, 4650, 7, 14, 0, 0, 4650, 4651, 7, 20, 0, 0, 4651, 884, 1, 0, 0, 0, 4652, 4653, 7, 10, 0, 0, 4653, 4654, 7, 26, 0, 0, 4654, 4655, 7, 24, 0, 0, 4655, 4656, 7, 13, 0, 0, 4656, 4657, 7, 10, 0, 0, 4657, 4658, 7, 9, 0, 0, 4658, 4659, 7, 9, 0, 0, 4659, 4660, 7, 17, 0, 0, 4660, 4661, 7, 19, 0, 0, 4661, 4662, 7, 7, 0, 0, 4662, 886, 1, 0, 0, 0, 4663, 4664, 7, 23, 0, 0, 4664, 4665, 7, 10, 0, 0, 4665, 4666, 7, 7, 0, 0, 4666, 4667, 7, 10, 0, 0, 4667, 4668, 7, 13, 0, 0, 4668, 4669, 7, 5, 0, 0, 4669, 4670, 7, 16, 0, 0, 4670, 4671, 7, 10, 0, 0, 4671, 4672, 7, 12, 0, 0, 4672, 888, 1, 0, 0, 0, 4673, 4674, 7, 6, 0, 0, 4674, 4675, 7, 19, 0, 0, 4675, 4676, 7, 23, 0, 0, 4676, 4677, 7, 23, 0, 0, 4677, 4678, 7, 10, 0, 0, 4678, 4679, 7, 12, 0, 0, 4679, 890, 1, 0, 0, 0, 4680, 4681, 7, 9, 0, 0, 4681, 4682, 7, 16, 0, 0, 4682, 4683, 7, 19, 0, 0, 4683, 4684, 7, 13, 0, 0, 4684, 4685, 7, 10, 0, 0, 4685, 4686, 7, 12, 0, 0, 4686, 892, 1, 0, 0, 0, 4687, 4688, 7, 17, 0, 0, 4688, 4689, 7, 7, 0, 0, 4689, 4690, 7, 14, 0, 0, 4690, 4691, 7, 6, 0, 0, 4691, 4692, 7, 22, 0, 0, 4692, 4693, 7, 12, 0, 0, 4693, 4694, 7, 10, 0, 0, 4694, 894, 1, 0, 0, 0, 4695, 4696, 7, 13, 0, 0, 4696, 4697, 7, 19, 0, 0, 4697, 4698, 7, 22, 0, 0, 4698, 4699, 7, 16, 0, 0, 4699, 4700, 7, 17, 0, 0, 4700, 4701, 7, 7, 0, 0, 4701, 4702, 7, 10, 0, 0, 4702, 896, 1, 0, 0, 0, 4703, 4704, 7, 16, 0, 0, 4704, 4705, 7, 13, 0, 0, 4705, 4706, 7, 5, 0, 0, 4706, 4707, 7, 7, 0, 0, 4707, 4708, 7, 9, 0, 0, 4708, 4709, 7, 25, 0, 0, 4709, 4710, 7, 19, 0, 0, 4710, 4711, 7, 13, 0, 0, 4711, 4712, 7, 15, 0, 0, 4712, 898, 1, 0, 0, 0, 4713, 4714, 7, 17, 0, 0, 4714, 4715, 7, 15, 0, 0, 4715, 4716, 7, 24, 0, 0, 4716, 4717, 7, 19, 0, 0, 4717, 4718, 7, 13, 0, 0, 4718, 4719, 7, 16, 0, 0, 4719, 900, 1, 0, 0, 0, 4720, 4721, 7, 24, 0, 0, 4721, 4722, 7, 19, 0, 0, 4722, 4723, 7, 6, 0, 0, 4723, 4724, 7, 17, 0, 0, 4724, 4725, 7, 14, 0, 0, 4725, 4726, 7, 8, 0, 0, 4726, 902, 1, 0, 0, 0, 4727, 4728, 7, 15, 0, 0, 4728, 4729, 7, 10, 0, 0, 4729, 4730, 7, 16, 0, 0, 4730, 4731, 7, 20, 0, 0, 4731, 4732, 7, 19, 0, 0, 4732, 4733, 7, 12, 0, 0, 4733, 904, 1, 0, 0, 0, 4734, 4735, 7, 13, 0, 0, 4735, 4736, 7, 10, 0, 0, 4736, 4737, 7, 25, 0, 0, 4737, 4738, 7, 10, 0, 0, 4738, 4739, 7, 13, 0, 0, 4739, 4740, 7, 10, 0, 0, 4740, 4741, 7, 7, 0, 0, 4741, 4742, 7, 14, 0, 0, 4742, 4743, 7, 17, 0, 0, 4743, 4744, 7, 7, 0, 0, 4744, 4745, 7, 23, 0, 0, 4745, 906, 1, 0, 0, 0, 4746, 4747, 7, 7, 0, 0, 4747, 4748, 7, 10, 0, 0, 4748, 4749, 7, 29, 0, 0, 4749, 908, 1, 0, 0, 0, 4750, 4751, 7, 19, 0, 0, 4751, 4752, 7, 6, 0, 0, 4752, 4753, 7, 12, 0, 0, 4753, 910, 1, 0, 0, 0, 4754, 4755, 7, 27, 0, 0, 4755, 4756, 7, 5, 0, 0, 4756, 4757, 7, 6, 0, 0, 4757, 4758, 7, 22, 0, 0, 4758, 4759, 7, 10, 0, 0, 4759, 912, 1, 0, 0, 0, 4760, 4761, 7, 9, 0, 0, 4761, 4762, 7, 22, 0, 0, 4762, 4763, 7, 18, 0, 0, 4763, 4764, 7, 9, 0, 0, 4764, 4765, 7, 14, 0, 0, 4765, 4766, 7, 13, 0, 0, 4766, 4767, 7, 17, 0, 0, 4767, 4768, 7, 24, 0, 0, 4768, 4769, 7, 16, 0, 0, 4769, 4770, 7, 17, 0, 0, 4770, 4771, 7, 19, 0, 0, 4771, 4772, 7, 7, 0, 0, 4772, 914, 1, 0, 0, 0, 4773, 4774, 7, 24, 0, 0, 4774, 4775, 7, 22, 0, 0, 4775, 4776, 7, 18, 0, 0, 4776, 4777, 7, 6, 0, 0, 4777, 4778, 7, 17, 0, 0, 4778, 4779, 7, 14, 0, 0, 4779, 4780, 7, 5, 0, 0, 4780, 4781, 7, 16, 0, 0, 4781, 4782, 7, 17, 0, 0, 4782, 4783, 7, 19, 0, 0, 4783, 4784, 7, 7, 0, 0, 4784, 916, 1, 0, 0, 0, 4785, 4786, 7, 19, 0, 0, 4786, 4787, 7, 22, 0, 0, 4787, 4788, 7, 16, 0, 0, 4788, 918, 1, 0, 0, 0, 4789, 4790, 7, 10, 0, 0, 4790, 4791, 7, 7, 0, 0, 4791, 4792, 7, 12, 0, 0, 4792, 920, 1, 0, 0, 0, 4793, 4794, 7, 13, 0, 0, 4794, 4795, 7, 19, 0, 0, 4795, 4796, 7, 22, 0, 0, 4796, 4797, 7, 16, 0, 0, 4797, 4798, 7, 17, 0, 0, 4798, 4799, 7, 7, 0, 0, 4799, 4800, 7, 10, 0, 0, 4800, 4801, 7, 9, 0, 0, 4801, 922, 1, 0, 0, 0, 4802, 4803, 7, 9, 0, 0, 4803, 4804, 7, 14, 0, 0, 4804, 4805, 7, 20, 0, 0, 4805, 4806, 7, 10, 0, 0, 4806, 4807, 7, 15, 0, 0, 4807, 4808, 7, 5, 0, 0, 4808, 4809, 7, 9, 0, 0, 4809, 924, 1, 0, 0, 0, 4810, 4811, 7, 24, 0, 0, 4811, 4812, 7, 13, 0, 0, 4812, 4813, 7, 19, 0, 0, 4813, 4814, 7, 14, 0, 0, 4814, 4815, 7, 10, 0, 0, 4815, 4816, 7, 12, 0, 0, 4816, 4817, 7, 22, 0, 0, 4817, 4818, 7, 13, 0, 0, 4818, 4819, 7, 10, 0, 0, 4819, 4820, 7, 9, 0, 0, 4820, 926, 1, 0, 0, 0, 4821, 4822, 7, 17, 0, 0, 4822, 4823, 7, 7, 0, 0, 4823, 4824, 7, 24, 0, 0, 4824, 4825, 7, 22, 0, 0, 4825, 4826, 7, 16, 0, 0, 4826, 928, 1, 0, 0, 0, 4827, 4828, 7, 9, 0, 0, 4828, 4829, 7, 22, 0, 0, 4829, 4830, 7, 24, 0, 0, 4830, 4831, 7, 24, 0, 0, 4831, 4832, 7, 19, 0, 0, 4832, 4833, 7, 13, 0, 0, 4833, 4834, 7, 16, 0, 0, 4834, 930, 1, 0, 0, 0, 4835, 4836, 7, 24, 0, 0, 4836, 4837, 7, 5, 0, 0, 4837, 4838, 7, 13, 0, 0, 4838, 4839, 7, 5, 0, 0, 4839, 4840, 7, 6, 0, 0, 4840, 4841, 7, 6, 0, 0, 4841, 4842, 7, 10, 0, 0, 4842, 4843, 7, 6, 0, 0, 4843, 932, 1, 0, 0, 0, 4844, 4845, 7, 9, 0, 0, 4845, 4846, 7, 28, 0, 0, 4846, 4847, 7, 6, 0, 0, 4847, 934, 1, 0, 0, 0, 4848, 4849, 7, 12, 0, 0, 4849, 4850, 7, 10, 0, 0, 4850, 4851, 7, 24, 0, 0, 4851, 4852, 7, 10, 0, 0, 4852, 4853, 7, 7, 0, 0, 4853, 4854, 7, 12, 0, 0, 4854, 4855, 7, 9, 0, 0, 4855, 936, 1, 0, 0, 0, 4856, 4857, 7, 19, 0, 0, 4857, 4858, 7, 27, 0, 0, 4858, 4859, 7, 10, 0, 0, 4859, 4860, 7, 13, 0, 0, 4860, 4861, 7, 13, 0, 0, 4861, 4862, 7, 17, 0, 0, 4862, 4863, 7, 12, 0, 0, 4863, 4864, 7, 17, 0, 0, 4864, 4865, 7, 7, 0, 0, 4865, 4866, 7, 23, 0, 0, 4866, 938, 1, 0, 0, 0, 4867, 4868, 7, 14, 0, 0, 4868, 4869, 7, 19, 0, 0, 4869, 4870, 7, 7, 0, 0, 4870, 4871, 7, 25, 0, 0, 4871, 4872, 7, 6, 0, 0, 4872, 4873, 7, 17, 0, 0, 4873, 4874, 7, 14, 0, 0, 4874, 4875, 7, 16, 0, 0, 4875, 940, 1, 0, 0, 0, 4876, 4877, 7, 9, 0, 0, 4877, 4878, 7, 21, 0, 0, 4878, 4879, 7, 17, 0, 0, 4879, 4880, 7, 24, 0, 0, 4880, 942, 1, 0, 0, 0, 4881, 4882, 7, 6, 0, 0, 4882, 4883, 7, 19, 0, 0, 4883, 4884, 7, 14, 0, 0, 4884, 4885, 7, 21, 0, 0, 4885, 4886, 7, 10, 0, 0, 4886, 4887, 7, 12, 0, 0, 4887, 944, 1, 0, 0, 0, 4888, 4889, 7, 16, 0, 0, 4889, 4890, 7, 17, 0, 0, 4890, 4891, 7, 10, 0, 0, 4891, 4892, 7, 9, 0, 0, 4892, 946, 1, 0, 0, 0, 4893, 4894, 7, 13, 0, 0, 4894, 4895, 7, 19, 0, 0, 4895, 4896, 7, 6, 0, 0, 4896, 4897, 7, 6, 0, 0, 4897, 4898, 7, 22, 0, 0, 4898, 4899, 7, 24, 0, 0, 4899, 948, 1, 0, 0, 0, 4900, 4901, 7, 14, 0, 0, 4901, 4902, 7, 22, 0, 0, 4902, 4903, 7, 18, 0, 0, 4903, 4904, 7, 10, 0, 0, 4904, 950, 1, 0, 0, 0, 4905, 4906, 7, 23, 0, 0, 4906, 4907, 7, 13, 0, 0, 4907, 4908, 7, 19, 0, 0, 4908, 4909, 7, 22, 0, 0, 4909, 4910, 7, 24, 0, 0, 4910, 4911, 7, 17, 0, 0, 4911, 4912, 7, 7, 0, 0, 4912, 4913, 7, 23, 0, 0, 4913, 952, 1, 0, 0, 0, 4914, 4915, 7, 9, 0, 0, 4915, 4916, 7, 10, 0, 0, 4916, 4917, 7, 16, 0, 0, 4917, 4918, 7, 9, 0, 0, 4918, 954, 1, 0, 0, 0, 4919, 4920, 7, 16, 0, 0, 4920, 4921, 7, 5, 0, 0, 4921, 4922, 7, 18, 0, 0, 4922, 4923, 7, 6, 0, 0, 4923, 4924, 7, 10, 0, 0, 4924, 4925, 7, 9, 0, 0, 4925, 4926, 7, 5, 0, 0, 4926, 4927, 7, 15, 0, 0, 4927, 4928, 7, 24, 0, 0, 4928, 4929, 7, 6, 0, 0, 4929, 4930, 7, 10, 0, 0, 4930, 956, 1, 0, 0, 0, 4931, 4932, 7, 19, 0, 0, 4932, 4933, 7, 13, 0, 0, 4933, 4934, 7, 12, 0, 0, 4934, 4935, 7, 17, 0, 0, 4935, 4936, 7, 7, 0, 0, 4936, 4937, 7, 5, 0, 0, 4937, 4938, 7, 6, 0, 0, 4938, 4939, 7, 17, 0, 0, 4939, 4940, 7, 16, 0, 0, 4940, 4941, 7, 8, 0, 0, 4941, 958, 1, 0, 0, 0, 4942, 4943, 7, 26, 0, 0, 4943, 4944, 7, 15, 0, 0, 4944, 4945, 7, 6, 0, 0, 4945, 4946, 7, 16, 0, 0, 4946, 4947, 7, 5, 0, 0, 4947, 4948, 7, 18, 0, 0, 4948, 4949, 7, 6, 0, 0, 4949, 4950, 7, 10, 0, 0, 4950, 960, 1, 0, 0, 0, 4951, 4952, 7, 14, 0, 0, 4952, 4953, 7, 19, 0, 0, 4953, 4954, 7, 6, 0, 0, 4954, 4955, 7, 22, 0, 0, 4955, 4956, 7, 15, 0, 0, 4956, 4957, 7, 7, 0, 0, 4957, 4958, 7, 9, 0, 0, 4958, 962, 1, 0, 0, 0, 4959, 4960, 7, 26, 0, 0, 4960, 4961, 7, 15, 0, 0, 4961, 4962, 7, 6, 0, 0, 4962, 4963, 7, 7, 0, 0, 4963, 4964, 7, 5, 0, 0, 4964, 4965, 7, 15, 0, 0, 4965, 4966, 7, 10, 0, 0, 4966, 4967, 7, 9, 0, 0, 4967, 4968, 7, 24, 0, 0, 4968, 4969, 7, 5, 0, 0, 4969, 4970, 7, 14, 0, 0, 4970, 4971, 7, 10, 0, 0, 4971, 4972, 7, 9, 0, 0, 4972, 964, 1, 0, 0, 0, 4973, 4974, 7, 13, 0, 0, 4974, 4975, 7, 19, 0, 0, 4975, 4976, 7, 29, 0, 0, 4976, 4977, 7, 16, 0, 0, 4977, 4978, 7, 8, 0, 0, 4978, 4979, 7, 24, 0, 0, 4979, 4980, 7, 10, 0, 0, 4980, 966, 1, 0, 0, 0, 4981, 4982, 7, 7, 0, 0, 4982, 4983, 7, 19, 0, 0, 4983, 4984, 7, 13, 0, 0, 4984, 4985, 7, 15, 0, 0, 4985, 4986, 7, 5, 0, 0, 4986, 4987, 7, 6, 0, 0, 4987, 4988, 7, 17, 0, 0, 4988, 4989, 7, 11, 0, 0, 4989, 4990, 7, 10, 0, 0, 4990, 4991, 7, 12, 0, 0, 4991, 968, 1, 0, 0, 0, 4992, 4993, 7, 29, 0, 0, 4993, 4994, 7, 17, 0, 0, 4994, 4995, 7, 16, 0, 0, 4995, 4996, 7, 20, 0, 0, 4996, 4997, 7, 17, 0, 0, 4997, 4998, 7, 7, 0, 0, 4998, 970, 1, 0, 0, 0, 4999, 5000, 7, 25, 0, 0, 5000, 5001, 7, 17, 0, 0, 5001, 5002, 7, 6, 0, 0, 5002, 5003, 7, 16, 0, 0, 5003, 5004, 7, 10, 0, 0, 5004, 5005, 7, 13, 0, 0, 5005, 972, 1, 0, 0, 0, 5006, 5007, 7, 23, 0, 0, 5007, 5008, 7, 13, 0, 0, 5008, 5009, 7, 19, 0, 0, 5009, 5010, 7, 22, 0, 0, 5010, 5011, 7, 24, 0, 0, 5011, 5012, 7, 9, 0, 0, 5012, 974, 1, 0, 0, 0, 5013, 5014, 7, 19, 0, 0, 5014, 5015, 7, 16, 0, 0, 5015, 5016, 7, 20, 0, 0, 5016, 5017, 7, 10, 0, 0, 5017, 5018, 7, 13, 0, 0, 5018, 5019, 7, 9, 0, 0, 5019, 976, 1, 0, 0, 0, 5020, 5021, 7, 7, 0, 0, 5021, 5022, 7, 25, 0, 0, 5022, 5023, 7, 14, 0, 0, 5023, 978, 1, 0, 0, 0, 5024, 5025, 7, 7, 0, 0, 5025, 5026, 7, 25, 0, 0, 5026, 5027, 7, 12, 0, 0, 5027, 980, 1, 0, 0, 0, 5028, 5029, 7, 7, 0, 0, 5029, 5030, 7, 25, 0, 0, 5030, 5031, 7, 21, 0, 0, 5031, 5032, 7, 14, 0, 0, 5032, 982, 1, 0, 0, 0, 5033, 5034, 7, 7, 0, 0, 5034, 5035, 7, 25, 0, 0, 5035, 5036, 7, 21, 0, 0, 5036, 5037, 7, 12, 0, 0, 5037, 984, 1, 0, 0, 0, 5038, 5039, 7, 22, 0, 0, 5039, 5040, 7, 10, 0, 0, 5040, 5041, 7, 9, 0, 0, 5041, 5042, 7, 14, 0, 0, 5042, 5043, 7, 5, 0, 0, 5043, 5044, 7, 24, 0, 0, 5044, 5045, 7, 10, 0, 0, 5045, 986, 1, 0, 0, 0, 5046, 5047, 7, 27, 0, 0, 5047, 5048, 7, 17, 0, 0, 5048, 5049, 7, 10, 0, 0, 5049, 5050, 7, 29, 0, 0, 5050, 5051, 7, 9, 0, 0, 5051, 988, 1, 0, 0, 0, 5052, 5053, 7, 7, 0, 0, 5053, 5054, 7, 19, 0, 0, 5054, 5055, 7, 13, 0, 0, 5055, 5056, 7, 15, 0, 0, 5056, 5057, 7, 5, 0, 0, 5057, 5058, 7, 6, 0, 0, 5058, 5059, 7, 17, 0, 0, 5059, 5060, 7, 11, 0, 0, 5060, 5061, 7, 10, 0, 0, 5061, 990, 1, 0, 0, 0, 5062, 5063, 7, 12, 0, 0, 5063, 5064, 7, 22, 0, 0, 5064, 5065, 7, 15, 0, 0, 5065, 5066, 7, 24, 0, 0, 5066, 992, 1, 0, 0, 0, 5067, 5068, 7, 24, 0, 0, 5068, 5069, 7, 13, 0, 0, 5069, 5070, 7, 17, 0, 0, 5070, 5071, 7, 7, 0, 0, 5071, 5072, 7, 16, 0, 0, 5072, 5073, 5, 95, 0, 0, 5073, 5074, 7, 9, 0, 0, 5074, 5075, 7, 16, 0, 0, 5075, 5076, 7, 13, 0, 0, 5076, 5077, 7, 17, 0, 0, 5077, 5078, 7, 14, 0, 0, 5078, 5079, 7, 16, 0, 0, 5079, 5080, 5, 95, 0, 0, 5080, 5081, 7, 24, 0, 0, 5081, 5082, 7, 5, 0, 0, 5082, 5083, 7, 13, 0, 0, 5083, 5084, 7, 5, 0, 0, 5084, 5085, 7, 15, 0, 0, 5085, 5086, 7, 9, 0, 0, 5086, 994, 1, 0, 0, 0, 5087, 5088, 7, 27, 0, 0, 5088, 5089, 7, 5, 0, 0, 5089, 5090, 7, 13, 0, 0, 5090, 5091, 7, 17, 0, 0, 5091, 5092, 7, 5, 0, 0, 5092, 5093, 7, 18, 0, 0, 5093, 5094, 7, 6, 0, 0, 5094, 5095, 7, 10, 0, 0, 5095, 5096, 5, 95, 0, 0, 5096, 5097, 7, 14, 0, 0, 5097, 5098, 7, 19, 0, 0, 5098, 5099, 7, 7, 0, 0, 5099, 5100, 7, 25, 0, 0, 5100, 5101, 7, 6, 0, 0, 5101, 5102, 7, 17, 0, 0, 5102, 5103, 7, 14, 0, 0, 5103, 5104, 7, 16, 0, 0, 5104, 996, 1, 0, 0, 0, 5105, 5106, 7, 10, 0, 0, 5106, 5107, 7, 13, 0, 0, 5107, 5108, 7, 13, 0, 0, 5108, 5109, 7, 19, 0, 0, 5109, 5110, 7, 13, 0, 0, 5110, 998, 1, 0, 0, 0, 5111, 5112, 7, 22, 0, 0, 5112, 5113, 7, 9, 0, 0, 5113, 5114, 7, 10, 0, 0, 5114, 5115, 5, 95, 0, 0, 5115, 5116, 7, 27, 0, 0, 5116, 5117, 7, 5, 0, 0, 5117, 5118, 7, 13, 0, 0, 5118, 5119, 7, 17, 0, 0, 5119, 5120, 7, 5, 0, 0, 5120, 5121, 7, 18, 0, 0, 5121, 5122, 7, 6, 0, 0, 5122, 5123, 7, 10, 0, 0, 5123, 1000, 1, 0, 0, 0, 5124, 5125, 7, 22, 0, 0, 5125, 5126, 7, 9, 0, 0, 5126, 5127, 7, 10, 0, 0, 5127, 5128, 5, 95, 0, 0, 5128, 5129, 7, 14, 0, 0, 5129, 5130, 7, 19, 0, 0, 5130, 5131, 7, 6, 0, 0, 5131, 5132, 7, 22, 0, 0, 5132, 5133, 7, 15, 0, 0, 5133, 5134, 7, 7, 0, 0, 5134, 1002, 1, 0, 0, 0, 5135, 5136, 7, 5, 0, 0, 5136, 5137, 7, 6, 0, 0, 5137, 5138, 7, 17, 0, 0, 5138, 5139, 7, 5, 0, 0, 5139, 5140, 7, 9, 0, 0, 5140, 1004, 1, 0, 0, 0, 5141, 5142, 7, 14, 0, 0, 5142, 5143, 7, 19, 0, 0, 5143, 5144, 7, 7, 0, 0, 5144, 5145, 7, 9, 0, 0, 5145, 5146, 7, 16, 0, 0, 5146, 5147, 7, 5, 0, 0, 5147, 5148, 7, 7, 0, 0, 5148, 5149, 7, 16, 0, 0, 5149, 1006, 1, 0, 0, 0, 5150, 5151, 7, 24, 0, 0, 5151, 5152, 7, 10, 0, 0, 5152, 5153, 7, 13, 0, 0, 5153, 5154, 7, 25, 0, 0, 5154, 5155, 7, 19, 0, 0, 5155, 5156, 7, 13, 0, 0, 5156, 5157, 7, 15, 0, 0, 5157, 1008, 1, 0, 0, 0, 5158, 5159, 7, 23, 0, 0, 5159, 5160, 7, 10, 0, 0, 5160, 5161, 7, 16, 0, 0, 5161, 1010, 1, 0, 0, 0, 5162, 5163, 7, 12, 0, 0, 5163, 5164, 7, 17, 0, 0, 5164, 5165, 7, 5, 0, 0, 5165, 5166, 7, 23, 0, 0, 5166, 5167, 7, 7, 0, 0, 5167, 5168, 7, 19, 0, 0, 5168, 5169, 7, 9, 0, 0, 5169, 5170, 7, 16, 0, 0, 5170, 5171, 7, 17, 0, 0, 5171, 5172, 7, 14, 0, 0, 5172, 5173, 7, 9, 0, 0, 5173, 1012, 1, 0, 0, 0, 5174, 5175, 7, 9, 0, 0, 5175, 5176, 7, 16, 0, 0, 5176, 5177, 7, 5, 0, 0, 5177, 5178, 7, 14, 0, 0, 5178, 5179, 7, 21, 0, 0, 5179, 5180, 7, 10, 0, 0, 5180, 5181, 7, 12, 0, 0, 5181, 1014, 1, 0, 0, 0, 5182, 5183, 7, 10, 0, 0, 5183, 5184, 7, 6, 0, 0, 5184, 5185, 7, 9, 0, 0, 5185, 5186, 7, 17, 0, 0, 5186, 5187, 7, 25, 0, 0, 5187, 1016, 1, 0, 0, 0, 5188, 5189, 7, 29, 0, 0, 5189, 5190, 7, 20, 0, 0, 5190, 5191, 7, 17, 0, 0, 5191, 5192, 7, 6, 0, 0, 5192, 5193, 7, 10, 0, 0, 5193, 1018, 1, 0, 0, 0, 5194, 5195, 7, 13, 0, 0, 5195, 5196, 7, 10, 0, 0, 5196, 5197, 7, 27, 0, 0, 5197, 5198, 7, 10, 0, 0, 5198, 5199, 7, 13, 0, 0, 5199, 5200, 7, 9, 0, 0, 5200, 5201, 7, 10, 0, 0, 5201, 1020, 1, 0, 0, 0, 5202, 5203, 7, 25, 0, 0, 5203, 5204, 7, 19, 0, 0, 5204, 5205, 7, 13, 0, 0, 5205, 5206, 7, 10, 0, 0, 5206, 5207, 7, 5, 0, 0, 5207, 5208, 7, 14, 0, 0, 5208, 5209, 7, 20, 0, 0, 5209, 1022, 1, 0, 0, 0, 5210, 5211, 7, 9, 0, 0, 5211, 5212, 7, 6, 0, 0, 5212, 5213, 7, 17, 0, 0, 5213, 5214, 7, 14, 0, 0, 5214, 5215, 7, 10, 0, 0, 5215, 1024, 1, 0, 0, 0, 5216, 5217, 7, 10, 0, 0, 5217, 5218, 7, 26, 0, 0, 5218, 5219, 7, 17, 0, 0, 5219, 5220, 7, 16, 0, 0, 5220, 1026, 1, 0, 0, 0, 5221, 5222, 7, 13, 0, 0, 5222, 5223, 7, 10, 0, 0, 5223, 5224, 7, 16, 0, 0, 5224, 5225, 7, 22, 0, 0, 5225, 5226, 7, 13, 0, 0, 5226, 5227, 7, 7, 0, 0, 5227, 1028, 1, 0, 0, 0, 5228, 5229, 7, 28, 0, 0, 5229, 5230, 7, 22, 0, 0, 5230, 5231, 7, 10, 0, 0, 5231, 5232, 7, 13, 0, 0, 5232, 5233, 7, 8, 0, 0, 5233, 1030, 1, 0, 0, 0, 5234, 5235, 7, 13, 0, 0, 5235, 5236, 7, 5, 0, 0, 5236, 5237, 7, 17, 0, 0, 5237, 5238, 7, 9, 0, 0, 5238, 5239, 7, 10, 0, 0, 5239, 1032, 1, 0, 0, 0, 5240, 5241, 7, 9, 0, 0, 5241, 5242, 7, 28, 0, 0, 5242, 5243, 7, 6, 0, 0, 5243, 5244, 7, 9, 0, 0, 5244, 5245, 7, 16, 0, 0, 5245, 5246, 7, 5, 0, 0, 5246, 5247, 7, 16, 0, 0, 5247, 5248, 7, 10, 0, 0, 5248, 1034, 1, 0, 0, 0, 5249, 5250, 7, 12, 0, 0, 5250, 5251, 7, 10, 0, 0, 5251, 5252, 7, 18, 0, 0, 5252, 5253, 7, 22, 0, 0, 5253, 5254, 7, 23, 0, 0, 5254, 1036, 1, 0, 0, 0, 5255, 5256, 7, 6, 0, 0, 5256, 5257, 7, 19, 0, 0, 5257, 5258, 7, 23, 0, 0, 5258, 1038, 1, 0, 0, 0, 5259, 5260, 7, 17, 0, 0, 5260, 5261, 7, 7, 0, 0, 5261, 5262, 7, 25, 0, 0, 5262, 5263, 7, 19, 0, 0, 5263, 1040, 1, 0, 0, 0, 5264, 5265, 7, 7, 0, 0, 5265, 5266, 7, 19, 0, 0, 5266, 5267, 7, 16, 0, 0, 5267, 5268, 7, 17, 0, 0, 5268, 5269, 7, 14, 0, 0, 5269, 5270, 7, 10, 0, 0, 5270, 1042, 1, 0, 0, 0, 5271, 5272, 7, 29, 0, 0, 5272, 5273, 7, 5, 0, 0, 5273, 5274, 7, 13, 0, 0, 5274, 5275, 7, 7, 0, 0, 5275, 5276, 7, 17, 0, 0, 5276, 5277, 7, 7, 0, 0, 5277, 5278, 7, 23, 0, 0, 5278, 1044, 1, 0, 0, 0, 5279, 5280, 7, 10, 0, 0, 5280, 5281, 7, 26, 0, 0, 5281, 5282, 7, 14, 0, 0, 5282, 5283, 7, 10, 0, 0, 5283, 5284, 7, 24, 0, 0, 5284, 5285, 7, 16, 0, 0, 5285, 5286, 7, 17, 0, 0, 5286, 5287, 7, 19, 0, 0, 5287, 5288, 7, 7, 0, 0, 5288, 1046, 1, 0, 0, 0, 5289, 5290, 7, 5, 0, 0, 5290, 5291, 7, 9, 0, 0, 5291, 5292, 7, 9, 0, 0, 5292, 5293, 7, 10, 0, 0, 5293, 5294, 7, 13, 0, 0, 5294, 5295, 7, 16, 0, 0, 5295, 1048, 1, 0, 0, 0, 5296, 5297, 7, 6, 0, 0, 5297, 5298, 7, 19, 0, 0, 5298, 5299, 7, 19, 0, 0, 5299, 5300, 7, 24, 0, 0, 5300, 1050, 1, 0, 0, 0, 5301, 5302, 7, 19, 0, 0, 5302, 5303, 7, 24, 0, 0, 5303, 5304, 7, 10, 0, 0, 5304, 5305, 7, 7, 0, 0, 5305, 1052, 1, 0, 0, 0, 5306, 5307, 7, 5, 0, 0, 5307, 5308, 7, 18, 0, 0, 5308, 5309, 7, 9, 0, 0, 5309, 1054, 1, 0, 0, 0, 5310, 5311, 7, 14, 0, 0, 5311, 5312, 7, 18, 0, 0, 5312, 5313, 7, 13, 0, 0, 5313, 5314, 7, 16, 0, 0, 5314, 1056, 1, 0, 0, 0, 5315, 5316, 7, 14, 0, 0, 5316, 5317, 7, 10, 0, 0, 5317, 5318, 7, 17, 0, 0, 5318, 5319, 7, 6, 0, 0, 5319, 1058, 1, 0, 0, 0, 5320, 5321, 7, 14, 0, 0, 5321, 5322, 7, 10, 0, 0, 5322, 5323, 7, 17, 0, 0, 5323, 5324, 7, 6, 0, 0, 5324, 5325, 7, 17, 0, 0, 5325, 5326, 7, 7, 0, 0, 5326, 5327, 7, 23, 0, 0, 5327, 1060, 1, 0, 0, 0, 5328, 5329, 7, 12, 0, 0, 5329, 5330, 7, 10, 0, 0, 5330, 5331, 7, 23, 0, 0, 5331, 5332, 7, 13, 0, 0, 5332, 5333, 7, 10, 0, 0, 5333, 5334, 7, 10, 0, 0, 5334, 5335, 7, 9, 0, 0, 5335, 1062, 1, 0, 0, 0, 5336, 5337, 7, 12, 0, 0, 5337, 5338, 7, 17, 0, 0, 5338, 5339, 7, 27, 0, 0, 5339, 1064, 1, 0, 0, 0, 5340, 5341, 7, 10, 0, 0, 5341, 5342, 7, 26, 0, 0, 5342, 5343, 7, 24, 0, 0, 5343, 1066, 1, 0, 0, 0, 5344, 5345, 7, 25, 0, 0, 5345, 5346, 7, 5, 0, 0, 5346, 5347, 7, 14, 0, 0, 5347, 5348, 7, 16, 0, 0, 5348, 5349, 7, 19, 0, 0, 5349, 5350, 7, 13, 0, 0, 5350, 5351, 7, 17, 0, 0, 5351, 5352, 7, 5, 0, 0, 5352, 5353, 7, 6, 0, 0, 5353, 1068, 1, 0, 0, 0, 5354, 5355, 7, 25, 0, 0, 5355, 5356, 7, 6, 0, 0, 5356, 5357, 7, 19, 0, 0, 5357, 5358, 7, 19, 0, 0, 5358, 5359, 7, 13, 0, 0, 5359, 1070, 1, 0, 0, 0, 5360, 5361, 7, 23, 0, 0, 5361, 5362, 7, 14, 0, 0, 5362, 5363, 7, 12, 0, 0, 5363, 1072, 1, 0, 0, 0, 5364, 5365, 7, 6, 0, 0, 5365, 5366, 7, 14, 0, 0, 5366, 5367, 7, 15, 0, 0, 5367, 1074, 1, 0, 0, 0, 5368, 5369, 7, 6, 0, 0, 5369, 5370, 7, 7, 0, 0, 5370, 1076, 1, 0, 0, 0, 5371, 5372, 7, 6, 0, 0, 5372, 5373, 7, 19, 0, 0, 5373, 5374, 7, 23, 0, 0, 5374, 5375, 5, 49, 0, 0, 5375, 5376, 5, 48, 0, 0, 5376, 1078, 1, 0, 0, 0, 5377, 5378, 7, 15, 0, 0, 5378, 5379, 7, 17, 0, 0, 5379, 5380, 7, 7, 0, 0, 5380, 5381, 5, 95, 0, 0, 5381, 5382, 7, 9, 0, 0, 5382, 5383, 7, 14, 0, 0, 5383, 5384, 7, 5, 0, 0, 5384, 5385, 7, 6, 0, 0, 5385, 5386, 7, 10, 0, 0, 5386, 1080, 1, 0, 0, 0, 5387, 5388, 7, 15, 0, 0, 5388, 5389, 7, 19, 0, 0, 5389, 5390, 7, 12, 0, 0, 5390, 1082, 1, 0, 0, 0, 5391, 5392, 7, 24, 0, 0, 5392, 5393, 7, 17, 0, 0, 5393, 1084, 1, 0, 0, 0, 5394, 5395, 7, 24, 0, 0, 5395, 5396, 7, 19, 0, 0, 5396, 5397, 7, 29, 0, 0, 5397, 5398, 7, 10, 0, 0, 5398, 5399, 7, 13, 0, 0, 5399, 1086, 1, 0, 0, 0, 5400, 5401, 7, 13, 0, 0, 5401, 5402, 7, 5, 0, 0, 5402, 5403, 7, 12, 0, 0, 5403, 5404, 7, 17, 0, 0, 5404, 5405, 7, 5, 0, 0, 5405, 5406, 7, 7, 0, 0, 5406, 5407, 7, 9, 0, 0, 5407, 1088, 1, 0, 0, 0, 5408, 5409, 7, 13, 0, 0, 5409, 5410, 7, 19, 0, 0, 5410, 5411, 7, 22, 0, 0, 5411, 5412, 7, 7, 0, 0, 5412, 5413, 7, 12, 0, 0, 5413, 1090, 1, 0, 0, 0, 5414, 5415, 7, 9, 0, 0, 5415, 5416, 7, 14, 0, 0, 5416, 5417, 7, 5, 0, 0, 5417, 5418, 7, 6, 0, 0, 5418, 5419, 7, 10, 0, 0, 5419, 1092, 1, 0, 0, 0, 5420, 5421, 7, 9, 0, 0, 5421, 5422, 7, 17, 0, 0, 5422, 5423, 7, 23, 0, 0, 5423, 5424, 7, 7, 0, 0, 5424, 1094, 1, 0, 0, 0, 5425, 5426, 7, 9, 0, 0, 5426, 5427, 7, 28, 0, 0, 5427, 5428, 7, 13, 0, 0, 5428, 5429, 7, 16, 0, 0, 5429, 1096, 1, 0, 0, 0, 5430, 5431, 7, 16, 0, 0, 5431, 5432, 7, 13, 0, 0, 5432, 5433, 7, 17, 0, 0, 5433, 5434, 7, 15, 0, 0, 5434, 5435, 5, 95, 0, 0, 5435, 5436, 7, 9, 0, 0, 5436, 5437, 7, 14, 0, 0, 5437, 5438, 7, 5, 0, 0, 5438, 5439, 7, 6, 0, 0, 5439, 5440, 7, 10, 0, 0, 5440, 1098, 1, 0, 0, 0, 5441, 5442, 7, 16, 0, 0, 5442, 5443, 7, 13, 0, 0, 5443, 5444, 7, 22, 0, 0, 5444, 5445, 7, 7, 0, 0, 5445, 5446, 7, 14, 0, 0, 5446, 1100, 1, 0, 0, 0, 5447, 5448, 7, 29, 0, 0, 5448, 5449, 7, 17, 0, 0, 5449, 5450, 7, 12, 0, 0, 5450, 5451, 7, 16, 0, 0, 5451, 5452, 7, 20, 0, 0, 5452, 5453, 5, 95, 0, 0, 5453, 5454, 7, 18, 0, 0, 5454, 5455, 7, 22, 0, 0, 5455, 5456, 7, 14, 0, 0, 5456, 5457, 7, 21, 0, 0, 5457, 5458, 7, 10, 0, 0, 5458, 5459, 7, 16, 0, 0, 5459, 1102, 1, 0, 0, 0, 5460, 5461, 7, 13, 0, 0, 5461, 5462, 7, 5, 0, 0, 5462, 5463, 7, 7, 0, 0, 5463, 5464, 7, 12, 0, 0, 5464, 5465, 7, 19, 0, 0, 5465, 5466, 7, 15, 0, 0, 5466, 1104, 1, 0, 0, 0, 5467, 5468, 7, 9, 0, 0, 5468, 5469, 7, 10, 0, 0, 5469, 5470, 7, 16, 0, 0, 5470, 5471, 7, 9, 0, 0, 5471, 5472, 7, 10, 0, 0, 5472, 5473, 7, 10, 0, 0, 5473, 5474, 7, 12, 0, 0, 5474, 1106, 1, 0, 0, 0, 5475, 5476, 7, 5, 0, 0, 5476, 5477, 7, 14, 0, 0, 5477, 5478, 7, 19, 0, 0, 5478, 5479, 7, 9, 0, 0, 5479, 1108, 1, 0, 0, 0, 5480, 5481, 7, 5, 0, 0, 5481, 5482, 7, 14, 0, 0, 5482, 5483, 7, 19, 0, 0, 5483, 5484, 7, 9, 0, 0, 5484, 5485, 7, 12, 0, 0, 5485, 1110, 1, 0, 0, 0, 5486, 5487, 7, 5, 0, 0, 5487, 5488, 7, 9, 0, 0, 5488, 5489, 7, 17, 0, 0, 5489, 5490, 7, 7, 0, 0, 5490, 1112, 1, 0, 0, 0, 5491, 5492, 7, 5, 0, 0, 5492, 5493, 7, 9, 0, 0, 5493, 5494, 7, 17, 0, 0, 5494, 5495, 7, 7, 0, 0, 5495, 5496, 7, 12, 0, 0, 5496, 1114, 1, 0, 0, 0, 5497, 5498, 7, 5, 0, 0, 5498, 5499, 7, 16, 0, 0, 5499, 5500, 7, 5, 0, 0, 5500, 5501, 7, 7, 0, 0, 5501, 1116, 1, 0, 0, 0, 5502, 5503, 7, 5, 0, 0, 5503, 5504, 7, 16, 0, 0, 5504, 5505, 7, 5, 0, 0, 5505, 5506, 7, 7, 0, 0, 5506, 5507, 7, 12, 0, 0, 5507, 1118, 1, 0, 0, 0, 5508, 5509, 7, 5, 0, 0, 5509, 5510, 7, 16, 0, 0, 5510, 5511, 7, 5, 0, 0, 5511, 5512, 7, 7, 0, 0, 5512, 5513, 5, 50, 0, 0, 5513, 1120, 1, 0, 0, 0, 5514, 5515, 7, 5, 0, 0, 5515, 5516, 7, 16, 0, 0, 5516, 5517, 7, 5, 0, 0, 5517, 5518, 7, 7, 0, 0, 5518, 5519, 5, 50, 0, 0, 5519, 5520, 7, 12, 0, 0, 5520, 1122, 1, 0, 0, 0, 5521, 5522, 7, 14, 0, 0, 5522, 5523, 7, 19, 0, 0, 5523, 5524, 7, 9, 0, 0, 5524, 1124, 1, 0, 0, 0, 5525, 5526, 7, 14, 0, 0, 5526, 5527, 7, 19, 0, 0, 5527, 5528, 7, 9, 0, 0, 5528, 5529, 7, 12, 0, 0, 5529, 1126, 1, 0, 0, 0, 5530, 5531, 7, 14, 0, 0, 5531, 5532, 7, 19, 0, 0, 5532, 5533, 7, 16, 0, 0, 5533, 1128, 1, 0, 0, 0, 5534, 5535, 7, 14, 0, 0, 5535, 5536, 7, 19, 0, 0, 5536, 5537, 7, 16, 0, 0, 5537, 5538, 7, 12, 0, 0, 5538, 1130, 1, 0, 0, 0, 5539, 5540, 7, 9, 0, 0, 5540, 5541, 7, 17, 0, 0, 5541, 5542, 7, 7, 0, 0, 5542, 1132, 1, 0, 0, 0, 5543, 5544, 7, 9, 0, 0, 5544, 5545, 7, 17, 0, 0, 5545, 5546, 7, 7, 0, 0, 5546, 5547, 7, 12, 0, 0, 5547, 1134, 1, 0, 0, 0, 5548, 5549, 7, 16, 0, 0, 5549, 5550, 7, 5, 0, 0, 5550, 5551, 7, 7, 0, 0, 5551, 1136, 1, 0, 0, 0, 5552, 5553, 7, 16, 0, 0, 5553, 5554, 7, 5, 0, 0, 5554, 5555, 7, 7, 0, 0, 5555, 5556, 7, 12, 0, 0, 5556, 1138, 1, 0, 0, 0, 5557, 5558, 7, 9, 0, 0, 5558, 5559, 7, 17, 0, 0, 5559, 5560, 7, 7, 0, 0, 5560, 5561, 7, 20, 0, 0, 5561, 1140, 1, 0, 0, 0, 5562, 5563, 7, 14, 0, 0, 5563, 5564, 7, 19, 0, 0, 5564, 5565, 7, 9, 0, 0, 5565, 5566, 7, 20, 0, 0, 5566, 1142, 1, 0, 0, 0, 5567, 5568, 7, 16, 0, 0, 5568, 5569, 7, 5, 0, 0, 5569, 5570, 7, 7, 0, 0, 5570, 5571, 7, 20, 0, 0, 5571, 1144, 1, 0, 0, 0, 5572, 5573, 7, 5, 0, 0, 5573, 5574, 7, 9, 0, 0, 5574, 5575, 7, 17, 0, 0, 5575, 5576, 7, 7, 0, 0, 5576, 5577, 7, 20, 0, 0, 5577, 1146, 1, 0, 0, 0, 5578, 5579, 7, 5, 0, 0, 5579, 5580, 7, 14, 0, 0, 5580, 5581, 7, 19, 0, 0, 5581, 5582, 7, 9, 0, 0, 5582, 5583, 7, 20, 0, 0, 5583, 1148, 1, 0, 0, 0, 5584, 5585, 7, 5, 0, 0, 5585, 5586, 7, 16, 0, 0, 5586, 5587, 7, 5, 0, 0, 5587, 5588, 7, 7, 0, 0, 5588, 5589, 7, 20, 0, 0, 5589, 1150, 1, 0, 0, 0, 5590, 5591, 7, 18, 0, 0, 5591, 5592, 7, 17, 0, 0, 5592, 5593, 7, 16, 0, 0, 5593, 5594, 5, 95, 0, 0, 5594, 5595, 7, 6, 0, 0, 5595, 5596, 7, 10, 0, 0, 5596, 5597, 7, 7, 0, 0, 5597, 5598, 7, 23, 0, 0, 5598, 5599, 7, 16, 0, 0, 5599, 5600, 7, 20, 0, 0, 5600, 1152, 1, 0, 0, 0, 5601, 5602, 7, 14, 0, 0, 5602, 5603, 7, 20, 0, 0, 5603, 5604, 7, 5, 0, 0, 5604, 5605, 7, 13, 0, 0, 5605, 5606, 5, 95, 0, 0, 5606, 5607, 7, 6, 0, 0, 5607, 5608, 7, 10, 0, 0, 5608, 5609, 7, 7, 0, 0, 5609, 5610, 7, 23, 0, 0, 5610, 5611, 7, 16, 0, 0, 5611, 5612, 7, 20, 0, 0, 5612, 1154, 1, 0, 0, 0, 5613, 5614, 7, 14, 0, 0, 5614, 5615, 7, 20, 0, 0, 5615, 5616, 7, 5, 0, 0, 5616, 5617, 7, 13, 0, 0, 5617, 5618, 7, 5, 0, 0, 5618, 5619, 7, 14, 0, 0, 5619, 5620, 7, 16, 0, 0, 5620, 5621, 7, 10, 0, 0, 5621, 5622, 7, 13, 0, 0, 5622, 5623, 5, 95, 0, 0, 5623, 5624, 7, 6, 0, 0, 5624, 5625, 7, 10, 0, 0, 5625, 5626, 7, 7, 0, 0, 5626, 5627, 7, 23, 0, 0, 5627, 5628, 7, 16, 0, 0, 5628, 5629, 7, 20, 0, 0, 5629, 1156, 1, 0, 0, 0, 5630, 5631, 7, 6, 0, 0, 5631, 5632, 7, 19, 0, 0, 5632, 5633, 7, 29, 0, 0, 5633, 5634, 7, 10, 0, 0, 5634, 5635, 7, 13, 0, 0, 5635, 1158, 1, 0, 0, 0, 5636, 5637, 7, 19, 0, 0, 5637, 5638, 7, 14, 0, 0, 5638, 5639, 7, 16, 0, 0, 5639, 5640, 7, 10, 0, 0, 5640, 5641, 7, 16, 0, 0, 5641, 5642, 5, 95, 0, 0, 5642, 5643, 7, 6, 0, 0, 5643, 5644, 7, 10, 0, 0, 5644, 5645, 7, 7, 0, 0, 5645, 5646, 7, 23, 0, 0, 5646, 5647, 7, 16, 0, 0, 5647, 5648, 7, 20, 0, 0, 5648, 1160, 1, 0, 0, 0, 5649, 5650, 7, 22, 0, 0, 5650, 5651, 7, 24, 0, 0, 5651, 5652, 7, 24, 0, 0, 5652, 5653, 7, 10, 0, 0, 5653, 5654, 7, 13, 0, 0, 5654, 1162, 1, 0, 0, 0, 5655, 5656, 7, 5, 0, 0, 5656, 5657, 7, 9, 0, 0, 5657, 5658, 7, 14, 0, 0, 5658, 5659, 7, 17, 0, 0, 5659, 5660, 7, 17, 0, 0, 5660, 1164, 1, 0, 0, 0, 5661, 5662, 7, 18, 0, 0, 5662, 5663, 7, 16, 0, 0, 5663, 5664, 7, 13, 0, 0, 5664, 5665, 7, 17, 0, 0, 5665, 5666, 7, 15, 0, 0, 5666, 1166, 1, 0, 0, 0, 5667, 5668, 7, 14, 0, 0, 5668, 5669, 7, 20, 0, 0, 5669, 5670, 7, 13, 0, 0, 5670, 1168, 1, 0, 0, 0, 5671, 5672, 7, 14, 0, 0, 5672, 5673, 7, 19, 0, 0, 5673, 5674, 7, 7, 0, 0, 5674, 5675, 7, 14, 0, 0, 5675, 5676, 7, 5, 0, 0, 5676, 5677, 7, 16, 0, 0, 5677, 1170, 1, 0, 0, 0, 5678, 5679, 7, 14, 0, 0, 5679, 5680, 7, 19, 0, 0, 5680, 5681, 7, 7, 0, 0, 5681, 5682, 7, 14, 0, 0, 5682, 5683, 7, 5, 0, 0, 5683, 5684, 7, 16, 0, 0, 5684, 5685, 5, 95, 0, 0, 5685, 5686, 7, 29, 0, 0, 5686, 5687, 7, 9, 0, 0, 5687, 1172, 1, 0, 0, 0, 5688, 5689, 7, 25, 0, 0, 5689, 5690, 7, 19, 0, 0, 5690, 5691, 7, 13, 0, 0, 5691, 5692, 7, 15, 0, 0, 5692, 5693, 7, 5, 0, 0, 5693, 5694, 7, 16, 0, 0, 5694, 1174, 1, 0, 0, 0, 5695, 5696, 7, 17, 0, 0, 5696, 5697, 7, 7, 0, 0, 5697, 5698, 7, 17, 0, 0, 5698, 5699, 7, 16, 0, 0, 5699, 5700, 7, 14, 0, 0, 5700, 5701, 7, 5, 0, 0, 5701, 5702, 7, 24, 0, 0, 5702, 1176, 1, 0, 0, 0, 5703, 5704, 7, 6, 0, 0, 5704, 5705, 7, 10, 0, 0, 5705, 5706, 7, 7, 0, 0, 5706, 5707, 7, 23, 0, 0, 5707, 5708, 7, 16, 0, 0, 5708, 5709, 7, 20, 0, 0, 5709, 1178, 1, 0, 0, 0, 5710, 5711, 7, 6, 0, 0, 5711, 5712, 7, 24, 0, 0, 5712, 5713, 7, 5, 0, 0, 5713, 5714, 7, 12, 0, 0, 5714, 1180, 1, 0, 0, 0, 5715, 5716, 7, 6, 0, 0, 5716, 5717, 7, 16, 0, 0, 5717, 5718, 7, 13, 0, 0, 5718, 5719, 7, 17, 0, 0, 5719, 5720, 7, 15, 0, 0, 5720, 1182, 1, 0, 0, 0, 5721, 5722, 7, 15, 0, 0, 5722, 5723, 7, 12, 0, 0, 5723, 5724, 5, 53, 0, 0, 5724, 1184, 1, 0, 0, 0, 5725, 5726, 7, 24, 0, 0, 5726, 5727, 7, 5, 0, 0, 5727, 5728, 7, 13, 0, 0, 5728, 5729, 7, 9, 0, 0, 5729, 5730, 7, 10, 0, 0, 5730, 5731, 5, 95, 0, 0, 5731, 5732, 7, 17, 0, 0, 5732, 5733, 7, 12, 0, 0, 5733, 5734, 7, 10, 0, 0, 5734, 5735, 7, 7, 0, 0, 5735, 5736, 7, 16, 0, 0, 5736, 1186, 1, 0, 0, 0, 5737, 5738, 7, 24, 0, 0, 5738, 5739, 7, 23, 0, 0, 5739, 5740, 5, 95, 0, 0, 5740, 5741, 7, 14, 0, 0, 5741, 5742, 7, 6, 0, 0, 5742, 5743, 7, 17, 0, 0, 5743, 5744, 7, 10, 0, 0, 5744, 5745, 7, 7, 0, 0, 5745, 5746, 7, 16, 0, 0, 5746, 5747, 5, 95, 0, 0, 5747, 5748, 7, 10, 0, 0, 5748, 5749, 7, 7, 0, 0, 5749, 5750, 7, 14, 0, 0, 5750, 5751, 7, 19, 0, 0, 5751, 5752, 7, 12, 0, 0, 5752, 5753, 7, 17, 0, 0, 5753, 5754, 7, 7, 0, 0, 5754, 5755, 7, 23, 0, 0, 5755, 1188, 1, 0, 0, 0, 5756, 5757, 7, 28, 0, 0, 5757, 5758, 7, 22, 0, 0, 5758, 5759, 7, 19, 0, 0, 5759, 5760, 7, 16, 0, 0, 5760, 5761, 7, 10, 0, 0, 5761, 5762, 5, 95, 0, 0, 5762, 5763, 7, 17, 0, 0, 5763, 5764, 7, 12, 0, 0, 5764, 5765, 7, 10, 0, 0, 5765, 5766, 7, 7, 0, 0, 5766, 5767, 7, 16, 0, 0, 5767, 1190, 1, 0, 0, 0, 5768, 5769, 7, 28, 0, 0, 5769, 5770, 7, 22, 0, 0, 5770, 5771, 7, 19, 0, 0, 5771, 5772, 7, 16, 0, 0, 5772, 5773, 7, 10, 0, 0, 5773, 5774, 5, 95, 0, 0, 5774, 5775, 7, 6, 0, 0, 5775, 5776, 7, 17, 0, 0, 5776, 5777, 7, 16, 0, 0, 5777, 5778, 7, 10, 0, 0, 5778, 5779, 7, 13, 0, 0, 5779, 5780, 7, 5, 0, 0, 5780, 5781, 7, 6, 0, 0, 5781, 1192, 1, 0, 0, 0, 5782, 5783, 7, 28, 0, 0, 5783, 5784, 7, 22, 0, 0, 5784, 5785, 7, 19, 0, 0, 5785, 5786, 7, 16, 0, 0, 5786, 5787, 7, 10, 0, 0, 5787, 5788, 5, 95, 0, 0, 5788, 5789, 7, 7, 0, 0, 5789, 5790, 7, 22, 0, 0, 5790, 5791, 7, 6, 0, 0, 5791, 5792, 7, 6, 0, 0, 5792, 5793, 7, 5, 0, 0, 5793, 5794, 7, 18, 0, 0, 5794, 5795, 7, 6, 0, 0, 5795, 5796, 7, 10, 0, 0, 5796, 1194, 1, 0, 0, 0, 5797, 5798, 7, 13, 0, 0, 5798, 5799, 7, 10, 0, 0, 5799, 5800, 7, 23, 0, 0, 5800, 5801, 7, 10, 0, 0, 5801, 5802, 7, 26, 0, 0, 5802, 5803, 7, 24, 0, 0, 5803, 5804, 5, 95, 0, 0, 5804, 5805, 7, 14, 0, 0, 5805, 5806, 7, 19, 0, 0, 5806, 5807, 7, 22, 0, 0, 5807, 5808, 7, 7, 0, 0, 5808, 5809, 7, 16, 0, 0, 5809, 1196, 1, 0, 0, 0, 5810, 5811, 7, 13, 0, 0, 5811, 5812, 7, 10, 0, 0, 5812, 5813, 7, 23, 0, 0, 5813, 5814, 7, 10, 0, 0, 5814, 5815, 7, 26, 0, 0, 5815, 5816, 7, 24, 0, 0, 5816, 5817, 5, 95, 0, 0, 5817, 5818, 7, 17, 0, 0, 5818, 5819, 7, 7, 0, 0, 5819, 5820, 7, 9, 0, 0, 5820, 5821, 7, 16, 0, 0, 5821, 5822, 7, 13, 0, 0, 5822, 1198, 1, 0, 0, 0, 5823, 5824, 7, 13, 0, 0, 5824, 5825, 7, 10, 0, 0, 5825, 5826, 7, 23, 0, 0, 5826, 5827, 7, 10, 0, 0, 5827, 5828, 7, 26, 0, 0, 5828, 5829, 7, 24, 0, 0, 5829, 5830, 5, 95, 0, 0, 5830, 5831, 7, 6, 0, 0, 5831, 5832, 7, 17, 0, 0, 5832, 5833, 7, 21, 0, 0, 5833, 5834, 7, 10, 0, 0, 5834, 1200, 1, 0, 0, 0, 5835, 5836, 7, 13, 0, 0, 5836, 5837, 7, 10, 0, 0, 5837, 5838, 7, 23, 0, 0, 5838, 5839, 7, 10, 0, 0, 5839, 5840, 7, 26, 0, 0, 5840, 5841, 7, 24, 0, 0, 5841, 5842, 5, 95, 0, 0, 5842, 5843, 7, 15, 0, 0, 5843, 5844, 7, 5, 0, 0, 5844, 5845, 7, 16, 0, 0, 5845, 5846, 7, 14, 0, 0, 5846, 5847, 7, 20, 0, 0, 5847, 1202, 1, 0, 0, 0, 5848, 5849, 7, 13, 0, 0, 5849, 5850, 7, 10, 0, 0, 5850, 5851, 7, 23, 0, 0, 5851, 5852, 7, 10, 0, 0, 5852, 5853, 7, 26, 0, 0, 5853, 5854, 7, 24, 0, 0, 5854, 5855, 5, 95, 0, 0, 5855, 5856, 7, 15, 0, 0, 5856, 5857, 7, 5, 0, 0, 5857, 5858, 7, 16, 0, 0, 5858, 5859, 7, 14, 0, 0, 5859, 5860, 7, 20, 0, 0, 5860, 5861, 7, 10, 0, 0, 5861, 5862, 7, 9, 0, 0, 5862, 1204, 1, 0, 0, 0, 5863, 5864, 7, 13, 0, 0, 5864, 5865, 7, 10, 0, 0, 5865, 5866, 7, 23, 0, 0, 5866, 5867, 7, 10, 0, 0, 5867, 5868, 7, 26, 0, 0, 5868, 5869, 7, 24, 0, 0, 5869, 5870, 5, 95, 0, 0, 5870, 5871, 7, 13, 0, 0, 5871, 5872, 7, 10, 0, 0, 5872, 5873, 7, 24, 0, 0, 5873, 5874, 7, 6, 0, 0, 5874, 5875, 7, 5, 0, 0, 5875, 5876, 7, 14, 0, 0, 5876, 5877, 7, 10, 0, 0, 5877, 1206, 1, 0, 0, 0, 5878, 5879, 7, 13, 0, 0, 5879, 5880, 7, 10, 0, 0, 5880, 5881, 7, 23, 0, 0, 5881, 5882, 7, 10, 0, 0, 5882, 5883, 7, 26, 0, 0, 5883, 5884, 7, 24, 0, 0, 5884, 5885, 5, 95, 0, 0, 5885, 5886, 7, 9, 0, 0, 5886, 5887, 7, 24, 0, 0, 5887, 5888, 7, 6, 0, 0, 5888, 5889, 7, 17, 0, 0, 5889, 5890, 7, 16, 0, 0, 5890, 5891, 5, 95, 0, 0, 5891, 5892, 7, 16, 0, 0, 5892, 5893, 7, 19, 0, 0, 5893, 5894, 5, 95, 0, 0, 5894, 5895, 7, 5, 0, 0, 5895, 5896, 7, 13, 0, 0, 5896, 5897, 7, 13, 0, 0, 5897, 5898, 7, 5, 0, 0, 5898, 5899, 7, 8, 0, 0, 5899, 1208, 1, 0, 0, 0, 5900, 5901, 7, 13, 0, 0, 5901, 5902, 7, 10, 0, 0, 5902, 5903, 7, 23, 0, 0, 5903, 5904, 7, 10, 0, 0, 5904, 5905, 7, 26, 0, 0, 5905, 5906, 7, 24, 0, 0, 5906, 5907, 5, 95, 0, 0, 5907, 5908, 7, 9, 0, 0, 5908, 5909, 7, 24, 0, 0, 5909, 5910, 7, 6, 0, 0, 5910, 5911, 7, 17, 0, 0, 5911, 5912, 7, 16, 0, 0, 5912, 5913, 5, 95, 0, 0, 5913, 5914, 7, 16, 0, 0, 5914, 5915, 7, 19, 0, 0, 5915, 5916, 5, 95, 0, 0, 5916, 5917, 7, 16, 0, 0, 5917, 5918, 7, 5, 0, 0, 5918, 5919, 7, 18, 0, 0, 5919, 5920, 7, 6, 0, 0, 5920, 5921, 7, 10, 0, 0, 5921, 1210, 1, 0, 0, 0, 5922, 5923, 7, 13, 0, 0, 5923, 5924, 7, 10, 0, 0, 5924, 5925, 7, 23, 0, 0, 5925, 5926, 7, 10, 0, 0, 5926, 5927, 7, 26, 0, 0, 5927, 5928, 7, 24, 0, 0, 5928, 5929, 5, 95, 0, 0, 5929, 5930, 7, 9, 0, 0, 5930, 5931, 7, 22, 0, 0, 5931, 5932, 7, 18, 0, 0, 5932, 5933, 7, 9, 0, 0, 5933, 5934, 7, 16, 0, 0, 5934, 5935, 7, 13, 0, 0, 5935, 1212, 1, 0, 0, 0, 5936, 5937, 7, 13, 0, 0, 5937, 5938, 7, 10, 0, 0, 5938, 5939, 7, 24, 0, 0, 5939, 5940, 7, 10, 0, 0, 5940, 5941, 7, 5, 0, 0, 5941, 5942, 7, 16, 0, 0, 5942, 1214, 1, 0, 0, 0, 5943, 5944, 7, 13, 0, 0, 5944, 5945, 7, 24, 0, 0, 5945, 5946, 7, 5, 0, 0, 5946, 5947, 7, 12, 0, 0, 5947, 1216, 1, 0, 0, 0, 5948, 5949, 7, 13, 0, 0, 5949, 5950, 7, 16, 0, 0, 5950, 5951, 7, 13, 0, 0, 5951, 5952, 7, 17, 0, 0, 5952, 5953, 7, 15, 0, 0, 5953, 1218, 1, 0, 0, 0, 5954, 5955, 7, 9, 0, 0, 5955, 5956, 7, 24, 0, 0, 5956, 5957, 7, 6, 0, 0, 5957, 5958, 7, 17, 0, 0, 5958, 5959, 7, 16, 0, 0, 5959, 5960, 5, 95, 0, 0, 5960, 5961, 7, 24, 0, 0, 5961, 5962, 7, 5, 0, 0, 5962, 5963, 7, 13, 0, 0, 5963, 5964, 7, 16, 0, 0, 5964, 1220, 1, 0, 0, 0, 5965, 5966, 7, 9, 0, 0, 5966, 5967, 7, 16, 0, 0, 5967, 5968, 7, 5, 0, 0, 5968, 5969, 7, 13, 0, 0, 5969, 5970, 7, 16, 0, 0, 5970, 5971, 7, 9, 0, 0, 5971, 5972, 5, 95, 0, 0, 5972, 5973, 7, 29, 0, 0, 5973, 5974, 7, 17, 0, 0, 5974, 5975, 7, 16, 0, 0, 5975, 5976, 7, 20, 0, 0, 5976, 1222, 1, 0, 0, 0, 5977, 5978, 7, 9, 0, 0, 5978, 5979, 7, 16, 0, 0, 5979, 5980, 7, 13, 0, 0, 5980, 5981, 7, 17, 0, 0, 5981, 5982, 7, 7, 0, 0, 5982, 5983, 7, 23, 0, 0, 5983, 5984, 5, 95, 0, 0, 5984, 5985, 7, 16, 0, 0, 5985, 5986, 7, 19, 0, 0, 5986, 5987, 5, 95, 0, 0, 5987, 5988, 7, 5, 0, 0, 5988, 5989, 7, 13, 0, 0, 5989, 5990, 7, 13, 0, 0, 5990, 5991, 7, 5, 0, 0, 5991, 5992, 7, 8, 0, 0, 5992, 1224, 1, 0, 0, 0, 5993, 5994, 7, 9, 0, 0, 5994, 5995, 7, 16, 0, 0, 5995, 5996, 7, 13, 0, 0, 5996, 5997, 7, 17, 0, 0, 5997, 5998, 7, 7, 0, 0, 5998, 5999, 7, 23, 0, 0, 5999, 6000, 5, 95, 0, 0, 6000, 6001, 7, 16, 0, 0, 6001, 6002, 7, 19, 0, 0, 6002, 6003, 5, 95, 0, 0, 6003, 6004, 7, 16, 0, 0, 6004, 6005, 7, 5, 0, 0, 6005, 6006, 7, 18, 0, 0, 6006, 6007, 7, 6, 0, 0, 6007, 6008, 7, 10, 0, 0, 6008, 1226, 1, 0, 0, 0, 6009, 6010, 7, 9, 0, 0, 6010, 6011, 7, 16, 0, 0, 6011, 6012, 7, 13, 0, 0, 6012, 6013, 7, 24, 0, 0, 6013, 6014, 7, 19, 0, 0, 6014, 6015, 7, 9, 0, 0, 6015, 1228, 1, 0, 0, 0, 6016, 6017, 7, 9, 0, 0, 6017, 6018, 7, 22, 0, 0, 6018, 6019, 7, 18, 0, 0, 6019, 6020, 7, 9, 0, 0, 6020, 6021, 7, 16, 0, 0, 6021, 6022, 7, 13, 0, 0, 6022, 1230, 1, 0, 0, 0, 6023, 6024, 7, 16, 0, 0, 6024, 6025, 7, 19, 0, 0, 6025, 6026, 5, 95, 0, 0, 6026, 6027, 7, 5, 0, 0, 6027, 6028, 7, 9, 0, 0, 6028, 6029, 7, 14, 0, 0, 6029, 6030, 7, 17, 0, 0, 6030, 6031, 7, 17, 0, 0, 6031, 1232, 1, 0, 0, 0, 6032, 6033, 7, 16, 0, 0, 6033, 6034, 7, 19, 0, 0, 6034, 6035, 5, 95, 0, 0, 6035, 6036, 7, 20, 0, 0, 6036, 6037, 7, 10, 0, 0, 6037, 6038, 7, 26, 0, 0, 6038, 1234, 1, 0, 0, 0, 6039, 6040, 7, 16, 0, 0, 6040, 6041, 7, 13, 0, 0, 6041, 6042, 7, 5, 0, 0, 6042, 6043, 7, 7, 0, 0, 6043, 6044, 7, 9, 0, 0, 6044, 6045, 7, 6, 0, 0, 6045, 6046, 7, 5, 0, 0, 6046, 6047, 7, 16, 0, 0, 6047, 6048, 7, 10, 0, 0, 6048, 1236, 1, 0, 0, 0, 6049, 6050, 7, 22, 0, 0, 6050, 6051, 7, 7, 0, 0, 6051, 6052, 7, 17, 0, 0, 6052, 6053, 7, 9, 0, 0, 6053, 6054, 7, 16, 0, 0, 6054, 6055, 7, 13, 0, 0, 6055, 1238, 1, 0, 0, 0, 6056, 6057, 7, 5, 0, 0, 6057, 6058, 7, 23, 0, 0, 6058, 6059, 7, 10, 0, 0, 6059, 1240, 1, 0, 0, 0, 6060, 6061, 7, 14, 0, 0, 6061, 6062, 7, 6, 0, 0, 6062, 6063, 7, 19, 0, 0, 6063, 6064, 7, 14, 0, 0, 6064, 6065, 7, 21, 0, 0, 6065, 6066, 5, 95, 0, 0, 6066, 6067, 7, 16, 0, 0, 6067, 6068, 7, 17, 0, 0, 6068, 6069, 7, 15, 0, 0, 6069, 6070, 7, 10, 0, 0, 6070, 6071, 7, 9, 0, 0, 6071, 6072, 7, 16, 0, 0, 6072, 6073, 7, 5, 0, 0, 6073, 6074, 7, 15, 0, 0, 6074, 6075, 7, 24, 0, 0, 6075, 1242, 1, 0, 0, 0, 6076, 6077, 7, 12, 0, 0, 6077, 6078, 7, 5, 0, 0, 6078, 6079, 7, 16, 0, 0, 6079, 6080, 7, 10, 0, 0, 6080, 6081, 5, 95, 0, 0, 6081, 6082, 7, 18, 0, 0, 6082, 6083, 7, 17, 0, 0, 6083, 6084, 7, 7, 0, 0, 6084, 1244, 1, 0, 0, 0, 6085, 6086, 7, 12, 0, 0, 6086, 6087, 7, 5, 0, 0, 6087, 6088, 7, 16, 0, 0, 6088, 6089, 7, 10, 0, 0, 6089, 6090, 5, 95, 0, 0, 6090, 6091, 7, 24, 0, 0, 6091, 6092, 7, 5, 0, 0, 6092, 6093, 7, 13, 0, 0, 6093, 6094, 7, 16, 0, 0, 6094, 1246, 1, 0, 0, 0, 6095, 6096, 7, 12, 0, 0, 6096, 6097, 7, 5, 0, 0, 6097, 6098, 7, 16, 0, 0, 6098, 6099, 7, 10, 0, 0, 6099, 6100, 5, 95, 0, 0, 6100, 6101, 7, 16, 0, 0, 6101, 6102, 7, 13, 0, 0, 6102, 6103, 7, 22, 0, 0, 6103, 6104, 7, 7, 0, 0, 6104, 6105, 7, 14, 0, 0, 6105, 1248, 1, 0, 0, 0, 6106, 6107, 7, 17, 0, 0, 6107, 6108, 7, 9, 0, 0, 6108, 6109, 7, 25, 0, 0, 6109, 6110, 7, 17, 0, 0, 6110, 6111, 7, 7, 0, 0, 6111, 6112, 7, 17, 0, 0, 6112, 6113, 7, 16, 0, 0, 6113, 6114, 7, 10, 0, 0, 6114, 1250, 1, 0, 0, 0, 6115, 6116, 7, 30, 0, 0, 6116, 6117, 7, 22, 0, 0, 6117, 6118, 7, 9, 0, 0, 6118, 6119, 7, 16, 0, 0, 6119, 6120, 7, 17, 0, 0, 6120, 6121, 7, 25, 0, 0, 6121, 6122, 7, 8, 0, 0, 6122, 6123, 5, 95, 0, 0, 6123, 6124, 7, 12, 0, 0, 6124, 6125, 7, 5, 0, 0, 6125, 6126, 7, 8, 0, 0, 6126, 6127, 7, 9, 0, 0, 6127, 1252, 1, 0, 0, 0, 6128, 6129, 7, 30, 0, 0, 6129, 6130, 7, 22, 0, 0, 6130, 6131, 7, 9, 0, 0, 6131, 6132, 7, 16, 0, 0, 6132, 6133, 7, 17, 0, 0, 6133, 6134, 7, 25, 0, 0, 6134, 6135, 7, 8, 0, 0, 6135, 6136, 5, 95, 0, 0, 6136, 6137, 7, 20, 0, 0, 6137, 6138, 7, 19, 0, 0, 6138, 6139, 7, 22, 0, 0, 6139, 6140, 7, 13, 0, 0, 6140, 6141, 7, 9, 0, 0, 6141, 1254, 1, 0, 0, 0, 6142, 6143, 7, 30, 0, 0, 6143, 6144, 7, 22, 0, 0, 6144, 6145, 7, 9, 0, 0, 6145, 6146, 7, 16, 0, 0, 6146, 6147, 7, 17, 0, 0, 6147, 6148, 7, 25, 0, 0, 6148, 6149, 7, 8, 0, 0, 6149, 6150, 5, 95, 0, 0, 6150, 6151, 7, 17, 0, 0, 6151, 6152, 7, 7, 0, 0, 6152, 6153, 7, 16, 0, 0, 6153, 6154, 7, 10, 0, 0, 6154, 6155, 7, 13, 0, 0, 6155, 6156, 7, 27, 0, 0, 6156, 6157, 7, 5, 0, 0, 6157, 6158, 7, 6, 0, 0, 6158, 1256, 1, 0, 0, 0, 6159, 6160, 7, 15, 0, 0, 6160, 6161, 7, 5, 0, 0, 6161, 6162, 7, 21, 0, 0, 6162, 6163, 7, 10, 0, 0, 6163, 6164, 5, 95, 0, 0, 6164, 6165, 7, 12, 0, 0, 6165, 6166, 7, 5, 0, 0, 6166, 6167, 7, 16, 0, 0, 6167, 6168, 7, 10, 0, 0, 6168, 1258, 1, 0, 0, 0, 6169, 6170, 7, 15, 0, 0, 6170, 6171, 7, 5, 0, 0, 6171, 6172, 7, 21, 0, 0, 6172, 6173, 7, 10, 0, 0, 6173, 6174, 5, 95, 0, 0, 6174, 6175, 7, 17, 0, 0, 6175, 6176, 7, 7, 0, 0, 6176, 6177, 7, 16, 0, 0, 6177, 6178, 7, 10, 0, 0, 6178, 6179, 7, 13, 0, 0, 6179, 6180, 7, 27, 0, 0, 6180, 6181, 7, 5, 0, 0, 6181, 6182, 7, 6, 0, 0, 6182, 1260, 1, 0, 0, 0, 6183, 6184, 7, 15, 0, 0, 6184, 6185, 7, 5, 0, 0, 6185, 6186, 7, 21, 0, 0, 6186, 6187, 7, 10, 0, 0, 6187, 6188, 5, 95, 0, 0, 6188, 6189, 7, 16, 0, 0, 6189, 6190, 7, 17, 0, 0, 6190, 6191, 7, 15, 0, 0, 6191, 6192, 7, 10, 0, 0, 6192, 1262, 1, 0, 0, 0, 6193, 6194, 7, 15, 0, 0, 6194, 6195, 7, 5, 0, 0, 6195, 6196, 7, 21, 0, 0, 6196, 6197, 7, 10, 0, 0, 6197, 6198, 5, 95, 0, 0, 6198, 6199, 7, 16, 0, 0, 6199, 6200, 7, 17, 0, 0, 6200, 6201, 7, 15, 0, 0, 6201, 6202, 7, 10, 0, 0, 6202, 6203, 7, 9, 0, 0, 6203, 6204, 7, 16, 0, 0, 6204, 6205, 7, 5, 0, 0, 6205, 6206, 7, 15, 0, 0, 6206, 6207, 7, 24, 0, 0, 6207, 1264, 1, 0, 0, 0, 6208, 6209, 7, 15, 0, 0, 6209, 6210, 7, 5, 0, 0, 6210, 6211, 7, 21, 0, 0, 6211, 6212, 7, 10, 0, 0, 6212, 6213, 5, 95, 0, 0, 6213, 6214, 7, 16, 0, 0, 6214, 6215, 7, 17, 0, 0, 6215, 6216, 7, 15, 0, 0, 6216, 6217, 7, 10, 0, 0, 6217, 6218, 7, 9, 0, 0, 6218, 6219, 7, 16, 0, 0, 6219, 6220, 7, 5, 0, 0, 6220, 6221, 7, 15, 0, 0, 6221, 6222, 7, 24, 0, 0, 6222, 6223, 7, 16, 0, 0, 6223, 6224, 7, 11, 0, 0, 6224, 1266, 1, 0, 0, 0, 6225, 6226, 7, 7, 0, 0, 6226, 6227, 7, 19, 0, 0, 6227, 6228, 7, 29, 0, 0, 6228, 1268, 1, 0, 0, 0, 6229, 6230, 7, 9, 0, 0, 6230, 6231, 7, 16, 0, 0, 6231, 6232, 7, 5, 0, 0, 6232, 6233, 7, 16, 0, 0, 6233, 6234, 7, 10, 0, 0, 6234, 6235, 7, 15, 0, 0, 6235, 6236, 7, 10, 0, 0, 6236, 6237, 7, 7, 0, 0, 6237, 6238, 7, 16, 0, 0, 6238, 6239, 5, 95, 0, 0, 6239, 6240, 7, 16, 0, 0, 6240, 6241, 7, 17, 0, 0, 6241, 6242, 7, 15, 0, 0, 6242, 6243, 7, 10, 0, 0, 6243, 6244, 7, 9, 0, 0, 6244, 6245, 7, 16, 0, 0, 6245, 6246, 7, 5, 0, 0, 6246, 6247, 7, 15, 0, 0, 6247, 6248, 7, 24, 0, 0, 6248, 1270, 1, 0, 0, 0, 6249, 6250, 7, 16, 0, 0, 6250, 6251, 7, 17, 0, 0, 6251, 6252, 7, 15, 0, 0, 6252, 6253, 7, 10, 0, 0, 6253, 6254, 7, 19, 0, 0, 6254, 6255, 7, 25, 0, 0, 6255, 6256, 7, 12, 0, 0, 6256, 6257, 7, 5, 0, 0, 6257, 6258, 7, 8, 0, 0, 6258, 1272, 1, 0, 0, 0, 6259, 6260, 7, 16, 0, 0, 6260, 6261, 7, 13, 0, 0, 6261, 6262, 7, 5, 0, 0, 6262, 6263, 7, 7, 0, 0, 6263, 6264, 7, 9, 0, 0, 6264, 6265, 7, 5, 0, 0, 6265, 6266, 7, 14, 0, 0, 6266, 6267, 7, 16, 0, 0, 6267, 6268, 7, 17, 0, 0, 6268, 6269, 7, 19, 0, 0, 6269, 6270, 7, 7, 0, 0, 6270, 6271, 5, 95, 0, 0, 6271, 6272, 7, 16, 0, 0, 6272, 6273, 7, 17, 0, 0, 6273, 6274, 7, 15, 0, 0, 6274, 6275, 7, 10, 0, 0, 6275, 6276, 7, 9, 0, 0, 6276, 6277, 7, 16, 0, 0, 6277, 6278, 7, 5, 0, 0, 6278, 6279, 7, 15, 0, 0, 6279, 6280, 7, 24, 0, 0, 6280, 1274, 1, 0, 0, 0, 6281, 6282, 7, 16, 0, 0, 6282, 6283, 7, 19, 0, 0, 6283, 6284, 5, 95, 0, 0, 6284, 6285, 7, 16, 0, 0, 6285, 6286, 7, 17, 0, 0, 6286, 6287, 7, 15, 0, 0, 6287, 6288, 7, 10, 0, 0, 6288, 6289, 7, 9, 0, 0, 6289, 6290, 7, 16, 0, 0, 6290, 6291, 7, 5, 0, 0, 6291, 6292, 7, 15, 0, 0, 6292, 6293, 7, 24, 0, 0, 6293, 1276, 1, 0, 0, 0, 6294, 6295, 7, 16, 0, 0, 6295, 6296, 7, 19, 0, 0, 6296, 6297, 5, 95, 0, 0, 6297, 6298, 7, 14, 0, 0, 6298, 6299, 7, 20, 0, 0, 6299, 6300, 7, 5, 0, 0, 6300, 6301, 7, 13, 0, 0, 6301, 1278, 1, 0, 0, 0, 6302, 6303, 7, 16, 0, 0, 6303, 6304, 7, 19, 0, 0, 6304, 6305, 5, 95, 0, 0, 6305, 6306, 7, 12, 0, 0, 6306, 6307, 7, 5, 0, 0, 6307, 6308, 7, 16, 0, 0, 6308, 6309, 7, 10, 0, 0, 6309, 1280, 1, 0, 0, 0, 6310, 6311, 7, 16, 0, 0, 6311, 6312, 7, 19, 0, 0, 6312, 6313, 5, 95, 0, 0, 6313, 6314, 7, 7, 0, 0, 6314, 6315, 7, 22, 0, 0, 6315, 6316, 7, 15, 0, 0, 6316, 6317, 7, 18, 0, 0, 6317, 6318, 7, 10, 0, 0, 6318, 6319, 7, 13, 0, 0, 6319, 1282, 1, 0, 0, 0, 6320, 6324, 3, 1285, 640, 0, 6321, 6323, 3, 1287, 641, 0, 6322, 6321, 1, 0, 0, 0, 6323, 6326, 1, 0, 0, 0, 6324, 6322, 1, 0, 0, 0, 6324, 6325, 1, 0, 0, 0, 6325, 1284, 1, 0, 0, 0, 6326, 6324, 1, 0, 0, 0, 6327, 6334, 7, 31, 0, 0, 6328, 6329, 7, 32, 0, 0, 6329, 6334, 4, 640, 6, 0, 6330, 6331, 7, 33, 0, 0, 6331, 6332, 7, 34, 0, 0, 6332, 6334, 4, 640, 7, 0, 6333, 6327, 1, 0, 0, 0, 6333, 6328, 1, 0, 0, 0, 6333, 6330, 1, 0, 0, 0, 6334, 1286, 1, 0, 0, 0, 6335, 6338, 3, 1289, 642, 0, 6336, 6338, 5, 36, 0, 0, 6337, 6335, 1, 0, 0, 0, 6337, 6336, 1, 0, 0, 0, 6338, 1288, 1, 0, 0, 0, 6339, 6342, 3, 1285, 640, 0, 6340, 6342, 7, 0, 0, 0, 6341, 6339, 1, 0, 0, 0, 6341, 6340, 1, 0, 0, 0, 6342, 1290, 1, 0, 0, 0, 6343, 6344, 3, 1293, 644, 0, 6344, 6345, 5, 34, 0, 0, 6345, 1292, 1, 0, 0, 0, 6346, 6352, 5, 34, 0, 0, 6347, 6348, 5, 34, 0, 0, 6348, 6351, 5, 34, 0, 0, 6349, 6351, 8, 35, 0, 0, 6350, 6347, 1, 0, 0, 0, 6350, 6349, 1, 0, 0, 0, 6351, 6354, 1, 0, 0, 0, 6352, 6350, 1, 0, 0, 0, 6352, 6353, 1, 0, 0, 0, 6353, 1294, 1, 0, 0, 0, 6354, 6352, 1, 0, 0, 0, 6355, 6356, 3, 1297, 646, 0, 6356, 6357, 5, 34, 0, 0, 6357, 1296, 1, 0, 0, 0, 6358, 6364, 5, 34, 0, 0, 6359, 6360, 5, 34, 0, 0, 6360, 6363, 5, 34, 0, 0, 6361, 6363, 8, 36, 0, 0, 6362, 6359, 1, 0, 0, 0, 6362, 6361, 1, 0, 0, 0, 6363, 6366, 1, 0, 0, 0, 6364, 6362, 1, 0, 0, 0, 6364, 6365, 1, 0, 0, 0, 6365, 1298, 1, 0, 0, 0, 6366, 6364, 1, 0, 0, 0, 6367, 6368, 7, 22, 0, 0, 6368, 6369, 5, 38, 0, 0, 6369, 6370, 3, 1291, 643, 0, 6370, 1300, 1, 0, 0, 0, 6371, 6372, 7, 22, 0, 0, 6372, 6373, 5, 38, 0, 0, 6373, 6374, 3, 1293, 644, 0, 6374, 1302, 1, 0, 0, 0, 6375, 6376, 7, 22, 0, 0, 6376, 6377, 5, 38, 0, 0, 6377, 6378, 3, 1295, 645, 0, 6378, 1304, 1, 0, 0, 0, 6379, 6380, 7, 22, 0, 0, 6380, 6381, 5, 38, 0, 0, 6381, 6382, 3, 1297, 646, 0, 6382, 1306, 1, 0, 0, 0, 6383, 6384, 3, 1309, 652, 0, 6384, 6385, 5, 39, 0, 0, 6385, 1308, 1, 0, 0, 0, 6386, 6392, 5, 39, 0, 0, 6387, 6388, 5, 39, 0, 0, 6388, 6391, 5, 39, 0, 0, 6389, 6391, 8, 37, 0, 0, 6390, 6387, 1, 0, 0, 0, 6390, 6389, 1, 0, 0, 0, 6391, 6394, 1, 0, 0, 0, 6392, 6390, 1, 0, 0, 0, 6392, 6393, 1, 0, 0, 0, 6393, 1310, 1, 0, 0, 0, 6394, 6392, 1, 0, 0, 0, 6395, 6396, 7, 10, 0, 0, 6396, 6397, 5, 39, 0, 0, 6397, 6398, 1, 0, 0, 0, 6398, 6399, 6, 653, 2, 0, 6399, 6400, 6, 653, 3, 0, 6400, 1312, 1, 0, 0, 0, 6401, 6402, 3, 1315, 655, 0, 6402, 6403, 5, 39, 0, 0, 6403, 1314, 1, 0, 0, 0, 6404, 6405, 7, 22, 0, 0, 6405, 6406, 5, 38, 0, 0, 6406, 6407, 3, 1309, 652, 0, 6407, 1316, 1, 0, 0, 0, 6408, 6410, 5, 36, 0, 0, 6409, 6411, 3, 1319, 657, 0, 6410, 6409, 1, 0, 0, 0, 6410, 6411, 1, 0, 0, 0, 6411, 6412, 1, 0, 0, 0, 6412, 6413, 5, 36, 0, 0, 6413, 6414, 6, 656, 4, 0, 6414, 6415, 1, 0, 0, 0, 6415, 6416, 6, 656, 5, 0, 6416, 1318, 1, 0, 0, 0, 6417, 6421, 3, 1285, 640, 0, 6418, 6420, 3, 1289, 642, 0, 6419, 6418, 1, 0, 0, 0, 6420, 6423, 1, 0, 0, 0, 6421, 6419, 1, 0, 0, 0, 6421, 6422, 1, 0, 0, 0, 6422, 1320, 1, 0, 0, 0, 6423, 6421, 1, 0, 0, 0, 6424, 6425, 3, 1323, 659, 0, 6425, 6426, 5, 39, 0, 0, 6426, 1322, 1, 0, 0, 0, 6427, 6428, 7, 18, 0, 0, 6428, 6432, 5, 39, 0, 0, 6429, 6431, 7, 38, 0, 0, 6430, 6429, 1, 0, 0, 0, 6431, 6434, 1, 0, 0, 0, 6432, 6430, 1, 0, 0, 0, 6432, 6433, 1, 0, 0, 0, 6433, 1324, 1, 0, 0, 0, 6434, 6432, 1, 0, 0, 0, 6435, 6436, 3, 1327, 661, 0, 6436, 6437, 5, 39, 0, 0, 6437, 1326, 1, 0, 0, 0, 6438, 6439, 7, 18, 0, 0, 6439, 6440, 3, 1309, 652, 0, 6440, 1328, 1, 0, 0, 0, 6441, 6442, 3, 1331, 663, 0, 6442, 6443, 5, 39, 0, 0, 6443, 1330, 1, 0, 0, 0, 6444, 6445, 7, 26, 0, 0, 6445, 6449, 5, 39, 0, 0, 6446, 6448, 7, 39, 0, 0, 6447, 6446, 1, 0, 0, 0, 6448, 6451, 1, 0, 0, 0, 6449, 6447, 1, 0, 0, 0, 6449, 6450, 1, 0, 0, 0, 6450, 1332, 1, 0, 0, 0, 6451, 6449, 1, 0, 0, 0, 6452, 6453, 3, 1335, 665, 0, 6453, 6454, 5, 39, 0, 0, 6454, 1334, 1, 0, 0, 0, 6455, 6456, 7, 26, 0, 0, 6456, 6457, 3, 1309, 652, 0, 6457, 1336, 1, 0, 0, 0, 6458, 6459, 3, 1343, 669, 0, 6459, 1338, 1, 0, 0, 0, 6460, 6461, 3, 1343, 669, 0, 6461, 6462, 5, 46, 0, 0, 6462, 6463, 5, 46, 0, 0, 6463, 6464, 1, 0, 0, 0, 6464, 6465, 6, 667, 6, 0, 6465, 1340, 1, 0, 0, 0, 6466, 6467, 3, 1343, 669, 0, 6467, 6469, 5, 46, 0, 0, 6468, 6470, 3, 1343, 669, 0, 6469, 6468, 1, 0, 0, 0, 6469, 6470, 1, 0, 0, 0, 6470, 6476, 1, 0, 0, 0, 6471, 6473, 7, 10, 0, 0, 6472, 6474, 7, 1, 0, 0, 6473, 6472, 1, 0, 0, 0, 6473, 6474, 1, 0, 0, 0, 6474, 6475, 1, 0, 0, 0, 6475, 6477, 3, 1343, 669, 0, 6476, 6471, 1, 0, 0, 0, 6476, 6477, 1, 0, 0, 0, 6477, 6495, 1, 0, 0, 0, 6478, 6479, 5, 46, 0, 0, 6479, 6485, 3, 1343, 669, 0, 6480, 6482, 7, 10, 0, 0, 6481, 6483, 7, 1, 0, 0, 6482, 6481, 1, 0, 0, 0, 6482, 6483, 1, 0, 0, 0, 6483, 6484, 1, 0, 0, 0, 6484, 6486, 3, 1343, 669, 0, 6485, 6480, 1, 0, 0, 0, 6485, 6486, 1, 0, 0, 0, 6486, 6495, 1, 0, 0, 0, 6487, 6488, 3, 1343, 669, 0, 6488, 6490, 7, 10, 0, 0, 6489, 6491, 7, 1, 0, 0, 6490, 6489, 1, 0, 0, 0, 6490, 6491, 1, 0, 0, 0, 6491, 6492, 1, 0, 0, 0, 6492, 6493, 3, 1343, 669, 0, 6493, 6495, 1, 0, 0, 0, 6494, 6466, 1, 0, 0, 0, 6494, 6478, 1, 0, 0, 0, 6494, 6487, 1, 0, 0, 0, 6495, 1342, 1, 0, 0, 0, 6496, 6498, 7, 0, 0, 0, 6497, 6496, 1, 0, 0, 0, 6498, 6499, 1, 0, 0, 0, 6499, 6497, 1, 0, 0, 0, 6499, 6500, 1, 0, 0, 0, 6500, 1344, 1, 0, 0, 0, 6501, 6502, 5, 58, 0, 0, 6502, 6506, 7, 40, 0, 0, 6503, 6505, 7, 41, 0, 0, 6504, 6503, 1, 0, 0, 0, 6505, 6508, 1, 0, 0, 0, 6506, 6504, 1, 0, 0, 0, 6506, 6507, 1, 0, 0, 0, 6507, 1346, 1, 0, 0, 0, 6508, 6506, 1, 0, 0, 0, 6509, 6510, 5, 58, 0, 0, 6510, 6511, 5, 34, 0, 0, 6511, 6519, 1, 0, 0, 0, 6512, 6513, 5, 92, 0, 0, 6513, 6518, 9, 0, 0, 0, 6514, 6515, 5, 34, 0, 0, 6515, 6518, 5, 34, 0, 0, 6516, 6518, 8, 42, 0, 0, 6517, 6512, 1, 0, 0, 0, 6517, 6514, 1, 0, 0, 0, 6517, 6516, 1, 0, 0, 0, 6518, 6521, 1, 0, 0, 0, 6519, 6517, 1, 0, 0, 0, 6519, 6520, 1, 0, 0, 0, 6520, 6522, 1, 0, 0, 0, 6521, 6519, 1, 0, 0, 0, 6522, 6523, 5, 34, 0, 0, 6523, 1348, 1, 0, 0, 0, 6524, 6526, 7, 43, 0, 0, 6525, 6524, 1, 0, 0, 0, 6526, 6527, 1, 0, 0, 0, 6527, 6525, 1, 0, 0, 0, 6527, 6528, 1, 0, 0, 0, 6528, 6529, 1, 0, 0, 0, 6529, 6530, 6, 672, 7, 0, 6530, 1350, 1, 0, 0, 0, 6531, 6533, 5, 13, 0, 0, 6532, 6534, 5, 10, 0, 0, 6533, 6532, 1, 0, 0, 0, 6533, 6534, 1, 0, 0, 0, 6534, 6537, 1, 0, 0, 0, 6535, 6537, 5, 10, 0, 0, 6536, 6531, 1, 0, 0, 0, 6536, 6535, 1, 0, 0, 0, 6537, 6538, 1, 0, 0, 0, 6538, 6539, 6, 673, 7, 0, 6539, 1352, 1, 0, 0, 0, 6540, 6541, 5, 45, 0, 0, 6541, 6542, 5, 45, 0, 0, 6542, 6546, 1, 0, 0, 0, 6543, 6545, 8, 44, 0, 0, 6544, 6543, 1, 0, 0, 0, 6545, 6548, 1, 0, 0, 0, 6546, 6544, 1, 0, 0, 0, 6546, 6547, 1, 0, 0, 0, 6547, 6549, 1, 0, 0, 0, 6548, 6546, 1, 0, 0, 0, 6549, 6550, 6, 674, 7, 0, 6550, 1354, 1, 0, 0, 0, 6551, 6552, 5, 47, 0, 0, 6552, 6553, 5, 42, 0, 0, 6553, 6576, 1, 0, 0, 0, 6554, 6556, 5, 47, 0, 0, 6555, 6554, 1, 0, 0, 0, 6556, 6559, 1, 0, 0, 0, 6557, 6555, 1, 0, 0, 0, 6557, 6558, 1, 0, 0, 0, 6558, 6560, 1, 0, 0, 0, 6559, 6557, 1, 0, 0, 0, 6560, 6575, 3, 1355, 675, 0, 6561, 6575, 8, 45, 0, 0, 6562, 6564, 5, 47, 0, 0, 6563, 6562, 1, 0, 0, 0, 6564, 6565, 1, 0, 0, 0, 6565, 6563, 1, 0, 0, 0, 6565, 6566, 1, 0, 0, 0, 6566, 6567, 1, 0, 0, 0, 6567, 6575, 8, 45, 0, 0, 6568, 6570, 5, 42, 0, 0, 6569, 6568, 1, 0, 0, 0, 6570, 6571, 1, 0, 0, 0, 6571, 6569, 1, 0, 0, 0, 6571, 6572, 1, 0, 0, 0, 6572, 6573, 1, 0, 0, 0, 6573, 6575, 8, 45, 0, 0, 6574, 6557, 1, 0, 0, 0, 6574, 6561, 1, 0, 0, 0, 6574, 6563, 1, 0, 0, 0, 6574, 6569, 1, 0, 0, 0, 6575, 6578, 1, 0, 0, 0, 6576, 6574, 1, 0, 0, 0, 6576, 6577, 1, 0, 0, 0, 6577, 6582, 1, 0, 0, 0, 6578, 6576, 1, 0, 0, 0, 6579, 6581, 5, 42, 0, 0, 6580, 6579, 1, 0, 0, 0, 6581, 6584, 1, 0, 0, 0, 6582, 6580, 1, 0, 0, 0, 6582, 6583, 1, 0, 0, 0, 6583, 6585, 1, 0, 0, 0, 6584, 6582, 1, 0, 0, 0, 6585, 6586, 5, 42, 0, 0, 6586, 6587, 5, 47, 0, 0, 6587, 6588, 1, 0, 0, 0, 6588, 6589, 6, 675, 7, 0, 6589, 1356, 1, 0, 0, 0, 6590, 6591, 5, 47, 0, 0, 6591, 6592, 5, 42, 0, 0, 6592, 6617, 1, 0, 0, 0, 6593, 6595, 5, 47, 0, 0, 6594, 6593, 1, 0, 0, 0, 6595, 6598, 1, 0, 0, 0, 6596, 6594, 1, 0, 0, 0, 6596, 6597, 1, 0, 0, 0, 6597, 6599, 1, 0, 0, 0, 6598, 6596, 1, 0, 0, 0, 6599, 6616, 3, 1355, 675, 0, 6600, 6616, 8, 45, 0, 0, 6601, 6603, 5, 47, 0, 0, 6602, 6601, 1, 0, 0, 0, 6603, 6604, 1, 0, 0, 0, 6604, 6602, 1, 0, 0, 0, 6604, 6605, 1, 0, 0, 0, 6605, 6606, 1, 0, 0, 0, 6606, 6614, 8, 45, 0, 0, 6607, 6609, 5, 42, 0, 0, 6608, 6607, 1, 0, 0, 0, 6609, 6610, 1, 0, 0, 0, 6610, 6608, 1, 0, 0, 0, 6610, 6611, 1, 0, 0, 0, 6611, 6612, 1, 0, 0, 0, 6612, 6614, 8, 45, 0, 0, 6613, 6602, 1, 0, 0, 0, 6613, 6608, 1, 0, 0, 0, 6614, 6616, 1, 0, 0, 0, 6615, 6596, 1, 0, 0, 0, 6615, 6600, 1, 0, 0, 0, 6615, 6613, 1, 0, 0, 0, 6616, 6619, 1, 0, 0, 0, 6617, 6615, 1, 0, 0, 0, 6617, 6618, 1, 0, 0, 0, 6618, 6637, 1, 0, 0, 0, 6619, 6617, 1, 0, 0, 0, 6620, 6622, 5, 47, 0, 0, 6621, 6620, 1, 0, 0, 0, 6622, 6623, 1, 0, 0, 0, 6623, 6621, 1, 0, 0, 0, 6623, 6624, 1, 0, 0, 0, 6624, 6638, 1, 0, 0, 0, 6625, 6627, 5, 42, 0, 0, 6626, 6625, 1, 0, 0, 0, 6627, 6628, 1, 0, 0, 0, 6628, 6626, 1, 0, 0, 0, 6628, 6629, 1, 0, 0, 0, 6629, 6638, 1, 0, 0, 0, 6630, 6632, 5, 47, 0, 0, 6631, 6630, 1, 0, 0, 0, 6632, 6635, 1, 0, 0, 0, 6633, 6631, 1, 0, 0, 0, 6633, 6634, 1, 0, 0, 0, 6634, 6636, 1, 0, 0, 0, 6635, 6633, 1, 0, 0, 0, 6636, 6638, 3, 1357, 676, 0, 6637, 6621, 1, 0, 0, 0, 6637, 6626, 1, 0, 0, 0, 6637, 6633, 1, 0, 0, 0, 6637, 6638, 1, 0, 0, 0, 6638, 6639, 1, 0, 0, 0, 6639, 6640, 6, 676, 8, 0, 6640, 1358, 1, 0, 0, 0, 6641, 6653, 5, 92, 0, 0, 6642, 6652, 8, 46, 0, 0, 6643, 6647, 5, 34, 0, 0, 6644, 6646, 8, 47, 0, 0, 6645, 6644, 1, 0, 0, 0, 6646, 6649, 1, 0, 0, 0, 6647, 6645, 1, 0, 0, 0, 6647, 6648, 1, 0, 0, 0, 6648, 6650, 1, 0, 0, 0, 6649, 6647, 1, 0, 0, 0, 6650, 6652, 5, 34, 0, 0, 6651, 6642, 1, 0, 0, 0, 6651, 6643, 1, 0, 0, 0, 6652, 6655, 1, 0, 0, 0, 6653, 6651, 1, 0, 0, 0, 6653, 6654, 1, 0, 0, 0, 6654, 6663, 1, 0, 0, 0, 6655, 6653, 1, 0, 0, 0, 6656, 6660, 5, 34, 0, 0, 6657, 6659, 8, 47, 0, 0, 6658, 6657, 1, 0, 0, 0, 6659, 6662, 1, 0, 0, 0, 6660, 6658, 1, 0, 0, 0, 6660, 6661, 1, 0, 0, 0, 6661, 6664, 1, 0, 0, 0, 6662, 6660, 1, 0, 0, 0, 6663, 6656, 1, 0, 0, 0, 6663, 6664, 1, 0, 0, 0, 6664, 1360, 1, 0, 0, 0, 6665, 6666, 5, 92, 0, 0, 6666, 6667, 5, 92, 0, 0, 6667, 1362, 1, 0, 0, 0, 6668, 6669, 9, 0, 0, 0, 6669, 1364, 1, 0, 0, 0, 6670, 6671, 3, 1369, 682, 0, 6671, 6672, 5, 39, 0, 0, 6672, 6673, 1, 0, 0, 0, 6673, 6674, 6, 680, 9, 0, 6674, 1366, 1, 0, 0, 0, 6675, 6677, 3, 1369, 682, 0, 6676, 6678, 5, 92, 0, 0, 6677, 6676, 1, 0, 0, 0, 6677, 6678, 1, 0, 0, 0, 6678, 6679, 1, 0, 0, 0, 6679, 6680, 5, 0, 0, 1, 6680, 1368, 1, 0, 0, 0, 6681, 6682, 5, 39, 0, 0, 6682, 6705, 5, 39, 0, 0, 6683, 6701, 5, 92, 0, 0, 6684, 6685, 5, 120, 0, 0, 6685, 6702, 7, 39, 0, 0, 6686, 6687, 5, 117, 0, 0, 6687, 6688, 7, 39, 0, 0, 6688, 6689, 7, 39, 0, 0, 6689, 6690, 7, 39, 0, 0, 6690, 6702, 7, 39, 0, 0, 6691, 6692, 5, 85, 0, 0, 6692, 6693, 7, 39, 0, 0, 6693, 6694, 7, 39, 0, 0, 6694, 6695, 7, 39, 0, 0, 6695, 6696, 7, 39, 0, 0, 6696, 6697, 7, 39, 0, 0, 6697, 6698, 7, 39, 0, 0, 6698, 6699, 7, 39, 0, 0, 6699, 6702, 7, 39, 0, 0, 6700, 6702, 8, 48, 0, 0, 6701, 6684, 1, 0, 0, 0, 6701, 6686, 1, 0, 0, 0, 6701, 6691, 1, 0, 0, 0, 6701, 6700, 1, 0, 0, 0, 6702, 6705, 1, 0, 0, 0, 6703, 6705, 8, 49, 0, 0, 6704, 6681, 1, 0, 0, 0, 6704, 6683, 1, 0, 0, 0, 6704, 6703, 1, 0, 0, 0, 6705, 6708, 1, 0, 0, 0, 6706, 6704, 1, 0, 0, 0, 6706, 6707, 1, 0, 0, 0, 6707, 1370, 1, 0, 0, 0, 6708, 6706, 1, 0, 0, 0, 6709, 6710, 3, 1375, 685, 0, 6710, 6711, 5, 39, 0, 0, 6711, 6712, 1, 0, 0, 0, 6712, 6713, 6, 683, 9, 0, 6713, 1372, 1, 0, 0, 0, 6714, 6716, 3, 1375, 685, 0, 6715, 6717, 5, 92, 0, 0, 6716, 6715, 1, 0, 0, 0, 6716, 6717, 1, 0, 0, 0, 6717, 6718, 1, 0, 0, 0, 6718, 6719, 5, 0, 0, 1, 6719, 1374, 1, 0, 0, 0, 6720, 6721, 5, 39, 0, 0, 6721, 6726, 5, 39, 0, 0, 6722, 6723, 5, 92, 0, 0, 6723, 6726, 9, 0, 0, 0, 6724, 6726, 8, 49, 0, 0, 6725, 6720, 1, 0, 0, 0, 6725, 6722, 1, 0, 0, 0, 6725, 6724, 1, 0, 0, 0, 6726, 6729, 1, 0, 0, 0, 6727, 6725, 1, 0, 0, 0, 6727, 6728, 1, 0, 0, 0, 6728, 1376, 1, 0, 0, 0, 6729, 6727, 1, 0, 0, 0, 6730, 6731, 3, 1349, 672, 0, 6731, 6732, 1, 0, 0, 0, 6732, 6733, 6, 686, 10, 0, 6733, 6734, 6, 686, 7, 0, 6734, 1378, 1, 0, 0, 0, 6735, 6736, 3, 1351, 673, 0, 6736, 6737, 1, 0, 0, 0, 6737, 6738, 6, 687, 11, 0, 6738, 6739, 6, 687, 7, 0, 6739, 6740, 6, 687, 12, 0, 6740, 1380, 1, 0, 0, 0, 6741, 6742, 6, 688, 13, 0, 6742, 6743, 1, 0, 0, 0, 6743, 6744, 6, 688, 14, 0, 6744, 6745, 6, 688, 15, 0, 6745, 1382, 1, 0, 0, 0, 6746, 6747, 3, 1349, 672, 0, 6747, 6748, 1, 0, 0, 0, 6748, 6749, 6, 689, 10, 0, 6749, 6750, 6, 689, 7, 0, 6750, 1384, 1, 0, 0, 0, 6751, 6752, 3, 1351, 673, 0, 6752, 6753, 1, 0, 0, 0, 6753, 6754, 6, 690, 11, 0, 6754, 6755, 6, 690, 7, 0, 6755, 1386, 1, 0, 0, 0, 6756, 6757, 5, 39, 0, 0, 6757, 6758, 1, 0, 0, 0, 6758, 6759, 6, 691, 2, 0, 6759, 6760, 6, 691, 16, 0, 6760, 1388, 1, 0, 0, 0, 6761, 6762, 6, 692, 17, 0, 6762, 6763, 1, 0, 0, 0, 6763, 6764, 6, 692, 14, 0, 6764, 6765, 6, 692, 15, 0, 6765, 1390, 1, 0, 0, 0, 6766, 6768, 8, 50, 0, 0, 6767, 6766, 1, 0, 0, 0, 6768, 6769, 1, 0, 0, 0, 6769, 6767, 1, 0, 0, 0, 6769, 6770, 1, 0, 0, 0, 6770, 6779, 1, 0, 0, 0, 6771, 6775, 5, 36, 0, 0, 6772, 6774, 8, 50, 0, 0, 6773, 6772, 1, 0, 0, 0, 6774, 6777, 1, 0, 0, 0, 6775, 6773, 1, 0, 0, 0, 6775, 6776, 1, 0, 0, 0, 6776, 6779, 1, 0, 0, 0, 6777, 6775, 1, 0, 0, 0, 6778, 6767, 1, 0, 0, 0, 6778, 6771, 1, 0, 0, 0, 6779, 1392, 1, 0, 0, 0, 6780, 6782, 5, 36, 0, 0, 6781, 6783, 3, 1319, 657, 0, 6782, 6781, 1, 0, 0, 0, 6782, 6783, 1, 0, 0, 0, 6783, 6784, 1, 0, 0, 0, 6784, 6785, 5, 36, 0, 0, 6785, 6786, 1, 0, 0, 0, 6786, 6787, 4, 694, 8, 0, 6787, 6788, 6, 694, 18, 0, 6788, 6789, 1, 0, 0, 0, 6789, 6790, 6, 694, 15, 0, 6790, 1394, 1, 0, 0, 0, 78, 0, 1, 2, 3, 4, 1462, 1468, 1470, 1475, 1479, 1481, 1484, 1493, 1495, 1500, 1505, 1507, 6324, 6333, 6337, 6341, 6350, 6352, 6362, 6364, 6390, 6392, 6410, 6421, 6432, 6449, 6469, 6473, 6476, 6482, 6485, 6490, 6494, 6499, 6506, 6517, 6519, 6527, 6533, 6536, 6546, 6557, 6565, 6571, 6574, 6576, 6582, 6596, 6604, 6610, 6613, 6615, 6617, 6623, 6628, 6633, 6637, 6647, 6651, 6653, 6660, 6663, 6677, 6701, 6704, 6706, 6716, 6725, 6727, 6769, 6775, 6778, 6782, 19, 1, 28, 0, 7, 29, 0, 3, 0, 0, 5, 1, 0, 1, 656, 1, 5, 4, 0, 1, 667, 2, 0, 1, 0, 1, 676, 3, 2, 2, 0, 7, 663, 0, 7, 664, 0, 2, 3, 0, 1, 688, 4, 6, 0, 0, 4, 0, 0, 2, 1, 0, 1, 692, 5, 1, 694, 6] \ No newline at end of file diff --git a/incubator/binding-pgsql/gen/PostgreSqlLexer.java b/incubator/binding-pgsql/gen/PostgreSqlLexer.java new file mode 100644 index 0000000000..5c68e526f7 --- /dev/null +++ b/incubator/binding-pgsql/gen/PostgreSqlLexer.java @@ -0,0 +1,5245 @@ +// Generated from /Users/akramyakubov/workspace/aklivity/zilla/incubator/binding-pgsql/src/main/antlr4/io/aklivity/zilla/runtime/binding/pgsql/parser/PostgreSqlLexer.g4 by ANTLR 4.13.1 + + +import org.antlr.v4.runtime.Lexer; +import org.antlr.v4.runtime.CharStream; +import org.antlr.v4.runtime.Token; +import org.antlr.v4.runtime.TokenStream; +import org.antlr.v4.runtime.*; +import org.antlr.v4.runtime.atn.*; +import org.antlr.v4.runtime.dfa.DFA; +import org.antlr.v4.runtime.misc.*; + +@SuppressWarnings({"all", "warnings", "unchecked", "unused", "cast", "CheckReturnValue", "this-escape"}) +public class PostgreSqlLexer extends PostgreSqlLexerBase { + static { RuntimeMetaData.checkVersion("4.13.1", RuntimeMetaData.VERSION); } + + protected static final DFA[] _decisionToDFA; + protected static final PredictionContextCache _sharedContextCache = + new PredictionContextCache(); + public static final int + Dollar=1, OPEN_PAREN=2, CLOSE_PAREN=3, OPEN_BRACKET=4, CLOSE_BRACKET=5, + COMMA=6, SEMI=7, COLON=8, STAR=9, EQUAL=10, DOT=11, PLUS=12, MINUS=13, + SLASH=14, CARET=15, LT=16, GT=17, LESS_LESS=18, GREATER_GREATER=19, COLON_EQUALS=20, + LESS_EQUALS=21, EQUALS_GREATER=22, GREATER_EQUALS=23, DOT_DOT=24, NOT_EQUALS=25, + TYPECAST=26, PERCENT=27, PARAM=28, Operator=29, ALL=30, ANALYSE=31, ANALYZE=32, + AND=33, ANY=34, ARRAY=35, AS=36, ASC=37, ASYMMETRIC=38, BOTH=39, CASE=40, + CAST=41, CHECK=42, COLLATE=43, COLUMN=44, CONSTRAINT=45, CREATE=46, CURRENT_CATALOG=47, + CURRENT_DATE=48, CURRENT_ROLE=49, CURRENT_TIME=50, CURRENT_TIMESTAMP=51, + CURRENT_USER=52, DEFAULT=53, DEFERRABLE=54, DESC=55, DISTINCT=56, DO=57, + ELSE=58, EXCEPT=59, FALSE_P=60, FETCH=61, FOR=62, FOREIGN=63, FROM=64, + GRANT=65, GROUP_P=66, HAVING=67, IN_P=68, INITIALLY=69, INTERSECT=70, + INTO=71, LATERAL_P=72, LEADING=73, LIMIT=74, LOCALTIME=75, LOCALTIMESTAMP=76, + NOT=77, NULL_P=78, OFFSET=79, ON=80, ONLY=81, OR=82, ORDER=83, PLACING=84, + PRIMARY=85, REFERENCES=86, RETURNING=87, SELECT=88, SESSION_USER=89, SOME=90, + SYMMETRIC=91, TABLE=92, THEN=93, TO=94, TRAILING=95, TRUE_P=96, UNION=97, + UNIQUE=98, USER=99, USING=100, VARIADIC=101, WHEN=102, WHERE=103, WINDOW=104, + WITH=105, AUTHORIZATION=106, BINARY=107, COLLATION=108, CONCURRENTLY=109, + CROSS=110, CURRENT_SCHEMA=111, FREEZE=112, FULL=113, ILIKE=114, INNER_P=115, + IS=116, ISNULL=117, JOIN=118, LEFT=119, LIKE=120, NATURAL=121, NOTNULL=122, + OUTER_P=123, OVER=124, OVERLAPS=125, RIGHT=126, SIMILAR=127, VERBOSE=128, + ABORT_P=129, ABSOLUTE_P=130, ACCESS=131, ACTION=132, ADD_P=133, ADMIN=134, + AFTER=135, AGGREGATE=136, ALSO=137, ALTER=138, ALWAYS=139, ASSERTION=140, + ASSIGNMENT=141, AT=142, ATTRIBUTE=143, BACKWARD=144, BEFORE=145, BEGIN_P=146, + BY=147, CACHE=148, CALLED=149, CASCADE=150, CASCADED=151, CATALOG=152, + CHAIN=153, CHARACTERISTICS=154, CHECKPOINT=155, CLASS=156, CLOSE=157, + CLUSTER=158, COMMENT=159, COMMENTS=160, COMMIT=161, COMMITTED=162, CONFIGURATION=163, + CONNECTION=164, CONSTRAINTS=165, CONTENT_P=166, CONTINUE_P=167, CONVERSION_P=168, + COPY=169, COST=170, CSV=171, CURSOR=172, CYCLE=173, DATA_P=174, DATABASE=175, + DAY_P=176, DEALLOCATE=177, DECLARE=178, DEFAULTS=179, DEFERRED=180, DEFINER=181, + DELETE_P=182, DELIMITER=183, DELIMITERS=184, DICTIONARY=185, DISABLE_P=186, + DISCARD=187, DOCUMENT_P=188, DOMAIN_P=189, DOUBLE_P=190, DROP=191, EACH=192, + ENABLE_P=193, ENCODING=194, ENCRYPTED=195, ENUM_P=196, ESCAPE=197, EVENT=198, + EXCLUDE=199, EXCLUDING=200, EXCLUSIVE=201, EXECUTE=202, EXPLAIN=203, EXTENSION=204, + EXTERNAL=205, FAMILY=206, FIRST_P=207, FOLLOWING=208, FORCE=209, FORWARD=210, + FUNCTION=211, FUNCTIONS=212, GLOBAL=213, GRANTED=214, HANDLER=215, HEADER_P=216, + HOLD=217, HOUR_P=218, IDENTITY_P=219, IF_P=220, IMMEDIATE=221, IMMUTABLE=222, + IMPLICIT_P=223, INCLUDING=224, INCREMENT=225, INDEX=226, INDEXES=227, + INHERIT=228, INHERITS=229, INLINE_P=230, INSENSITIVE=231, INSERT=232, + INSTEAD=233, INVOKER=234, ISOLATION=235, KEY=236, LABEL=237, LANGUAGE=238, + LARGE_P=239, LAST_P=240, LEAKPROOF=241, LEVEL=242, LISTEN=243, LOAD=244, + LOCAL=245, LOCATION=246, LOCK_P=247, MAPPING=248, MATCH=249, MATCHED=250, + MATERIALIZED=251, MAXVALUE=252, MERGE=253, MINUTE_P=254, MINVALUE=255, + MODE=256, MONTH_P=257, MOVE=258, NAME_P=259, NAMES=260, NEXT=261, NO=262, + NOTHING=263, NOTIFY=264, NOWAIT=265, NULLS_P=266, OBJECT_P=267, OF=268, + OFF=269, OIDS=270, OPERATOR=271, OPTION=272, OPTIONS=273, OWNED=274, OWNER=275, + PARSER=276, PARTIAL=277, PARTITION=278, PASSING=279, PASSWORD=280, PLANS=281, + PRECEDING=282, PREPARE=283, PREPARED=284, PRESERVE=285, PRIOR=286, PRIVILEGES=287, + PROCEDURAL=288, PROCEDURE=289, PROGRAM=290, QUOTE=291, RANGE=292, READ=293, + REASSIGN=294, RECHECK=295, RECURSIVE=296, REF=297, REFRESH=298, REINDEX=299, + RELATIVE_P=300, RELEASE=301, RENAME=302, REPEATABLE=303, REPLACE=304, + REPLICA=305, RESET=306, RESTART=307, RESTRICT=308, RETURNS=309, REVOKE=310, + ROLE=311, ROLLBACK=312, ROWS=313, RULE=314, SAVEPOINT=315, SCHEMA=316, + SCROLL=317, SEARCH=318, SECOND_P=319, SECURITY=320, SEQUENCE=321, SEQUENCES=322, + SERIALIZABLE=323, SERVER=324, SESSION=325, SET=326, SHARE=327, SHOW=328, + SIMPLE=329, SNAPSHOT=330, STABLE=331, STANDALONE_P=332, START=333, STATEMENT=334, + STATISTICS=335, STDIN=336, STDOUT=337, STORAGE=338, STRICT_P=339, STRIP_P=340, + SYSID=341, SYSTEM_P=342, TABLES=343, TABLESPACE=344, TEMP=345, TEMPLATE=346, + TEMPORARY=347, TEXT_P=348, TRANSACTION=349, TRIGGER=350, TRUNCATE=351, + TRUSTED=352, TYPE_P=353, TYPES_P=354, UNBOUNDED=355, UNCOMMITTED=356, + UNENCRYPTED=357, UNKNOWN=358, UNLISTEN=359, UNLOGGED=360, UNTIL=361, UPDATE=362, + VACUUM=363, VALID=364, VALIDATE=365, VALIDATOR=366, VARYING=367, VERSION_P=368, + VIEW=369, VOLATILE=370, WHITESPACE_P=371, WITHOUT=372, WORK=373, WRAPPER=374, + WRITE=375, XML_P=376, YEAR_P=377, YES_P=378, ZONE=379, BETWEEN=380, BIGINT=381, + BIT=382, BOOLEAN_P=383, CHAR_P=384, CHARACTER=385, COALESCE=386, DEC=387, + DECIMAL_P=388, EXISTS=389, EXTRACT=390, FLOAT_P=391, GREATEST=392, INOUT=393, + INT_P=394, INTEGER=395, INTERVAL=396, LEAST=397, NATIONAL=398, NCHAR=399, + NONE=400, NULLIF=401, NUMERIC=402, OVERLAY=403, POSITION=404, PRECISION=405, + REAL=406, ROW=407, SETOF=408, SMALLINT=409, SUBSTRING=410, TIME=411, TIMESTAMP=412, + TREAT=413, TRIM=414, VALUES=415, VARCHAR=416, XMLATTRIBUTES=417, XMLCOMMENT=418, + XMLAGG=419, XML_IS_WELL_FORMED=420, XML_IS_WELL_FORMED_DOCUMENT=421, XML_IS_WELL_FORMED_CONTENT=422, + XPATH=423, XPATH_EXISTS=424, XMLCONCAT=425, XMLELEMENT=426, XMLEXISTS=427, + XMLFOREST=428, XMLPARSE=429, XMLPI=430, XMLROOT=431, XMLSERIALIZE=432, + CALL=433, CURRENT_P=434, ATTACH=435, DETACH=436, EXPRESSION=437, GENERATED=438, + LOGGED=439, STORED=440, INCLUDE=441, ROUTINE=442, TRANSFORM=443, IMPORT_P=444, + POLICY=445, METHOD=446, REFERENCING=447, NEW=448, OLD=449, VALUE_P=450, + SUBSCRIPTION=451, PUBLICATION=452, OUT_P=453, END_P=454, ROUTINES=455, + SCHEMAS=456, PROCEDURES=457, INPUT_P=458, SUPPORT=459, PARALLEL=460, SQL_P=461, + DEPENDS=462, OVERRIDING=463, CONFLICT=464, SKIP_P=465, LOCKED=466, TIES=467, + ROLLUP=468, CUBE=469, GROUPING=470, SETS=471, TABLESAMPLE=472, ORDINALITY=473, + XMLTABLE=474, COLUMNS=475, XMLNAMESPACES=476, ROWTYPE=477, NORMALIZED=478, + WITHIN=479, FILTER=480, GROUPS=481, OTHERS=482, NFC=483, NFD=484, NFKC=485, + NFKD=486, UESCAPE=487, VIEWS=488, NORMALIZE=489, DUMP=490, PRINT_STRICT_PARAMS=491, + VARIABLE_CONFLICT=492, ERROR=493, USE_VARIABLE=494, USE_COLUMN=495, ALIAS=496, + CONSTANT=497, PERFORM=498, GET=499, DIAGNOSTICS=500, STACKED=501, ELSIF=502, + WHILE=503, REVERSE=504, FOREACH=505, SLICE=506, EXIT=507, RETURN=508, + QUERY=509, RAISE=510, SQLSTATE=511, DEBUG=512, LOG=513, INFO=514, NOTICE=515, + WARNING=516, EXCEPTION=517, ASSERT=518, LOOP=519, OPEN=520, ABS=521, CBRT=522, + CEIL=523, CEILING=524, DEGREES=525, DIV=526, EXP=527, FACTORIAL=528, FLOOR=529, + GCD=530, LCM=531, LN=532, LOG10=533, MIN_SCALE=534, MOD=535, PI=536, POWER=537, + RADIANS=538, ROUND=539, SCALE=540, SIGN=541, SQRT=542, TRIM_SCALE=543, + TRUNC=544, WIDTH_BUCKET=545, RANDOM=546, SETSEED=547, ACOS=548, ACOSD=549, + ASIN=550, ASIND=551, ATAN=552, ATAND=553, ATAN2=554, ATAN2D=555, COS=556, + COSD=557, COT=558, COTD=559, SIN=560, SIND=561, TAN=562, TAND=563, SINH=564, + COSH=565, TANH=566, ASINH=567, ACOSH=568, ATANH=569, BIT_LENGTH=570, CHAR_LENGTH=571, + CHARACTER_LENGTH=572, LOWER=573, OCTET_LENGTH=574, UPPER=575, ASCII=576, + BTRIM=577, CHR=578, CONCAT=579, CONCAT_WS=580, FORMAT=581, INITCAP=582, + LENGTH=583, LPAD=584, LTRIM=585, MD5=586, PARSE_IDENT=587, PG_CLIENT_ENCODING=588, + QUOTE_IDENT=589, QUOTE_LITERAL=590, QUOTE_NULLABLE=591, REGEXP_COUNT=592, + REGEXP_INSTR=593, REGEXP_LIKE=594, REGEXP_MATCH=595, REGEXP_MATCHES=596, + REGEXP_REPLACE=597, REGEXP_SPLIT_TO_ARRAY=598, REGEXP_SPLIT_TO_TABLE=599, + REGEXP_SUBSTR=600, REPEAT=601, RPAD=602, RTRIM=603, SPLIT_PART=604, STARTS_WITH=605, + STRING_TO_ARRAY=606, STRING_TO_TABLE=607, STRPOS=608, SUBSTR=609, TO_ASCII=610, + TO_HEX=611, TRANSLATE=612, UNISTR=613, AGE=614, CLOCK_TIMESTAMP=615, DATE_BIN=616, + DATE_PART=617, DATE_TRUNC=618, ISFINITE=619, JUSTIFY_DAYS=620, JUSTIFY_HOURS=621, + JUSTIFY_INTERVAL=622, MAKE_DATE=623, MAKE_INTERVAL=624, MAKE_TIME=625, + MAKE_TIMESTAMP=626, MAKE_TIMESTAMPTZ=627, NOW=628, STATEMENT_TIMESTAMP=629, + TIMEOFDAY=630, TRANSACTION_TIMESTAMP=631, TO_TIMESTAMP=632, TO_CHAR=633, + TO_DATE=634, TO_NUMBER=635, Identifier=636, QuotedIdentifier=637, UnterminatedQuotedIdentifier=638, + InvalidQuotedIdentifier=639, InvalidUnterminatedQuotedIdentifier=640, + UnicodeQuotedIdentifier=641, UnterminatedUnicodeQuotedIdentifier=642, + InvalidUnicodeQuotedIdentifier=643, InvalidUnterminatedUnicodeQuotedIdentifier=644, + StringConstant=645, UnterminatedStringConstant=646, UnicodeEscapeStringConstant=647, + UnterminatedUnicodeEscapeStringConstant=648, BeginDollarStringConstant=649, + BinaryStringConstant=650, UnterminatedBinaryStringConstant=651, InvalidBinaryStringConstant=652, + InvalidUnterminatedBinaryStringConstant=653, HexadecimalStringConstant=654, + UnterminatedHexadecimalStringConstant=655, InvalidHexadecimalStringConstant=656, + InvalidUnterminatedHexadecimalStringConstant=657, Integral=658, NumericFail=659, + Numeric=660, PLSQLVARIABLENAME=661, PLSQLIDENTIFIER=662, Whitespace=663, + Newline=664, LineComment=665, BlockComment=666, UnterminatedBlockComment=667, + MetaCommand=668, EndMetaCommand=669, ErrorCharacter=670, EscapeStringConstant=671, + UnterminatedEscapeStringConstant=672, InvalidEscapeStringConstant=673, + InvalidUnterminatedEscapeStringConstant=674, AfterEscapeStringConstantMode_NotContinued=675, + AfterEscapeStringConstantWithNewlineMode_NotContinued=676, DollarText=677, + EndDollarStringConstant=678, AfterEscapeStringConstantWithNewlineMode_Continued=679; + public static final int + EscapeStringConstantMode=1, AfterEscapeStringConstantMode=2, AfterEscapeStringConstantWithNewlineMode=3, + DollarQuotedStringMode=4; + public static String[] channelNames = { + "DEFAULT_TOKEN_CHANNEL", "HIDDEN" + }; + + public static String[] modeNames = { + "DEFAULT_MODE", "EscapeStringConstantMode", "AfterEscapeStringConstantMode", + "AfterEscapeStringConstantWithNewlineMode", "DollarQuotedStringMode" + }; + + private static String[] makeRuleNames() { + return new String[] { + "Dollar", "OPEN_PAREN", "CLOSE_PAREN", "OPEN_BRACKET", "CLOSE_BRACKET", + "COMMA", "SEMI", "COLON", "STAR", "EQUAL", "DOT", "PLUS", "MINUS", "SLASH", + "CARET", "LT", "GT", "LESS_LESS", "GREATER_GREATER", "COLON_EQUALS", + "LESS_EQUALS", "EQUALS_GREATER", "GREATER_EQUALS", "DOT_DOT", "NOT_EQUALS", + "TYPECAST", "PERCENT", "PARAM", "Operator", "OperatorEndingWithPlusMinus", + "OperatorCharacter", "OperatorCharacterNotAllowPlusMinusAtEnd", "OperatorCharacterAllowPlusMinusAtEnd", + "ALL", "ANALYSE", "ANALYZE", "AND", "ANY", "ARRAY", "AS", "ASC", "ASYMMETRIC", + "BOTH", "CASE", "CAST", "CHECK", "COLLATE", "COLUMN", "CONSTRAINT", "CREATE", + "CURRENT_CATALOG", "CURRENT_DATE", "CURRENT_ROLE", "CURRENT_TIME", "CURRENT_TIMESTAMP", + "CURRENT_USER", "DEFAULT", "DEFERRABLE", "DESC", "DISTINCT", "DO", "ELSE", + "EXCEPT", "FALSE_P", "FETCH", "FOR", "FOREIGN", "FROM", "GRANT", "GROUP_P", + "HAVING", "IN_P", "INITIALLY", "INTERSECT", "INTO", "LATERAL_P", "LEADING", + "LIMIT", "LOCALTIME", "LOCALTIMESTAMP", "NOT", "NULL_P", "OFFSET", "ON", + "ONLY", "OR", "ORDER", "PLACING", "PRIMARY", "REFERENCES", "RETURNING", + "SELECT", "SESSION_USER", "SOME", "SYMMETRIC", "TABLE", "THEN", "TO", + "TRAILING", "TRUE_P", "UNION", "UNIQUE", "USER", "USING", "VARIADIC", + "WHEN", "WHERE", "WINDOW", "WITH", "AUTHORIZATION", "BINARY", "COLLATION", + "CONCURRENTLY", "CROSS", "CURRENT_SCHEMA", "FREEZE", "FULL", "ILIKE", + "INNER_P", "IS", "ISNULL", "JOIN", "LEFT", "LIKE", "NATURAL", "NOTNULL", + "OUTER_P", "OVER", "OVERLAPS", "RIGHT", "SIMILAR", "VERBOSE", "ABORT_P", + "ABSOLUTE_P", "ACCESS", "ACTION", "ADD_P", "ADMIN", "AFTER", "AGGREGATE", + "ALSO", "ALTER", "ALWAYS", "ASSERTION", "ASSIGNMENT", "AT", "ATTRIBUTE", + "BACKWARD", "BEFORE", "BEGIN_P", "BY", "CACHE", "CALLED", "CASCADE", + "CASCADED", "CATALOG", "CHAIN", "CHARACTERISTICS", "CHECKPOINT", "CLASS", + "CLOSE", "CLUSTER", "COMMENT", "COMMENTS", "COMMIT", "COMMITTED", "CONFIGURATION", + "CONNECTION", "CONSTRAINTS", "CONTENT_P", "CONTINUE_P", "CONVERSION_P", + "COPY", "COST", "CSV", "CURSOR", "CYCLE", "DATA_P", "DATABASE", "DAY_P", + "DEALLOCATE", "DECLARE", "DEFAULTS", "DEFERRED", "DEFINER", "DELETE_P", + "DELIMITER", "DELIMITERS", "DICTIONARY", "DISABLE_P", "DISCARD", "DOCUMENT_P", + "DOMAIN_P", "DOUBLE_P", "DROP", "EACH", "ENABLE_P", "ENCODING", "ENCRYPTED", + "ENUM_P", "ESCAPE", "EVENT", "EXCLUDE", "EXCLUDING", "EXCLUSIVE", "EXECUTE", + "EXPLAIN", "EXTENSION", "EXTERNAL", "FAMILY", "FIRST_P", "FOLLOWING", + "FORCE", "FORWARD", "FUNCTION", "FUNCTIONS", "GLOBAL", "GRANTED", "HANDLER", + "HEADER_P", "HOLD", "HOUR_P", "IDENTITY_P", "IF_P", "IMMEDIATE", "IMMUTABLE", + "IMPLICIT_P", "INCLUDING", "INCREMENT", "INDEX", "INDEXES", "INHERIT", + "INHERITS", "INLINE_P", "INSENSITIVE", "INSERT", "INSTEAD", "INVOKER", + "ISOLATION", "KEY", "LABEL", "LANGUAGE", "LARGE_P", "LAST_P", "LEAKPROOF", + "LEVEL", "LISTEN", "LOAD", "LOCAL", "LOCATION", "LOCK_P", "MAPPING", + "MATCH", "MATCHED", "MATERIALIZED", "MAXVALUE", "MERGE", "MINUTE_P", + "MINVALUE", "MODE", "MONTH_P", "MOVE", "NAME_P", "NAMES", "NEXT", "NO", + "NOTHING", "NOTIFY", "NOWAIT", "NULLS_P", "OBJECT_P", "OF", "OFF", "OIDS", + "OPERATOR", "OPTION", "OPTIONS", "OWNED", "OWNER", "PARSER", "PARTIAL", + "PARTITION", "PASSING", "PASSWORD", "PLANS", "PRECEDING", "PREPARE", + "PREPARED", "PRESERVE", "PRIOR", "PRIVILEGES", "PROCEDURAL", "PROCEDURE", + "PROGRAM", "QUOTE", "RANGE", "READ", "REASSIGN", "RECHECK", "RECURSIVE", + "REF", "REFRESH", "REINDEX", "RELATIVE_P", "RELEASE", "RENAME", "REPEATABLE", + "REPLACE", "REPLICA", "RESET", "RESTART", "RESTRICT", "RETURNS", "REVOKE", + "ROLE", "ROLLBACK", "ROWS", "RULE", "SAVEPOINT", "SCHEMA", "SCROLL", + "SEARCH", "SECOND_P", "SECURITY", "SEQUENCE", "SEQUENCES", "SERIALIZABLE", + "SERVER", "SESSION", "SET", "SHARE", "SHOW", "SIMPLE", "SNAPSHOT", "STABLE", + "STANDALONE_P", "START", "STATEMENT", "STATISTICS", "STDIN", "STDOUT", + "STORAGE", "STRICT_P", "STRIP_P", "SYSID", "SYSTEM_P", "TABLES", "TABLESPACE", + "TEMP", "TEMPLATE", "TEMPORARY", "TEXT_P", "TRANSACTION", "TRIGGER", + "TRUNCATE", "TRUSTED", "TYPE_P", "TYPES_P", "UNBOUNDED", "UNCOMMITTED", + "UNENCRYPTED", "UNKNOWN", "UNLISTEN", "UNLOGGED", "UNTIL", "UPDATE", + "VACUUM", "VALID", "VALIDATE", "VALIDATOR", "VARYING", "VERSION_P", "VIEW", + "VOLATILE", "WHITESPACE_P", "WITHOUT", "WORK", "WRAPPER", "WRITE", "XML_P", + "YEAR_P", "YES_P", "ZONE", "BETWEEN", "BIGINT", "BIT", "BOOLEAN_P", "CHAR_P", + "CHARACTER", "COALESCE", "DEC", "DECIMAL_P", "EXISTS", "EXTRACT", "FLOAT_P", + "GREATEST", "INOUT", "INT_P", "INTEGER", "INTERVAL", "LEAST", "NATIONAL", + "NCHAR", "NONE", "NULLIF", "NUMERIC", "OVERLAY", "POSITION", "PRECISION", + "REAL", "ROW", "SETOF", "SMALLINT", "SUBSTRING", "TIME", "TIMESTAMP", + "TREAT", "TRIM", "VALUES", "VARCHAR", "XMLATTRIBUTES", "XMLCOMMENT", + "XMLAGG", "XML_IS_WELL_FORMED", "XML_IS_WELL_FORMED_DOCUMENT", "XML_IS_WELL_FORMED_CONTENT", + "XPATH", "XPATH_EXISTS", "XMLCONCAT", "XMLELEMENT", "XMLEXISTS", "XMLFOREST", + "XMLPARSE", "XMLPI", "XMLROOT", "XMLSERIALIZE", "CALL", "CURRENT_P", + "ATTACH", "DETACH", "EXPRESSION", "GENERATED", "LOGGED", "STORED", "INCLUDE", + "ROUTINE", "TRANSFORM", "IMPORT_P", "POLICY", "METHOD", "REFERENCING", + "NEW", "OLD", "VALUE_P", "SUBSCRIPTION", "PUBLICATION", "OUT_P", "END_P", + "ROUTINES", "SCHEMAS", "PROCEDURES", "INPUT_P", "SUPPORT", "PARALLEL", + "SQL_P", "DEPENDS", "OVERRIDING", "CONFLICT", "SKIP_P", "LOCKED", "TIES", + "ROLLUP", "CUBE", "GROUPING", "SETS", "TABLESAMPLE", "ORDINALITY", "XMLTABLE", + "COLUMNS", "XMLNAMESPACES", "ROWTYPE", "NORMALIZED", "WITHIN", "FILTER", + "GROUPS", "OTHERS", "NFC", "NFD", "NFKC", "NFKD", "UESCAPE", "VIEWS", + "NORMALIZE", "DUMP", "PRINT_STRICT_PARAMS", "VARIABLE_CONFLICT", "ERROR", + "USE_VARIABLE", "USE_COLUMN", "ALIAS", "CONSTANT", "PERFORM", "GET", + "DIAGNOSTICS", "STACKED", "ELSIF", "WHILE", "REVERSE", "FOREACH", "SLICE", + "EXIT", "RETURN", "QUERY", "RAISE", "SQLSTATE", "DEBUG", "LOG", "INFO", + "NOTICE", "WARNING", "EXCEPTION", "ASSERT", "LOOP", "OPEN", "ABS", "CBRT", + "CEIL", "CEILING", "DEGREES", "DIV", "EXP", "FACTORIAL", "FLOOR", "GCD", + "LCM", "LN", "LOG10", "MIN_SCALE", "MOD", "PI", "POWER", "RADIANS", "ROUND", + "SCALE", "SIGN", "SQRT", "TRIM_SCALE", "TRUNC", "WIDTH_BUCKET", "RANDOM", + "SETSEED", "ACOS", "ACOSD", "ASIN", "ASIND", "ATAN", "ATAND", "ATAN2", + "ATAN2D", "COS", "COSD", "COT", "COTD", "SIN", "SIND", "TAN", "TAND", + "SINH", "COSH", "TANH", "ASINH", "ACOSH", "ATANH", "BIT_LENGTH", "CHAR_LENGTH", + "CHARACTER_LENGTH", "LOWER", "OCTET_LENGTH", "UPPER", "ASCII", "BTRIM", + "CHR", "CONCAT", "CONCAT_WS", "FORMAT", "INITCAP", "LENGTH", "LPAD", + "LTRIM", "MD5", "PARSE_IDENT", "PG_CLIENT_ENCODING", "QUOTE_IDENT", "QUOTE_LITERAL", + "QUOTE_NULLABLE", "REGEXP_COUNT", "REGEXP_INSTR", "REGEXP_LIKE", "REGEXP_MATCH", + "REGEXP_MATCHES", "REGEXP_REPLACE", "REGEXP_SPLIT_TO_ARRAY", "REGEXP_SPLIT_TO_TABLE", + "REGEXP_SUBSTR", "REPEAT", "RPAD", "RTRIM", "SPLIT_PART", "STARTS_WITH", + "STRING_TO_ARRAY", "STRING_TO_TABLE", "STRPOS", "SUBSTR", "TO_ASCII", + "TO_HEX", "TRANSLATE", "UNISTR", "AGE", "CLOCK_TIMESTAMP", "DATE_BIN", + "DATE_PART", "DATE_TRUNC", "ISFINITE", "JUSTIFY_DAYS", "JUSTIFY_HOURS", + "JUSTIFY_INTERVAL", "MAKE_DATE", "MAKE_INTERVAL", "MAKE_TIME", "MAKE_TIMESTAMP", + "MAKE_TIMESTAMPTZ", "NOW", "STATEMENT_TIMESTAMP", "TIMEOFDAY", "TRANSACTION_TIMESTAMP", + "TO_TIMESTAMP", "TO_CHAR", "TO_DATE", "TO_NUMBER", "Identifier", "IdentifierStartChar", + "IdentifierChar", "StrictIdentifierChar", "QuotedIdentifier", "UnterminatedQuotedIdentifier", + "InvalidQuotedIdentifier", "InvalidUnterminatedQuotedIdentifier", "UnicodeQuotedIdentifier", + "UnterminatedUnicodeQuotedIdentifier", "InvalidUnicodeQuotedIdentifier", + "InvalidUnterminatedUnicodeQuotedIdentifier", "StringConstant", "UnterminatedStringConstant", + "BeginEscapeStringConstant", "UnicodeEscapeStringConstant", "UnterminatedUnicodeEscapeStringConstant", + "BeginDollarStringConstant", "Tag", "BinaryStringConstant", "UnterminatedBinaryStringConstant", + "InvalidBinaryStringConstant", "InvalidUnterminatedBinaryStringConstant", + "HexadecimalStringConstant", "UnterminatedHexadecimalStringConstant", + "InvalidHexadecimalStringConstant", "InvalidUnterminatedHexadecimalStringConstant", + "Integral", "NumericFail", "Numeric", "Digits", "PLSQLVARIABLENAME", + "PLSQLIDENTIFIER", "Whitespace", "Newline", "LineComment", "BlockComment", + "UnterminatedBlockComment", "MetaCommand", "EndMetaCommand", "ErrorCharacter", + "EscapeStringConstant", "UnterminatedEscapeStringConstant", "EscapeStringText", + "InvalidEscapeStringConstant", "InvalidUnterminatedEscapeStringConstant", + "InvalidEscapeStringText", "AfterEscapeStringConstantMode_Whitespace", + "AfterEscapeStringConstantMode_Newline", "AfterEscapeStringConstantMode_NotContinued", + "AfterEscapeStringConstantWithNewlineMode_Whitespace", "AfterEscapeStringConstantWithNewlineMode_Newline", + "AfterEscapeStringConstantWithNewlineMode_Continued", "AfterEscapeStringConstantWithNewlineMode_NotContinued", + "DollarText", "EndDollarStringConstant" + }; + } + public static final String[] ruleNames = makeRuleNames(); + + private static String[] makeLiteralNames() { + return new String[] { + null, "'$'", "'('", "')'", "'['", "']'", "','", "';'", "':'", "'*'", + "'='", "'.'", "'+'", "'-'", "'/'", "'^'", "'<'", "'>'", "'<<'", "'>>'", + "':='", "'<='", "'=>'", "'>='", "'..'", "'<>'", "'::'", "'%'", null, + null, "'ALL'", "'ANALYSE'", "'ANALYZE'", "'AND'", "'ANY'", "'ARRAY'", + "'AS'", "'ASC'", "'ASYMMETRIC'", "'BOTH'", "'CASE'", "'CAST'", "'CHECK'", + "'COLLATE'", "'COLUMN'", "'CONSTRAINT'", "'CREATE'", "'CURRENT_CATALOG'", + "'CURRENT_DATE'", "'CURRENT_ROLE'", "'CURRENT_TIME'", "'CURRENT_TIMESTAMP'", + "'CURRENT_USER'", "'DEFAULT'", "'DEFERRABLE'", "'DESC'", "'DISTINCT'", + "'DO'", "'ELSE'", "'EXCEPT'", "'FALSE'", "'FETCH'", "'FOR'", "'FOREIGN'", + "'FROM'", "'GRANT'", "'GROUP'", "'HAVING'", "'IN'", "'INITIALLY'", "'INTERSECT'", + "'INTO'", "'LATERAL'", "'LEADING'", "'LIMIT'", "'LOCALTIME'", "'LOCALTIMESTAMP'", + "'NOT'", "'NULL'", "'OFFSET'", "'ON'", "'ONLY'", "'OR'", "'ORDER'", "'PLACING'", + "'PRIMARY'", "'REFERENCES'", "'RETURNING'", "'SELECT'", "'SESSION_USER'", + "'SOME'", "'SYMMETRIC'", "'TABLE'", "'THEN'", "'TO'", "'TRAILING'", "'TRUE'", + "'UNION'", "'UNIQUE'", "'USER'", "'USING'", "'VARIADIC'", "'WHEN'", "'WHERE'", + "'WINDOW'", "'WITH'", "'AUTHORIZATION'", "'BINARY'", "'COLLATION'", "'CONCURRENTLY'", + "'CROSS'", "'CURRENT_SCHEMA'", "'FREEZE'", "'FULL'", "'ILIKE'", "'INNER'", + "'IS'", "'ISNULL'", "'JOIN'", "'LEFT'", "'LIKE'", "'NATURAL'", "'NOTNULL'", + "'OUTER'", "'OVER'", "'OVERLAPS'", "'RIGHT'", "'SIMILAR'", "'VERBOSE'", + "'ABORT'", "'ABSOLUTE'", "'ACCESS'", "'ACTION'", "'ADD'", "'ADMIN'", + "'AFTER'", "'AGGREGATE'", "'ALSO'", "'ALTER'", "'ALWAYS'", "'ASSERTION'", + "'ASSIGNMENT'", "'AT'", "'ATTRIBUTE'", "'BACKWARD'", "'BEFORE'", "'BEGIN'", + "'BY'", "'CACHE'", "'CALLED'", "'CASCADE'", "'CASCADED'", "'CATALOG'", + "'CHAIN'", "'CHARACTERISTICS'", "'CHECKPOINT'", "'CLASS'", "'CLOSE'", + "'CLUSTER'", "'COMMENT'", "'COMMENTS'", "'COMMIT'", "'COMMITTED'", "'CONFIGURATION'", + "'CONNECTION'", "'CONSTRAINTS'", "'CONTENT'", "'CONTINUE'", "'CONVERSION'", + "'COPY'", "'COST'", "'CSV'", "'CURSOR'", "'CYCLE'", "'DATA'", "'DATABASE'", + "'DAY'", "'DEALLOCATE'", "'DECLARE'", "'DEFAULTS'", "'DEFERRED'", "'DEFINER'", + "'DELETE'", "'DELIMITER'", "'DELIMITERS'", "'DICTIONARY'", "'DISABLE'", + "'DISCARD'", "'DOCUMENT'", "'DOMAIN'", "'DOUBLE'", "'DROP'", "'EACH'", + "'ENABLE'", "'ENCODING'", "'ENCRYPTED'", "'ENUM'", "'ESCAPE'", "'EVENT'", + "'EXCLUDE'", "'EXCLUDING'", "'EXCLUSIVE'", "'EXECUTE'", "'EXPLAIN'", + "'EXTENSION'", "'EXTERNAL'", "'FAMILY'", "'FIRST'", "'FOLLOWING'", "'FORCE'", + "'FORWARD'", "'FUNCTION'", "'FUNCTIONS'", "'GLOBAL'", "'GRANTED'", "'HANDLER'", + "'HEADER'", "'HOLD'", "'HOUR'", "'IDENTITY'", "'IF'", "'IMMEDIATE'", + "'IMMUTABLE'", "'IMPLICIT'", "'INCLUDING'", "'INCREMENT'", "'INDEX'", + "'INDEXES'", "'INHERIT'", "'INHERITS'", "'INLINE'", "'INSENSITIVE'", + "'INSERT'", "'INSTEAD'", "'INVOKER'", "'ISOLATION'", "'KEY'", "'LABEL'", + "'LANGUAGE'", "'LARGE'", "'LAST'", "'LEAKPROOF'", "'LEVEL'", "'LISTEN'", + "'LOAD'", "'LOCAL'", "'LOCATION'", "'LOCK'", "'MAPPING'", "'MATCH'", + "'MATCHED'", "'MATERIALIZED'", "'MAXVALUE'", "'MERGE'", "'MINUTE'", "'MINVALUE'", + "'MODE'", "'MONTH'", "'MOVE'", "'NAME'", "'NAMES'", "'NEXT'", "'NO'", + "'NOTHING'", "'NOTIFY'", "'NOWAIT'", "'NULLS'", "'OBJECT'", "'OF'", "'OFF'", + "'OIDS'", "'OPERATOR'", "'OPTION'", "'OPTIONS'", "'OWNED'", "'OWNER'", + "'PARSER'", "'PARTIAL'", "'PARTITION'", "'PASSING'", "'PASSWORD'", "'PLANS'", + "'PRECEDING'", "'PREPARE'", "'PREPARED'", "'PRESERVE'", "'PRIOR'", "'PRIVILEGES'", + "'PROCEDURAL'", "'PROCEDURE'", "'PROGRAM'", "'QUOTE'", "'RANGE'", "'READ'", + "'REASSIGN'", "'RECHECK'", "'RECURSIVE'", "'REF'", "'REFRESH'", "'REINDEX'", + "'RELATIVE'", "'RELEASE'", "'RENAME'", "'REPEATABLE'", "'REPLACE'", "'REPLICA'", + "'RESET'", "'RESTART'", "'RESTRICT'", "'RETURNS'", "'REVOKE'", "'ROLE'", + "'ROLLBACK'", "'ROWS'", "'RULE'", "'SAVEPOINT'", "'SCHEMA'", "'SCROLL'", + "'SEARCH'", "'SECOND'", "'SECURITY'", "'SEQUENCE'", "'SEQUENCES'", "'SERIALIZABLE'", + "'SERVER'", "'SESSION'", "'SET'", "'SHARE'", "'SHOW'", "'SIMPLE'", "'SNAPSHOT'", + "'STABLE'", "'STANDALONE'", "'START'", "'STATEMENT'", "'STATISTICS'", + "'STDIN'", "'STDOUT'", "'STORAGE'", "'STRICT'", "'STRIP'", "'SYSID'", + "'SYSTEM'", "'TABLES'", "'TABLESPACE'", "'TEMP'", "'TEMPLATE'", "'TEMPORARY'", + "'TEXT'", "'TRANSACTION'", "'TRIGGER'", "'TRUNCATE'", "'TRUSTED'", "'TYPE'", + "'TYPES'", "'UNBOUNDED'", "'UNCOMMITTED'", "'UNENCRYPTED'", "'UNKNOWN'", + "'UNLISTEN'", "'UNLOGGED'", "'UNTIL'", "'UPDATE'", "'VACUUM'", "'VALID'", + "'VALIDATE'", "'VALIDATOR'", "'VARYING'", "'VERSION'", "'VIEW'", "'VOLATILE'", + "'WHITESPACE'", "'WITHOUT'", "'WORK'", "'WRAPPER'", "'WRITE'", "'XML'", + "'YEAR'", "'YES'", "'ZONE'", "'BETWEEN'", "'BIGINT'", "'BIT'", "'BOOLEAN'", + "'CHAR'", "'CHARACTER'", "'COALESCE'", "'DEC'", "'DECIMAL'", "'EXISTS'", + "'EXTRACT'", "'FLOAT'", "'GREATEST'", "'INOUT'", "'INT'", "'INTEGER'", + "'INTERVAL'", "'LEAST'", "'NATIONAL'", "'NCHAR'", "'NONE'", "'NULLIF'", + "'NUMERIC'", "'OVERLAY'", "'POSITION'", "'PRECISION'", "'REAL'", "'ROW'", + "'SETOF'", "'SMALLINT'", "'SUBSTRING'", "'TIME'", "'TIMESTAMP'", "'TREAT'", + "'TRIM'", "'VALUES'", "'VARCHAR'", "'XMLATTRIBUTES'", "'XMLCOMMENT'", + "'XMLAGG'", "'XML_IS_WELL_FORMED'", "'XML_IS_WELL_FORMED_DOCUMENT'", + "'XML_IS_WELL_FORMED_CONTENT'", "'XPATH'", "'XPATH_EXISTS'", "'XMLCONCAT'", + "'XMLELEMENT'", "'XMLEXISTS'", "'XMLFOREST'", "'XMLPARSE'", "'XMLPI'", + "'XMLROOT'", "'XMLSERIALIZE'", "'CALL'", "'CURRENT'", "'ATTACH'", "'DETACH'", + "'EXPRESSION'", "'GENERATED'", "'LOGGED'", "'STORED'", "'INCLUDE'", "'ROUTINE'", + "'TRANSFORM'", "'IMPORT'", "'POLICY'", "'METHOD'", "'REFERENCING'", "'NEW'", + "'OLD'", "'VALUE'", "'SUBSCRIPTION'", "'PUBLICATION'", "'OUT'", "'END'", + "'ROUTINES'", "'SCHEMAS'", "'PROCEDURES'", "'INPUT'", "'SUPPORT'", "'PARALLEL'", + "'SQL'", "'DEPENDS'", "'OVERRIDING'", "'CONFLICT'", "'SKIP'", "'LOCKED'", + "'TIES'", "'ROLLUP'", "'CUBE'", "'GROUPING'", "'SETS'", "'TABLESAMPLE'", + "'ORDINALITY'", "'XMLTABLE'", "'COLUMNS'", "'XMLNAMESPACES'", "'ROWTYPE'", + "'NORMALIZED'", "'WITHIN'", "'FILTER'", "'GROUPS'", "'OTHERS'", "'NFC'", + "'NFD'", "'NFKC'", "'NFKD'", "'UESCAPE'", "'VIEWS'", "'NORMALIZE'", "'DUMP'", + "'PRINT_STRICT_PARAMS'", "'VARIABLE_CONFLICT'", "'ERROR'", "'USE_VARIABLE'", + "'USE_COLUMN'", "'ALIAS'", "'CONSTANT'", "'PERFORM'", "'GET'", "'DIAGNOSTICS'", + "'STACKED'", "'ELSIF'", "'WHILE'", "'REVERSE'", "'FOREACH'", "'SLICE'", + "'EXIT'", "'RETURN'", "'QUERY'", "'RAISE'", "'SQLSTATE'", "'DEBUG'", + "'LOG'", "'INFO'", "'NOTICE'", "'WARNING'", "'EXCEPTION'", "'ASSERT'", + "'LOOP'", "'OPEN'", "'ABS'", "'CBRT'", "'CEIL'", "'CEILING'", "'DEGREES'", + "'DIV'", "'EXP'", "'FACTORIAL'", "'FLOOR'", "'GCD'", "'LCM'", "'LN'", + "'LOG10'", "'MIN_SCALE'", "'MOD'", "'PI'", "'POWER'", "'RADIANS'", "'ROUND'", + "'SCALE'", "'SIGN'", "'SQRT'", "'TRIM_SCALE'", "'TRUNC'", "'WIDTH_BUCKET'", + "'RANDOM'", "'SETSEED'", "'ACOS'", "'ACOSD'", "'ASIN'", "'ASIND'", "'ATAN'", + "'ATAND'", "'ATAN2'", "'ATAN2D'", "'COS'", "'COSD'", "'COT'", "'COTD'", + "'SIN'", "'SIND'", "'TAN'", "'TAND'", "'SINH'", "'COSH'", "'TANH'", "'ASINH'", + "'ACOSH'", "'ATANH'", "'BIT_LENGTH'", "'CHAR_LENGTH'", "'CHARACTER_LENGTH'", + "'LOWER'", "'OCTET_LENGTH'", "'UPPER'", "'ASCII'", "'BTRIM'", "'CHR'", + "'CONCAT'", "'CONCAT_WS'", "'FORMAT'", "'INITCAP'", "'LENGTH'", "'LPAD'", + "'LTRIM'", "'MD5'", "'PARSE_IDENT'", "'PG_CLIENT_ENCODING'", "'QUOTE_IDENT'", + "'QUOTE_LITERAL'", "'QUOTE_NULLABLE'", "'REGEXP_COUNT'", "'REGEXP_INSTR'", + "'REGEXP_LIKE'", "'REGEXP_MATCH'", "'REGEXP_MATCHES'", "'REGEXP_REPLACE'", + "'REGEXP_SPLIT_TO_ARRAY'", "'REGEXP_SPLIT_TO_TABLE'", "'REGEXP_SUBSTR'", + "'REPEAT'", "'RPAD'", "'RTRIM'", "'SPLIT_PART'", "'STARTS_WITH'", "'STRING_TO_ARRAY'", + "'STRING_TO_TABLE'", "'STRPOS'", "'SUBSTR'", "'TO_ASCII'", "'TO_HEX'", + "'TRANSLATE'", "'UNISTR'", "'AGE'", "'CLOCK_TIMESTAMP'", "'DATE_BIN'", + "'DATE_PART'", "'DATE_TRUNC'", "'ISFINITE'", "'JUSTIFY_DAYS'", "'JUSTIFY_HOURS'", + "'JUSTIFY_INTERVAL'", "'MAKE_DATE'", "'MAKE_INTERVAL'", "'MAKE_TIME'", + "'MAKE_TIMESTAMP'", "'MAKE_TIMESTAMPTZ'", "'NOW'", "'STATEMENT_TIMESTAMP'", + "'TIMEOFDAY'", "'TRANSACTION_TIMESTAMP'", "'TO_TIMESTAMP'", "'TO_CHAR'", + "'TO_DATE'", "'TO_NUMBER'", null, null, null, null, null, null, null, + null, null, null, null, null, null, null, null, null, null, null, null, + null, null, null, null, null, null, null, null, null, null, null, null, + null, null, "'\\\\'", null, null, null, null, null, null, null, null, + null, "'''" + }; + } + private static final String[] _LITERAL_NAMES = makeLiteralNames(); + private static String[] makeSymbolicNames() { + return new String[] { + null, "Dollar", "OPEN_PAREN", "CLOSE_PAREN", "OPEN_BRACKET", "CLOSE_BRACKET", + "COMMA", "SEMI", "COLON", "STAR", "EQUAL", "DOT", "PLUS", "MINUS", "SLASH", + "CARET", "LT", "GT", "LESS_LESS", "GREATER_GREATER", "COLON_EQUALS", + "LESS_EQUALS", "EQUALS_GREATER", "GREATER_EQUALS", "DOT_DOT", "NOT_EQUALS", + "TYPECAST", "PERCENT", "PARAM", "Operator", "ALL", "ANALYSE", "ANALYZE", + "AND", "ANY", "ARRAY", "AS", "ASC", "ASYMMETRIC", "BOTH", "CASE", "CAST", + "CHECK", "COLLATE", "COLUMN", "CONSTRAINT", "CREATE", "CURRENT_CATALOG", + "CURRENT_DATE", "CURRENT_ROLE", "CURRENT_TIME", "CURRENT_TIMESTAMP", + "CURRENT_USER", "DEFAULT", "DEFERRABLE", "DESC", "DISTINCT", "DO", "ELSE", + "EXCEPT", "FALSE_P", "FETCH", "FOR", "FOREIGN", "FROM", "GRANT", "GROUP_P", + "HAVING", "IN_P", "INITIALLY", "INTERSECT", "INTO", "LATERAL_P", "LEADING", + "LIMIT", "LOCALTIME", "LOCALTIMESTAMP", "NOT", "NULL_P", "OFFSET", "ON", + "ONLY", "OR", "ORDER", "PLACING", "PRIMARY", "REFERENCES", "RETURNING", + "SELECT", "SESSION_USER", "SOME", "SYMMETRIC", "TABLE", "THEN", "TO", + "TRAILING", "TRUE_P", "UNION", "UNIQUE", "USER", "USING", "VARIADIC", + "WHEN", "WHERE", "WINDOW", "WITH", "AUTHORIZATION", "BINARY", "COLLATION", + "CONCURRENTLY", "CROSS", "CURRENT_SCHEMA", "FREEZE", "FULL", "ILIKE", + "INNER_P", "IS", "ISNULL", "JOIN", "LEFT", "LIKE", "NATURAL", "NOTNULL", + "OUTER_P", "OVER", "OVERLAPS", "RIGHT", "SIMILAR", "VERBOSE", "ABORT_P", + "ABSOLUTE_P", "ACCESS", "ACTION", "ADD_P", "ADMIN", "AFTER", "AGGREGATE", + "ALSO", "ALTER", "ALWAYS", "ASSERTION", "ASSIGNMENT", "AT", "ATTRIBUTE", + "BACKWARD", "BEFORE", "BEGIN_P", "BY", "CACHE", "CALLED", "CASCADE", + "CASCADED", "CATALOG", "CHAIN", "CHARACTERISTICS", "CHECKPOINT", "CLASS", + "CLOSE", "CLUSTER", "COMMENT", "COMMENTS", "COMMIT", "COMMITTED", "CONFIGURATION", + "CONNECTION", "CONSTRAINTS", "CONTENT_P", "CONTINUE_P", "CONVERSION_P", + "COPY", "COST", "CSV", "CURSOR", "CYCLE", "DATA_P", "DATABASE", "DAY_P", + "DEALLOCATE", "DECLARE", "DEFAULTS", "DEFERRED", "DEFINER", "DELETE_P", + "DELIMITER", "DELIMITERS", "DICTIONARY", "DISABLE_P", "DISCARD", "DOCUMENT_P", + "DOMAIN_P", "DOUBLE_P", "DROP", "EACH", "ENABLE_P", "ENCODING", "ENCRYPTED", + "ENUM_P", "ESCAPE", "EVENT", "EXCLUDE", "EXCLUDING", "EXCLUSIVE", "EXECUTE", + "EXPLAIN", "EXTENSION", "EXTERNAL", "FAMILY", "FIRST_P", "FOLLOWING", + "FORCE", "FORWARD", "FUNCTION", "FUNCTIONS", "GLOBAL", "GRANTED", "HANDLER", + "HEADER_P", "HOLD", "HOUR_P", "IDENTITY_P", "IF_P", "IMMEDIATE", "IMMUTABLE", + "IMPLICIT_P", "INCLUDING", "INCREMENT", "INDEX", "INDEXES", "INHERIT", + "INHERITS", "INLINE_P", "INSENSITIVE", "INSERT", "INSTEAD", "INVOKER", + "ISOLATION", "KEY", "LABEL", "LANGUAGE", "LARGE_P", "LAST_P", "LEAKPROOF", + "LEVEL", "LISTEN", "LOAD", "LOCAL", "LOCATION", "LOCK_P", "MAPPING", + "MATCH", "MATCHED", "MATERIALIZED", "MAXVALUE", "MERGE", "MINUTE_P", + "MINVALUE", "MODE", "MONTH_P", "MOVE", "NAME_P", "NAMES", "NEXT", "NO", + "NOTHING", "NOTIFY", "NOWAIT", "NULLS_P", "OBJECT_P", "OF", "OFF", "OIDS", + "OPERATOR", "OPTION", "OPTIONS", "OWNED", "OWNER", "PARSER", "PARTIAL", + "PARTITION", "PASSING", "PASSWORD", "PLANS", "PRECEDING", "PREPARE", + "PREPARED", "PRESERVE", "PRIOR", "PRIVILEGES", "PROCEDURAL", "PROCEDURE", + "PROGRAM", "QUOTE", "RANGE", "READ", "REASSIGN", "RECHECK", "RECURSIVE", + "REF", "REFRESH", "REINDEX", "RELATIVE_P", "RELEASE", "RENAME", "REPEATABLE", + "REPLACE", "REPLICA", "RESET", "RESTART", "RESTRICT", "RETURNS", "REVOKE", + "ROLE", "ROLLBACK", "ROWS", "RULE", "SAVEPOINT", "SCHEMA", "SCROLL", + "SEARCH", "SECOND_P", "SECURITY", "SEQUENCE", "SEQUENCES", "SERIALIZABLE", + "SERVER", "SESSION", "SET", "SHARE", "SHOW", "SIMPLE", "SNAPSHOT", "STABLE", + "STANDALONE_P", "START", "STATEMENT", "STATISTICS", "STDIN", "STDOUT", + "STORAGE", "STRICT_P", "STRIP_P", "SYSID", "SYSTEM_P", "TABLES", "TABLESPACE", + "TEMP", "TEMPLATE", "TEMPORARY", "TEXT_P", "TRANSACTION", "TRIGGER", + "TRUNCATE", "TRUSTED", "TYPE_P", "TYPES_P", "UNBOUNDED", "UNCOMMITTED", + "UNENCRYPTED", "UNKNOWN", "UNLISTEN", "UNLOGGED", "UNTIL", "UPDATE", + "VACUUM", "VALID", "VALIDATE", "VALIDATOR", "VARYING", "VERSION_P", "VIEW", + "VOLATILE", "WHITESPACE_P", "WITHOUT", "WORK", "WRAPPER", "WRITE", "XML_P", + "YEAR_P", "YES_P", "ZONE", "BETWEEN", "BIGINT", "BIT", "BOOLEAN_P", "CHAR_P", + "CHARACTER", "COALESCE", "DEC", "DECIMAL_P", "EXISTS", "EXTRACT", "FLOAT_P", + "GREATEST", "INOUT", "INT_P", "INTEGER", "INTERVAL", "LEAST", "NATIONAL", + "NCHAR", "NONE", "NULLIF", "NUMERIC", "OVERLAY", "POSITION", "PRECISION", + "REAL", "ROW", "SETOF", "SMALLINT", "SUBSTRING", "TIME", "TIMESTAMP", + "TREAT", "TRIM", "VALUES", "VARCHAR", "XMLATTRIBUTES", "XMLCOMMENT", + "XMLAGG", "XML_IS_WELL_FORMED", "XML_IS_WELL_FORMED_DOCUMENT", "XML_IS_WELL_FORMED_CONTENT", + "XPATH", "XPATH_EXISTS", "XMLCONCAT", "XMLELEMENT", "XMLEXISTS", "XMLFOREST", + "XMLPARSE", "XMLPI", "XMLROOT", "XMLSERIALIZE", "CALL", "CURRENT_P", + "ATTACH", "DETACH", "EXPRESSION", "GENERATED", "LOGGED", "STORED", "INCLUDE", + "ROUTINE", "TRANSFORM", "IMPORT_P", "POLICY", "METHOD", "REFERENCING", + "NEW", "OLD", "VALUE_P", "SUBSCRIPTION", "PUBLICATION", "OUT_P", "END_P", + "ROUTINES", "SCHEMAS", "PROCEDURES", "INPUT_P", "SUPPORT", "PARALLEL", + "SQL_P", "DEPENDS", "OVERRIDING", "CONFLICT", "SKIP_P", "LOCKED", "TIES", + "ROLLUP", "CUBE", "GROUPING", "SETS", "TABLESAMPLE", "ORDINALITY", "XMLTABLE", + "COLUMNS", "XMLNAMESPACES", "ROWTYPE", "NORMALIZED", "WITHIN", "FILTER", + "GROUPS", "OTHERS", "NFC", "NFD", "NFKC", "NFKD", "UESCAPE", "VIEWS", + "NORMALIZE", "DUMP", "PRINT_STRICT_PARAMS", "VARIABLE_CONFLICT", "ERROR", + "USE_VARIABLE", "USE_COLUMN", "ALIAS", "CONSTANT", "PERFORM", "GET", + "DIAGNOSTICS", "STACKED", "ELSIF", "WHILE", "REVERSE", "FOREACH", "SLICE", + "EXIT", "RETURN", "QUERY", "RAISE", "SQLSTATE", "DEBUG", "LOG", "INFO", + "NOTICE", "WARNING", "EXCEPTION", "ASSERT", "LOOP", "OPEN", "ABS", "CBRT", + "CEIL", "CEILING", "DEGREES", "DIV", "EXP", "FACTORIAL", "FLOOR", "GCD", + "LCM", "LN", "LOG10", "MIN_SCALE", "MOD", "PI", "POWER", "RADIANS", "ROUND", + "SCALE", "SIGN", "SQRT", "TRIM_SCALE", "TRUNC", "WIDTH_BUCKET", "RANDOM", + "SETSEED", "ACOS", "ACOSD", "ASIN", "ASIND", "ATAN", "ATAND", "ATAN2", + "ATAN2D", "COS", "COSD", "COT", "COTD", "SIN", "SIND", "TAN", "TAND", + "SINH", "COSH", "TANH", "ASINH", "ACOSH", "ATANH", "BIT_LENGTH", "CHAR_LENGTH", + "CHARACTER_LENGTH", "LOWER", "OCTET_LENGTH", "UPPER", "ASCII", "BTRIM", + "CHR", "CONCAT", "CONCAT_WS", "FORMAT", "INITCAP", "LENGTH", "LPAD", + "LTRIM", "MD5", "PARSE_IDENT", "PG_CLIENT_ENCODING", "QUOTE_IDENT", "QUOTE_LITERAL", + "QUOTE_NULLABLE", "REGEXP_COUNT", "REGEXP_INSTR", "REGEXP_LIKE", "REGEXP_MATCH", + "REGEXP_MATCHES", "REGEXP_REPLACE", "REGEXP_SPLIT_TO_ARRAY", "REGEXP_SPLIT_TO_TABLE", + "REGEXP_SUBSTR", "REPEAT", "RPAD", "RTRIM", "SPLIT_PART", "STARTS_WITH", + "STRING_TO_ARRAY", "STRING_TO_TABLE", "STRPOS", "SUBSTR", "TO_ASCII", + "TO_HEX", "TRANSLATE", "UNISTR", "AGE", "CLOCK_TIMESTAMP", "DATE_BIN", + "DATE_PART", "DATE_TRUNC", "ISFINITE", "JUSTIFY_DAYS", "JUSTIFY_HOURS", + "JUSTIFY_INTERVAL", "MAKE_DATE", "MAKE_INTERVAL", "MAKE_TIME", "MAKE_TIMESTAMP", + "MAKE_TIMESTAMPTZ", "NOW", "STATEMENT_TIMESTAMP", "TIMEOFDAY", "TRANSACTION_TIMESTAMP", + "TO_TIMESTAMP", "TO_CHAR", "TO_DATE", "TO_NUMBER", "Identifier", "QuotedIdentifier", + "UnterminatedQuotedIdentifier", "InvalidQuotedIdentifier", "InvalidUnterminatedQuotedIdentifier", + "UnicodeQuotedIdentifier", "UnterminatedUnicodeQuotedIdentifier", "InvalidUnicodeQuotedIdentifier", + "InvalidUnterminatedUnicodeQuotedIdentifier", "StringConstant", "UnterminatedStringConstant", + "UnicodeEscapeStringConstant", "UnterminatedUnicodeEscapeStringConstant", + "BeginDollarStringConstant", "BinaryStringConstant", "UnterminatedBinaryStringConstant", + "InvalidBinaryStringConstant", "InvalidUnterminatedBinaryStringConstant", + "HexadecimalStringConstant", "UnterminatedHexadecimalStringConstant", + "InvalidHexadecimalStringConstant", "InvalidUnterminatedHexadecimalStringConstant", + "Integral", "NumericFail", "Numeric", "PLSQLVARIABLENAME", "PLSQLIDENTIFIER", + "Whitespace", "Newline", "LineComment", "BlockComment", "UnterminatedBlockComment", + "MetaCommand", "EndMetaCommand", "ErrorCharacter", "EscapeStringConstant", + "UnterminatedEscapeStringConstant", "InvalidEscapeStringConstant", "InvalidUnterminatedEscapeStringConstant", + "AfterEscapeStringConstantMode_NotContinued", "AfterEscapeStringConstantWithNewlineMode_NotContinued", + "DollarText", "EndDollarStringConstant", "AfterEscapeStringConstantWithNewlineMode_Continued" + }; + } + private static final String[] _SYMBOLIC_NAMES = makeSymbolicNames(); + public static final Vocabulary VOCABULARY = new VocabularyImpl(_LITERAL_NAMES, _SYMBOLIC_NAMES); + + /** + * @deprecated Use {@link #VOCABULARY} instead. + */ + @Deprecated + public static final String[] tokenNames; + static { + tokenNames = new String[_SYMBOLIC_NAMES.length]; + for (int i = 0; i < tokenNames.length; i++) { + tokenNames[i] = VOCABULARY.getLiteralName(i); + if (tokenNames[i] == null) { + tokenNames[i] = VOCABULARY.getSymbolicName(i); + } + + if (tokenNames[i] == null) { + tokenNames[i] = ""; + } + } + } + + @Override + @Deprecated + public String[] getTokenNames() { + return tokenNames; + } + + @Override + + public Vocabulary getVocabulary() { + return VOCABULARY; + } + + + /* This field stores the tags which are used to detect the end of a dollar-quoted string literal. + */ + + + public PostgreSqlLexer(CharStream input) { + super(input); + _interp = new LexerATNSimulator(this,_ATN,_decisionToDFA,_sharedContextCache); + } + + @Override + public String getGrammarFileName() { return "PostgreSqlLexer.g4"; } + + @Override + public String[] getRuleNames() { return ruleNames; } + + @Override + public String getSerializedATN() { return _serializedATN; } + + @Override + public String[] getChannelNames() { return channelNames; } + + @Override + public String[] getModeNames() { return modeNames; } + + @Override + public ATN getATN() { return _ATN; } + + @Override + public void action(RuleContext _localctx, int ruleIndex, int actionIndex) { + switch (ruleIndex) { + case 28: + Operator_action((RuleContext)_localctx, actionIndex); + break; + case 656: + BeginDollarStringConstant_action((RuleContext)_localctx, actionIndex); + break; + case 667: + NumericFail_action((RuleContext)_localctx, actionIndex); + break; + case 676: + UnterminatedBlockComment_action((RuleContext)_localctx, actionIndex); + break; + case 688: + AfterEscapeStringConstantMode_NotContinued_action((RuleContext)_localctx, actionIndex); + break; + case 692: + AfterEscapeStringConstantWithNewlineMode_NotContinued_action((RuleContext)_localctx, actionIndex); + break; + case 694: + EndDollarStringConstant_action((RuleContext)_localctx, actionIndex); + break; + } + } + private void Operator_action(RuleContext _localctx, int actionIndex) { + switch (actionIndex) { + case 0: + + handleLessLessGreaterGreater(); + + break; + } + } + private void BeginDollarStringConstant_action(RuleContext _localctx, int actionIndex) { + switch (actionIndex) { + case 1: + pushTag(); + break; + } + } + private void NumericFail_action(RuleContext _localctx, int actionIndex) { + switch (actionIndex) { + case 2: + handleNumericFail(); + break; + } + } + private void UnterminatedBlockComment_action(RuleContext _localctx, int actionIndex) { + switch (actionIndex) { + case 3: + + unterminatedBlockCommentDebugAssert(); + + break; + } + } + private void AfterEscapeStringConstantMode_NotContinued_action(RuleContext _localctx, int actionIndex) { + switch (actionIndex) { + case 4: + break; + } + } + private void AfterEscapeStringConstantWithNewlineMode_NotContinued_action(RuleContext _localctx, int actionIndex) { + switch (actionIndex) { + case 5: + break; + } + } + private void EndDollarStringConstant_action(RuleContext _localctx, int actionIndex) { + switch (actionIndex) { + case 6: + popTag(); + break; + } + } + @Override + public boolean sempred(RuleContext _localctx, int ruleIndex, int predIndex) { + switch (ruleIndex) { + case 28: + return Operator_sempred((RuleContext)_localctx, predIndex); + case 29: + return OperatorEndingWithPlusMinus_sempred((RuleContext)_localctx, predIndex); + case 640: + return IdentifierStartChar_sempred((RuleContext)_localctx, predIndex); + case 694: + return EndDollarStringConstant_sempred((RuleContext)_localctx, predIndex); + } + return true; + } + private boolean Operator_sempred(RuleContext _localctx, int predIndex) { + switch (predIndex) { + case 0: + return checkLA('-'); + case 1: + return checkLA('*'); + case 2: + return checkLA('*'); + } + return true; + } + private boolean OperatorEndingWithPlusMinus_sempred(RuleContext _localctx, int predIndex) { + switch (predIndex) { + case 3: + return checkLA('-'); + case 4: + return checkLA('*'); + case 5: + return checkLA('-'); + } + return true; + } + private boolean IdentifierStartChar_sempred(RuleContext _localctx, int predIndex) { + switch (predIndex) { + case 6: + return charIsLetter(); + case 7: + return + checkIfUtf32Letter() + ; + } + return true; + } + private boolean EndDollarStringConstant_sempred(RuleContext _localctx, int predIndex) { + switch (predIndex) { + case 8: + return isTag(); + } + return true; + } + + private static final String _serializedATNSegment0 = + "\u0004\u0000\u02a7\u1a87\u0006\uffff\uffff\u0006\uffff\uffff\u0006\uffff"+ + "\uffff\u0006\uffff\uffff\u0006\uffff\uffff\u0002\u0000\u0007\u0000\u0002"+ + "\u0001\u0007\u0001\u0002\u0002\u0007\u0002\u0002\u0003\u0007\u0003\u0002"+ + "\u0004\u0007\u0004\u0002\u0005\u0007\u0005\u0002\u0006\u0007\u0006\u0002"+ + "\u0007\u0007\u0007\u0002\b\u0007\b\u0002\t\u0007\t\u0002\n\u0007\n\u0002"+ + "\u000b\u0007\u000b\u0002\f\u0007\f\u0002\r\u0007\r\u0002\u000e\u0007\u000e"+ + "\u0002\u000f\u0007\u000f\u0002\u0010\u0007\u0010\u0002\u0011\u0007\u0011"+ + "\u0002\u0012\u0007\u0012\u0002\u0013\u0007\u0013\u0002\u0014\u0007\u0014"+ + "\u0002\u0015\u0007\u0015\u0002\u0016\u0007\u0016\u0002\u0017\u0007\u0017"+ + "\u0002\u0018\u0007\u0018\u0002\u0019\u0007\u0019\u0002\u001a\u0007\u001a"+ + "\u0002\u001b\u0007\u001b\u0002\u001c\u0007\u001c\u0002\u001d\u0007\u001d"+ + "\u0002\u001e\u0007\u001e\u0002\u001f\u0007\u001f\u0002 \u0007 \u0002!"+ + "\u0007!\u0002\"\u0007\"\u0002#\u0007#\u0002$\u0007$\u0002%\u0007%\u0002"+ + "&\u0007&\u0002\'\u0007\'\u0002(\u0007(\u0002)\u0007)\u0002*\u0007*\u0002"+ + "+\u0007+\u0002,\u0007,\u0002-\u0007-\u0002.\u0007.\u0002/\u0007/\u0002"+ + "0\u00070\u00021\u00071\u00022\u00072\u00023\u00073\u00024\u00074\u0002"+ + "5\u00075\u00026\u00076\u00027\u00077\u00028\u00078\u00029\u00079\u0002"+ + ":\u0007:\u0002;\u0007;\u0002<\u0007<\u0002=\u0007=\u0002>\u0007>\u0002"+ + "?\u0007?\u0002@\u0007@\u0002A\u0007A\u0002B\u0007B\u0002C\u0007C\u0002"+ + "D\u0007D\u0002E\u0007E\u0002F\u0007F\u0002G\u0007G\u0002H\u0007H\u0002"+ + "I\u0007I\u0002J\u0007J\u0002K\u0007K\u0002L\u0007L\u0002M\u0007M\u0002"+ + "N\u0007N\u0002O\u0007O\u0002P\u0007P\u0002Q\u0007Q\u0002R\u0007R\u0002"+ + "S\u0007S\u0002T\u0007T\u0002U\u0007U\u0002V\u0007V\u0002W\u0007W\u0002"+ + "X\u0007X\u0002Y\u0007Y\u0002Z\u0007Z\u0002[\u0007[\u0002\\\u0007\\\u0002"+ + "]\u0007]\u0002^\u0007^\u0002_\u0007_\u0002`\u0007`\u0002a\u0007a\u0002"+ + "b\u0007b\u0002c\u0007c\u0002d\u0007d\u0002e\u0007e\u0002f\u0007f\u0002"+ + "g\u0007g\u0002h\u0007h\u0002i\u0007i\u0002j\u0007j\u0002k\u0007k\u0002"+ + "l\u0007l\u0002m\u0007m\u0002n\u0007n\u0002o\u0007o\u0002p\u0007p\u0002"+ + "q\u0007q\u0002r\u0007r\u0002s\u0007s\u0002t\u0007t\u0002u\u0007u\u0002"+ + "v\u0007v\u0002w\u0007w\u0002x\u0007x\u0002y\u0007y\u0002z\u0007z\u0002"+ + "{\u0007{\u0002|\u0007|\u0002}\u0007}\u0002~\u0007~\u0002\u007f\u0007\u007f"+ + "\u0002\u0080\u0007\u0080\u0002\u0081\u0007\u0081\u0002\u0082\u0007\u0082"+ + "\u0002\u0083\u0007\u0083\u0002\u0084\u0007\u0084\u0002\u0085\u0007\u0085"+ + "\u0002\u0086\u0007\u0086\u0002\u0087\u0007\u0087\u0002\u0088\u0007\u0088"+ + "\u0002\u0089\u0007\u0089\u0002\u008a\u0007\u008a\u0002\u008b\u0007\u008b"+ + "\u0002\u008c\u0007\u008c\u0002\u008d\u0007\u008d\u0002\u008e\u0007\u008e"+ + "\u0002\u008f\u0007\u008f\u0002\u0090\u0007\u0090\u0002\u0091\u0007\u0091"+ + "\u0002\u0092\u0007\u0092\u0002\u0093\u0007\u0093\u0002\u0094\u0007\u0094"+ + "\u0002\u0095\u0007\u0095\u0002\u0096\u0007\u0096\u0002\u0097\u0007\u0097"+ + "\u0002\u0098\u0007\u0098\u0002\u0099\u0007\u0099\u0002\u009a\u0007\u009a"+ + "\u0002\u009b\u0007\u009b\u0002\u009c\u0007\u009c\u0002\u009d\u0007\u009d"+ + "\u0002\u009e\u0007\u009e\u0002\u009f\u0007\u009f\u0002\u00a0\u0007\u00a0"+ + "\u0002\u00a1\u0007\u00a1\u0002\u00a2\u0007\u00a2\u0002\u00a3\u0007\u00a3"+ + "\u0002\u00a4\u0007\u00a4\u0002\u00a5\u0007\u00a5\u0002\u00a6\u0007\u00a6"+ + "\u0002\u00a7\u0007\u00a7\u0002\u00a8\u0007\u00a8\u0002\u00a9\u0007\u00a9"+ + "\u0002\u00aa\u0007\u00aa\u0002\u00ab\u0007\u00ab\u0002\u00ac\u0007\u00ac"+ + "\u0002\u00ad\u0007\u00ad\u0002\u00ae\u0007\u00ae\u0002\u00af\u0007\u00af"+ + "\u0002\u00b0\u0007\u00b0\u0002\u00b1\u0007\u00b1\u0002\u00b2\u0007\u00b2"+ + "\u0002\u00b3\u0007\u00b3\u0002\u00b4\u0007\u00b4\u0002\u00b5\u0007\u00b5"+ + "\u0002\u00b6\u0007\u00b6\u0002\u00b7\u0007\u00b7\u0002\u00b8\u0007\u00b8"+ + "\u0002\u00b9\u0007\u00b9\u0002\u00ba\u0007\u00ba\u0002\u00bb\u0007\u00bb"+ + "\u0002\u00bc\u0007\u00bc\u0002\u00bd\u0007\u00bd\u0002\u00be\u0007\u00be"+ + "\u0002\u00bf\u0007\u00bf\u0002\u00c0\u0007\u00c0\u0002\u00c1\u0007\u00c1"+ + "\u0002\u00c2\u0007\u00c2\u0002\u00c3\u0007\u00c3\u0002\u00c4\u0007\u00c4"+ + "\u0002\u00c5\u0007\u00c5\u0002\u00c6\u0007\u00c6\u0002\u00c7\u0007\u00c7"+ + "\u0002\u00c8\u0007\u00c8\u0002\u00c9\u0007\u00c9\u0002\u00ca\u0007\u00ca"+ + "\u0002\u00cb\u0007\u00cb\u0002\u00cc\u0007\u00cc\u0002\u00cd\u0007\u00cd"+ + "\u0002\u00ce\u0007\u00ce\u0002\u00cf\u0007\u00cf\u0002\u00d0\u0007\u00d0"+ + "\u0002\u00d1\u0007\u00d1\u0002\u00d2\u0007\u00d2\u0002\u00d3\u0007\u00d3"+ + "\u0002\u00d4\u0007\u00d4\u0002\u00d5\u0007\u00d5\u0002\u00d6\u0007\u00d6"+ + "\u0002\u00d7\u0007\u00d7\u0002\u00d8\u0007\u00d8\u0002\u00d9\u0007\u00d9"+ + "\u0002\u00da\u0007\u00da\u0002\u00db\u0007\u00db\u0002\u00dc\u0007\u00dc"+ + "\u0002\u00dd\u0007\u00dd\u0002\u00de\u0007\u00de\u0002\u00df\u0007\u00df"+ + "\u0002\u00e0\u0007\u00e0\u0002\u00e1\u0007\u00e1\u0002\u00e2\u0007\u00e2"+ + "\u0002\u00e3\u0007\u00e3\u0002\u00e4\u0007\u00e4\u0002\u00e5\u0007\u00e5"+ + "\u0002\u00e6\u0007\u00e6\u0002\u00e7\u0007\u00e7\u0002\u00e8\u0007\u00e8"+ + "\u0002\u00e9\u0007\u00e9\u0002\u00ea\u0007\u00ea\u0002\u00eb\u0007\u00eb"+ + "\u0002\u00ec\u0007\u00ec\u0002\u00ed\u0007\u00ed\u0002\u00ee\u0007\u00ee"+ + "\u0002\u00ef\u0007\u00ef\u0002\u00f0\u0007\u00f0\u0002\u00f1\u0007\u00f1"+ + "\u0002\u00f2\u0007\u00f2\u0002\u00f3\u0007\u00f3\u0002\u00f4\u0007\u00f4"+ + "\u0002\u00f5\u0007\u00f5\u0002\u00f6\u0007\u00f6\u0002\u00f7\u0007\u00f7"+ + "\u0002\u00f8\u0007\u00f8\u0002\u00f9\u0007\u00f9\u0002\u00fa\u0007\u00fa"+ + "\u0002\u00fb\u0007\u00fb\u0002\u00fc\u0007\u00fc\u0002\u00fd\u0007\u00fd"+ + "\u0002\u00fe\u0007\u00fe\u0002\u00ff\u0007\u00ff\u0002\u0100\u0007\u0100"+ + "\u0002\u0101\u0007\u0101\u0002\u0102\u0007\u0102\u0002\u0103\u0007\u0103"+ + "\u0002\u0104\u0007\u0104\u0002\u0105\u0007\u0105\u0002\u0106\u0007\u0106"+ + "\u0002\u0107\u0007\u0107\u0002\u0108\u0007\u0108\u0002\u0109\u0007\u0109"+ + "\u0002\u010a\u0007\u010a\u0002\u010b\u0007\u010b\u0002\u010c\u0007\u010c"+ + "\u0002\u010d\u0007\u010d\u0002\u010e\u0007\u010e\u0002\u010f\u0007\u010f"+ + "\u0002\u0110\u0007\u0110\u0002\u0111\u0007\u0111\u0002\u0112\u0007\u0112"+ + "\u0002\u0113\u0007\u0113\u0002\u0114\u0007\u0114\u0002\u0115\u0007\u0115"+ + "\u0002\u0116\u0007\u0116\u0002\u0117\u0007\u0117\u0002\u0118\u0007\u0118"+ + "\u0002\u0119\u0007\u0119\u0002\u011a\u0007\u011a\u0002\u011b\u0007\u011b"+ + "\u0002\u011c\u0007\u011c\u0002\u011d\u0007\u011d\u0002\u011e\u0007\u011e"+ + "\u0002\u011f\u0007\u011f\u0002\u0120\u0007\u0120\u0002\u0121\u0007\u0121"+ + "\u0002\u0122\u0007\u0122\u0002\u0123\u0007\u0123\u0002\u0124\u0007\u0124"+ + "\u0002\u0125\u0007\u0125\u0002\u0126\u0007\u0126\u0002\u0127\u0007\u0127"+ + "\u0002\u0128\u0007\u0128\u0002\u0129\u0007\u0129\u0002\u012a\u0007\u012a"+ + "\u0002\u012b\u0007\u012b\u0002\u012c\u0007\u012c\u0002\u012d\u0007\u012d"+ + "\u0002\u012e\u0007\u012e\u0002\u012f\u0007\u012f\u0002\u0130\u0007\u0130"+ + "\u0002\u0131\u0007\u0131\u0002\u0132\u0007\u0132\u0002\u0133\u0007\u0133"+ + "\u0002\u0134\u0007\u0134\u0002\u0135\u0007\u0135\u0002\u0136\u0007\u0136"+ + "\u0002\u0137\u0007\u0137\u0002\u0138\u0007\u0138\u0002\u0139\u0007\u0139"+ + "\u0002\u013a\u0007\u013a\u0002\u013b\u0007\u013b\u0002\u013c\u0007\u013c"+ + "\u0002\u013d\u0007\u013d\u0002\u013e\u0007\u013e\u0002\u013f\u0007\u013f"+ + "\u0002\u0140\u0007\u0140\u0002\u0141\u0007\u0141\u0002\u0142\u0007\u0142"+ + "\u0002\u0143\u0007\u0143\u0002\u0144\u0007\u0144\u0002\u0145\u0007\u0145"+ + "\u0002\u0146\u0007\u0146\u0002\u0147\u0007\u0147\u0002\u0148\u0007\u0148"+ + "\u0002\u0149\u0007\u0149\u0002\u014a\u0007\u014a\u0002\u014b\u0007\u014b"+ + "\u0002\u014c\u0007\u014c\u0002\u014d\u0007\u014d\u0002\u014e\u0007\u014e"+ + "\u0002\u014f\u0007\u014f\u0002\u0150\u0007\u0150\u0002\u0151\u0007\u0151"+ + "\u0002\u0152\u0007\u0152\u0002\u0153\u0007\u0153\u0002\u0154\u0007\u0154"+ + "\u0002\u0155\u0007\u0155\u0002\u0156\u0007\u0156\u0002\u0157\u0007\u0157"+ + "\u0002\u0158\u0007\u0158\u0002\u0159\u0007\u0159\u0002\u015a\u0007\u015a"+ + "\u0002\u015b\u0007\u015b\u0002\u015c\u0007\u015c\u0002\u015d\u0007\u015d"+ + "\u0002\u015e\u0007\u015e\u0002\u015f\u0007\u015f\u0002\u0160\u0007\u0160"+ + "\u0002\u0161\u0007\u0161\u0002\u0162\u0007\u0162\u0002\u0163\u0007\u0163"+ + "\u0002\u0164\u0007\u0164\u0002\u0165\u0007\u0165\u0002\u0166\u0007\u0166"+ + "\u0002\u0167\u0007\u0167\u0002\u0168\u0007\u0168\u0002\u0169\u0007\u0169"+ + "\u0002\u016a\u0007\u016a\u0002\u016b\u0007\u016b\u0002\u016c\u0007\u016c"+ + "\u0002\u016d\u0007\u016d\u0002\u016e\u0007\u016e\u0002\u016f\u0007\u016f"+ + "\u0002\u0170\u0007\u0170\u0002\u0171\u0007\u0171\u0002\u0172\u0007\u0172"+ + "\u0002\u0173\u0007\u0173\u0002\u0174\u0007\u0174\u0002\u0175\u0007\u0175"+ + "\u0002\u0176\u0007\u0176\u0002\u0177\u0007\u0177\u0002\u0178\u0007\u0178"+ + "\u0002\u0179\u0007\u0179\u0002\u017a\u0007\u017a\u0002\u017b\u0007\u017b"+ + "\u0002\u017c\u0007\u017c\u0002\u017d\u0007\u017d\u0002\u017e\u0007\u017e"+ + "\u0002\u017f\u0007\u017f\u0002\u0180\u0007\u0180\u0002\u0181\u0007\u0181"+ + "\u0002\u0182\u0007\u0182\u0002\u0183\u0007\u0183\u0002\u0184\u0007\u0184"+ + "\u0002\u0185\u0007\u0185\u0002\u0186\u0007\u0186\u0002\u0187\u0007\u0187"+ + "\u0002\u0188\u0007\u0188\u0002\u0189\u0007\u0189\u0002\u018a\u0007\u018a"+ + "\u0002\u018b\u0007\u018b\u0002\u018c\u0007\u018c\u0002\u018d\u0007\u018d"+ + "\u0002\u018e\u0007\u018e\u0002\u018f\u0007\u018f\u0002\u0190\u0007\u0190"+ + "\u0002\u0191\u0007\u0191\u0002\u0192\u0007\u0192\u0002\u0193\u0007\u0193"+ + "\u0002\u0194\u0007\u0194\u0002\u0195\u0007\u0195\u0002\u0196\u0007\u0196"+ + "\u0002\u0197\u0007\u0197\u0002\u0198\u0007\u0198\u0002\u0199\u0007\u0199"+ + "\u0002\u019a\u0007\u019a\u0002\u019b\u0007\u019b\u0002\u019c\u0007\u019c"+ + "\u0002\u019d\u0007\u019d\u0002\u019e\u0007\u019e\u0002\u019f\u0007\u019f"+ + "\u0002\u01a0\u0007\u01a0\u0002\u01a1\u0007\u01a1\u0002\u01a2\u0007\u01a2"+ + "\u0002\u01a3\u0007\u01a3\u0002\u01a4\u0007\u01a4\u0002\u01a5\u0007\u01a5"+ + "\u0002\u01a6\u0007\u01a6\u0002\u01a7\u0007\u01a7\u0002\u01a8\u0007\u01a8"+ + "\u0002\u01a9\u0007\u01a9\u0002\u01aa\u0007\u01aa\u0002\u01ab\u0007\u01ab"+ + "\u0002\u01ac\u0007\u01ac\u0002\u01ad\u0007\u01ad\u0002\u01ae\u0007\u01ae"+ + "\u0002\u01af\u0007\u01af\u0002\u01b0\u0007\u01b0\u0002\u01b1\u0007\u01b1"+ + "\u0002\u01b2\u0007\u01b2\u0002\u01b3\u0007\u01b3\u0002\u01b4\u0007\u01b4"+ + "\u0002\u01b5\u0007\u01b5\u0002\u01b6\u0007\u01b6\u0002\u01b7\u0007\u01b7"+ + "\u0002\u01b8\u0007\u01b8\u0002\u01b9\u0007\u01b9\u0002\u01ba\u0007\u01ba"+ + "\u0002\u01bb\u0007\u01bb\u0002\u01bc\u0007\u01bc\u0002\u01bd\u0007\u01bd"+ + "\u0002\u01be\u0007\u01be\u0002\u01bf\u0007\u01bf\u0002\u01c0\u0007\u01c0"+ + "\u0002\u01c1\u0007\u01c1\u0002\u01c2\u0007\u01c2\u0002\u01c3\u0007\u01c3"+ + "\u0002\u01c4\u0007\u01c4\u0002\u01c5\u0007\u01c5\u0002\u01c6\u0007\u01c6"+ + "\u0002\u01c7\u0007\u01c7\u0002\u01c8\u0007\u01c8\u0002\u01c9\u0007\u01c9"+ + "\u0002\u01ca\u0007\u01ca\u0002\u01cb\u0007\u01cb\u0002\u01cc\u0007\u01cc"+ + "\u0002\u01cd\u0007\u01cd\u0002\u01ce\u0007\u01ce\u0002\u01cf\u0007\u01cf"+ + "\u0002\u01d0\u0007\u01d0\u0002\u01d1\u0007\u01d1\u0002\u01d2\u0007\u01d2"+ + "\u0002\u01d3\u0007\u01d3\u0002\u01d4\u0007\u01d4\u0002\u01d5\u0007\u01d5"+ + "\u0002\u01d6\u0007\u01d6\u0002\u01d7\u0007\u01d7\u0002\u01d8\u0007\u01d8"+ + "\u0002\u01d9\u0007\u01d9\u0002\u01da\u0007\u01da\u0002\u01db\u0007\u01db"+ + "\u0002\u01dc\u0007\u01dc\u0002\u01dd\u0007\u01dd\u0002\u01de\u0007\u01de"+ + "\u0002\u01df\u0007\u01df\u0002\u01e0\u0007\u01e0\u0002\u01e1\u0007\u01e1"+ + "\u0002\u01e2\u0007\u01e2\u0002\u01e3\u0007\u01e3\u0002\u01e4\u0007\u01e4"+ + "\u0002\u01e5\u0007\u01e5\u0002\u01e6\u0007\u01e6\u0002\u01e7\u0007\u01e7"+ + "\u0002\u01e8\u0007\u01e8\u0002\u01e9\u0007\u01e9\u0002\u01ea\u0007\u01ea"+ + "\u0002\u01eb\u0007\u01eb\u0002\u01ec\u0007\u01ec\u0002\u01ed\u0007\u01ed"+ + "\u0002\u01ee\u0007\u01ee\u0002\u01ef\u0007\u01ef\u0002\u01f0\u0007\u01f0"+ + "\u0002\u01f1\u0007\u01f1\u0002\u01f2\u0007\u01f2\u0002\u01f3\u0007\u01f3"+ + "\u0002\u01f4\u0007\u01f4\u0002\u01f5\u0007\u01f5\u0002\u01f6\u0007\u01f6"+ + "\u0002\u01f7\u0007\u01f7\u0002\u01f8\u0007\u01f8\u0002\u01f9\u0007\u01f9"+ + "\u0002\u01fa\u0007\u01fa\u0002\u01fb\u0007\u01fb\u0002\u01fc\u0007\u01fc"+ + "\u0002\u01fd\u0007\u01fd\u0002\u01fe\u0007\u01fe\u0002\u01ff\u0007\u01ff"+ + "\u0002\u0200\u0007\u0200\u0002\u0201\u0007\u0201\u0002\u0202\u0007\u0202"+ + "\u0002\u0203\u0007\u0203\u0002\u0204\u0007\u0204\u0002\u0205\u0007\u0205"+ + "\u0002\u0206\u0007\u0206\u0002\u0207\u0007\u0207\u0002\u0208\u0007\u0208"+ + "\u0002\u0209\u0007\u0209\u0002\u020a\u0007\u020a\u0002\u020b\u0007\u020b"+ + "\u0002\u020c\u0007\u020c\u0002\u020d\u0007\u020d\u0002\u020e\u0007\u020e"+ + "\u0002\u020f\u0007\u020f\u0002\u0210\u0007\u0210\u0002\u0211\u0007\u0211"+ + "\u0002\u0212\u0007\u0212\u0002\u0213\u0007\u0213\u0002\u0214\u0007\u0214"+ + "\u0002\u0215\u0007\u0215\u0002\u0216\u0007\u0216\u0002\u0217\u0007\u0217"+ + "\u0002\u0218\u0007\u0218\u0002\u0219\u0007\u0219\u0002\u021a\u0007\u021a"+ + "\u0002\u021b\u0007\u021b\u0002\u021c\u0007\u021c\u0002\u021d\u0007\u021d"+ + "\u0002\u021e\u0007\u021e\u0002\u021f\u0007\u021f\u0002\u0220\u0007\u0220"+ + "\u0002\u0221\u0007\u0221\u0002\u0222\u0007\u0222\u0002\u0223\u0007\u0223"+ + "\u0002\u0224\u0007\u0224\u0002\u0225\u0007\u0225\u0002\u0226\u0007\u0226"+ + "\u0002\u0227\u0007\u0227\u0002\u0228\u0007\u0228\u0002\u0229\u0007\u0229"+ + "\u0002\u022a\u0007\u022a\u0002\u022b\u0007\u022b\u0002\u022c\u0007\u022c"+ + "\u0002\u022d\u0007\u022d\u0002\u022e\u0007\u022e\u0002\u022f\u0007\u022f"+ + "\u0002\u0230\u0007\u0230\u0002\u0231\u0007\u0231\u0002\u0232\u0007\u0232"+ + "\u0002\u0233\u0007\u0233\u0002\u0234\u0007\u0234\u0002\u0235\u0007\u0235"+ + "\u0002\u0236\u0007\u0236\u0002\u0237\u0007\u0237\u0002\u0238\u0007\u0238"+ + "\u0002\u0239\u0007\u0239\u0002\u023a\u0007\u023a\u0002\u023b\u0007\u023b"+ + "\u0002\u023c\u0007\u023c\u0002\u023d\u0007\u023d\u0002\u023e\u0007\u023e"+ + "\u0002\u023f\u0007\u023f\u0002\u0240\u0007\u0240\u0002\u0241\u0007\u0241"+ + "\u0002\u0242\u0007\u0242\u0002\u0243\u0007\u0243\u0002\u0244\u0007\u0244"+ + "\u0002\u0245\u0007\u0245\u0002\u0246\u0007\u0246\u0002\u0247\u0007\u0247"+ + "\u0002\u0248\u0007\u0248\u0002\u0249\u0007\u0249\u0002\u024a\u0007\u024a"+ + "\u0002\u024b\u0007\u024b\u0002\u024c\u0007\u024c\u0002\u024d\u0007\u024d"+ + "\u0002\u024e\u0007\u024e\u0002\u024f\u0007\u024f\u0002\u0250\u0007\u0250"+ + "\u0002\u0251\u0007\u0251\u0002\u0252\u0007\u0252\u0002\u0253\u0007\u0253"+ + "\u0002\u0254\u0007\u0254\u0002\u0255\u0007\u0255\u0002\u0256\u0007\u0256"+ + "\u0002\u0257\u0007\u0257\u0002\u0258\u0007\u0258\u0002\u0259\u0007\u0259"+ + "\u0002\u025a\u0007\u025a\u0002\u025b\u0007\u025b\u0002\u025c\u0007\u025c"+ + "\u0002\u025d\u0007\u025d\u0002\u025e\u0007\u025e\u0002\u025f\u0007\u025f"+ + "\u0002\u0260\u0007\u0260\u0002\u0261\u0007\u0261\u0002\u0262\u0007\u0262"+ + "\u0002\u0263\u0007\u0263\u0002\u0264\u0007\u0264\u0002\u0265\u0007\u0265"+ + "\u0002\u0266\u0007\u0266\u0002\u0267\u0007\u0267\u0002\u0268\u0007\u0268"+ + "\u0002\u0269\u0007\u0269\u0002\u026a\u0007\u026a\u0002\u026b\u0007\u026b"+ + "\u0002\u026c\u0007\u026c\u0002\u026d\u0007\u026d\u0002\u026e\u0007\u026e"+ + "\u0002\u026f\u0007\u026f\u0002\u0270\u0007\u0270\u0002\u0271\u0007\u0271"+ + "\u0002\u0272\u0007\u0272\u0002\u0273\u0007\u0273\u0002\u0274\u0007\u0274"+ + "\u0002\u0275\u0007\u0275\u0002\u0276\u0007\u0276\u0002\u0277\u0007\u0277"+ + "\u0002\u0278\u0007\u0278\u0002\u0279\u0007\u0279\u0002\u027a\u0007\u027a"+ + "\u0002\u027b\u0007\u027b\u0002\u027c\u0007\u027c\u0002\u027d\u0007\u027d"+ + "\u0002\u027e\u0007\u027e\u0002\u027f\u0007\u027f\u0002\u0280\u0007\u0280"+ + "\u0002\u0281\u0007\u0281\u0002\u0282\u0007\u0282\u0002\u0283\u0007\u0283"+ + "\u0002\u0284\u0007\u0284\u0002\u0285\u0007\u0285\u0002\u0286\u0007\u0286"+ + "\u0002\u0287\u0007\u0287\u0002\u0288\u0007\u0288\u0002\u0289\u0007\u0289"+ + "\u0002\u028a\u0007\u028a\u0002\u028b\u0007\u028b\u0002\u028c\u0007\u028c"+ + "\u0002\u028d\u0007\u028d\u0002\u028e\u0007\u028e\u0002\u028f\u0007\u028f"+ + "\u0002\u0290\u0007\u0290\u0002\u0291\u0007\u0291\u0002\u0292\u0007\u0292"+ + "\u0002\u0293\u0007\u0293\u0002\u0294\u0007\u0294\u0002\u0295\u0007\u0295"+ + "\u0002\u0296\u0007\u0296\u0002\u0297\u0007\u0297\u0002\u0298\u0007\u0298"+ + "\u0002\u0299\u0007\u0299\u0002\u029a\u0007\u029a\u0002\u029b\u0007\u029b"+ + "\u0002\u029c\u0007\u029c\u0002\u029d\u0007\u029d\u0002\u029e\u0007\u029e"+ + "\u0002\u029f\u0007\u029f\u0002\u02a0\u0007\u02a0\u0002\u02a1\u0007\u02a1"+ + "\u0002\u02a2\u0007\u02a2\u0002\u02a3\u0007\u02a3\u0002\u02a4\u0007\u02a4"+ + "\u0002\u02a5\u0007\u02a5\u0002\u02a6\u0007\u02a6\u0002\u02a7\u0007\u02a7"+ + "\u0002\u02a8\u0007\u02a8\u0002\u02a9\u0007\u02a9\u0002\u02aa\u0007\u02aa"+ + "\u0002\u02ab\u0007\u02ab\u0002\u02ac\u0007\u02ac\u0002\u02ad\u0007\u02ad"+ + "\u0002\u02ae\u0007\u02ae\u0002\u02af\u0007\u02af\u0002\u02b0\u0007\u02b0"+ + "\u0002\u02b1\u0007\u02b1\u0002\u02b2\u0007\u02b2\u0002\u02b3\u0007\u02b3"+ + "\u0002\u02b4\u0007\u02b4\u0002\u02b5\u0007\u02b5\u0002\u02b6\u0007\u02b6"+ + "\u0001\u0000\u0001\u0000\u0001\u0001\u0001\u0001\u0001\u0002\u0001\u0002"+ + "\u0001\u0003\u0001\u0003\u0001\u0004\u0001\u0004\u0001\u0005\u0001\u0005"+ + "\u0001\u0006\u0001\u0006\u0001\u0007\u0001\u0007\u0001\b\u0001\b\u0001"+ + "\t\u0001\t\u0001\n\u0001\n\u0001\u000b\u0001\u000b\u0001\f\u0001\f\u0001"+ + "\r\u0001\r\u0001\u000e\u0001\u000e\u0001\u000f\u0001\u000f\u0001\u0010"+ + "\u0001\u0010\u0001\u0011\u0001\u0011\u0001\u0011\u0001\u0012\u0001\u0012"+ + "\u0001\u0012\u0001\u0013\u0001\u0013\u0001\u0013\u0001\u0014\u0001\u0014"+ + "\u0001\u0014\u0001\u0015\u0001\u0015\u0001\u0015\u0001\u0016\u0001\u0016"+ + "\u0001\u0016\u0001\u0017\u0001\u0017\u0001\u0017\u0001\u0018\u0001\u0018"+ + "\u0001\u0018\u0001\u0019\u0001\u0019\u0001\u0019\u0001\u001a\u0001\u001a"+ + "\u0001\u001b\u0001\u001b\u0004\u001b\u05b5\b\u001b\u000b\u001b\f\u001b"+ + "\u05b6\u0001\u001c\u0001\u001c\u0001\u001c\u0001\u001c\u0004\u001c\u05bd"+ + "\b\u001c\u000b\u001c\f\u001c\u05be\u0001\u001c\u0001\u001c\u0001\u001c"+ + "\u0003\u001c\u05c4\b\u001c\u0001\u001c\u0001\u001c\u0004\u001c\u05c8\b"+ + "\u001c\u000b\u001c\f\u001c\u05c9\u0001\u001c\u0003\u001c\u05cd\b\u001c"+ + "\u0001\u001c\u0001\u001c\u0001\u001d\u0001\u001d\u0001\u001d\u0001\u001d"+ + "\u0001\u001d\u0005\u001d\u05d6\b\u001d\n\u001d\f\u001d\u05d9\t\u001d\u0001"+ + "\u001d\u0001\u001d\u0003\u001d\u05dd\b\u001d\u0001\u001d\u0001\u001d\u0001"+ + "\u001d\u0004\u001d\u05e2\b\u001d\u000b\u001d\f\u001d\u05e3\u0001\u001d"+ + "\u0001\u001d\u0001\u001e\u0001\u001e\u0001\u001f\u0001\u001f\u0001 \u0001"+ + " \u0001!\u0001!\u0001!\u0001!\u0001\"\u0001\"\u0001\"\u0001\"\u0001\""+ + "\u0001\"\u0001\"\u0001\"\u0001#\u0001#\u0001#\u0001#\u0001#\u0001#\u0001"+ + "#\u0001#\u0001$\u0001$\u0001$\u0001$\u0001%\u0001%\u0001%\u0001%\u0001"+ + "&\u0001&\u0001&\u0001&\u0001&\u0001&\u0001\'\u0001\'\u0001\'\u0001(\u0001"+ + "(\u0001(\u0001(\u0001)\u0001)\u0001)\u0001)\u0001)\u0001)\u0001)\u0001"+ + ")\u0001)\u0001)\u0001)\u0001*\u0001*\u0001*\u0001*\u0001*\u0001+\u0001"+ + "+\u0001+\u0001+\u0001+\u0001,\u0001,\u0001,\u0001,\u0001,\u0001-\u0001"+ + "-\u0001-\u0001-\u0001-\u0001-\u0001.\u0001.\u0001.\u0001.\u0001.\u0001"+ + ".\u0001.\u0001.\u0001/\u0001/\u0001/\u0001/\u0001/\u0001/\u0001/\u0001"+ + "0\u00010\u00010\u00010\u00010\u00010\u00010\u00010\u00010\u00010\u0001"+ + "0\u00011\u00011\u00011\u00011\u00011\u00011\u00011\u00012\u00012\u0001"+ + "2\u00012\u00012\u00012\u00012\u00012\u00012\u00012\u00012\u00012\u0001"+ + "2\u00012\u00012\u00012\u00013\u00013\u00013\u00013\u00013\u00013\u0001"+ + "3\u00013\u00013\u00013\u00013\u00013\u00013\u00014\u00014\u00014\u0001"+ + "4\u00014\u00014\u00014\u00014\u00014\u00014\u00014\u00014\u00014\u0001"+ + "5\u00015\u00015\u00015\u00015\u00015\u00015\u00015\u00015\u00015\u0001"+ + "5\u00015\u00015\u00016\u00016\u00016\u00016\u00016\u00016\u00016\u0001"+ + "6\u00016\u00016\u00016\u00016\u00016\u00016\u00016\u00016\u00016\u0001"+ + "6\u00017\u00017\u00017\u00017\u00017\u00017\u00017\u00017\u00017\u0001"+ + "7\u00017\u00017\u00017\u00018\u00018\u00018\u00018\u00018\u00018\u0001"+ + "8\u00018\u00019\u00019\u00019\u00019\u00019\u00019\u00019\u00019\u0001"+ + "9\u00019\u00019\u0001:\u0001:\u0001:\u0001:\u0001:\u0001;\u0001;\u0001"+ + ";\u0001;\u0001;\u0001;\u0001;\u0001;\u0001;\u0001<\u0001<\u0001<\u0001"+ + "=\u0001=\u0001=\u0001=\u0001=\u0001>\u0001>\u0001>\u0001>\u0001>\u0001"+ + ">\u0001>\u0001?\u0001?\u0001?\u0001?\u0001?\u0001?\u0001@\u0001@\u0001"+ + "@\u0001@\u0001@\u0001@\u0001A\u0001A\u0001A\u0001A\u0001B\u0001B\u0001"+ + "B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001C\u0001C\u0001C\u0001C\u0001"+ + "C\u0001D\u0001D\u0001D\u0001D\u0001D\u0001D\u0001E\u0001E\u0001E\u0001"+ + "E\u0001E\u0001E\u0001F\u0001F\u0001F\u0001F\u0001F\u0001F\u0001F\u0001"+ + "G\u0001G\u0001G\u0001H\u0001H\u0001H\u0001H\u0001H\u0001H\u0001H\u0001"+ + "H\u0001H\u0001H\u0001I\u0001I\u0001I\u0001I\u0001I\u0001I\u0001I\u0001"+ + "I\u0001I\u0001I\u0001J\u0001J\u0001J\u0001J\u0001J\u0001K\u0001K\u0001"+ + "K\u0001K\u0001K\u0001K\u0001K\u0001K\u0001L\u0001L\u0001L\u0001L\u0001"+ + "L\u0001L\u0001L\u0001L\u0001M\u0001M\u0001M\u0001M\u0001M\u0001M\u0001"+ + "N\u0001N\u0001N\u0001N\u0001N\u0001N\u0001N\u0001N\u0001N\u0001N\u0001"+ + "O\u0001O\u0001O\u0001O\u0001O\u0001O\u0001O\u0001O\u0001O\u0001O\u0001"+ + "O\u0001O\u0001O\u0001O\u0001O\u0001P\u0001P\u0001P\u0001P\u0001Q\u0001"+ + "Q\u0001Q\u0001Q\u0001Q\u0001R\u0001R\u0001R\u0001R\u0001R\u0001R\u0001"+ + "R\u0001S\u0001S\u0001S\u0001T\u0001T\u0001T\u0001T\u0001T\u0001U\u0001"+ + "U\u0001U\u0001V\u0001V\u0001V\u0001V\u0001V\u0001V\u0001W\u0001W\u0001"+ + "W\u0001W\u0001W\u0001W\u0001W\u0001W\u0001X\u0001X\u0001X\u0001X\u0001"+ + "X\u0001X\u0001X\u0001X\u0001Y\u0001Y\u0001Y\u0001Y\u0001Y\u0001Y\u0001"+ + "Y\u0001Y\u0001Y\u0001Y\u0001Y\u0001Z\u0001Z\u0001Z\u0001Z\u0001Z\u0001"+ + "Z\u0001Z\u0001Z\u0001Z\u0001Z\u0001[\u0001[\u0001[\u0001[\u0001[\u0001"+ + "[\u0001[\u0001\\\u0001\\\u0001\\\u0001\\\u0001\\\u0001\\\u0001\\\u0001"+ + "\\\u0001\\\u0001\\\u0001\\\u0001\\\u0001\\\u0001]\u0001]\u0001]\u0001"+ + "]\u0001]\u0001^\u0001^\u0001^\u0001^\u0001^\u0001^\u0001^\u0001^\u0001"+ + "^\u0001^\u0001_\u0001_\u0001_\u0001_\u0001_\u0001_\u0001`\u0001`\u0001"+ + "`\u0001`\u0001`\u0001a\u0001a\u0001a\u0001b\u0001b\u0001b\u0001b\u0001"+ + "b\u0001b\u0001b\u0001b\u0001b\u0001c\u0001c\u0001c\u0001c\u0001c\u0001"+ + "d\u0001d\u0001d\u0001d\u0001d\u0001d\u0001e\u0001e\u0001e\u0001e\u0001"+ + "e\u0001e\u0001e\u0001f\u0001f\u0001f\u0001f\u0001f\u0001g\u0001g\u0001"+ + "g\u0001g\u0001g\u0001g\u0001h\u0001h\u0001h\u0001h\u0001h\u0001h\u0001"+ + "h\u0001h\u0001h\u0001i\u0001i\u0001i\u0001i\u0001i\u0001j\u0001j\u0001"+ + "j\u0001j\u0001j\u0001j\u0001k\u0001k\u0001k\u0001k\u0001k\u0001k\u0001"+ + "k\u0001l\u0001l\u0001l\u0001l\u0001l\u0001m\u0001m\u0001m\u0001m\u0001"+ + "m\u0001m\u0001m\u0001m\u0001m\u0001m\u0001m\u0001m\u0001m\u0001m\u0001"+ + "n\u0001n\u0001n\u0001n\u0001n\u0001n\u0001n\u0001o\u0001o\u0001o\u0001"+ + "o\u0001o\u0001o\u0001o\u0001o\u0001o\u0001o\u0001p\u0001p\u0001p\u0001"+ + "p\u0001p\u0001p\u0001p\u0001p\u0001p\u0001p\u0001p\u0001p\u0001p\u0001"+ + "q\u0001q\u0001q\u0001q\u0001q\u0001q\u0001r\u0001r\u0001r\u0001r\u0001"+ + "r\u0001r\u0001r\u0001r\u0001r\u0001r\u0001r\u0001r\u0001r\u0001r\u0001"+ + "r\u0001s\u0001s\u0001s\u0001s\u0001s\u0001s\u0001s\u0001t\u0001t\u0001"+ + "t\u0001t\u0001t\u0001u\u0001u\u0001u\u0001u\u0001u\u0001u\u0001v\u0001"+ + "v\u0001v\u0001v\u0001v\u0001v\u0001w\u0001w\u0001w\u0001x\u0001x\u0001"+ + "x\u0001x\u0001x\u0001x\u0001x\u0001y\u0001y\u0001y\u0001y\u0001y\u0001"+ + "z\u0001z\u0001z\u0001z\u0001z\u0001{\u0001{\u0001{\u0001{\u0001{\u0001"+ + "|\u0001|\u0001|\u0001|\u0001|\u0001|\u0001|\u0001|\u0001}\u0001}\u0001"+ + "}\u0001}\u0001}\u0001}\u0001}\u0001}\u0001~\u0001~\u0001~\u0001~\u0001"+ + "~\u0001~\u0001\u007f\u0001\u007f\u0001\u007f\u0001\u007f\u0001\u007f\u0001"+ + "\u0080\u0001\u0080\u0001\u0080\u0001\u0080\u0001\u0080\u0001\u0080\u0001"+ + "\u0080\u0001\u0080\u0001\u0080\u0001\u0081\u0001\u0081\u0001\u0081\u0001"+ + "\u0081\u0001\u0081\u0001\u0081\u0001\u0082\u0001\u0082\u0001\u0082\u0001"+ + "\u0082\u0001\u0082\u0001\u0082\u0001\u0082\u0001\u0082\u0001\u0083\u0001"+ + "\u0083\u0001\u0083\u0001\u0083\u0001\u0083\u0001\u0083\u0001\u0083\u0001"+ + "\u0083\u0001\u0084\u0001\u0084\u0001\u0084\u0001\u0084\u0001\u0084\u0001"+ + "\u0084\u0001\u0085\u0001\u0085\u0001\u0085\u0001\u0085\u0001\u0085\u0001"+ + "\u0085\u0001\u0085\u0001\u0085\u0001\u0085\u0001\u0086\u0001\u0086\u0001"+ + "\u0086\u0001\u0086\u0001\u0086\u0001\u0086\u0001\u0086\u0001\u0087\u0001"+ + "\u0087\u0001\u0087\u0001\u0087\u0001\u0087\u0001\u0087\u0001\u0087\u0001"+ + "\u0088\u0001\u0088\u0001\u0088\u0001\u0088\u0001\u0089\u0001\u0089\u0001"+ + "\u0089\u0001\u0089\u0001\u0089\u0001\u0089\u0001\u008a\u0001\u008a\u0001"+ + "\u008a\u0001\u008a\u0001\u008a\u0001\u008a\u0001\u008b\u0001\u008b\u0001"+ + "\u008b\u0001\u008b\u0001\u008b\u0001\u008b\u0001\u008b\u0001\u008b\u0001"+ + "\u008b\u0001\u008b\u0001\u008c\u0001\u008c\u0001\u008c\u0001\u008c\u0001"+ + "\u008c\u0001\u008d\u0001\u008d\u0001\u008d\u0001\u008d\u0001\u008d\u0001"+ + "\u008d\u0001\u008e\u0001\u008e\u0001\u008e\u0001\u008e\u0001\u008e\u0001"+ + "\u008e\u0001\u008e\u0001\u008f\u0001\u008f\u0001\u008f\u0001\u008f\u0001"+ + "\u008f\u0001\u008f\u0001\u008f\u0001\u008f\u0001\u008f\u0001\u008f\u0001"+ + "\u0090\u0001\u0090\u0001\u0090\u0001\u0090\u0001\u0090\u0001\u0090\u0001"+ + "\u0090\u0001\u0090\u0001\u0090\u0001\u0090\u0001\u0090\u0001\u0091\u0001"+ + "\u0091\u0001\u0091\u0001\u0092\u0001\u0092\u0001\u0092\u0001\u0092\u0001"+ + "\u0092\u0001\u0092\u0001\u0092\u0001\u0092\u0001\u0092\u0001\u0092\u0001"+ + "\u0093\u0001\u0093\u0001\u0093\u0001\u0093\u0001\u0093\u0001\u0093\u0001"+ + "\u0093\u0001\u0093\u0001\u0093\u0001\u0094\u0001\u0094\u0001\u0094\u0001"+ + "\u0094\u0001\u0094\u0001\u0094\u0001\u0094\u0001\u0095\u0001\u0095\u0001"+ + "\u0095\u0001\u0095\u0001\u0095\u0001\u0095\u0001\u0096\u0001\u0096\u0001"+ + "\u0096\u0001\u0097\u0001\u0097\u0001\u0097\u0001\u0097\u0001\u0097\u0001"+ + "\u0097\u0001\u0098\u0001\u0098\u0001\u0098\u0001\u0098\u0001\u0098\u0001"+ + "\u0098\u0001\u0098\u0001\u0099\u0001\u0099\u0001\u0099\u0001\u0099\u0001"+ + "\u0099\u0001\u0099\u0001\u0099\u0001\u0099\u0001\u009a\u0001\u009a\u0001"+ + "\u009a\u0001\u009a\u0001\u009a\u0001\u009a\u0001\u009a\u0001\u009a\u0001"+ + "\u009a\u0001\u009b\u0001\u009b\u0001\u009b\u0001\u009b\u0001\u009b\u0001"+ + "\u009b\u0001\u009b\u0001\u009b\u0001\u009c\u0001\u009c\u0001\u009c\u0001"+ + "\u009c\u0001\u009c\u0001\u009c\u0001\u009d\u0001\u009d\u0001\u009d\u0001"+ + "\u009d\u0001\u009d\u0001\u009d\u0001\u009d\u0001\u009d\u0001\u009d\u0001"+ + "\u009d\u0001\u009d\u0001\u009d\u0001\u009d\u0001\u009d\u0001\u009d\u0001"+ + "\u009d\u0001\u009e\u0001\u009e\u0001\u009e\u0001\u009e\u0001\u009e\u0001"+ + "\u009e\u0001\u009e\u0001\u009e\u0001\u009e\u0001\u009e\u0001\u009e\u0001"+ + "\u009f\u0001\u009f\u0001\u009f\u0001\u009f\u0001\u009f\u0001\u009f\u0001"+ + "\u00a0\u0001\u00a0\u0001\u00a0\u0001\u00a0\u0001\u00a0\u0001\u00a0\u0001"+ + "\u00a1\u0001\u00a1\u0001\u00a1\u0001\u00a1\u0001\u00a1\u0001\u00a1\u0001"+ + "\u00a1\u0001\u00a1\u0001\u00a2\u0001\u00a2\u0001\u00a2\u0001\u00a2\u0001"+ + "\u00a2\u0001\u00a2\u0001\u00a2\u0001\u00a2\u0001\u00a3\u0001\u00a3\u0001"+ + "\u00a3\u0001\u00a3\u0001\u00a3\u0001\u00a3\u0001\u00a3\u0001\u00a3\u0001"+ + "\u00a3\u0001\u00a4\u0001\u00a4\u0001\u00a4\u0001\u00a4\u0001\u00a4\u0001"+ + "\u00a4\u0001\u00a4\u0001\u00a5\u0001\u00a5\u0001\u00a5\u0001\u00a5\u0001"+ + "\u00a5\u0001\u00a5\u0001\u00a5\u0001\u00a5\u0001\u00a5\u0001\u00a5\u0001"+ + "\u00a6\u0001\u00a6\u0001\u00a6\u0001\u00a6\u0001\u00a6\u0001\u00a6\u0001"+ + "\u00a6\u0001\u00a6\u0001\u00a6\u0001\u00a6\u0001\u00a6\u0001\u00a6\u0001"+ + "\u00a6\u0001\u00a6\u0001\u00a7\u0001\u00a7\u0001\u00a7\u0001\u00a7\u0001"+ + "\u00a7\u0001\u00a7\u0001\u00a7\u0001\u00a7\u0001\u00a7\u0001\u00a7\u0001"+ + "\u00a7\u0001\u00a8\u0001\u00a8\u0001\u00a8\u0001\u00a8\u0001\u00a8\u0001"+ + "\u00a8\u0001\u00a8\u0001\u00a8\u0001\u00a8\u0001\u00a8\u0001\u00a8\u0001"+ + "\u00a8\u0001\u00a9\u0001\u00a9\u0001\u00a9\u0001\u00a9\u0001\u00a9\u0001"+ + "\u00a9\u0001\u00a9\u0001\u00a9\u0001\u00aa\u0001\u00aa\u0001\u00aa\u0001"+ + "\u00aa\u0001\u00aa\u0001\u00aa\u0001\u00aa\u0001\u00aa\u0001\u00aa\u0001"+ + "\u00ab\u0001\u00ab\u0001\u00ab\u0001\u00ab\u0001\u00ab\u0001\u00ab\u0001"+ + "\u00ab\u0001\u00ab\u0001\u00ab\u0001\u00ab\u0001\u00ab\u0001\u00ac\u0001"+ + "\u00ac\u0001\u00ac\u0001\u00ac\u0001\u00ac\u0001\u00ad\u0001\u00ad\u0001"+ + "\u00ad\u0001\u00ad\u0001\u00ad\u0001\u00ae\u0001\u00ae\u0001\u00ae\u0001"+ + "\u00ae\u0001\u00af\u0001\u00af\u0001\u00af\u0001\u00af\u0001\u00af\u0001"+ + "\u00af\u0001\u00af\u0001\u00b0\u0001\u00b0\u0001\u00b0\u0001\u00b0\u0001"+ + "\u00b0\u0001\u00b0\u0001\u00b1\u0001\u00b1\u0001\u00b1\u0001\u00b1\u0001"+ + "\u00b1\u0001\u00b2\u0001\u00b2\u0001\u00b2\u0001\u00b2\u0001\u00b2\u0001"+ + "\u00b2\u0001\u00b2\u0001\u00b2\u0001\u00b2\u0001\u00b3\u0001\u00b3\u0001"+ + "\u00b3\u0001\u00b3\u0001\u00b4\u0001\u00b4\u0001\u00b4\u0001\u00b4\u0001"+ + "\u00b4\u0001\u00b4\u0001\u00b4\u0001\u00b4\u0001\u00b4\u0001\u00b4\u0001"+ + "\u00b4\u0001\u00b5\u0001\u00b5\u0001\u00b5\u0001\u00b5\u0001\u00b5\u0001"+ + "\u00b5\u0001\u00b5\u0001\u00b5\u0001\u00b6\u0001\u00b6\u0001\u00b6\u0001"+ + "\u00b6\u0001\u00b6\u0001\u00b6\u0001\u00b6\u0001\u00b6\u0001\u00b6\u0001"+ + "\u00b7\u0001\u00b7\u0001\u00b7\u0001\u00b7\u0001\u00b7\u0001\u00b7\u0001"+ + "\u00b7\u0001\u00b7\u0001\u00b7\u0001\u00b8\u0001\u00b8\u0001\u00b8\u0001"+ + "\u00b8\u0001\u00b8\u0001\u00b8\u0001\u00b8\u0001\u00b8\u0001\u00b9\u0001"+ + "\u00b9\u0001\u00b9\u0001\u00b9\u0001\u00b9\u0001\u00b9\u0001\u00b9\u0001"+ + "\u00ba\u0001\u00ba\u0001\u00ba\u0001\u00ba\u0001\u00ba\u0001\u00ba\u0001"+ + "\u00ba\u0001\u00ba\u0001\u00ba\u0001\u00ba\u0001\u00bb\u0001\u00bb\u0001"+ + "\u00bb\u0001\u00bb\u0001\u00bb\u0001\u00bb\u0001\u00bb\u0001\u00bb\u0001"+ + "\u00bb\u0001\u00bb\u0001\u00bb\u0001\u00bc\u0001\u00bc\u0001\u00bc\u0001"+ + "\u00bc\u0001\u00bc\u0001\u00bc\u0001\u00bc\u0001\u00bc\u0001\u00bc\u0001"+ + "\u00bc\u0001\u00bc\u0001\u00bd\u0001\u00bd\u0001\u00bd\u0001\u00bd\u0001"+ + "\u00bd\u0001\u00bd\u0001\u00bd\u0001\u00bd\u0001\u00be\u0001\u00be\u0001"+ + "\u00be\u0001\u00be\u0001\u00be\u0001\u00be\u0001\u00be\u0001\u00be\u0001"+ + "\u00bf\u0001\u00bf\u0001\u00bf\u0001\u00bf\u0001\u00bf\u0001\u00bf\u0001"+ + "\u00bf\u0001\u00bf\u0001\u00bf\u0001\u00c0\u0001\u00c0\u0001\u00c0\u0001"+ + "\u00c0\u0001\u00c0\u0001\u00c0\u0001\u00c0\u0001\u00c1\u0001\u00c1\u0001"+ + "\u00c1\u0001\u00c1\u0001\u00c1\u0001\u00c1\u0001\u00c1\u0001\u00c2\u0001"+ + "\u00c2\u0001\u00c2\u0001\u00c2\u0001\u00c2\u0001\u00c3\u0001\u00c3\u0001"+ + "\u00c3\u0001\u00c3\u0001\u00c3\u0001\u00c4\u0001\u00c4\u0001\u00c4\u0001"+ + "\u00c4\u0001\u00c4\u0001\u00c4\u0001\u00c4\u0001\u00c5\u0001\u00c5\u0001"+ + "\u00c5\u0001\u00c5\u0001\u00c5\u0001\u00c5\u0001\u00c5\u0001\u00c5\u0001"+ + "\u00c5\u0001\u00c6\u0001\u00c6\u0001\u00c6\u0001\u00c6\u0001\u00c6\u0001"+ + "\u00c6\u0001\u00c6\u0001\u00c6\u0001\u00c6\u0001\u00c6\u0001\u00c7\u0001"+ + "\u00c7\u0001\u00c7\u0001\u00c7\u0001\u00c7\u0001\u00c8\u0001\u00c8\u0001"+ + "\u00c8\u0001\u00c8\u0001\u00c8\u0001\u00c8\u0001\u00c8\u0001\u00c9\u0001"+ + "\u00c9\u0001\u00c9\u0001\u00c9\u0001\u00c9\u0001\u00c9\u0001\u00ca\u0001"+ + "\u00ca\u0001\u00ca\u0001\u00ca\u0001\u00ca\u0001\u00ca\u0001\u00ca\u0001"+ + "\u00ca\u0001\u00cb\u0001\u00cb\u0001\u00cb\u0001\u00cb\u0001\u00cb\u0001"+ + "\u00cb\u0001\u00cb\u0001\u00cb\u0001\u00cb\u0001\u00cb\u0001\u00cc\u0001"+ + "\u00cc\u0001\u00cc\u0001\u00cc\u0001\u00cc\u0001\u00cc\u0001\u00cc\u0001"+ + "\u00cc\u0001\u00cc\u0001\u00cc\u0001\u00cd\u0001\u00cd\u0001\u00cd\u0001"+ + "\u00cd\u0001\u00cd\u0001\u00cd\u0001\u00cd\u0001\u00cd\u0001\u00ce\u0001"+ + "\u00ce\u0001\u00ce\u0001\u00ce\u0001\u00ce\u0001\u00ce\u0001\u00ce\u0001"+ + "\u00ce\u0001\u00cf\u0001\u00cf\u0001\u00cf\u0001\u00cf\u0001\u00cf\u0001"+ + "\u00cf\u0001\u00cf\u0001\u00cf\u0001\u00cf\u0001\u00cf\u0001\u00d0\u0001"+ + "\u00d0\u0001\u00d0\u0001\u00d0\u0001\u00d0\u0001\u00d0\u0001\u00d0\u0001"+ + "\u00d0\u0001\u00d0\u0001\u00d1\u0001\u00d1\u0001\u00d1\u0001\u00d1\u0001"+ + "\u00d1\u0001\u00d1\u0001\u00d1\u0001\u00d2\u0001\u00d2\u0001\u00d2\u0001"+ + "\u00d2\u0001\u00d2\u0001\u00d2\u0001\u00d3\u0001\u00d3\u0001\u00d3\u0001"+ + "\u00d3\u0001\u00d3\u0001\u00d3\u0001\u00d3\u0001\u00d3\u0001\u00d3\u0001"+ + "\u00d3\u0001\u00d4\u0001\u00d4\u0001\u00d4\u0001\u00d4\u0001\u00d4\u0001"+ + "\u00d4\u0001\u00d5\u0001\u00d5\u0001\u00d5\u0001\u00d5\u0001\u00d5\u0001"+ + "\u00d5\u0001\u00d5\u0001\u00d5\u0001\u00d6\u0001\u00d6\u0001\u00d6\u0001"+ + "\u00d6\u0001\u00d6\u0001\u00d6\u0001\u00d6\u0001\u00d6\u0001\u00d6\u0001"+ + "\u00d7\u0001\u00d7\u0001\u00d7\u0001\u00d7\u0001\u00d7\u0001\u00d7\u0001"+ + "\u00d7\u0001\u00d7\u0001\u00d7\u0001\u00d7\u0001\u00d8\u0001\u00d8\u0001"+ + "\u00d8\u0001\u00d8\u0001\u00d8\u0001\u00d8\u0001\u00d8\u0001\u00d9\u0001"+ + "\u00d9\u0001\u00d9\u0001\u00d9\u0001\u00d9\u0001\u00d9\u0001\u00d9\u0001"+ + "\u00d9\u0001\u00da\u0001\u00da\u0001\u00da\u0001\u00da\u0001\u00da\u0001"+ + "\u00da\u0001\u00da\u0001\u00da\u0001\u00db\u0001\u00db\u0001\u00db\u0001"+ + "\u00db\u0001\u00db\u0001\u00db\u0001\u00db\u0001\u00dc\u0001\u00dc\u0001"+ + "\u00dc\u0001\u00dc\u0001\u00dc\u0001\u00dd\u0001\u00dd\u0001\u00dd\u0001"+ + "\u00dd\u0001\u00dd\u0001\u00de\u0001\u00de\u0001\u00de\u0001\u00de\u0001"+ + "\u00de\u0001\u00de\u0001\u00de\u0001\u00de\u0001\u00de\u0001\u00df\u0001"+ + "\u00df\u0001\u00df\u0001\u00e0\u0001\u00e0\u0001\u00e0\u0001\u00e0\u0001"+ + "\u00e0\u0001\u00e0\u0001\u00e0\u0001\u00e0\u0001\u00e0\u0001\u00e0\u0001"+ + "\u00e1\u0001\u00e1\u0001\u00e1\u0001\u00e1\u0001\u00e1\u0001\u00e1\u0001"+ + "\u00e1\u0001\u00e1\u0001\u00e1\u0001\u00e1\u0001\u00e2\u0001\u00e2\u0001"+ + "\u00e2\u0001\u00e2\u0001\u00e2\u0001\u00e2\u0001\u00e2\u0001\u00e2\u0001"+ + "\u00e2\u0001\u00e3\u0001\u00e3\u0001\u00e3\u0001\u00e3\u0001\u00e3\u0001"+ + "\u00e3\u0001\u00e3\u0001\u00e3\u0001\u00e3\u0001\u00e3\u0001\u00e4\u0001"+ + "\u00e4\u0001\u00e4\u0001\u00e4\u0001\u00e4\u0001\u00e4\u0001\u00e4\u0001"+ + "\u00e4\u0001\u00e4\u0001\u00e4\u0001\u00e5\u0001\u00e5\u0001\u00e5\u0001"+ + "\u00e5\u0001\u00e5\u0001\u00e5\u0001\u00e6\u0001\u00e6\u0001\u00e6\u0001"+ + "\u00e6\u0001\u00e6\u0001\u00e6\u0001\u00e6\u0001\u00e6\u0001\u00e7\u0001"+ + "\u00e7\u0001\u00e7\u0001\u00e7\u0001\u00e7\u0001\u00e7\u0001\u00e7\u0001"+ + "\u00e7\u0001\u00e8\u0001\u00e8\u0001\u00e8\u0001\u00e8\u0001\u00e8\u0001"+ + "\u00e8\u0001\u00e8\u0001\u00e8\u0001\u00e8\u0001\u00e9\u0001\u00e9\u0001"+ + "\u00e9\u0001\u00e9\u0001\u00e9\u0001\u00e9\u0001\u00e9\u0001\u00ea\u0001"+ + "\u00ea\u0001\u00ea\u0001\u00ea\u0001\u00ea\u0001\u00ea\u0001\u00ea\u0001"+ + "\u00ea\u0001\u00ea\u0001\u00ea\u0001\u00ea\u0001\u00ea\u0001\u00eb\u0001"+ + "\u00eb\u0001\u00eb\u0001\u00eb\u0001\u00eb\u0001\u00eb\u0001\u00eb\u0001"+ + "\u00ec\u0001\u00ec\u0001\u00ec\u0001\u00ec\u0001\u00ec\u0001\u00ec\u0001"+ + "\u00ec\u0001\u00ec\u0001\u00ed\u0001\u00ed\u0001\u00ed\u0001\u00ed\u0001"+ + "\u00ed\u0001\u00ed\u0001\u00ed\u0001\u00ed\u0001\u00ee\u0001\u00ee\u0001"+ + "\u00ee\u0001\u00ee\u0001\u00ee\u0001\u00ee\u0001\u00ee\u0001\u00ee\u0001"+ + "\u00ee\u0001\u00ee\u0001\u00ef\u0001\u00ef\u0001\u00ef\u0001\u00ef\u0001"+ + "\u00f0\u0001\u00f0\u0001\u00f0\u0001\u00f0\u0001\u00f0\u0001\u00f0\u0001"+ + "\u00f1\u0001\u00f1\u0001\u00f1\u0001\u00f1\u0001\u00f1\u0001\u00f1\u0001"+ + "\u00f1\u0001\u00f1\u0001\u00f1\u0001\u00f2\u0001\u00f2\u0001\u00f2\u0001"+ + "\u00f2\u0001\u00f2\u0001\u00f2\u0001\u00f3\u0001\u00f3\u0001\u00f3\u0001"+ + "\u00f3\u0001\u00f3\u0001\u00f4\u0001\u00f4\u0001\u00f4\u0001\u00f4\u0001"+ + "\u00f4\u0001\u00f4\u0001\u00f4\u0001\u00f4\u0001\u00f4\u0001\u00f4\u0001"+ + "\u00f5\u0001\u00f5\u0001\u00f5\u0001\u00f5\u0001\u00f5\u0001\u00f5\u0001"+ + "\u00f6\u0001\u00f6\u0001\u00f6\u0001\u00f6\u0001\u00f6\u0001\u00f6\u0001"+ + "\u00f6\u0001\u00f7\u0001\u00f7\u0001\u00f7\u0001\u00f7\u0001\u00f7\u0001"+ + "\u00f8\u0001\u00f8\u0001\u00f8\u0001\u00f8\u0001\u00f8\u0001\u00f8\u0001"+ + "\u00f9\u0001\u00f9\u0001\u00f9\u0001\u00f9\u0001\u00f9\u0001\u00f9\u0001"+ + "\u00f9\u0001\u00f9\u0001\u00f9\u0001\u00fa\u0001\u00fa\u0001\u00fa\u0001"+ + "\u00fa\u0001\u00fa\u0001\u00fb\u0001\u00fb\u0001\u00fb\u0001\u00fb\u0001"+ + "\u00fb\u0001\u00fb\u0001\u00fb\u0001\u00fb\u0001\u00fc\u0001\u00fc\u0001"+ + "\u00fc\u0001\u00fc\u0001\u00fc\u0001\u00fc\u0001\u00fd\u0001\u00fd\u0001"+ + "\u00fd\u0001\u00fd\u0001\u00fd\u0001\u00fd\u0001\u00fd\u0001\u00fd\u0001"+ + "\u00fe\u0001\u00fe\u0001\u00fe\u0001\u00fe\u0001\u00fe\u0001\u00fe\u0001"+ + "\u00fe\u0001\u00fe\u0001\u00fe\u0001\u00fe\u0001\u00fe\u0001\u00fe\u0001"+ + "\u00fe\u0001\u00ff\u0001\u00ff\u0001\u00ff\u0001\u00ff\u0001\u00ff\u0001"+ + "\u00ff\u0001\u00ff\u0001\u00ff\u0001\u00ff\u0001\u0100\u0001\u0100\u0001"+ + "\u0100\u0001\u0100\u0001\u0100\u0001\u0100\u0001\u0101\u0001\u0101\u0001"+ + "\u0101\u0001\u0101\u0001\u0101\u0001\u0101\u0001\u0101\u0001\u0102\u0001"+ + "\u0102\u0001\u0102\u0001\u0102\u0001\u0102\u0001\u0102\u0001\u0102\u0001"+ + "\u0102\u0001\u0102\u0001\u0103\u0001\u0103\u0001\u0103\u0001\u0103\u0001"+ + "\u0103\u0001\u0104\u0001\u0104\u0001\u0104\u0001\u0104\u0001\u0104\u0001"+ + "\u0104\u0001\u0105\u0001\u0105\u0001\u0105\u0001\u0105\u0001\u0105\u0001"+ + "\u0106\u0001\u0106\u0001\u0106\u0001\u0106\u0001\u0106\u0001\u0107\u0001"+ + "\u0107\u0001\u0107\u0001\u0107\u0001\u0107\u0001\u0107\u0001\u0108\u0001"+ + "\u0108\u0001\u0108\u0001\u0108\u0001\u0108\u0001\u0109\u0001\u0109\u0001"+ + "\u0109\u0001\u010a\u0001\u010a\u0001\u010a\u0001\u010a\u0001\u010a\u0001"+ + "\u010a\u0001\u010a\u0001\u010a\u0001\u010b\u0001\u010b\u0001\u010b\u0001"+ + "\u010b\u0001\u010b\u0001\u010b\u0001\u010b\u0001\u010c\u0001\u010c\u0001"+ + "\u010c\u0001\u010c\u0001\u010c\u0001\u010c\u0001\u010c\u0001\u010d\u0001"+ + "\u010d\u0001\u010d\u0001\u010d\u0001\u010d\u0001\u010d\u0001\u010e\u0001"+ + "\u010e\u0001\u010e\u0001\u010e\u0001\u010e\u0001\u010e\u0001\u010e\u0001"+ + "\u010f\u0001\u010f\u0001\u010f\u0001\u0110\u0001\u0110\u0001\u0110\u0001"+ + "\u0110\u0001\u0111\u0001\u0111\u0001\u0111\u0001\u0111\u0001\u0111\u0001"+ + "\u0112\u0001\u0112\u0001\u0112\u0001\u0112\u0001\u0112\u0001\u0112\u0001"+ + "\u0112\u0001\u0112\u0001\u0112\u0001\u0113\u0001\u0113\u0001\u0113\u0001"+ + "\u0113\u0001\u0113\u0001\u0113\u0001\u0113\u0001\u0114\u0001\u0114\u0001"+ + "\u0114\u0001\u0114\u0001\u0114\u0001\u0114\u0001\u0114\u0001\u0114\u0001"+ + "\u0115\u0001\u0115\u0001\u0115\u0001\u0115\u0001\u0115\u0001\u0115\u0001"+ + "\u0116\u0001\u0116\u0001\u0116\u0001\u0116\u0001\u0116\u0001\u0116\u0001"+ + "\u0117\u0001\u0117\u0001\u0117\u0001\u0117\u0001\u0117\u0001\u0117\u0001"+ + "\u0117\u0001\u0118\u0001\u0118\u0001\u0118\u0001\u0118\u0001\u0118\u0001"+ + "\u0118\u0001\u0118\u0001\u0118\u0001\u0119\u0001\u0119\u0001\u0119\u0001"+ + "\u0119\u0001\u0119\u0001\u0119\u0001\u0119\u0001\u0119\u0001\u0119\u0001"+ + "\u0119\u0001\u011a\u0001\u011a\u0001\u011a\u0001\u011a\u0001\u011a\u0001"+ + "\u011a\u0001\u011a\u0001\u011a\u0001\u011b\u0001\u011b\u0001\u011b\u0001"+ + "\u011b\u0001\u011b\u0001\u011b\u0001\u011b\u0001\u011b\u0001\u011b\u0001"+ + "\u011c\u0001\u011c\u0001\u011c\u0001\u011c\u0001\u011c\u0001\u011c\u0001"+ + "\u011d\u0001\u011d\u0001\u011d\u0001\u011d\u0001\u011d\u0001\u011d\u0001"+ + "\u011d\u0001\u011d\u0001\u011d\u0001\u011d\u0001\u011e\u0001\u011e\u0001"+ + "\u011e\u0001\u011e\u0001\u011e\u0001\u011e\u0001\u011e\u0001\u011e\u0001"+ + "\u011f\u0001\u011f\u0001\u011f\u0001\u011f\u0001\u011f\u0001\u011f\u0001"+ + "\u011f\u0001\u011f\u0001\u011f\u0001\u0120\u0001\u0120\u0001\u0120\u0001"+ + "\u0120\u0001\u0120\u0001\u0120\u0001\u0120\u0001\u0120\u0001\u0120\u0001"+ + "\u0121\u0001\u0121\u0001\u0121\u0001\u0121\u0001\u0121\u0001\u0121\u0001"+ + "\u0122\u0001\u0122\u0001\u0122\u0001\u0122\u0001\u0122\u0001\u0122\u0001"+ + "\u0122\u0001\u0122\u0001\u0122\u0001\u0122\u0001\u0122\u0001\u0123\u0001"+ + "\u0123\u0001\u0123\u0001\u0123\u0001\u0123\u0001\u0123\u0001\u0123\u0001"+ + "\u0123\u0001\u0123\u0001\u0123\u0001\u0123\u0001\u0124\u0001\u0124\u0001"+ + "\u0124\u0001\u0124\u0001\u0124\u0001\u0124\u0001\u0124\u0001\u0124\u0001"+ + "\u0124\u0001\u0124\u0001\u0125\u0001\u0125\u0001\u0125\u0001\u0125\u0001"+ + "\u0125\u0001\u0125\u0001\u0125\u0001\u0125\u0001\u0126\u0001\u0126\u0001"+ + "\u0126\u0001\u0126\u0001\u0126\u0001\u0126\u0001\u0127\u0001\u0127\u0001"+ + "\u0127\u0001\u0127\u0001\u0127\u0001\u0127\u0001\u0128\u0001\u0128\u0001"+ + "\u0128\u0001\u0128\u0001\u0128\u0001\u0129\u0001\u0129\u0001\u0129\u0001"+ + "\u0129\u0001\u0129\u0001\u0129\u0001\u0129\u0001\u0129\u0001\u0129\u0001"+ + "\u012a\u0001\u012a\u0001\u012a\u0001\u012a\u0001\u012a\u0001\u012a\u0001"+ + "\u012a\u0001\u012a\u0001\u012b\u0001\u012b\u0001\u012b\u0001\u012b\u0001"+ + "\u012b\u0001\u012b\u0001\u012b\u0001\u012b\u0001\u012b\u0001\u012b\u0001"+ + "\u012c\u0001\u012c\u0001\u012c\u0001\u012c\u0001\u012d\u0001\u012d\u0001"+ + "\u012d\u0001\u012d\u0001\u012d\u0001\u012d\u0001\u012d\u0001\u012d\u0001"+ + "\u012e\u0001\u012e\u0001\u012e\u0001\u012e\u0001\u012e\u0001\u012e\u0001"+ + "\u012e\u0001\u012e\u0001\u012f\u0001\u012f\u0001\u012f\u0001\u012f\u0001"+ + "\u012f\u0001\u012f\u0001\u012f\u0001\u012f\u0001\u012f\u0001\u0130\u0001"+ + "\u0130\u0001\u0130\u0001\u0130\u0001\u0130\u0001\u0130\u0001\u0130\u0001"+ + "\u0130\u0001\u0131\u0001\u0131\u0001\u0131\u0001\u0131\u0001\u0131\u0001"+ + "\u0131\u0001\u0131\u0001\u0132\u0001\u0132\u0001\u0132\u0001\u0132\u0001"+ + "\u0132\u0001\u0132\u0001\u0132\u0001\u0132\u0001\u0132\u0001\u0132\u0001"+ + "\u0132\u0001\u0133\u0001\u0133\u0001\u0133\u0001\u0133\u0001\u0133\u0001"+ + "\u0133\u0001\u0133\u0001\u0133\u0001\u0134\u0001\u0134\u0001\u0134\u0001"+ + "\u0134\u0001\u0134\u0001\u0134\u0001\u0134\u0001\u0134\u0001\u0135\u0001"+ + "\u0135\u0001\u0135\u0001\u0135\u0001\u0135\u0001\u0135\u0001\u0136\u0001"+ + "\u0136\u0001\u0136\u0001\u0136\u0001\u0136\u0001\u0136\u0001\u0136\u0001"+ + "\u0136\u0001\u0137\u0001\u0137\u0001\u0137\u0001\u0137\u0001\u0137\u0001"+ + "\u0137\u0001\u0137\u0001\u0137\u0001\u0137\u0001\u0138\u0001\u0138\u0001"+ + "\u0138\u0001\u0138\u0001\u0138\u0001\u0138\u0001\u0138\u0001\u0138\u0001"+ + "\u0139\u0001\u0139\u0001\u0139\u0001\u0139\u0001\u0139\u0001\u0139\u0001"+ + "\u0139\u0001\u013a\u0001\u013a\u0001\u013a\u0001\u013a\u0001\u013a\u0001"+ + "\u013b\u0001\u013b\u0001\u013b\u0001\u013b\u0001\u013b\u0001\u013b\u0001"+ + "\u013b\u0001\u013b\u0001\u013b\u0001\u013c\u0001\u013c\u0001\u013c\u0001"+ + "\u013c\u0001\u013c\u0001\u013d\u0001\u013d\u0001\u013d\u0001\u013d\u0001"+ + "\u013d\u0001\u013e\u0001\u013e\u0001\u013e\u0001\u013e\u0001\u013e\u0001"+ + "\u013e\u0001\u013e\u0001\u013e\u0001\u013e\u0001\u013e\u0001\u013f\u0001"+ + "\u013f\u0001\u013f\u0001\u013f\u0001\u013f\u0001\u013f\u0001\u013f\u0001"+ + "\u0140\u0001\u0140\u0001\u0140\u0001\u0140\u0001\u0140\u0001\u0140\u0001"+ + "\u0140\u0001\u0141\u0001\u0141\u0001\u0141\u0001\u0141\u0001\u0141\u0001"+ + "\u0141\u0001\u0141\u0001\u0142\u0001\u0142\u0001\u0142\u0001\u0142\u0001"+ + "\u0142\u0001\u0142\u0001\u0142\u0001\u0143\u0001\u0143\u0001\u0143\u0001"+ + "\u0143\u0001\u0143\u0001\u0143\u0001\u0143\u0001\u0143\u0001\u0143\u0001"+ + "\u0144\u0001\u0144\u0001\u0144\u0001\u0144\u0001\u0144\u0001\u0144\u0001"+ + "\u0144\u0001\u0144\u0001\u0144\u0001\u0145\u0001\u0145\u0001\u0145\u0001"+ + "\u0145\u0001\u0145\u0001\u0145\u0001\u0145\u0001\u0145\u0001\u0145\u0001"+ + "\u0145\u0001\u0146\u0001\u0146\u0001\u0146\u0001\u0146\u0001\u0146\u0001"+ + "\u0146\u0001\u0146\u0001\u0146\u0001\u0146\u0001\u0146\u0001\u0146\u0001"+ + "\u0146\u0001\u0146\u0001\u0147\u0001\u0147\u0001\u0147\u0001\u0147\u0001"+ + "\u0147\u0001\u0147\u0001\u0147\u0001\u0148\u0001\u0148\u0001\u0148\u0001"+ + "\u0148\u0001\u0148\u0001\u0148\u0001\u0148\u0001\u0148\u0001\u0149\u0001"+ + "\u0149\u0001\u0149\u0001\u0149\u0001\u014a\u0001\u014a\u0001\u014a\u0001"+ + "\u014a\u0001\u014a\u0001\u014a\u0001\u014b\u0001\u014b\u0001\u014b\u0001"+ + "\u014b\u0001\u014b\u0001\u014c\u0001\u014c\u0001\u014c\u0001\u014c\u0001"+ + "\u014c\u0001\u014c\u0001\u014c\u0001\u014d\u0001\u014d\u0001\u014d\u0001"+ + "\u014d\u0001\u014d\u0001\u014d\u0001\u014d\u0001\u014d\u0001\u014d\u0001"+ + "\u014e\u0001\u014e\u0001\u014e\u0001\u014e\u0001\u014e\u0001\u014e\u0001"+ + "\u014e\u0001\u014f\u0001\u014f\u0001\u014f\u0001\u014f\u0001\u014f\u0001"+ + "\u014f\u0001\u014f\u0001\u014f\u0001\u014f\u0001\u014f\u0001\u014f\u0001"+ + "\u0150\u0001\u0150\u0001\u0150\u0001\u0150\u0001\u0150\u0001\u0150\u0001"+ + "\u0151\u0001\u0151\u0001\u0151\u0001\u0151\u0001\u0151\u0001\u0151\u0001"+ + "\u0151\u0001\u0151\u0001\u0151\u0001\u0151\u0001\u0152\u0001\u0152\u0001"+ + "\u0152\u0001\u0152\u0001\u0152\u0001\u0152\u0001\u0152\u0001\u0152\u0001"+ + "\u0152\u0001\u0152\u0001\u0152\u0001\u0153\u0001\u0153\u0001\u0153\u0001"+ + "\u0153\u0001\u0153\u0001\u0153\u0001\u0154\u0001\u0154\u0001\u0154\u0001"+ + "\u0154\u0001\u0154\u0001\u0154\u0001\u0154\u0001\u0155\u0001\u0155\u0001"+ + "\u0155\u0001\u0155\u0001\u0155\u0001\u0155\u0001\u0155\u0001\u0155\u0001"+ + "\u0156\u0001\u0156\u0001\u0156\u0001\u0156\u0001\u0156\u0001\u0156\u0001"+ + "\u0156\u0001\u0157\u0001\u0157\u0001\u0157\u0001\u0157\u0001\u0157\u0001"+ + "\u0157\u0001\u0158\u0001\u0158\u0001\u0158\u0001\u0158\u0001\u0158\u0001"+ + "\u0158\u0001\u0159\u0001\u0159\u0001\u0159\u0001\u0159\u0001\u0159\u0001"+ + "\u0159\u0001\u0159\u0001\u015a\u0001\u015a\u0001\u015a\u0001\u015a\u0001"+ + "\u015a\u0001\u015a\u0001\u015a\u0001\u015b\u0001\u015b\u0001\u015b\u0001"+ + "\u015b\u0001\u015b\u0001\u015b\u0001\u015b\u0001\u015b\u0001\u015b\u0001"+ + "\u015b\u0001\u015b\u0001\u015c\u0001\u015c\u0001\u015c\u0001\u015c\u0001"+ + "\u015c\u0001\u015d\u0001\u015d\u0001\u015d\u0001\u015d\u0001\u015d\u0001"+ + "\u015d\u0001\u015d\u0001\u015d\u0001\u015d\u0001\u015e\u0001\u015e\u0001"+ + "\u015e\u0001\u015e\u0001\u015e\u0001\u015e\u0001\u015e\u0001\u015e\u0001"+ + "\u015e\u0001\u015e\u0001\u015f\u0001\u015f\u0001\u015f\u0001\u015f\u0001"+ + "\u015f\u0001\u0160\u0001\u0160\u0001\u0160\u0001\u0160\u0001\u0160\u0001"+ + "\u0160\u0001\u0160\u0001\u0160\u0001\u0160\u0001\u0160\u0001\u0160\u0001"+ + "\u0160\u0001\u0161\u0001\u0161\u0001\u0161\u0001\u0161\u0001\u0161\u0001"+ + "\u0161\u0001\u0161\u0001\u0161\u0001\u0162\u0001\u0162\u0001\u0162\u0001"+ + "\u0162\u0001\u0162\u0001\u0162\u0001\u0162\u0001\u0162\u0001\u0162\u0001"+ + "\u0163\u0001\u0163\u0001\u0163\u0001\u0163\u0001\u0163\u0001\u0163\u0001"+ + "\u0163\u0001\u0163\u0001\u0164\u0001\u0164\u0001\u0164\u0001\u0164\u0001"+ + "\u0164\u0001\u0165\u0001\u0165\u0001\u0165\u0001\u0165\u0001\u0165\u0001"+ + "\u0165\u0001\u0166\u0001\u0166\u0001\u0166\u0001\u0166\u0001\u0166\u0001"+ + "\u0166\u0001\u0166\u0001\u0166\u0001\u0166\u0001\u0166\u0001\u0167\u0001"+ + "\u0167\u0001\u0167\u0001\u0167\u0001\u0167\u0001\u0167\u0001\u0167\u0001"+ + "\u0167\u0001\u0167\u0001\u0167\u0001\u0167\u0001\u0167\u0001\u0168\u0001"+ + "\u0168\u0001\u0168\u0001\u0168\u0001\u0168\u0001\u0168\u0001\u0168\u0001"+ + "\u0168\u0001\u0168\u0001\u0168\u0001\u0168\u0001\u0168\u0001\u0169\u0001"+ + "\u0169\u0001\u0169\u0001\u0169\u0001\u0169\u0001\u0169\u0001\u0169\u0001"+ + "\u0169\u0001\u016a\u0001\u016a\u0001\u016a\u0001\u016a\u0001\u016a\u0001"+ + "\u016a\u0001\u016a\u0001\u016a\u0001\u016a\u0001\u016b\u0001\u016b\u0001"+ + "\u016b\u0001\u016b\u0001\u016b\u0001\u016b\u0001\u016b\u0001\u016b\u0001"+ + "\u016b\u0001\u016c\u0001\u016c\u0001\u016c\u0001\u016c\u0001\u016c\u0001"+ + "\u016c\u0001\u016d\u0001\u016d\u0001\u016d\u0001\u016d\u0001\u016d\u0001"+ + "\u016d\u0001\u016d\u0001\u016e\u0001\u016e\u0001\u016e\u0001\u016e\u0001"+ + "\u016e\u0001\u016e\u0001\u016e\u0001\u016f\u0001\u016f\u0001\u016f\u0001"+ + "\u016f\u0001\u016f\u0001\u016f\u0001\u0170\u0001\u0170\u0001\u0170\u0001"+ + "\u0170\u0001\u0170\u0001\u0170\u0001\u0170\u0001\u0170\u0001\u0170\u0001"+ + "\u0171\u0001\u0171\u0001\u0171\u0001\u0171\u0001\u0171\u0001\u0171\u0001"+ + "\u0171\u0001\u0171\u0001\u0171\u0001\u0171\u0001\u0172\u0001\u0172\u0001"+ + "\u0172\u0001\u0172\u0001\u0172\u0001\u0172\u0001\u0172\u0001\u0172\u0001"+ + "\u0173\u0001\u0173\u0001\u0173\u0001\u0173\u0001\u0173\u0001\u0173\u0001"+ + "\u0173\u0001\u0173\u0001\u0174\u0001\u0174\u0001\u0174\u0001\u0174\u0001"+ + "\u0174\u0001\u0175\u0001\u0175\u0001\u0175\u0001\u0175\u0001\u0175\u0001"+ + "\u0175\u0001\u0175\u0001\u0175\u0001\u0175\u0001\u0176\u0001\u0176\u0001"+ + "\u0176\u0001\u0176\u0001\u0176\u0001\u0176\u0001\u0176\u0001\u0176\u0001"+ + "\u0176\u0001\u0176\u0001\u0176\u0001\u0177\u0001\u0177\u0001\u0177\u0001"+ + "\u0177\u0001\u0177\u0001\u0177\u0001\u0177\u0001\u0177\u0001\u0178\u0001"+ + "\u0178\u0001\u0178\u0001\u0178\u0001\u0178\u0001\u0179\u0001\u0179\u0001"+ + "\u0179\u0001\u0179\u0001\u0179\u0001\u0179\u0001\u0179\u0001\u0179\u0001"+ + "\u017a\u0001\u017a\u0001\u017a\u0001\u017a\u0001\u017a\u0001\u017a\u0001"+ + "\u017b\u0001\u017b\u0001\u017b\u0001\u017b\u0001\u017c\u0001\u017c\u0001"+ + "\u017c\u0001\u017c\u0001\u017c\u0001\u017d\u0001\u017d\u0001\u017d\u0001"+ + "\u017d\u0001\u017e\u0001\u017e\u0001\u017e\u0001\u017e\u0001\u017e\u0001"+ + "\u017f\u0001\u017f\u0001\u017f\u0001\u017f\u0001\u017f\u0001\u017f\u0001"+ + "\u017f\u0001\u017f\u0001\u0180\u0001\u0180\u0001\u0180\u0001\u0180\u0001"+ + "\u0180\u0001\u0180\u0001\u0180\u0001\u0181\u0001\u0181\u0001\u0181\u0001"+ + "\u0181\u0001\u0182\u0001\u0182\u0001\u0182\u0001\u0182\u0001\u0182\u0001"+ + "\u0182\u0001\u0182\u0001\u0182\u0001\u0183\u0001\u0183\u0001\u0183\u0001"+ + "\u0183\u0001\u0183\u0001\u0184\u0001\u0184\u0001\u0184\u0001\u0184\u0001"+ + "\u0184\u0001\u0184\u0001\u0184\u0001\u0184\u0001\u0184\u0001\u0184\u0001"+ + "\u0185\u0001\u0185\u0001\u0185\u0001\u0185\u0001\u0185\u0001\u0185\u0001"+ + "\u0185\u0001\u0185\u0001\u0185\u0001\u0186\u0001\u0186\u0001\u0186\u0001"+ + "\u0186\u0001\u0187\u0001\u0187\u0001\u0187\u0001\u0187\u0001\u0187\u0001"+ + "\u0187\u0001\u0187\u0001\u0187\u0001\u0188\u0001\u0188\u0001\u0188\u0001"+ + "\u0188\u0001\u0188\u0001\u0188\u0001\u0188\u0001\u0189\u0001\u0189\u0001"+ + "\u0189\u0001\u0189\u0001\u0189\u0001\u0189\u0001\u0189\u0001\u0189\u0001"+ + "\u018a\u0001\u018a\u0001\u018a\u0001\u018a\u0001\u018a\u0001\u018a\u0001"+ + "\u018b\u0001\u018b\u0001\u018b\u0001\u018b\u0001\u018b\u0001\u018b\u0001"+ + "\u018b\u0001\u018b\u0001\u018b\u0001\u018c\u0001\u018c\u0001\u018c\u0001"+ + "\u018c\u0001\u018c\u0001\u018c\u0001\u018d\u0001\u018d\u0001\u018d\u0001"+ + "\u018d\u0001\u018e\u0001\u018e\u0001\u018e\u0001\u018e\u0001\u018e\u0001"+ + "\u018e\u0001\u018e\u0001\u018e\u0001\u018f\u0001\u018f\u0001\u018f\u0001"+ + "\u018f\u0001\u018f\u0001\u018f\u0001\u018f\u0001\u018f\u0001\u018f\u0001"+ + "\u0190\u0001\u0190\u0001\u0190\u0001\u0190\u0001\u0190\u0001\u0190\u0001"+ + "\u0191\u0001\u0191\u0001\u0191\u0001\u0191\u0001\u0191\u0001\u0191\u0001"+ + "\u0191\u0001\u0191\u0001\u0191\u0001\u0192\u0001\u0192\u0001\u0192\u0001"+ + "\u0192\u0001\u0192\u0001\u0192\u0001\u0193\u0001\u0193\u0001\u0193\u0001"+ + "\u0193\u0001\u0193\u0001\u0194\u0001\u0194\u0001\u0194\u0001\u0194\u0001"+ + "\u0194\u0001\u0194\u0001\u0194\u0001\u0195\u0001\u0195\u0001\u0195\u0001"+ + "\u0195\u0001\u0195\u0001\u0195\u0001\u0195\u0001\u0195\u0001\u0196\u0001"+ + "\u0196\u0001\u0196\u0001\u0196\u0001\u0196\u0001\u0196\u0001\u0196\u0001"+ + "\u0196\u0001\u0197\u0001\u0197\u0001\u0197\u0001\u0197\u0001\u0197\u0001"+ + "\u0197\u0001\u0197\u0001\u0197\u0001\u0197\u0001\u0198\u0001\u0198\u0001"+ + "\u0198\u0001\u0198\u0001\u0198\u0001\u0198\u0001\u0198\u0001\u0198\u0001"+ + "\u0198\u0001\u0198\u0001\u0199\u0001\u0199\u0001\u0199\u0001\u0199\u0001"+ + "\u0199\u0001\u019a\u0001\u019a\u0001\u019a\u0001\u019a\u0001\u019b\u0001"+ + "\u019b\u0001\u019b\u0001\u019b\u0001\u019b\u0001\u019b\u0001\u019c\u0001"+ + "\u019c\u0001\u019c\u0001\u019c\u0001\u019c\u0001\u019c\u0001\u019c\u0001"+ + "\u019c\u0001\u019c\u0001\u019d\u0001\u019d\u0001\u019d\u0001\u019d\u0001"+ + "\u019d\u0001\u019d\u0001\u019d\u0001\u019d\u0001\u019d\u0001\u019d\u0001"+ + "\u019e\u0001\u019e\u0001\u019e\u0001\u019e\u0001\u019e\u0001\u019f\u0001"+ + "\u019f\u0001\u019f\u0001\u019f\u0001\u019f\u0001\u019f\u0001\u019f\u0001"+ + "\u019f\u0001\u019f\u0001\u019f\u0001\u01a0\u0001\u01a0\u0001\u01a0\u0001"+ + "\u01a0\u0001\u01a0\u0001\u01a0\u0001\u01a1\u0001\u01a1\u0001\u01a1\u0001"+ + "\u01a1\u0001\u01a1\u0001\u01a2\u0001\u01a2\u0001\u01a2\u0001\u01a2\u0001"+ + "\u01a2\u0001\u01a2\u0001\u01a2\u0001\u01a3\u0001\u01a3\u0001\u01a3\u0001"+ + "\u01a3\u0001\u01a3\u0001\u01a3\u0001\u01a3\u0001\u01a3\u0001\u01a4\u0001"+ + "\u01a4\u0001\u01a4\u0001\u01a4\u0001\u01a4\u0001\u01a4\u0001\u01a4\u0001"+ + "\u01a4\u0001\u01a4\u0001\u01a4\u0001\u01a4\u0001\u01a4\u0001\u01a4\u0001"+ + "\u01a4\u0001\u01a5\u0001\u01a5\u0001\u01a5\u0001\u01a5\u0001\u01a5\u0001"+ + "\u01a5\u0001\u01a5\u0001\u01a5\u0001\u01a5\u0001\u01a5\u0001\u01a5\u0001"+ + "\u01a6\u0001\u01a6\u0001\u01a6\u0001\u01a6\u0001\u01a6\u0001\u01a6\u0001"+ + "\u01a6\u0001\u01a7\u0001\u01a7\u0001\u01a7\u0001\u01a7\u0001\u01a7\u0001"+ + "\u01a7\u0001\u01a7\u0001\u01a7\u0001\u01a7\u0001\u01a7\u0001\u01a7\u0001"+ + "\u01a7\u0001\u01a7\u0001\u01a7\u0001\u01a7\u0001\u01a7\u0001\u01a7\u0001"+ + "\u01a7\u0001\u01a7\u0001\u01a8\u0001\u01a8\u0001\u01a8\u0001\u01a8\u0001"+ + "\u01a8\u0001\u01a8\u0001\u01a8\u0001\u01a8\u0001\u01a8\u0001\u01a8\u0001"+ + "\u01a8\u0001\u01a8\u0001\u01a8\u0001\u01a8\u0001\u01a8\u0001\u01a8\u0001"+ + "\u01a8\u0001\u01a8\u0001\u01a8\u0001\u01a8\u0001\u01a8\u0001\u01a8\u0001"+ + "\u01a8\u0001\u01a8\u0001\u01a8\u0001\u01a8\u0001\u01a8\u0001\u01a8\u0001"+ + "\u01a9\u0001\u01a9\u0001\u01a9\u0001\u01a9\u0001\u01a9\u0001\u01a9\u0001"+ + "\u01a9\u0001\u01a9\u0001\u01a9\u0001\u01a9\u0001\u01a9\u0001\u01a9\u0001"+ + "\u01a9\u0001\u01a9\u0001\u01a9\u0001\u01a9\u0001\u01a9\u0001\u01a9\u0001"+ + "\u01a9\u0001\u01a9\u0001\u01a9\u0001\u01a9\u0001\u01a9\u0001\u01a9\u0001"+ + "\u01a9\u0001\u01a9\u0001\u01a9\u0001\u01aa\u0001\u01aa\u0001\u01aa\u0001"+ + "\u01aa\u0001\u01aa\u0001\u01aa\u0001\u01ab\u0001\u01ab\u0001\u01ab\u0001"+ + "\u01ab\u0001\u01ab\u0001\u01ab\u0001\u01ab\u0001\u01ab\u0001\u01ab\u0001"+ + "\u01ab\u0001\u01ab\u0001\u01ab\u0001\u01ab\u0001\u01ac\u0001\u01ac\u0001"+ + "\u01ac\u0001\u01ac\u0001\u01ac\u0001\u01ac\u0001\u01ac\u0001\u01ac\u0001"+ + "\u01ac\u0001\u01ac\u0001\u01ad\u0001\u01ad\u0001\u01ad\u0001\u01ad\u0001"+ + "\u01ad\u0001\u01ad\u0001\u01ad\u0001\u01ad\u0001\u01ad\u0001\u01ad\u0001"+ + "\u01ad\u0001\u01ae\u0001\u01ae\u0001\u01ae\u0001\u01ae\u0001\u01ae\u0001"+ + "\u01ae\u0001\u01ae\u0001\u01ae\u0001\u01ae\u0001\u01ae\u0001\u01af\u0001"+ + "\u01af\u0001\u01af\u0001\u01af\u0001\u01af\u0001\u01af\u0001\u01af\u0001"+ + "\u01af\u0001\u01af\u0001\u01af\u0001\u01b0\u0001\u01b0\u0001\u01b0\u0001"+ + "\u01b0\u0001\u01b0\u0001\u01b0\u0001\u01b0\u0001\u01b0\u0001\u01b0\u0001"+ + "\u01b1\u0001\u01b1\u0001\u01b1\u0001\u01b1\u0001\u01b1\u0001\u01b1\u0001"+ + "\u01b2\u0001\u01b2\u0001\u01b2\u0001\u01b2\u0001\u01b2\u0001\u01b2\u0001"+ + "\u01b2\u0001\u01b2\u0001\u01b3\u0001\u01b3\u0001\u01b3\u0001\u01b3\u0001"+ + "\u01b3\u0001\u01b3\u0001\u01b3\u0001\u01b3\u0001\u01b3\u0001\u01b3\u0001"+ + "\u01b3\u0001\u01b3\u0001\u01b3\u0001\u01b4\u0001\u01b4\u0001\u01b4\u0001"+ + "\u01b4\u0001\u01b4\u0001\u01b5\u0001\u01b5\u0001\u01b5\u0001\u01b5\u0001"+ + "\u01b5\u0001\u01b5\u0001\u01b5\u0001\u01b5\u0001\u01b6\u0001\u01b6\u0001"+ + "\u01b6\u0001\u01b6\u0001\u01b6\u0001\u01b6\u0001\u01b6\u0001\u01b7\u0001"+ + "\u01b7\u0001\u01b7\u0001\u01b7\u0001\u01b7\u0001\u01b7\u0001\u01b7\u0001"+ + "\u01b8\u0001\u01b8\u0001\u01b8\u0001\u01b8\u0001\u01b8\u0001\u01b8\u0001"+ + "\u01b8\u0001\u01b8\u0001\u01b8\u0001\u01b8\u0001\u01b8\u0001\u01b9\u0001"+ + "\u01b9\u0001\u01b9\u0001\u01b9\u0001\u01b9\u0001\u01b9\u0001\u01b9\u0001"+ + "\u01b9\u0001\u01b9\u0001\u01b9\u0001\u01ba\u0001\u01ba\u0001\u01ba\u0001"+ + "\u01ba\u0001\u01ba\u0001\u01ba\u0001\u01ba\u0001\u01bb\u0001\u01bb\u0001"+ + "\u01bb\u0001\u01bb\u0001\u01bb\u0001\u01bb\u0001\u01bb\u0001\u01bc\u0001"+ + "\u01bc\u0001\u01bc\u0001\u01bc\u0001\u01bc\u0001\u01bc\u0001\u01bc\u0001"+ + "\u01bc\u0001\u01bd\u0001\u01bd\u0001\u01bd\u0001\u01bd\u0001\u01bd\u0001"+ + "\u01bd\u0001\u01bd\u0001\u01bd\u0001\u01be\u0001\u01be\u0001\u01be\u0001"+ + "\u01be\u0001\u01be\u0001\u01be\u0001\u01be\u0001\u01be\u0001\u01be\u0001"+ + "\u01be\u0001\u01bf\u0001\u01bf\u0001\u01bf\u0001\u01bf\u0001\u01bf\u0001"+ + "\u01bf\u0001\u01bf\u0001\u01c0\u0001\u01c0\u0001\u01c0\u0001\u01c0\u0001"+ + "\u01c0\u0001\u01c0\u0001\u01c0\u0001\u01c1\u0001\u01c1\u0001\u01c1\u0001"+ + "\u01c1\u0001\u01c1\u0001\u01c1\u0001\u01c1\u0001\u01c2\u0001\u01c2\u0001"+ + "\u01c2\u0001\u01c2\u0001\u01c2\u0001\u01c2\u0001\u01c2\u0001\u01c2\u0001"+ + "\u01c2\u0001\u01c2\u0001\u01c2\u0001\u01c2\u0001\u01c3\u0001\u01c3\u0001"+ + "\u01c3\u0001\u01c3\u0001\u01c4\u0001\u01c4\u0001\u01c4\u0001\u01c4\u0001"+ + "\u01c5\u0001\u01c5\u0001\u01c5\u0001\u01c5\u0001\u01c5\u0001\u01c5\u0001"+ + "\u01c6\u0001\u01c6\u0001\u01c6\u0001\u01c6\u0001\u01c6\u0001\u01c6\u0001"+ + "\u01c6\u0001\u01c6\u0001\u01c6\u0001\u01c6\u0001\u01c6\u0001\u01c6\u0001"+ + "\u01c6\u0001\u01c7\u0001\u01c7\u0001\u01c7\u0001\u01c7\u0001\u01c7\u0001"+ + "\u01c7\u0001\u01c7\u0001\u01c7\u0001\u01c7\u0001\u01c7\u0001\u01c7\u0001"+ + "\u01c7\u0001\u01c8\u0001\u01c8\u0001\u01c8\u0001\u01c8\u0001\u01c9\u0001"+ + "\u01c9\u0001\u01c9\u0001\u01c9\u0001\u01ca\u0001\u01ca\u0001\u01ca\u0001"+ + "\u01ca\u0001\u01ca\u0001\u01ca\u0001\u01ca\u0001\u01ca\u0001\u01ca\u0001"+ + "\u01cb\u0001\u01cb\u0001\u01cb\u0001\u01cb\u0001\u01cb\u0001\u01cb\u0001"+ + "\u01cb\u0001\u01cb\u0001\u01cc\u0001\u01cc\u0001\u01cc\u0001\u01cc\u0001"+ + "\u01cc\u0001\u01cc\u0001\u01cc\u0001\u01cc\u0001\u01cc\u0001\u01cc\u0001"+ + "\u01cc\u0001\u01cd\u0001\u01cd\u0001\u01cd\u0001\u01cd\u0001\u01cd\u0001"+ + "\u01cd\u0001\u01ce\u0001\u01ce\u0001\u01ce\u0001\u01ce\u0001\u01ce\u0001"+ + "\u01ce\u0001\u01ce\u0001\u01ce\u0001\u01cf\u0001\u01cf\u0001\u01cf\u0001"+ + "\u01cf\u0001\u01cf\u0001\u01cf\u0001\u01cf\u0001\u01cf\u0001\u01cf\u0001"+ + "\u01d0\u0001\u01d0\u0001\u01d0\u0001\u01d0\u0001\u01d1\u0001\u01d1\u0001"+ + "\u01d1\u0001\u01d1\u0001\u01d1\u0001\u01d1\u0001\u01d1\u0001\u01d1\u0001"+ + "\u01d2\u0001\u01d2\u0001\u01d2\u0001\u01d2\u0001\u01d2\u0001\u01d2\u0001"+ + "\u01d2\u0001\u01d2\u0001\u01d2\u0001\u01d2\u0001\u01d2\u0001\u01d3\u0001"+ + "\u01d3\u0001\u01d3\u0001\u01d3\u0001\u01d3\u0001\u01d3\u0001\u01d3\u0001"+ + "\u01d3\u0001\u01d3\u0001\u01d4\u0001\u01d4\u0001\u01d4\u0001\u01d4\u0001"+ + "\u01d4\u0001\u01d5\u0001\u01d5\u0001\u01d5\u0001\u01d5\u0001\u01d5\u0001"+ + "\u01d5\u0001\u01d5\u0001\u01d6\u0001\u01d6\u0001\u01d6\u0001\u01d6\u0001"+ + "\u01d6\u0001\u01d7\u0001\u01d7\u0001\u01d7\u0001\u01d7\u0001\u01d7\u0001"+ + "\u01d7\u0001\u01d7\u0001\u01d8\u0001\u01d8\u0001\u01d8\u0001\u01d8\u0001"+ + "\u01d8\u0001\u01d9\u0001\u01d9\u0001\u01d9\u0001\u01d9\u0001\u01d9\u0001"+ + "\u01d9\u0001\u01d9\u0001\u01d9\u0001\u01d9\u0001\u01da\u0001\u01da\u0001"+ + "\u01da\u0001\u01da\u0001\u01da\u0001\u01db\u0001\u01db\u0001\u01db\u0001"+ + "\u01db\u0001\u01db\u0001\u01db\u0001\u01db\u0001\u01db\u0001\u01db\u0001"+ + "\u01db\u0001\u01db\u0001\u01db\u0001\u01dc\u0001\u01dc\u0001\u01dc\u0001"+ + "\u01dc\u0001\u01dc\u0001\u01dc\u0001\u01dc\u0001\u01dc\u0001\u01dc\u0001"+ + "\u01dc\u0001\u01dc\u0001\u01dd\u0001\u01dd\u0001\u01dd\u0001\u01dd\u0001"+ + "\u01dd\u0001\u01dd\u0001\u01dd\u0001\u01dd\u0001\u01dd\u0001\u01de\u0001"+ + "\u01de\u0001\u01de\u0001\u01de\u0001\u01de\u0001\u01de\u0001\u01de\u0001"+ + "\u01de\u0001\u01df\u0001\u01df\u0001\u01df\u0001\u01df\u0001\u01df\u0001"+ + "\u01df\u0001\u01df\u0001\u01df\u0001\u01df\u0001\u01df\u0001\u01df\u0001"+ + "\u01df\u0001\u01df\u0001\u01df\u0001\u01e0\u0001\u01e0\u0001\u01e0\u0001"+ + "\u01e0\u0001\u01e0\u0001\u01e0\u0001\u01e0\u0001\u01e0\u0001\u01e1\u0001"+ + "\u01e1\u0001\u01e1\u0001\u01e1\u0001\u01e1\u0001\u01e1\u0001\u01e1\u0001"+ + "\u01e1\u0001\u01e1\u0001\u01e1\u0001\u01e1\u0001\u01e2\u0001\u01e2\u0001"+ + "\u01e2\u0001\u01e2\u0001\u01e2\u0001\u01e2\u0001\u01e2\u0001\u01e3\u0001"+ + "\u01e3\u0001\u01e3\u0001\u01e3\u0001\u01e3\u0001\u01e3\u0001\u01e3\u0001"+ + "\u01e4\u0001\u01e4\u0001\u01e4\u0001\u01e4\u0001\u01e4\u0001\u01e4\u0001"+ + "\u01e4\u0001\u01e5\u0001\u01e5\u0001\u01e5\u0001\u01e5\u0001\u01e5\u0001"+ + "\u01e5\u0001\u01e5\u0001\u01e6\u0001\u01e6\u0001\u01e6\u0001\u01e6\u0001"+ + "\u01e7\u0001\u01e7\u0001\u01e7\u0001\u01e7\u0001\u01e8\u0001\u01e8\u0001"+ + "\u01e8\u0001\u01e8\u0001\u01e8\u0001\u01e9\u0001\u01e9\u0001\u01e9\u0001"+ + "\u01e9\u0001\u01e9\u0001\u01ea\u0001\u01ea\u0001\u01ea\u0001\u01ea\u0001"+ + "\u01ea\u0001\u01ea\u0001\u01ea\u0001\u01ea\u0001\u01eb\u0001\u01eb\u0001"+ + "\u01eb\u0001\u01eb\u0001\u01eb\u0001\u01eb\u0001\u01ec\u0001\u01ec\u0001"+ + "\u01ec\u0001\u01ec\u0001\u01ec\u0001\u01ec\u0001\u01ec\u0001\u01ec\u0001"+ + "\u01ec\u0001\u01ec\u0001\u01ed\u0001\u01ed\u0001\u01ed\u0001\u01ed\u0001"+ + "\u01ed\u0001\u01ee\u0001\u01ee\u0001\u01ee\u0001\u01ee\u0001\u01ee\u0001"+ + "\u01ee\u0001\u01ee\u0001\u01ee\u0001\u01ee\u0001\u01ee\u0001\u01ee\u0001"+ + "\u01ee\u0001\u01ee\u0001\u01ee\u0001\u01ee\u0001\u01ee\u0001\u01ee\u0001"+ + "\u01ee\u0001\u01ee\u0001\u01ee\u0001\u01ef\u0001\u01ef\u0001\u01ef\u0001"+ + "\u01ef\u0001\u01ef\u0001\u01ef\u0001\u01ef\u0001\u01ef\u0001\u01ef\u0001"+ + "\u01ef\u0001\u01ef\u0001\u01ef\u0001\u01ef\u0001\u01ef\u0001\u01ef\u0001"+ + "\u01ef\u0001\u01ef\u0001\u01ef\u0001\u01f0\u0001\u01f0\u0001\u01f0\u0001"+ + "\u01f0\u0001\u01f0\u0001\u01f0\u0001\u01f1\u0001\u01f1\u0001\u01f1\u0001"+ + "\u01f1\u0001\u01f1\u0001\u01f1\u0001\u01f1\u0001\u01f1\u0001\u01f1\u0001"+ + "\u01f1\u0001\u01f1\u0001\u01f1\u0001\u01f1\u0001\u01f2\u0001\u01f2\u0001"+ + "\u01f2\u0001\u01f2\u0001\u01f2\u0001\u01f2\u0001\u01f2\u0001\u01f2\u0001"+ + "\u01f2\u0001\u01f2\u0001\u01f2\u0001\u01f3\u0001\u01f3\u0001\u01f3\u0001"+ + "\u01f3\u0001\u01f3\u0001\u01f3\u0001\u01f4\u0001\u01f4\u0001\u01f4\u0001"+ + "\u01f4\u0001\u01f4\u0001\u01f4\u0001\u01f4\u0001\u01f4\u0001\u01f4\u0001"+ + "\u01f5\u0001\u01f5\u0001\u01f5\u0001\u01f5\u0001\u01f5\u0001\u01f5\u0001"+ + "\u01f5\u0001\u01f5\u0001\u01f6\u0001\u01f6\u0001\u01f6\u0001\u01f6\u0001"+ + "\u01f7\u0001\u01f7\u0001\u01f7\u0001\u01f7\u0001\u01f7\u0001\u01f7\u0001"+ + "\u01f7\u0001\u01f7\u0001\u01f7\u0001\u01f7\u0001\u01f7\u0001\u01f7\u0001"+ + "\u01f8\u0001\u01f8\u0001\u01f8\u0001\u01f8\u0001\u01f8\u0001\u01f8\u0001"+ + "\u01f8\u0001\u01f8\u0001\u01f9\u0001\u01f9\u0001\u01f9\u0001\u01f9\u0001"+ + "\u01f9\u0001\u01f9\u0001\u01fa\u0001\u01fa\u0001\u01fa\u0001\u01fa\u0001"+ + "\u01fa\u0001\u01fa\u0001\u01fb\u0001\u01fb\u0001\u01fb\u0001\u01fb\u0001"+ + "\u01fb\u0001\u01fb\u0001\u01fb\u0001\u01fb\u0001\u01fc\u0001\u01fc\u0001"+ + "\u01fc\u0001\u01fc\u0001\u01fc\u0001\u01fc\u0001\u01fc\u0001\u01fc\u0001"+ + "\u01fd\u0001\u01fd\u0001\u01fd\u0001\u01fd\u0001\u01fd\u0001\u01fd\u0001"+ + "\u01fe\u0001\u01fe\u0001\u01fe\u0001\u01fe\u0001\u01fe\u0001\u01ff\u0001"+ + "\u01ff\u0001\u01ff\u0001\u01ff\u0001\u01ff\u0001\u01ff\u0001\u01ff\u0001"+ + "\u0200\u0001\u0200\u0001\u0200\u0001\u0200\u0001\u0200\u0001\u0200\u0001"+ + "\u0201\u0001\u0201\u0001\u0201\u0001\u0201\u0001\u0201\u0001\u0201\u0001"+ + "\u0202\u0001\u0202\u0001\u0202\u0001\u0202\u0001\u0202\u0001\u0202\u0001"+ + "\u0202\u0001\u0202\u0001\u0202\u0001\u0203\u0001\u0203\u0001\u0203\u0001"+ + "\u0203\u0001\u0203\u0001\u0203\u0001\u0204\u0001\u0204\u0001\u0204\u0001"+ + "\u0204\u0001\u0205\u0001\u0205\u0001\u0205\u0001\u0205\u0001\u0205\u0001"+ + "\u0206\u0001\u0206\u0001\u0206\u0001\u0206\u0001\u0206\u0001\u0206\u0001"+ + "\u0206\u0001\u0207\u0001\u0207\u0001\u0207\u0001\u0207\u0001\u0207\u0001"+ + "\u0207\u0001\u0207\u0001\u0207\u0001\u0208\u0001\u0208\u0001\u0208\u0001"+ + "\u0208\u0001\u0208\u0001\u0208\u0001\u0208\u0001\u0208\u0001\u0208\u0001"+ + "\u0208\u0001\u0209\u0001\u0209\u0001\u0209\u0001\u0209\u0001\u0209\u0001"+ + "\u0209\u0001\u0209\u0001\u020a\u0001\u020a\u0001\u020a\u0001\u020a\u0001"+ + "\u020a\u0001\u020b\u0001\u020b\u0001\u020b\u0001\u020b\u0001\u020b\u0001"+ + "\u020c\u0001\u020c\u0001\u020c\u0001\u020c\u0001\u020d\u0001\u020d\u0001"+ + "\u020d\u0001\u020d\u0001\u020d\u0001\u020e\u0001\u020e\u0001\u020e\u0001"+ + "\u020e\u0001\u020e\u0001\u020f\u0001\u020f\u0001\u020f\u0001\u020f\u0001"+ + "\u020f\u0001\u020f\u0001\u020f\u0001\u020f\u0001\u0210\u0001\u0210\u0001"+ + "\u0210\u0001\u0210\u0001\u0210\u0001\u0210\u0001\u0210\u0001\u0210\u0001"+ + "\u0211\u0001\u0211\u0001\u0211\u0001\u0211\u0001\u0212\u0001\u0212\u0001"+ + "\u0212\u0001\u0212\u0001\u0213\u0001\u0213\u0001\u0213\u0001\u0213\u0001"+ + "\u0213\u0001\u0213\u0001\u0213\u0001\u0213\u0001\u0213\u0001\u0213\u0001"+ + "\u0214\u0001\u0214\u0001\u0214\u0001\u0214\u0001\u0214\u0001\u0214\u0001"+ + "\u0215\u0001\u0215\u0001\u0215\u0001\u0215\u0001\u0216\u0001\u0216\u0001"+ + "\u0216\u0001\u0216\u0001\u0217\u0001\u0217\u0001\u0217\u0001\u0218\u0001"+ + "\u0218\u0001\u0218\u0001\u0218\u0001\u0218\u0001\u0218\u0001\u0219\u0001"+ + "\u0219\u0001\u0219\u0001\u0219\u0001\u0219\u0001\u0219\u0001\u0219\u0001"+ + "\u0219\u0001\u0219\u0001\u0219\u0001\u021a\u0001\u021a\u0001\u021a\u0001"+ + "\u021a\u0001\u021b\u0001\u021b\u0001\u021b\u0001\u021c\u0001\u021c\u0001"+ + "\u021c\u0001\u021c\u0001\u021c\u0001\u021c\u0001\u021d\u0001\u021d\u0001"+ + "\u021d\u0001\u021d\u0001\u021d\u0001\u021d\u0001\u021d\u0001\u021d\u0001"+ + "\u021e\u0001\u021e\u0001\u021e\u0001\u021e\u0001\u021e\u0001\u021e\u0001"+ + "\u021f\u0001\u021f\u0001\u021f\u0001\u021f\u0001\u021f\u0001\u021f\u0001"+ + "\u0220\u0001\u0220\u0001\u0220\u0001\u0220\u0001\u0220\u0001\u0221\u0001"+ + "\u0221\u0001\u0221\u0001\u0221\u0001\u0221\u0001\u0222\u0001\u0222\u0001"+ + "\u0222\u0001\u0222\u0001\u0222\u0001\u0222\u0001\u0222\u0001\u0222\u0001"+ + "\u0222\u0001\u0222\u0001\u0222\u0001\u0223\u0001\u0223\u0001\u0223\u0001"+ + "\u0223\u0001\u0223\u0001\u0223\u0001\u0224\u0001\u0224\u0001\u0224\u0001"+ + "\u0224\u0001\u0224\u0001\u0224\u0001\u0224\u0001\u0224\u0001\u0224\u0001"+ + "\u0224\u0001\u0224\u0001\u0224\u0001\u0224\u0001\u0225\u0001\u0225\u0001"+ + "\u0225\u0001\u0225\u0001\u0225\u0001\u0225\u0001\u0225\u0001\u0226\u0001"+ + "\u0226\u0001\u0226\u0001\u0226\u0001\u0226\u0001\u0226\u0001\u0226\u0001"+ + "\u0226\u0001\u0227\u0001\u0227\u0001\u0227\u0001\u0227\u0001\u0227\u0001"+ + "\u0228\u0001\u0228\u0001\u0228\u0001\u0228\u0001\u0228\u0001\u0228\u0001"+ + "\u0229\u0001\u0229\u0001\u0229\u0001\u0229\u0001\u0229\u0001\u022a\u0001"+ + "\u022a\u0001\u022a\u0001\u022a\u0001\u022a\u0001\u022a\u0001\u022b\u0001"+ + "\u022b\u0001\u022b\u0001\u022b\u0001\u022b\u0001\u022c\u0001\u022c\u0001"+ + "\u022c\u0001\u022c\u0001\u022c\u0001\u022c\u0001\u022d\u0001\u022d\u0001"+ + "\u022d\u0001\u022d\u0001\u022d\u0001\u022d\u0001\u022e\u0001\u022e\u0001"+ + "\u022e\u0001\u022e\u0001\u022e\u0001\u022e\u0001\u022e\u0001\u022f\u0001"+ + "\u022f\u0001\u022f\u0001\u022f\u0001\u0230\u0001\u0230\u0001\u0230\u0001"+ + "\u0230\u0001\u0230\u0001\u0231\u0001\u0231\u0001\u0231\u0001\u0231\u0001"+ + "\u0232\u0001\u0232\u0001\u0232\u0001\u0232\u0001\u0232\u0001\u0233\u0001"+ + "\u0233\u0001\u0233\u0001\u0233\u0001\u0234\u0001\u0234\u0001\u0234\u0001"+ + "\u0234\u0001\u0234\u0001\u0235\u0001\u0235\u0001\u0235\u0001\u0235\u0001"+ + "\u0236\u0001\u0236\u0001\u0236\u0001\u0236\u0001\u0236\u0001\u0237\u0001"+ + "\u0237\u0001\u0237\u0001\u0237\u0001\u0237\u0001\u0238\u0001\u0238\u0001"+ + "\u0238\u0001\u0238\u0001\u0238\u0001\u0239\u0001\u0239\u0001\u0239\u0001"+ + "\u0239\u0001\u0239\u0001\u023a\u0001\u023a\u0001\u023a\u0001\u023a\u0001"+ + "\u023a\u0001\u023a\u0001\u023b\u0001\u023b\u0001\u023b\u0001\u023b\u0001"+ + "\u023b\u0001\u023b\u0001\u023c\u0001\u023c\u0001\u023c\u0001\u023c\u0001"+ + "\u023c\u0001\u023c\u0001\u023d\u0001\u023d\u0001\u023d\u0001\u023d\u0001"+ + "\u023d\u0001\u023d\u0001\u023d\u0001\u023d\u0001\u023d\u0001\u023d\u0001"+ + "\u023d\u0001\u023e\u0001\u023e\u0001\u023e\u0001\u023e\u0001\u023e\u0001"+ + "\u023e\u0001\u023e\u0001\u023e\u0001\u023e\u0001\u023e\u0001\u023e\u0001"+ + "\u023e\u0001\u023f\u0001\u023f\u0001\u023f\u0001\u023f\u0001\u023f\u0001"+ + "\u023f\u0001\u023f\u0001\u023f\u0001\u023f\u0001\u023f\u0001\u023f\u0001"+ + "\u023f\u0001\u023f\u0001\u023f\u0001\u023f\u0001\u023f\u0001\u023f\u0001"+ + "\u0240\u0001\u0240\u0001\u0240\u0001\u0240\u0001\u0240\u0001\u0240\u0001"+ + "\u0241\u0001\u0241\u0001\u0241\u0001\u0241\u0001\u0241\u0001\u0241\u0001"+ + "\u0241\u0001\u0241\u0001\u0241\u0001\u0241\u0001\u0241\u0001\u0241\u0001"+ + "\u0241\u0001\u0242\u0001\u0242\u0001\u0242\u0001\u0242\u0001\u0242\u0001"+ + "\u0242\u0001\u0243\u0001\u0243\u0001\u0243\u0001\u0243\u0001\u0243\u0001"+ + "\u0243\u0001\u0244\u0001\u0244\u0001\u0244\u0001\u0244\u0001\u0244\u0001"+ + "\u0244\u0001\u0245\u0001\u0245\u0001\u0245\u0001\u0245\u0001\u0246\u0001"+ + "\u0246\u0001\u0246\u0001\u0246\u0001\u0246\u0001\u0246\u0001\u0246\u0001"+ + "\u0247\u0001\u0247\u0001\u0247\u0001\u0247\u0001\u0247\u0001\u0247\u0001"+ + "\u0247\u0001\u0247\u0001\u0247\u0001\u0247\u0001\u0248\u0001\u0248\u0001"+ + "\u0248\u0001\u0248\u0001\u0248\u0001\u0248\u0001\u0248\u0001\u0249\u0001"+ + "\u0249\u0001\u0249\u0001\u0249\u0001\u0249\u0001\u0249\u0001\u0249\u0001"+ + "\u0249\u0001\u024a\u0001\u024a\u0001\u024a\u0001\u024a\u0001\u024a\u0001"+ + "\u024a\u0001\u024a\u0001\u024b\u0001\u024b\u0001\u024b\u0001\u024b\u0001"+ + "\u024b\u0001\u024c\u0001\u024c\u0001\u024c\u0001\u024c\u0001\u024c\u0001"+ + "\u024c\u0001\u024d\u0001\u024d\u0001\u024d\u0001\u024d\u0001\u024e\u0001"+ + "\u024e\u0001\u024e\u0001\u024e\u0001\u024e\u0001\u024e\u0001\u024e\u0001"+ + "\u024e\u0001\u024e\u0001\u024e\u0001\u024e\u0001\u024e\u0001\u024f\u0001"+ + "\u024f\u0001\u024f\u0001\u024f\u0001\u024f\u0001\u024f\u0001\u024f\u0001"+ + "\u024f\u0001\u024f\u0001\u024f\u0001\u024f\u0001\u024f\u0001\u024f\u0001"+ + "\u024f\u0001\u024f\u0001\u024f\u0001\u024f\u0001\u024f\u0001\u024f\u0001"+ + "\u0250\u0001\u0250\u0001\u0250\u0001\u0250\u0001\u0250\u0001\u0250\u0001"+ + "\u0250\u0001\u0250\u0001\u0250\u0001\u0250\u0001\u0250\u0001\u0250\u0001"+ + "\u0251\u0001\u0251\u0001\u0251\u0001\u0251\u0001\u0251\u0001\u0251\u0001"+ + "\u0251\u0001\u0251\u0001\u0251\u0001\u0251\u0001\u0251\u0001\u0251\u0001"+ + "\u0251\u0001\u0251\u0001\u0252\u0001\u0252\u0001\u0252\u0001\u0252\u0001"+ + "\u0252\u0001\u0252\u0001\u0252\u0001\u0252\u0001\u0252\u0001\u0252\u0001"+ + "\u0252\u0001\u0252\u0001\u0252\u0001\u0252\u0001\u0252\u0001\u0253\u0001"+ + "\u0253\u0001\u0253\u0001\u0253\u0001\u0253\u0001\u0253\u0001\u0253\u0001"+ + "\u0253\u0001\u0253\u0001\u0253\u0001\u0253\u0001\u0253\u0001\u0253\u0001"+ + "\u0254\u0001\u0254\u0001\u0254\u0001\u0254\u0001\u0254\u0001\u0254\u0001"+ + "\u0254\u0001\u0254\u0001\u0254\u0001\u0254\u0001\u0254\u0001\u0254\u0001"+ + "\u0254\u0001\u0255\u0001\u0255\u0001\u0255\u0001\u0255\u0001\u0255\u0001"+ + "\u0255\u0001\u0255\u0001\u0255\u0001\u0255\u0001\u0255\u0001\u0255\u0001"+ + "\u0255\u0001\u0256\u0001\u0256\u0001\u0256\u0001\u0256\u0001\u0256\u0001"+ + "\u0256\u0001\u0256\u0001\u0256\u0001\u0256\u0001\u0256\u0001\u0256\u0001"+ + "\u0256\u0001\u0256\u0001\u0257\u0001\u0257\u0001\u0257\u0001\u0257\u0001"+ + "\u0257\u0001\u0257\u0001\u0257\u0001\u0257\u0001\u0257\u0001\u0257\u0001"+ + "\u0257\u0001\u0257\u0001\u0257\u0001\u0257\u0001\u0257\u0001\u0258\u0001"+ + "\u0258\u0001\u0258\u0001\u0258\u0001\u0258\u0001\u0258\u0001\u0258\u0001"+ + "\u0258\u0001\u0258\u0001\u0258\u0001\u0258\u0001\u0258\u0001\u0258\u0001"+ + "\u0258\u0001\u0258\u0001\u0259\u0001\u0259\u0001\u0259\u0001\u0259\u0001"+ + "\u0259\u0001\u0259\u0001\u0259\u0001\u0259\u0001\u0259\u0001\u0259\u0001"+ + "\u0259\u0001\u0259\u0001\u0259\u0001\u0259\u0001\u0259\u0001\u0259\u0001"+ + "\u0259\u0001\u0259\u0001\u0259\u0001\u0259\u0001\u0259\u0001\u0259\u0001"+ + "\u025a\u0001\u025a\u0001\u025a\u0001\u025a\u0001\u025a\u0001\u025a\u0001"+ + "\u025a\u0001\u025a\u0001\u025a\u0001\u025a\u0001\u025a\u0001\u025a\u0001"+ + "\u025a\u0001\u025a\u0001\u025a\u0001\u025a\u0001\u025a\u0001\u025a\u0001"+ + "\u025a\u0001\u025a\u0001\u025a\u0001\u025a\u0001\u025b\u0001\u025b\u0001"+ + "\u025b\u0001\u025b\u0001\u025b\u0001\u025b\u0001\u025b\u0001\u025b\u0001"+ + "\u025b\u0001\u025b\u0001\u025b\u0001\u025b\u0001\u025b\u0001\u025b\u0001"+ + "\u025c\u0001\u025c\u0001\u025c\u0001\u025c\u0001\u025c\u0001\u025c\u0001"+ + "\u025c\u0001\u025d\u0001\u025d\u0001\u025d\u0001\u025d\u0001\u025d\u0001"+ + "\u025e\u0001\u025e\u0001\u025e\u0001\u025e\u0001\u025e\u0001\u025e\u0001"+ + "\u025f\u0001\u025f\u0001\u025f\u0001\u025f\u0001\u025f\u0001\u025f\u0001"+ + "\u025f\u0001\u025f\u0001\u025f\u0001\u025f\u0001\u025f\u0001\u0260\u0001"+ + "\u0260\u0001\u0260\u0001\u0260\u0001\u0260\u0001\u0260\u0001\u0260\u0001"+ + "\u0260\u0001\u0260\u0001\u0260\u0001\u0260\u0001\u0260\u0001\u0261\u0001"+ + "\u0261\u0001\u0261\u0001\u0261\u0001\u0261\u0001\u0261\u0001\u0261\u0001"+ + "\u0261\u0001\u0261\u0001\u0261\u0001\u0261\u0001\u0261\u0001\u0261\u0001"+ + "\u0261\u0001\u0261\u0001\u0261\u0001\u0262\u0001\u0262\u0001\u0262\u0001"+ + "\u0262\u0001\u0262\u0001\u0262\u0001\u0262\u0001\u0262\u0001\u0262\u0001"+ + "\u0262\u0001\u0262\u0001\u0262\u0001\u0262\u0001\u0262\u0001\u0262\u0001"+ + "\u0262\u0001\u0263\u0001\u0263\u0001\u0263\u0001\u0263\u0001\u0263\u0001"+ + "\u0263\u0001\u0263\u0001\u0264\u0001\u0264\u0001\u0264\u0001\u0264\u0001"+ + "\u0264\u0001\u0264\u0001\u0264\u0001\u0265\u0001\u0265\u0001\u0265\u0001"+ + "\u0265\u0001\u0265\u0001\u0265\u0001\u0265\u0001\u0265\u0001\u0265\u0001"+ + "\u0266\u0001\u0266\u0001\u0266\u0001\u0266\u0001\u0266\u0001\u0266\u0001"+ + "\u0266\u0001\u0267\u0001\u0267\u0001\u0267\u0001\u0267\u0001\u0267\u0001"+ + "\u0267\u0001\u0267\u0001\u0267\u0001\u0267\u0001\u0267\u0001\u0268\u0001"+ + "\u0268\u0001\u0268\u0001\u0268\u0001\u0268\u0001\u0268\u0001\u0268\u0001"+ + "\u0269\u0001\u0269\u0001\u0269\u0001\u0269\u0001\u026a\u0001\u026a\u0001"+ + "\u026a\u0001\u026a\u0001\u026a\u0001\u026a\u0001\u026a\u0001\u026a\u0001"+ + "\u026a\u0001\u026a\u0001\u026a\u0001\u026a\u0001\u026a\u0001\u026a\u0001"+ + "\u026a\u0001\u026a\u0001\u026b\u0001\u026b\u0001\u026b\u0001\u026b\u0001"+ + "\u026b\u0001\u026b\u0001\u026b\u0001\u026b\u0001\u026b\u0001\u026c\u0001"+ + "\u026c\u0001\u026c\u0001\u026c\u0001\u026c\u0001\u026c\u0001\u026c\u0001"+ + "\u026c\u0001\u026c\u0001\u026c\u0001\u026d\u0001\u026d\u0001\u026d\u0001"+ + "\u026d\u0001\u026d\u0001\u026d\u0001\u026d\u0001\u026d\u0001\u026d\u0001"+ + "\u026d\u0001\u026d\u0001\u026e\u0001\u026e\u0001\u026e\u0001\u026e\u0001"+ + "\u026e\u0001\u026e\u0001\u026e\u0001\u026e\u0001\u026e\u0001\u026f\u0001"+ + "\u026f\u0001\u026f\u0001\u026f\u0001\u026f\u0001\u026f\u0001\u026f\u0001"+ + "\u026f\u0001\u026f\u0001\u026f\u0001\u026f\u0001\u026f\u0001\u026f\u0001"+ + "\u0270\u0001\u0270\u0001\u0270\u0001\u0270\u0001\u0270\u0001\u0270\u0001"+ + "\u0270\u0001\u0270\u0001\u0270\u0001\u0270\u0001\u0270\u0001\u0270\u0001"+ + "\u0270\u0001\u0270\u0001\u0271\u0001\u0271\u0001\u0271\u0001\u0271\u0001"+ + "\u0271\u0001\u0271\u0001\u0271\u0001\u0271\u0001\u0271\u0001\u0271\u0001"+ + "\u0271\u0001\u0271\u0001\u0271\u0001\u0271\u0001\u0271\u0001\u0271\u0001"+ + "\u0271\u0001\u0272\u0001\u0272\u0001\u0272\u0001\u0272\u0001\u0272\u0001"+ + "\u0272\u0001\u0272\u0001\u0272\u0001\u0272\u0001\u0272\u0001\u0273\u0001"+ + "\u0273\u0001\u0273\u0001\u0273\u0001\u0273\u0001\u0273\u0001\u0273\u0001"+ + "\u0273\u0001\u0273\u0001\u0273\u0001\u0273\u0001\u0273\u0001\u0273\u0001"+ + "\u0273\u0001\u0274\u0001\u0274\u0001\u0274\u0001\u0274\u0001\u0274\u0001"+ + "\u0274\u0001\u0274\u0001\u0274\u0001\u0274\u0001\u0274\u0001\u0275\u0001"+ + "\u0275\u0001\u0275\u0001\u0275\u0001\u0275\u0001\u0275\u0001\u0275\u0001"+ + "\u0275\u0001\u0275\u0001\u0275\u0001\u0275\u0001\u0275\u0001\u0275\u0001"+ + "\u0275\u0001\u0275\u0001\u0276\u0001\u0276\u0001\u0276\u0001\u0276\u0001"+ + "\u0276\u0001\u0276\u0001\u0276\u0001\u0276\u0001\u0276\u0001\u0276\u0001"+ + "\u0276\u0001\u0276\u0001\u0276\u0001\u0276\u0001\u0276\u0001\u0276\u0001"+ + "\u0276\u0001\u0277\u0001\u0277\u0001\u0277\u0001\u0277\u0001\u0278\u0001"+ + "\u0278\u0001\u0278\u0001\u0278\u0001\u0278\u0001\u0278\u0001\u0278\u0001"+ + "\u0278\u0001\u0278\u0001\u0278\u0001\u0278\u0001\u0278\u0001\u0278\u0001"+ + "\u0278\u0001\u0278\u0001\u0278\u0001\u0278\u0001\u0278\u0001\u0278\u0001"+ + "\u0278\u0001\u0279\u0001\u0279\u0001\u0279\u0001\u0279\u0001\u0279\u0001"+ + "\u0279\u0001\u0279\u0001\u0279\u0001\u0279\u0001\u0279\u0001\u027a\u0001"+ + "\u027a\u0001\u027a\u0001\u027a\u0001\u027a\u0001\u027a\u0001\u027a\u0001"+ + "\u027a\u0001\u027a\u0001\u027a\u0001\u027a\u0001\u027a\u0001\u027a\u0001"+ + "\u027a\u0001\u027a\u0001\u027a\u0001\u027a\u0001\u027a\u0001\u027a\u0001"+ + "\u027a\u0001\u027a\u0001\u027a\u0001\u027b\u0001\u027b\u0001\u027b\u0001"+ + "\u027b\u0001\u027b\u0001\u027b\u0001\u027b\u0001\u027b\u0001\u027b\u0001"+ + "\u027b\u0001\u027b\u0001\u027b\u0001\u027b\u0001\u027c\u0001\u027c\u0001"+ + "\u027c\u0001\u027c\u0001\u027c\u0001\u027c\u0001\u027c\u0001\u027c\u0001"+ + "\u027d\u0001\u027d\u0001\u027d\u0001\u027d\u0001\u027d\u0001\u027d\u0001"+ + "\u027d\u0001\u027d\u0001\u027e\u0001\u027e\u0001\u027e\u0001\u027e\u0001"+ + "\u027e\u0001\u027e\u0001\u027e\u0001\u027e\u0001\u027e\u0001\u027e\u0001"+ + "\u027f\u0001\u027f\u0005\u027f\u18b3\b\u027f\n\u027f\f\u027f\u18b6\t\u027f"+ + "\u0001\u0280\u0001\u0280\u0001\u0280\u0001\u0280\u0001\u0280\u0001\u0280"+ + "\u0003\u0280\u18be\b\u0280\u0001\u0281\u0001\u0281\u0003\u0281\u18c2\b"+ + "\u0281\u0001\u0282\u0001\u0282\u0003\u0282\u18c6\b\u0282\u0001\u0283\u0001"+ + "\u0283\u0001\u0283\u0001\u0284\u0001\u0284\u0001\u0284\u0001\u0284\u0005"+ + "\u0284\u18cf\b\u0284\n\u0284\f\u0284\u18d2\t\u0284\u0001\u0285\u0001\u0285"+ + "\u0001\u0285\u0001\u0286\u0001\u0286\u0001\u0286\u0001\u0286\u0005\u0286"+ + "\u18db\b\u0286\n\u0286\f\u0286\u18de\t\u0286\u0001\u0287\u0001\u0287\u0001"+ + "\u0287\u0001\u0287\u0001\u0288\u0001\u0288\u0001\u0288\u0001\u0288\u0001"+ + "\u0289\u0001\u0289\u0001\u0289\u0001\u0289\u0001\u028a\u0001\u028a\u0001"+ + "\u028a\u0001\u028a\u0001\u028b\u0001\u028b\u0001\u028b\u0001\u028c\u0001"+ + "\u028c\u0001\u028c\u0001\u028c\u0005\u028c\u18f7\b\u028c\n\u028c\f\u028c"+ + "\u18fa\t\u028c\u0001\u028d\u0001\u028d\u0001\u028d\u0001\u028d\u0001\u028d"+ + "\u0001\u028d\u0001\u028e\u0001\u028e\u0001\u028e\u0001\u028f\u0001\u028f"+ + "\u0001\u028f\u0001\u028f\u0001\u0290\u0001\u0290\u0003\u0290\u190b\b\u0290"+ + "\u0001\u0290\u0001\u0290\u0001\u0290\u0001\u0290\u0001\u0290\u0001\u0291"+ + "\u0001\u0291\u0005\u0291\u1914\b\u0291\n\u0291\f\u0291\u1917\t\u0291\u0001"+ + "\u0292\u0001\u0292\u0001\u0292\u0001\u0293\u0001\u0293\u0001\u0293\u0005"+ + "\u0293\u191f\b\u0293\n\u0293\f\u0293\u1922\t\u0293\u0001\u0294\u0001\u0294"+ + "\u0001\u0294\u0001\u0295\u0001\u0295\u0001\u0295\u0001\u0296\u0001\u0296"+ + "\u0001\u0296\u0001\u0297\u0001\u0297\u0001\u0297\u0005\u0297\u1930\b\u0297"+ + "\n\u0297\f\u0297\u1933\t\u0297\u0001\u0298\u0001\u0298\u0001\u0298\u0001"+ + "\u0299\u0001\u0299\u0001\u0299\u0001\u029a\u0001\u029a\u0001\u029b\u0001"+ + "\u029b\u0001\u029b\u0001\u029b\u0001\u029b\u0001\u029b\u0001\u029c\u0001"+ + "\u029c\u0001\u029c\u0003\u029c\u1946\b\u029c\u0001\u029c\u0001\u029c\u0003"+ + "\u029c\u194a\b\u029c\u0001\u029c\u0003\u029c\u194d\b\u029c\u0001\u029c"+ + "\u0001\u029c\u0001\u029c\u0001\u029c\u0003\u029c\u1953\b\u029c\u0001\u029c"+ + "\u0003\u029c\u1956\b\u029c\u0001\u029c\u0001\u029c\u0001\u029c\u0003\u029c"+ + "\u195b\b\u029c\u0001\u029c\u0001\u029c\u0003\u029c\u195f\b\u029c\u0001"+ + "\u029d\u0004\u029d\u1962\b\u029d\u000b\u029d\f\u029d\u1963\u0001\u029e"+ + "\u0001\u029e\u0001\u029e\u0005\u029e\u1969\b\u029e\n\u029e\f\u029e\u196c"+ + "\t\u029e\u0001\u029f\u0001\u029f\u0001\u029f\u0001\u029f\u0001\u029f\u0001"+ + "\u029f\u0001\u029f\u0001\u029f\u0005\u029f\u1976\b\u029f\n\u029f\f\u029f"+ + "\u1979\t\u029f\u0001\u029f\u0001\u029f\u0001\u02a0\u0004\u02a0\u197e\b"+ + "\u02a0\u000b\u02a0\f\u02a0\u197f\u0001\u02a0\u0001\u02a0\u0001\u02a1\u0001"+ + "\u02a1\u0003\u02a1\u1986\b\u02a1\u0001\u02a1\u0003\u02a1\u1989\b\u02a1"+ + "\u0001\u02a1\u0001\u02a1\u0001\u02a2\u0001\u02a2\u0001\u02a2\u0001\u02a2"+ + "\u0005\u02a2\u1991\b\u02a2\n\u02a2\f\u02a2\u1994\t\u02a2\u0001\u02a2\u0001"+ + "\u02a2\u0001\u02a3\u0001\u02a3\u0001\u02a3\u0001\u02a3\u0005\u02a3\u199c"+ + "\b\u02a3\n\u02a3\f\u02a3\u199f\t\u02a3\u0001\u02a3\u0001\u02a3\u0001\u02a3"+ + "\u0004\u02a3\u19a4\b\u02a3\u000b\u02a3\f\u02a3\u19a5\u0001\u02a3\u0001"+ + "\u02a3\u0004\u02a3\u19aa\b\u02a3\u000b\u02a3\f\u02a3\u19ab\u0001\u02a3"+ + "\u0005\u02a3\u19af\b\u02a3\n\u02a3\f\u02a3\u19b2\t\u02a3\u0001\u02a3\u0005"+ + "\u02a3\u19b5\b\u02a3\n\u02a3\f\u02a3\u19b8\t\u02a3\u0001\u02a3\u0001\u02a3"+ + "\u0001\u02a3\u0001\u02a3\u0001\u02a3\u0001\u02a4\u0001\u02a4\u0001\u02a4"+ + "\u0001\u02a4\u0005\u02a4\u19c3\b\u02a4\n\u02a4\f\u02a4\u19c6\t\u02a4\u0001"+ + "\u02a4\u0001\u02a4\u0001\u02a4\u0004\u02a4\u19cb\b\u02a4\u000b\u02a4\f"+ + "\u02a4\u19cc\u0001\u02a4\u0001\u02a4\u0004\u02a4\u19d1\b\u02a4\u000b\u02a4"+ + "\f\u02a4\u19d2\u0001\u02a4\u0003\u02a4\u19d6\b\u02a4\u0005\u02a4\u19d8"+ + "\b\u02a4\n\u02a4\f\u02a4\u19db\t\u02a4\u0001\u02a4\u0004\u02a4\u19de\b"+ + "\u02a4\u000b\u02a4\f\u02a4\u19df\u0001\u02a4\u0004\u02a4\u19e3\b\u02a4"+ + "\u000b\u02a4\f\u02a4\u19e4\u0001\u02a4\u0005\u02a4\u19e8\b\u02a4\n\u02a4"+ + "\f\u02a4\u19eb\t\u02a4\u0001\u02a4\u0003\u02a4\u19ee\b\u02a4\u0001\u02a4"+ + "\u0001\u02a4\u0001\u02a5\u0001\u02a5\u0001\u02a5\u0001\u02a5\u0005\u02a5"+ + "\u19f6\b\u02a5\n\u02a5\f\u02a5\u19f9\t\u02a5\u0001\u02a5\u0005\u02a5\u19fc"+ + "\b\u02a5\n\u02a5\f\u02a5\u19ff\t\u02a5\u0001\u02a5\u0001\u02a5\u0005\u02a5"+ + "\u1a03\b\u02a5\n\u02a5\f\u02a5\u1a06\t\u02a5\u0003\u02a5\u1a08\b\u02a5"+ + "\u0001\u02a6\u0001\u02a6\u0001\u02a6\u0001\u02a7\u0001\u02a7\u0001\u02a8"+ + "\u0001\u02a8\u0001\u02a8\u0001\u02a8\u0001\u02a8\u0001\u02a9\u0001\u02a9"+ + "\u0003\u02a9\u1a16\b\u02a9\u0001\u02a9\u0001\u02a9\u0001\u02aa\u0001\u02aa"+ + "\u0001\u02aa\u0001\u02aa\u0001\u02aa\u0001\u02aa\u0001\u02aa\u0001\u02aa"+ + "\u0001\u02aa\u0001\u02aa\u0001\u02aa\u0001\u02aa\u0001\u02aa\u0001\u02aa"+ + "\u0001\u02aa\u0001\u02aa\u0001\u02aa\u0001\u02aa\u0001\u02aa\u0001\u02aa"+ + "\u0003\u02aa\u1a2e\b\u02aa\u0001\u02aa\u0005\u02aa\u1a31\b\u02aa\n\u02aa"+ + "\f\u02aa\u1a34\t\u02aa\u0001\u02ab\u0001\u02ab\u0001\u02ab\u0001\u02ab"+ + "\u0001\u02ab\u0001\u02ac\u0001\u02ac\u0003\u02ac\u1a3d\b\u02ac\u0001\u02ac"+ + "\u0001\u02ac\u0001\u02ad\u0001\u02ad\u0001\u02ad\u0001\u02ad\u0001\u02ad"+ + "\u0005\u02ad\u1a46\b\u02ad\n\u02ad\f\u02ad\u1a49\t\u02ad\u0001\u02ae\u0001"+ + "\u02ae\u0001\u02ae\u0001\u02ae\u0001\u02ae\u0001\u02af\u0001\u02af\u0001"+ + "\u02af\u0001\u02af\u0001\u02af\u0001\u02af\u0001\u02b0\u0001\u02b0\u0001"+ + "\u02b0\u0001\u02b0\u0001\u02b0\u0001\u02b1\u0001\u02b1\u0001\u02b1\u0001"+ + "\u02b1\u0001\u02b1\u0001\u02b2\u0001\u02b2\u0001\u02b2\u0001\u02b2\u0001"+ + "\u02b2\u0001\u02b3\u0001\u02b3\u0001\u02b3\u0001\u02b3\u0001\u02b3\u0001"+ + "\u02b4\u0001\u02b4\u0001\u02b4\u0001\u02b4\u0001\u02b4\u0001\u02b5\u0004"+ + "\u02b5\u1a70\b\u02b5\u000b\u02b5\f\u02b5\u1a71\u0001\u02b5\u0001\u02b5"+ + "\u0005\u02b5\u1a76\b\u02b5\n\u02b5\f\u02b5\u1a79\t\u02b5\u0003\u02b5\u1a7b"+ + "\b\u02b5\u0001\u02b6\u0001\u02b6\u0003\u02b6\u1a7f\b\u02b6\u0001\u02b6"+ + "\u0001\u02b6\u0001\u02b6\u0001\u02b6\u0001\u02b6\u0001\u02b6\u0001\u02b6"+ + "\u0000\u0000\u02b7\u0005\u0001\u0007\u0002\t\u0003\u000b\u0004\r\u0005"+ + "\u000f\u0006\u0011\u0007\u0013\b\u0015\t\u0017\n\u0019\u000b\u001b\f\u001d"+ + "\r\u001f\u000e!\u000f#\u0010%\u0011\'\u0012)\u0013+\u0014-\u0015/\u0016"+ + "1\u00173\u00185\u00197\u001a9\u001b;\u001c=\u001d?\u0000A\u0000C\u0000"+ + "E\u0000G\u001eI\u001fK M!O\"Q#S$U%W&Y\'[(])_*a+c,e-g.i/k0m1o2q3s4u5w6"+ + "y7{8}9\u007f:\u0081;\u0083<\u0085=\u0087>\u0089?\u008b@\u008dA\u008fB"+ + "\u0091C\u0093D\u0095E\u0097F\u0099G\u009bH\u009dI\u009fJ\u00a1K\u00a3"+ + "L\u00a5M\u00a7N\u00a9O\u00abP\u00adQ\u00afR\u00b1S\u00b3T\u00b5U\u00b7"+ + "V\u00b9W\u00bbX\u00bdY\u00bfZ\u00c1[\u00c3\\\u00c5]\u00c7^\u00c9_\u00cb"+ + "`\u00cda\u00cfb\u00d1c\u00d3d\u00d5e\u00d7f\u00d9g\u00dbh\u00ddi\u00df"+ + "j\u00e1k\u00e3l\u00e5m\u00e7n\u00e9o\u00ebp\u00edq\u00efr\u00f1s\u00f3"+ + "t\u00f5u\u00f7v\u00f9w\u00fbx\u00fdy\u00ffz\u0101{\u0103|\u0105}\u0107"+ + "~\u0109\u007f\u010b\u0080\u010d\u0081\u010f\u0082\u0111\u0083\u0113\u0084"+ + "\u0115\u0085\u0117\u0086\u0119\u0087\u011b\u0088\u011d\u0089\u011f\u008a"+ + "\u0121\u008b\u0123\u008c\u0125\u008d\u0127\u008e\u0129\u008f\u012b\u0090"+ + "\u012d\u0091\u012f\u0092\u0131\u0093\u0133\u0094\u0135\u0095\u0137\u0096"+ + "\u0139\u0097\u013b\u0098\u013d\u0099\u013f\u009a\u0141\u009b\u0143\u009c"+ + "\u0145\u009d\u0147\u009e\u0149\u009f\u014b\u00a0\u014d\u00a1\u014f\u00a2"+ + "\u0151\u00a3\u0153\u00a4\u0155\u00a5\u0157\u00a6\u0159\u00a7\u015b\u00a8"+ + "\u015d\u00a9\u015f\u00aa\u0161\u00ab\u0163\u00ac\u0165\u00ad\u0167\u00ae"+ + "\u0169\u00af\u016b\u00b0\u016d\u00b1\u016f\u00b2\u0171\u00b3\u0173\u00b4"+ + "\u0175\u00b5\u0177\u00b6\u0179\u00b7\u017b\u00b8\u017d\u00b9\u017f\u00ba"+ + "\u0181\u00bb\u0183\u00bc\u0185\u00bd\u0187\u00be\u0189\u00bf\u018b\u00c0"+ + "\u018d\u00c1\u018f\u00c2\u0191\u00c3\u0193\u00c4\u0195\u00c5\u0197\u00c6"+ + "\u0199\u00c7\u019b\u00c8\u019d\u00c9\u019f\u00ca\u01a1\u00cb\u01a3\u00cc"+ + "\u01a5\u00cd\u01a7\u00ce\u01a9\u00cf\u01ab\u00d0\u01ad\u00d1\u01af\u00d2"+ + "\u01b1\u00d3\u01b3\u00d4\u01b5\u00d5\u01b7\u00d6\u01b9\u00d7\u01bb\u00d8"+ + "\u01bd\u00d9\u01bf\u00da\u01c1\u00db\u01c3\u00dc\u01c5\u00dd\u01c7\u00de"+ + "\u01c9\u00df\u01cb\u00e0\u01cd\u00e1\u01cf\u00e2\u01d1\u00e3\u01d3\u00e4"+ + "\u01d5\u00e5\u01d7\u00e6\u01d9\u00e7\u01db\u00e8\u01dd\u00e9\u01df\u00ea"+ + "\u01e1\u00eb\u01e3\u00ec\u01e5\u00ed\u01e7\u00ee\u01e9\u00ef\u01eb\u00f0"+ + "\u01ed\u00f1\u01ef\u00f2\u01f1\u00f3\u01f3\u00f4\u01f5\u00f5\u01f7\u00f6"+ + "\u01f9\u00f7\u01fb\u00f8\u01fd\u00f9\u01ff\u00fa\u0201\u00fb\u0203\u00fc"+ + "\u0205\u00fd\u0207\u00fe\u0209\u00ff\u020b\u0100\u020d\u0101\u020f\u0102"+ + "\u0211\u0103\u0213\u0104\u0215\u0105\u0217\u0106\u0219\u0107\u021b\u0108"+ + "\u021d\u0109\u021f\u010a\u0221\u010b\u0223\u010c\u0225\u010d\u0227\u010e"+ + "\u0229\u010f\u022b\u0110\u022d\u0111\u022f\u0112\u0231\u0113\u0233\u0114"+ + "\u0235\u0115\u0237\u0116\u0239\u0117\u023b\u0118\u023d\u0119\u023f\u011a"+ + "\u0241\u011b\u0243\u011c\u0245\u011d\u0247\u011e\u0249\u011f\u024b\u0120"+ + "\u024d\u0121\u024f\u0122\u0251\u0123\u0253\u0124\u0255\u0125\u0257\u0126"+ + "\u0259\u0127\u025b\u0128\u025d\u0129\u025f\u012a\u0261\u012b\u0263\u012c"+ + "\u0265\u012d\u0267\u012e\u0269\u012f\u026b\u0130\u026d\u0131\u026f\u0132"+ + "\u0271\u0133\u0273\u0134\u0275\u0135\u0277\u0136\u0279\u0137\u027b\u0138"+ + "\u027d\u0139\u027f\u013a\u0281\u013b\u0283\u013c\u0285\u013d\u0287\u013e"+ + "\u0289\u013f\u028b\u0140\u028d\u0141\u028f\u0142\u0291\u0143\u0293\u0144"+ + "\u0295\u0145\u0297\u0146\u0299\u0147\u029b\u0148\u029d\u0149\u029f\u014a"+ + "\u02a1\u014b\u02a3\u014c\u02a5\u014d\u02a7\u014e\u02a9\u014f\u02ab\u0150"+ + "\u02ad\u0151\u02af\u0152\u02b1\u0153\u02b3\u0154\u02b5\u0155\u02b7\u0156"+ + "\u02b9\u0157\u02bb\u0158\u02bd\u0159\u02bf\u015a\u02c1\u015b\u02c3\u015c"+ + "\u02c5\u015d\u02c7\u015e\u02c9\u015f\u02cb\u0160\u02cd\u0161\u02cf\u0162"+ + "\u02d1\u0163\u02d3\u0164\u02d5\u0165\u02d7\u0166\u02d9\u0167\u02db\u0168"+ + "\u02dd\u0169\u02df\u016a\u02e1\u016b\u02e3\u016c\u02e5\u016d\u02e7\u016e"+ + "\u02e9\u016f\u02eb\u0170\u02ed\u0171\u02ef\u0172\u02f1\u0173\u02f3\u0174"+ + "\u02f5\u0175\u02f7\u0176\u02f9\u0177\u02fb\u0178\u02fd\u0179\u02ff\u017a"+ + "\u0301\u017b\u0303\u017c\u0305\u017d\u0307\u017e\u0309\u017f\u030b\u0180"+ + "\u030d\u0181\u030f\u0182\u0311\u0183\u0313\u0184\u0315\u0185\u0317\u0186"+ + "\u0319\u0187\u031b\u0188\u031d\u0189\u031f\u018a\u0321\u018b\u0323\u018c"+ + "\u0325\u018d\u0327\u018e\u0329\u018f\u032b\u0190\u032d\u0191\u032f\u0192"+ + "\u0331\u0193\u0333\u0194\u0335\u0195\u0337\u0196\u0339\u0197\u033b\u0198"+ + "\u033d\u0199\u033f\u019a\u0341\u019b\u0343\u019c\u0345\u019d\u0347\u019e"+ + "\u0349\u019f\u034b\u01a0\u034d\u01a1\u034f\u01a2\u0351\u01a3\u0353\u01a4"+ + "\u0355\u01a5\u0357\u01a6\u0359\u01a7\u035b\u01a8\u035d\u01a9\u035f\u01aa"+ + "\u0361\u01ab\u0363\u01ac\u0365\u01ad\u0367\u01ae\u0369\u01af\u036b\u01b0"+ + "\u036d\u01b1\u036f\u01b2\u0371\u01b3\u0373\u01b4\u0375\u01b5\u0377\u01b6"+ + "\u0379\u01b7\u037b\u01b8\u037d\u01b9\u037f\u01ba\u0381\u01bb\u0383\u01bc"+ + "\u0385\u01bd\u0387\u01be\u0389\u01bf\u038b\u01c0\u038d\u01c1\u038f\u01c2"+ + "\u0391\u01c3\u0393\u01c4\u0395\u01c5\u0397\u01c6\u0399\u01c7\u039b\u01c8"+ + "\u039d\u01c9\u039f\u01ca\u03a1\u01cb\u03a3\u01cc\u03a5\u01cd\u03a7\u01ce"+ + "\u03a9\u01cf\u03ab\u01d0\u03ad\u01d1\u03af\u01d2\u03b1\u01d3\u03b3\u01d4"+ + "\u03b5\u01d5\u03b7\u01d6\u03b9\u01d7\u03bb\u01d8\u03bd\u01d9\u03bf\u01da"+ + "\u03c1\u01db\u03c3\u01dc\u03c5\u01dd\u03c7\u01de\u03c9\u01df\u03cb\u01e0"+ + "\u03cd\u01e1\u03cf\u01e2\u03d1\u01e3\u03d3\u01e4\u03d5\u01e5\u03d7\u01e6"+ + "\u03d9\u01e7\u03db\u01e8\u03dd\u01e9\u03df\u01ea\u03e1\u01eb\u03e3\u01ec"+ + "\u03e5\u01ed\u03e7\u01ee\u03e9\u01ef\u03eb\u01f0\u03ed\u01f1\u03ef\u01f2"+ + "\u03f1\u01f3\u03f3\u01f4\u03f5\u01f5\u03f7\u01f6\u03f9\u01f7\u03fb\u01f8"+ + "\u03fd\u01f9\u03ff\u01fa\u0401\u01fb\u0403\u01fc\u0405\u01fd\u0407\u01fe"+ + "\u0409\u01ff\u040b\u0200\u040d\u0201\u040f\u0202\u0411\u0203\u0413\u0204"+ + "\u0415\u0205\u0417\u0206\u0419\u0207\u041b\u0208\u041d\u0209\u041f\u020a"+ + "\u0421\u020b\u0423\u020c\u0425\u020d\u0427\u020e\u0429\u020f\u042b\u0210"+ + "\u042d\u0211\u042f\u0212\u0431\u0213\u0433\u0214\u0435\u0215\u0437\u0216"+ + "\u0439\u0217\u043b\u0218\u043d\u0219\u043f\u021a\u0441\u021b\u0443\u021c"+ + "\u0445\u021d\u0447\u021e\u0449\u021f\u044b\u0220\u044d\u0221\u044f\u0222"+ + "\u0451\u0223\u0453\u0224\u0455\u0225\u0457\u0226\u0459\u0227\u045b\u0228"+ + "\u045d\u0229\u045f\u022a\u0461\u022b\u0463\u022c\u0465\u022d\u0467\u022e"+ + "\u0469\u022f\u046b\u0230\u046d\u0231\u046f\u0232\u0471\u0233\u0473\u0234"+ + "\u0475\u0235\u0477\u0236\u0479\u0237\u047b\u0238\u047d\u0239\u047f\u023a"+ + "\u0481\u023b\u0483\u023c\u0485\u023d\u0487\u023e\u0489\u023f\u048b\u0240"+ + "\u048d\u0241\u048f\u0242\u0491\u0243\u0493\u0244\u0495\u0245\u0497\u0246"+ + "\u0499\u0247\u049b\u0248\u049d\u0249\u049f\u024a\u04a1\u024b\u04a3\u024c"+ + "\u04a5\u024d\u04a7\u024e\u04a9\u024f\u04ab\u0250\u04ad\u0251\u04af\u0252"+ + "\u04b1\u0253\u04b3\u0254\u04b5\u0255\u04b7\u0256\u04b9\u0257\u04bb\u0258"+ + "\u04bd\u0259\u04bf\u025a\u04c1\u025b\u04c3\u025c\u04c5\u025d\u04c7\u025e"+ + "\u04c9\u025f\u04cb\u0260\u04cd\u0261\u04cf\u0262\u04d1\u0263\u04d3\u0264"+ + "\u04d5\u0265\u04d7\u0266\u04d9\u0267\u04db\u0268\u04dd\u0269\u04df\u026a"+ + "\u04e1\u026b\u04e3\u026c\u04e5\u026d\u04e7\u026e\u04e9\u026f\u04eb\u0270"+ + "\u04ed\u0271\u04ef\u0272\u04f1\u0273\u04f3\u0274\u04f5\u0275\u04f7\u0276"+ + "\u04f9\u0277\u04fb\u0278\u04fd\u0279\u04ff\u027a\u0501\u027b\u0503\u027c"+ + "\u0505\u0000\u0507\u0000\u0509\u0000\u050b\u027d\u050d\u027e\u050f\u027f"+ + "\u0511\u0280\u0513\u0281\u0515\u0282\u0517\u0283\u0519\u0284\u051b\u0285"+ + "\u051d\u0286\u051f\u0000\u0521\u0287\u0523\u0288\u0525\u0289\u0527\u0000"+ + "\u0529\u028a\u052b\u028b\u052d\u028c\u052f\u028d\u0531\u028e\u0533\u028f"+ + "\u0535\u0290\u0537\u0291\u0539\u0292\u053b\u0293\u053d\u0294\u053f\u0000"+ + "\u0541\u0295\u0543\u0296\u0545\u0297\u0547\u0298\u0549\u0299\u054b\u029a"+ + "\u054d\u029b\u054f\u029c\u0551\u029d\u0553\u029e\u0555\u029f\u0557\u02a0"+ + "\u0559\u0000\u055b\u02a1\u055d\u02a2\u055f\u0000\u0561\u0000\u0563\u0000"+ + "\u0565\u02a3\u0567\u0000\u0569\u0000\u056b\u02a7\u056d\u02a4\u056f\u02a5"+ + "\u0571\u02a6\u0005\u0000\u0001\u0002\u0003\u00043\u0001\u000009\u0002"+ + "\u0000++--\t\u0000!!##%&**<@^^``||~~\u0002\u0000*+<>\b\u0000!!##%&?@^"+ + "^``||~~\u0002\u0000AAaa\u0002\u0000LLll\u0002\u0000NNnn\u0002\u0000YY"+ + "yy\u0002\u0000SSss\u0002\u0000EEee\u0002\u0000ZZzz\u0002\u0000DDdd\u0002"+ + "\u0000RRrr\u0002\u0000CCcc\u0002\u0000MMmm\u0002\u0000TTtt\u0002\u0000"+ + "IIii\u0002\u0000BBbb\u0002\u0000OOoo\u0002\u0000HHhh\u0002\u0000KKkk\u0002"+ + "\u0000UUuu\u0002\u0000GGgg\u0002\u0000PPpp\u0002\u0000FFff\u0002\u0000"+ + "XXxx\u0002\u0000VVvv\u0002\u0000QQqq\u0002\u0000WWww\u0002\u0000JJjj\t"+ + "\u0000AZ__az\u00aa\u00aa\u00b5\u00b5\u00ba\u00ba\u00c0\u00d6\u00d8\u00f6"+ + "\u00f8\u00ff\u0002\u0000\u0100\u8000\ud7ff\u8000\ue000\u8000\uffff\u0001"+ + "\u0000\u8000\ud800\u8000\udbff\u0001\u0000\u8000\udc00\u8000\udfff\u0002"+ + "\u0000\u0000\u0000\"\"\u0001\u0000\"\"\u0001\u0000\'\'\u0001\u000001\u0003"+ + "\u000009AFaf\u0003\u0000AZ__az\u0005\u0000$$09AZ__az\u0002\u0000\"\"\\"+ + "\\\u0002\u0000\t\t \u0002\u0000\n\n\r\r\u0002\u0000**//\u0004\u0000\n"+ + "\n\r\r\"\"\\\\\u0003\u0000\n\n\r\r\"\"\u0003\u0000UUuuxx\u0002\u0000\'"+ + "\'\\\\\u0001\u0000$$\u1acf\u0000\u0005\u0001\u0000\u0000\u0000\u0000\u0007"+ + "\u0001\u0000\u0000\u0000\u0000\t\u0001\u0000\u0000\u0000\u0000\u000b\u0001"+ + "\u0000\u0000\u0000\u0000\r\u0001\u0000\u0000\u0000\u0000\u000f\u0001\u0000"+ + "\u0000\u0000\u0000\u0011\u0001\u0000\u0000\u0000\u0000\u0013\u0001\u0000"+ + "\u0000\u0000\u0000\u0015\u0001\u0000\u0000\u0000\u0000\u0017\u0001\u0000"+ + "\u0000\u0000\u0000\u0019\u0001\u0000\u0000\u0000\u0000\u001b\u0001\u0000"+ + "\u0000\u0000\u0000\u001d\u0001\u0000\u0000\u0000\u0000\u001f\u0001\u0000"+ + "\u0000\u0000\u0000!\u0001\u0000\u0000\u0000\u0000#\u0001\u0000\u0000\u0000"+ + "\u0000%\u0001\u0000\u0000\u0000\u0000\'\u0001\u0000\u0000\u0000\u0000"+ + ")\u0001\u0000\u0000\u0000\u0000+\u0001\u0000\u0000\u0000\u0000-\u0001"+ + "\u0000\u0000\u0000\u0000/\u0001\u0000\u0000\u0000\u00001\u0001\u0000\u0000"+ + "\u0000\u00003\u0001\u0000\u0000\u0000\u00005\u0001\u0000\u0000\u0000\u0000"+ + "7\u0001\u0000\u0000\u0000\u00009\u0001\u0000\u0000\u0000\u0000;\u0001"+ + "\u0000\u0000\u0000\u0000=\u0001\u0000\u0000\u0000\u0000?\u0001\u0000\u0000"+ + "\u0000\u0000G\u0001\u0000\u0000\u0000\u0000I\u0001\u0000\u0000\u0000\u0000"+ + "K\u0001\u0000\u0000\u0000\u0000M\u0001\u0000\u0000\u0000\u0000O\u0001"+ + "\u0000\u0000\u0000\u0000Q\u0001\u0000\u0000\u0000\u0000S\u0001\u0000\u0000"+ + "\u0000\u0000U\u0001\u0000\u0000\u0000\u0000W\u0001\u0000\u0000\u0000\u0000"+ + "Y\u0001\u0000\u0000\u0000\u0000[\u0001\u0000\u0000\u0000\u0000]\u0001"+ + "\u0000\u0000\u0000\u0000_\u0001\u0000\u0000\u0000\u0000a\u0001\u0000\u0000"+ + "\u0000\u0000c\u0001\u0000\u0000\u0000\u0000e\u0001\u0000\u0000\u0000\u0000"+ + "g\u0001\u0000\u0000\u0000\u0000i\u0001\u0000\u0000\u0000\u0000k\u0001"+ + "\u0000\u0000\u0000\u0000m\u0001\u0000\u0000\u0000\u0000o\u0001\u0000\u0000"+ + "\u0000\u0000q\u0001\u0000\u0000\u0000\u0000s\u0001\u0000\u0000\u0000\u0000"+ + "u\u0001\u0000\u0000\u0000\u0000w\u0001\u0000\u0000\u0000\u0000y\u0001"+ + "\u0000\u0000\u0000\u0000{\u0001\u0000\u0000\u0000\u0000}\u0001\u0000\u0000"+ + "\u0000\u0000\u007f\u0001\u0000\u0000\u0000\u0000\u0081\u0001\u0000\u0000"+ + "\u0000\u0000\u0083\u0001\u0000\u0000\u0000\u0000\u0085\u0001\u0000\u0000"+ + "\u0000\u0000\u0087\u0001\u0000\u0000\u0000\u0000\u0089\u0001\u0000\u0000"+ + "\u0000\u0000\u008b\u0001\u0000\u0000\u0000\u0000\u008d\u0001\u0000\u0000"+ + "\u0000\u0000\u008f\u0001\u0000\u0000\u0000\u0000\u0091\u0001\u0000\u0000"+ + "\u0000\u0000\u0093\u0001\u0000\u0000\u0000\u0000\u0095\u0001\u0000\u0000"+ + "\u0000\u0000\u0097\u0001\u0000\u0000\u0000\u0000\u0099\u0001\u0000\u0000"+ + "\u0000\u0000\u009b\u0001\u0000\u0000\u0000\u0000\u009d\u0001\u0000\u0000"+ + "\u0000\u0000\u009f\u0001\u0000\u0000\u0000\u0000\u00a1\u0001\u0000\u0000"+ + "\u0000\u0000\u00a3\u0001\u0000\u0000\u0000\u0000\u00a5\u0001\u0000\u0000"+ + "\u0000\u0000\u00a7\u0001\u0000\u0000\u0000\u0000\u00a9\u0001\u0000\u0000"+ + "\u0000\u0000\u00ab\u0001\u0000\u0000\u0000\u0000\u00ad\u0001\u0000\u0000"+ + "\u0000\u0000\u00af\u0001\u0000\u0000\u0000\u0000\u00b1\u0001\u0000\u0000"+ + "\u0000\u0000\u00b3\u0001\u0000\u0000\u0000\u0000\u00b5\u0001\u0000\u0000"+ + "\u0000\u0000\u00b7\u0001\u0000\u0000\u0000\u0000\u00b9\u0001\u0000\u0000"+ + "\u0000\u0000\u00bb\u0001\u0000\u0000\u0000\u0000\u00bd\u0001\u0000\u0000"+ + "\u0000\u0000\u00bf\u0001\u0000\u0000\u0000\u0000\u00c1\u0001\u0000\u0000"+ + "\u0000\u0000\u00c3\u0001\u0000\u0000\u0000\u0000\u00c5\u0001\u0000\u0000"+ + "\u0000\u0000\u00c7\u0001\u0000\u0000\u0000\u0000\u00c9\u0001\u0000\u0000"+ + "\u0000\u0000\u00cb\u0001\u0000\u0000\u0000\u0000\u00cd\u0001\u0000\u0000"+ + "\u0000\u0000\u00cf\u0001\u0000\u0000\u0000\u0000\u00d1\u0001\u0000\u0000"+ + "\u0000\u0000\u00d3\u0001\u0000\u0000\u0000\u0000\u00d5\u0001\u0000\u0000"+ + "\u0000\u0000\u00d7\u0001\u0000\u0000\u0000\u0000\u00d9\u0001\u0000\u0000"+ + "\u0000\u0000\u00db\u0001\u0000\u0000\u0000\u0000\u00dd\u0001\u0000\u0000"+ + "\u0000\u0000\u00df\u0001\u0000\u0000\u0000\u0000\u00e1\u0001\u0000\u0000"+ + "\u0000\u0000\u00e3\u0001\u0000\u0000\u0000\u0000\u00e5\u0001\u0000\u0000"+ + "\u0000\u0000\u00e7\u0001\u0000\u0000\u0000\u0000\u00e9\u0001\u0000\u0000"+ + "\u0000\u0000\u00eb\u0001\u0000\u0000\u0000\u0000\u00ed\u0001\u0000\u0000"+ + "\u0000\u0000\u00ef\u0001\u0000\u0000\u0000\u0000\u00f1\u0001\u0000\u0000"+ + "\u0000\u0000\u00f3\u0001\u0000\u0000\u0000\u0000\u00f5\u0001\u0000\u0000"+ + "\u0000\u0000\u00f7\u0001\u0000\u0000\u0000\u0000\u00f9\u0001\u0000\u0000"+ + "\u0000\u0000\u00fb\u0001\u0000\u0000\u0000\u0000\u00fd\u0001\u0000\u0000"+ + "\u0000\u0000\u00ff\u0001\u0000\u0000\u0000\u0000\u0101\u0001\u0000\u0000"+ + "\u0000\u0000\u0103\u0001\u0000\u0000\u0000\u0000\u0105\u0001\u0000\u0000"+ + "\u0000\u0000\u0107\u0001\u0000\u0000\u0000\u0000\u0109\u0001\u0000\u0000"+ + "\u0000\u0000\u010b\u0001\u0000\u0000\u0000\u0000\u010d\u0001\u0000\u0000"+ + "\u0000\u0000\u010f\u0001\u0000\u0000\u0000\u0000\u0111\u0001\u0000\u0000"+ + "\u0000\u0000\u0113\u0001\u0000\u0000\u0000\u0000\u0115\u0001\u0000\u0000"+ + "\u0000\u0000\u0117\u0001\u0000\u0000\u0000\u0000\u0119\u0001\u0000\u0000"+ + "\u0000\u0000\u011b\u0001\u0000\u0000\u0000\u0000\u011d\u0001\u0000\u0000"+ + "\u0000\u0000\u011f\u0001\u0000\u0000\u0000\u0000\u0121\u0001\u0000\u0000"+ + "\u0000\u0000\u0123\u0001\u0000\u0000\u0000\u0000\u0125\u0001\u0000\u0000"+ + "\u0000\u0000\u0127\u0001\u0000\u0000\u0000\u0000\u0129\u0001\u0000\u0000"+ + "\u0000\u0000\u012b\u0001\u0000\u0000\u0000\u0000\u012d\u0001\u0000\u0000"+ + "\u0000\u0000\u012f\u0001\u0000\u0000\u0000\u0000\u0131\u0001\u0000\u0000"+ + "\u0000\u0000\u0133\u0001\u0000\u0000\u0000\u0000\u0135\u0001\u0000\u0000"+ + "\u0000\u0000\u0137\u0001\u0000\u0000\u0000\u0000\u0139\u0001\u0000\u0000"+ + "\u0000\u0000\u013b\u0001\u0000\u0000\u0000\u0000\u013d\u0001\u0000\u0000"+ + "\u0000\u0000\u013f\u0001\u0000\u0000\u0000\u0000\u0141\u0001\u0000\u0000"+ + "\u0000\u0000\u0143\u0001\u0000\u0000\u0000\u0000\u0145\u0001\u0000\u0000"+ + "\u0000\u0000\u0147\u0001\u0000\u0000\u0000\u0000\u0149\u0001\u0000\u0000"+ + "\u0000\u0000\u014b\u0001\u0000\u0000\u0000\u0000\u014d\u0001\u0000\u0000"+ + "\u0000\u0000\u014f\u0001\u0000\u0000\u0000\u0000\u0151\u0001\u0000\u0000"+ + "\u0000\u0000\u0153\u0001\u0000\u0000\u0000\u0000\u0155\u0001\u0000\u0000"+ + "\u0000\u0000\u0157\u0001\u0000\u0000\u0000\u0000\u0159\u0001\u0000\u0000"+ + "\u0000\u0000\u015b\u0001\u0000\u0000\u0000\u0000\u015d\u0001\u0000\u0000"+ + "\u0000\u0000\u015f\u0001\u0000\u0000\u0000\u0000\u0161\u0001\u0000\u0000"+ + "\u0000\u0000\u0163\u0001\u0000\u0000\u0000\u0000\u0165\u0001\u0000\u0000"+ + "\u0000\u0000\u0167\u0001\u0000\u0000\u0000\u0000\u0169\u0001\u0000\u0000"+ + "\u0000\u0000\u016b\u0001\u0000\u0000\u0000\u0000\u016d\u0001\u0000\u0000"+ + "\u0000\u0000\u016f\u0001\u0000\u0000\u0000\u0000\u0171\u0001\u0000\u0000"+ + "\u0000\u0000\u0173\u0001\u0000\u0000\u0000\u0000\u0175\u0001\u0000\u0000"+ + "\u0000\u0000\u0177\u0001\u0000\u0000\u0000\u0000\u0179\u0001\u0000\u0000"+ + "\u0000\u0000\u017b\u0001\u0000\u0000\u0000\u0000\u017d\u0001\u0000\u0000"+ + "\u0000\u0000\u017f\u0001\u0000\u0000\u0000\u0000\u0181\u0001\u0000\u0000"+ + "\u0000\u0000\u0183\u0001\u0000\u0000\u0000\u0000\u0185\u0001\u0000\u0000"+ + "\u0000\u0000\u0187\u0001\u0000\u0000\u0000\u0000\u0189\u0001\u0000\u0000"+ + "\u0000\u0000\u018b\u0001\u0000\u0000\u0000\u0000\u018d\u0001\u0000\u0000"+ + "\u0000\u0000\u018f\u0001\u0000\u0000\u0000\u0000\u0191\u0001\u0000\u0000"+ + "\u0000\u0000\u0193\u0001\u0000\u0000\u0000\u0000\u0195\u0001\u0000\u0000"+ + "\u0000\u0000\u0197\u0001\u0000\u0000\u0000\u0000\u0199\u0001\u0000\u0000"+ + "\u0000\u0000\u019b\u0001\u0000\u0000\u0000\u0000\u019d\u0001\u0000\u0000"+ + "\u0000\u0000\u019f\u0001\u0000\u0000\u0000\u0000\u01a1\u0001\u0000\u0000"+ + "\u0000\u0000\u01a3\u0001\u0000\u0000\u0000\u0000\u01a5\u0001\u0000\u0000"+ + "\u0000\u0000\u01a7\u0001\u0000\u0000\u0000\u0000\u01a9\u0001\u0000\u0000"+ + "\u0000\u0000\u01ab\u0001\u0000\u0000\u0000\u0000\u01ad\u0001\u0000\u0000"+ + "\u0000\u0000\u01af\u0001\u0000\u0000\u0000\u0000\u01b1\u0001\u0000\u0000"+ + "\u0000\u0000\u01b3\u0001\u0000\u0000\u0000\u0000\u01b5\u0001\u0000\u0000"+ + "\u0000\u0000\u01b7\u0001\u0000\u0000\u0000\u0000\u01b9\u0001\u0000\u0000"+ + "\u0000\u0000\u01bb\u0001\u0000\u0000\u0000\u0000\u01bd\u0001\u0000\u0000"+ + "\u0000\u0000\u01bf\u0001\u0000\u0000\u0000\u0000\u01c1\u0001\u0000\u0000"+ + "\u0000\u0000\u01c3\u0001\u0000\u0000\u0000\u0000\u01c5\u0001\u0000\u0000"+ + "\u0000\u0000\u01c7\u0001\u0000\u0000\u0000\u0000\u01c9\u0001\u0000\u0000"+ + "\u0000\u0000\u01cb\u0001\u0000\u0000\u0000\u0000\u01cd\u0001\u0000\u0000"+ + "\u0000\u0000\u01cf\u0001\u0000\u0000\u0000\u0000\u01d1\u0001\u0000\u0000"+ + "\u0000\u0000\u01d3\u0001\u0000\u0000\u0000\u0000\u01d5\u0001\u0000\u0000"+ + "\u0000\u0000\u01d7\u0001\u0000\u0000\u0000\u0000\u01d9\u0001\u0000\u0000"+ + "\u0000\u0000\u01db\u0001\u0000\u0000\u0000\u0000\u01dd\u0001\u0000\u0000"+ + "\u0000\u0000\u01df\u0001\u0000\u0000\u0000\u0000\u01e1\u0001\u0000\u0000"+ + "\u0000\u0000\u01e3\u0001\u0000\u0000\u0000\u0000\u01e5\u0001\u0000\u0000"+ + "\u0000\u0000\u01e7\u0001\u0000\u0000\u0000\u0000\u01e9\u0001\u0000\u0000"+ + "\u0000\u0000\u01eb\u0001\u0000\u0000\u0000\u0000\u01ed\u0001\u0000\u0000"+ + "\u0000\u0000\u01ef\u0001\u0000\u0000\u0000\u0000\u01f1\u0001\u0000\u0000"+ + "\u0000\u0000\u01f3\u0001\u0000\u0000\u0000\u0000\u01f5\u0001\u0000\u0000"+ + "\u0000\u0000\u01f7\u0001\u0000\u0000\u0000\u0000\u01f9\u0001\u0000\u0000"+ + "\u0000\u0000\u01fb\u0001\u0000\u0000\u0000\u0000\u01fd\u0001\u0000\u0000"+ + "\u0000\u0000\u01ff\u0001\u0000\u0000\u0000\u0000\u0201\u0001\u0000\u0000"+ + "\u0000\u0000\u0203\u0001\u0000\u0000\u0000\u0000\u0205\u0001\u0000\u0000"+ + "\u0000\u0000\u0207\u0001\u0000\u0000\u0000\u0000\u0209\u0001\u0000\u0000"+ + "\u0000\u0000\u020b\u0001\u0000\u0000\u0000\u0000\u020d\u0001\u0000\u0000"+ + "\u0000\u0000\u020f\u0001\u0000\u0000\u0000\u0000\u0211\u0001\u0000\u0000"+ + "\u0000\u0000\u0213\u0001\u0000\u0000\u0000\u0000\u0215\u0001\u0000\u0000"+ + "\u0000\u0000\u0217\u0001\u0000\u0000\u0000\u0000\u0219\u0001\u0000\u0000"+ + "\u0000\u0000\u021b\u0001\u0000\u0000\u0000\u0000\u021d\u0001\u0000\u0000"+ + "\u0000\u0000\u021f\u0001\u0000\u0000\u0000\u0000\u0221\u0001\u0000\u0000"+ + "\u0000\u0000\u0223\u0001\u0000\u0000\u0000\u0000\u0225\u0001\u0000\u0000"+ + "\u0000\u0000\u0227\u0001\u0000\u0000\u0000\u0000\u0229\u0001\u0000\u0000"+ + "\u0000\u0000\u022b\u0001\u0000\u0000\u0000\u0000\u022d\u0001\u0000\u0000"+ + "\u0000\u0000\u022f\u0001\u0000\u0000\u0000\u0000\u0231\u0001\u0000\u0000"+ + "\u0000\u0000\u0233\u0001\u0000\u0000\u0000\u0000\u0235\u0001\u0000\u0000"+ + "\u0000\u0000\u0237\u0001\u0000\u0000\u0000\u0000\u0239\u0001\u0000\u0000"+ + "\u0000\u0000\u023b\u0001\u0000\u0000\u0000\u0000\u023d\u0001\u0000\u0000"+ + "\u0000\u0000\u023f\u0001\u0000\u0000\u0000\u0000\u0241\u0001\u0000\u0000"+ + "\u0000\u0000\u0243\u0001\u0000\u0000\u0000\u0000\u0245\u0001\u0000\u0000"+ + "\u0000\u0000\u0247\u0001\u0000\u0000\u0000\u0000\u0249\u0001\u0000\u0000"+ + "\u0000\u0000\u024b\u0001\u0000\u0000\u0000\u0000\u024d\u0001\u0000\u0000"+ + "\u0000\u0000\u024f\u0001\u0000\u0000\u0000\u0000\u0251\u0001\u0000\u0000"+ + "\u0000\u0000\u0253\u0001\u0000\u0000\u0000\u0000\u0255\u0001\u0000\u0000"+ + "\u0000\u0000\u0257\u0001\u0000\u0000\u0000\u0000\u0259\u0001\u0000\u0000"+ + "\u0000\u0000\u025b\u0001\u0000\u0000\u0000\u0000\u025d\u0001\u0000\u0000"+ + "\u0000\u0000\u025f\u0001\u0000\u0000\u0000\u0000\u0261\u0001\u0000\u0000"+ + "\u0000\u0000\u0263\u0001\u0000\u0000\u0000\u0000\u0265\u0001\u0000\u0000"+ + "\u0000\u0000\u0267\u0001\u0000\u0000\u0000\u0000\u0269\u0001\u0000\u0000"+ + "\u0000\u0000\u026b\u0001\u0000\u0000\u0000\u0000\u026d\u0001\u0000\u0000"+ + "\u0000\u0000\u026f\u0001\u0000\u0000\u0000\u0000\u0271\u0001\u0000\u0000"+ + "\u0000\u0000\u0273\u0001\u0000\u0000\u0000\u0000\u0275\u0001\u0000\u0000"+ + "\u0000\u0000\u0277\u0001\u0000\u0000\u0000\u0000\u0279\u0001\u0000\u0000"+ + "\u0000\u0000\u027b\u0001\u0000\u0000\u0000\u0000\u027d\u0001\u0000\u0000"+ + "\u0000\u0000\u027f\u0001\u0000\u0000\u0000\u0000\u0281\u0001\u0000\u0000"+ + "\u0000\u0000\u0283\u0001\u0000\u0000\u0000\u0000\u0285\u0001\u0000\u0000"+ + "\u0000\u0000\u0287\u0001\u0000\u0000\u0000\u0000\u0289\u0001\u0000\u0000"+ + "\u0000\u0000\u028b\u0001\u0000\u0000\u0000\u0000\u028d\u0001\u0000\u0000"+ + "\u0000\u0000\u028f\u0001\u0000\u0000\u0000\u0000\u0291\u0001\u0000\u0000"+ + "\u0000\u0000\u0293\u0001\u0000\u0000\u0000\u0000\u0295\u0001\u0000\u0000"+ + "\u0000\u0000\u0297\u0001\u0000\u0000\u0000\u0000\u0299\u0001\u0000\u0000"+ + "\u0000\u0000\u029b\u0001\u0000\u0000\u0000\u0000\u029d\u0001\u0000\u0000"+ + "\u0000\u0000\u029f\u0001\u0000\u0000\u0000\u0000\u02a1\u0001\u0000\u0000"+ + "\u0000\u0000\u02a3\u0001\u0000\u0000\u0000\u0000\u02a5\u0001\u0000\u0000"+ + "\u0000\u0000\u02a7\u0001\u0000\u0000\u0000\u0000\u02a9\u0001\u0000\u0000"+ + "\u0000\u0000\u02ab\u0001\u0000\u0000\u0000\u0000\u02ad\u0001\u0000\u0000"+ + "\u0000\u0000\u02af\u0001\u0000\u0000\u0000\u0000\u02b1\u0001\u0000\u0000"+ + "\u0000\u0000\u02b3\u0001\u0000\u0000\u0000\u0000\u02b5\u0001\u0000\u0000"+ + "\u0000\u0000\u02b7\u0001\u0000\u0000\u0000\u0000\u02b9\u0001\u0000\u0000"+ + "\u0000\u0000\u02bb\u0001\u0000\u0000\u0000\u0000\u02bd\u0001\u0000\u0000"+ + "\u0000\u0000\u02bf\u0001\u0000\u0000\u0000\u0000\u02c1\u0001\u0000\u0000"+ + "\u0000\u0000\u02c3\u0001\u0000\u0000\u0000\u0000\u02c5\u0001\u0000\u0000"+ + "\u0000\u0000\u02c7\u0001\u0000\u0000\u0000\u0000\u02c9\u0001\u0000\u0000"+ + "\u0000\u0000\u02cb\u0001\u0000\u0000\u0000\u0000\u02cd\u0001\u0000\u0000"+ + "\u0000\u0000\u02cf\u0001\u0000\u0000\u0000\u0000\u02d1\u0001\u0000\u0000"+ + "\u0000\u0000\u02d3\u0001\u0000\u0000\u0000\u0000\u02d5\u0001\u0000\u0000"+ + "\u0000\u0000\u02d7\u0001\u0000\u0000\u0000\u0000\u02d9\u0001\u0000\u0000"+ + "\u0000\u0000\u02db\u0001\u0000\u0000\u0000\u0000\u02dd\u0001\u0000\u0000"+ + "\u0000\u0000\u02df\u0001\u0000\u0000\u0000\u0000\u02e1\u0001\u0000\u0000"+ + "\u0000\u0000\u02e3\u0001\u0000\u0000\u0000\u0000\u02e5\u0001\u0000\u0000"+ + "\u0000\u0000\u02e7\u0001\u0000\u0000\u0000\u0000\u02e9\u0001\u0000\u0000"+ + "\u0000\u0000\u02eb\u0001\u0000\u0000\u0000\u0000\u02ed\u0001\u0000\u0000"+ + "\u0000\u0000\u02ef\u0001\u0000\u0000\u0000\u0000\u02f1\u0001\u0000\u0000"+ + "\u0000\u0000\u02f3\u0001\u0000\u0000\u0000\u0000\u02f5\u0001\u0000\u0000"+ + "\u0000\u0000\u02f7\u0001\u0000\u0000\u0000\u0000\u02f9\u0001\u0000\u0000"+ + "\u0000\u0000\u02fb\u0001\u0000\u0000\u0000\u0000\u02fd\u0001\u0000\u0000"+ + "\u0000\u0000\u02ff\u0001\u0000\u0000\u0000\u0000\u0301\u0001\u0000\u0000"+ + "\u0000\u0000\u0303\u0001\u0000\u0000\u0000\u0000\u0305\u0001\u0000\u0000"+ + "\u0000\u0000\u0307\u0001\u0000\u0000\u0000\u0000\u0309\u0001\u0000\u0000"+ + "\u0000\u0000\u030b\u0001\u0000\u0000\u0000\u0000\u030d\u0001\u0000\u0000"+ + "\u0000\u0000\u030f\u0001\u0000\u0000\u0000\u0000\u0311\u0001\u0000\u0000"+ + "\u0000\u0000\u0313\u0001\u0000\u0000\u0000\u0000\u0315\u0001\u0000\u0000"+ + "\u0000\u0000\u0317\u0001\u0000\u0000\u0000\u0000\u0319\u0001\u0000\u0000"+ + "\u0000\u0000\u031b\u0001\u0000\u0000\u0000\u0000\u031d\u0001\u0000\u0000"+ + "\u0000\u0000\u031f\u0001\u0000\u0000\u0000\u0000\u0321\u0001\u0000\u0000"+ + "\u0000\u0000\u0323\u0001\u0000\u0000\u0000\u0000\u0325\u0001\u0000\u0000"+ + "\u0000\u0000\u0327\u0001\u0000\u0000\u0000\u0000\u0329\u0001\u0000\u0000"+ + "\u0000\u0000\u032b\u0001\u0000\u0000\u0000\u0000\u032d\u0001\u0000\u0000"+ + "\u0000\u0000\u032f\u0001\u0000\u0000\u0000\u0000\u0331\u0001\u0000\u0000"+ + "\u0000\u0000\u0333\u0001\u0000\u0000\u0000\u0000\u0335\u0001\u0000\u0000"+ + "\u0000\u0000\u0337\u0001\u0000\u0000\u0000\u0000\u0339\u0001\u0000\u0000"+ + "\u0000\u0000\u033b\u0001\u0000\u0000\u0000\u0000\u033d\u0001\u0000\u0000"+ + "\u0000\u0000\u033f\u0001\u0000\u0000\u0000\u0000\u0341\u0001\u0000\u0000"+ + "\u0000\u0000\u0343\u0001\u0000\u0000\u0000\u0000\u0345\u0001\u0000\u0000"+ + "\u0000\u0000\u0347\u0001\u0000\u0000\u0000\u0000\u0349\u0001\u0000\u0000"+ + "\u0000\u0000\u034b\u0001\u0000\u0000\u0000\u0000\u034d\u0001\u0000\u0000"+ + "\u0000\u0000\u034f\u0001\u0000\u0000\u0000\u0000\u0351\u0001\u0000\u0000"+ + "\u0000\u0000\u0353\u0001\u0000\u0000\u0000\u0000\u0355\u0001\u0000\u0000"+ + "\u0000\u0000\u0357\u0001\u0000\u0000\u0000\u0000\u0359\u0001\u0000\u0000"+ + "\u0000\u0000\u035b\u0001\u0000\u0000\u0000\u0000\u035d\u0001\u0000\u0000"+ + "\u0000\u0000\u035f\u0001\u0000\u0000\u0000\u0000\u0361\u0001\u0000\u0000"+ + "\u0000\u0000\u0363\u0001\u0000\u0000\u0000\u0000\u0365\u0001\u0000\u0000"+ + "\u0000\u0000\u0367\u0001\u0000\u0000\u0000\u0000\u0369\u0001\u0000\u0000"+ + "\u0000\u0000\u036b\u0001\u0000\u0000\u0000\u0000\u036d\u0001\u0000\u0000"+ + "\u0000\u0000\u036f\u0001\u0000\u0000\u0000\u0000\u0371\u0001\u0000\u0000"+ + "\u0000\u0000\u0373\u0001\u0000\u0000\u0000\u0000\u0375\u0001\u0000\u0000"+ + "\u0000\u0000\u0377\u0001\u0000\u0000\u0000\u0000\u0379\u0001\u0000\u0000"+ + "\u0000\u0000\u037b\u0001\u0000\u0000\u0000\u0000\u037d\u0001\u0000\u0000"+ + "\u0000\u0000\u037f\u0001\u0000\u0000\u0000\u0000\u0381\u0001\u0000\u0000"+ + "\u0000\u0000\u0383\u0001\u0000\u0000\u0000\u0000\u0385\u0001\u0000\u0000"+ + "\u0000\u0000\u0387\u0001\u0000\u0000\u0000\u0000\u0389\u0001\u0000\u0000"+ + "\u0000\u0000\u038b\u0001\u0000\u0000\u0000\u0000\u038d\u0001\u0000\u0000"+ + "\u0000\u0000\u038f\u0001\u0000\u0000\u0000\u0000\u0391\u0001\u0000\u0000"+ + "\u0000\u0000\u0393\u0001\u0000\u0000\u0000\u0000\u0395\u0001\u0000\u0000"+ + "\u0000\u0000\u0397\u0001\u0000\u0000\u0000\u0000\u0399\u0001\u0000\u0000"+ + "\u0000\u0000\u039b\u0001\u0000\u0000\u0000\u0000\u039d\u0001\u0000\u0000"+ + "\u0000\u0000\u039f\u0001\u0000\u0000\u0000\u0000\u03a1\u0001\u0000\u0000"+ + "\u0000\u0000\u03a3\u0001\u0000\u0000\u0000\u0000\u03a5\u0001\u0000\u0000"+ + "\u0000\u0000\u03a7\u0001\u0000\u0000\u0000\u0000\u03a9\u0001\u0000\u0000"+ + "\u0000\u0000\u03ab\u0001\u0000\u0000\u0000\u0000\u03ad\u0001\u0000\u0000"+ + "\u0000\u0000\u03af\u0001\u0000\u0000\u0000\u0000\u03b1\u0001\u0000\u0000"+ + "\u0000\u0000\u03b3\u0001\u0000\u0000\u0000\u0000\u03b5\u0001\u0000\u0000"+ + "\u0000\u0000\u03b7\u0001\u0000\u0000\u0000\u0000\u03b9\u0001\u0000\u0000"+ + "\u0000\u0000\u03bb\u0001\u0000\u0000\u0000\u0000\u03bd\u0001\u0000\u0000"+ + "\u0000\u0000\u03bf\u0001\u0000\u0000\u0000\u0000\u03c1\u0001\u0000\u0000"+ + "\u0000\u0000\u03c3\u0001\u0000\u0000\u0000\u0000\u03c5\u0001\u0000\u0000"+ + "\u0000\u0000\u03c7\u0001\u0000\u0000\u0000\u0000\u03c9\u0001\u0000\u0000"+ + "\u0000\u0000\u03cb\u0001\u0000\u0000\u0000\u0000\u03cd\u0001\u0000\u0000"+ + "\u0000\u0000\u03cf\u0001\u0000\u0000\u0000\u0000\u03d1\u0001\u0000\u0000"+ + "\u0000\u0000\u03d3\u0001\u0000\u0000\u0000\u0000\u03d5\u0001\u0000\u0000"+ + "\u0000\u0000\u03d7\u0001\u0000\u0000\u0000\u0000\u03d9\u0001\u0000\u0000"+ + "\u0000\u0000\u03db\u0001\u0000\u0000\u0000\u0000\u03dd\u0001\u0000\u0000"+ + "\u0000\u0000\u03df\u0001\u0000\u0000\u0000\u0000\u03e1\u0001\u0000\u0000"+ + "\u0000\u0000\u03e3\u0001\u0000\u0000\u0000\u0000\u03e5\u0001\u0000\u0000"+ + "\u0000\u0000\u03e7\u0001\u0000\u0000\u0000\u0000\u03e9\u0001\u0000\u0000"+ + "\u0000\u0000\u03eb\u0001\u0000\u0000\u0000\u0000\u03ed\u0001\u0000\u0000"+ + "\u0000\u0000\u03ef\u0001\u0000\u0000\u0000\u0000\u03f1\u0001\u0000\u0000"+ + "\u0000\u0000\u03f3\u0001\u0000\u0000\u0000\u0000\u03f5\u0001\u0000\u0000"+ + "\u0000\u0000\u03f7\u0001\u0000\u0000\u0000\u0000\u03f9\u0001\u0000\u0000"+ + "\u0000\u0000\u03fb\u0001\u0000\u0000\u0000\u0000\u03fd\u0001\u0000\u0000"+ + "\u0000\u0000\u03ff\u0001\u0000\u0000\u0000\u0000\u0401\u0001\u0000\u0000"+ + "\u0000\u0000\u0403\u0001\u0000\u0000\u0000\u0000\u0405\u0001\u0000\u0000"+ + "\u0000\u0000\u0407\u0001\u0000\u0000\u0000\u0000\u0409\u0001\u0000\u0000"+ + "\u0000\u0000\u040b\u0001\u0000\u0000\u0000\u0000\u040d\u0001\u0000\u0000"+ + "\u0000\u0000\u040f\u0001\u0000\u0000\u0000\u0000\u0411\u0001\u0000\u0000"+ + "\u0000\u0000\u0413\u0001\u0000\u0000\u0000\u0000\u0415\u0001\u0000\u0000"+ + "\u0000\u0000\u0417\u0001\u0000\u0000\u0000\u0000\u0419\u0001\u0000\u0000"+ + "\u0000\u0000\u041b\u0001\u0000\u0000\u0000\u0000\u041d\u0001\u0000\u0000"+ + "\u0000\u0000\u041f\u0001\u0000\u0000\u0000\u0000\u0421\u0001\u0000\u0000"+ + "\u0000\u0000\u0423\u0001\u0000\u0000\u0000\u0000\u0425\u0001\u0000\u0000"+ + "\u0000\u0000\u0427\u0001\u0000\u0000\u0000\u0000\u0429\u0001\u0000\u0000"+ + "\u0000\u0000\u042b\u0001\u0000\u0000\u0000\u0000\u042d\u0001\u0000\u0000"+ + "\u0000\u0000\u042f\u0001\u0000\u0000\u0000\u0000\u0431\u0001\u0000\u0000"+ + "\u0000\u0000\u0433\u0001\u0000\u0000\u0000\u0000\u0435\u0001\u0000\u0000"+ + "\u0000\u0000\u0437\u0001\u0000\u0000\u0000\u0000\u0439\u0001\u0000\u0000"+ + "\u0000\u0000\u043b\u0001\u0000\u0000\u0000\u0000\u043d\u0001\u0000\u0000"+ + "\u0000\u0000\u043f\u0001\u0000\u0000\u0000\u0000\u0441\u0001\u0000\u0000"+ + "\u0000\u0000\u0443\u0001\u0000\u0000\u0000\u0000\u0445\u0001\u0000\u0000"+ + "\u0000\u0000\u0447\u0001\u0000\u0000\u0000\u0000\u0449\u0001\u0000\u0000"+ + "\u0000\u0000\u044b\u0001\u0000\u0000\u0000\u0000\u044d\u0001\u0000\u0000"+ + "\u0000\u0000\u044f\u0001\u0000\u0000\u0000\u0000\u0451\u0001\u0000\u0000"+ + "\u0000\u0000\u0453\u0001\u0000\u0000\u0000\u0000\u0455\u0001\u0000\u0000"+ + "\u0000\u0000\u0457\u0001\u0000\u0000\u0000\u0000\u0459\u0001\u0000\u0000"+ + "\u0000\u0000\u045b\u0001\u0000\u0000\u0000\u0000\u045d\u0001\u0000\u0000"+ + "\u0000\u0000\u045f\u0001\u0000\u0000\u0000\u0000\u0461\u0001\u0000\u0000"+ + "\u0000\u0000\u0463\u0001\u0000\u0000\u0000\u0000\u0465\u0001\u0000\u0000"+ + "\u0000\u0000\u0467\u0001\u0000\u0000\u0000\u0000\u0469\u0001\u0000\u0000"+ + "\u0000\u0000\u046b\u0001\u0000\u0000\u0000\u0000\u046d\u0001\u0000\u0000"+ + "\u0000\u0000\u046f\u0001\u0000\u0000\u0000\u0000\u0471\u0001\u0000\u0000"+ + "\u0000\u0000\u0473\u0001\u0000\u0000\u0000\u0000\u0475\u0001\u0000\u0000"+ + "\u0000\u0000\u0477\u0001\u0000\u0000\u0000\u0000\u0479\u0001\u0000\u0000"+ + "\u0000\u0000\u047b\u0001\u0000\u0000\u0000\u0000\u047d\u0001\u0000\u0000"+ + "\u0000\u0000\u047f\u0001\u0000\u0000\u0000\u0000\u0481\u0001\u0000\u0000"+ + "\u0000\u0000\u0483\u0001\u0000\u0000\u0000\u0000\u0485\u0001\u0000\u0000"+ + "\u0000\u0000\u0487\u0001\u0000\u0000\u0000\u0000\u0489\u0001\u0000\u0000"+ + "\u0000\u0000\u048b\u0001\u0000\u0000\u0000\u0000\u048d\u0001\u0000\u0000"+ + "\u0000\u0000\u048f\u0001\u0000\u0000\u0000\u0000\u0491\u0001\u0000\u0000"+ + "\u0000\u0000\u0493\u0001\u0000\u0000\u0000\u0000\u0495\u0001\u0000\u0000"+ + "\u0000\u0000\u0497\u0001\u0000\u0000\u0000\u0000\u0499\u0001\u0000\u0000"+ + "\u0000\u0000\u049b\u0001\u0000\u0000\u0000\u0000\u049d\u0001\u0000\u0000"+ + "\u0000\u0000\u049f\u0001\u0000\u0000\u0000\u0000\u04a1\u0001\u0000\u0000"+ + "\u0000\u0000\u04a3\u0001\u0000\u0000\u0000\u0000\u04a5\u0001\u0000\u0000"+ + "\u0000\u0000\u04a7\u0001\u0000\u0000\u0000\u0000\u04a9\u0001\u0000\u0000"+ + "\u0000\u0000\u04ab\u0001\u0000\u0000\u0000\u0000\u04ad\u0001\u0000\u0000"+ + "\u0000\u0000\u04af\u0001\u0000\u0000\u0000\u0000\u04b1\u0001\u0000\u0000"+ + "\u0000\u0000\u04b3\u0001\u0000\u0000\u0000\u0000\u04b5\u0001\u0000\u0000"+ + "\u0000\u0000\u04b7\u0001\u0000\u0000\u0000\u0000\u04b9\u0001\u0000\u0000"+ + "\u0000\u0000\u04bb\u0001\u0000\u0000\u0000\u0000\u04bd\u0001\u0000\u0000"+ + "\u0000\u0000\u04bf\u0001\u0000\u0000\u0000\u0000\u04c1\u0001\u0000\u0000"+ + "\u0000\u0000\u04c3\u0001\u0000\u0000\u0000\u0000\u04c5\u0001\u0000\u0000"+ + "\u0000\u0000\u04c7\u0001\u0000\u0000\u0000\u0000\u04c9\u0001\u0000\u0000"+ + "\u0000\u0000\u04cb\u0001\u0000\u0000\u0000\u0000\u04cd\u0001\u0000\u0000"+ + "\u0000\u0000\u04cf\u0001\u0000\u0000\u0000\u0000\u04d1\u0001\u0000\u0000"+ + "\u0000\u0000\u04d3\u0001\u0000\u0000\u0000\u0000\u04d5\u0001\u0000\u0000"+ + "\u0000\u0000\u04d7\u0001\u0000\u0000\u0000\u0000\u04d9\u0001\u0000\u0000"+ + "\u0000\u0000\u04db\u0001\u0000\u0000\u0000\u0000\u04dd\u0001\u0000\u0000"+ + "\u0000\u0000\u04df\u0001\u0000\u0000\u0000\u0000\u04e1\u0001\u0000\u0000"+ + "\u0000\u0000\u04e3\u0001\u0000\u0000\u0000\u0000\u04e5\u0001\u0000\u0000"+ + "\u0000\u0000\u04e7\u0001\u0000\u0000\u0000\u0000\u04e9\u0001\u0000\u0000"+ + "\u0000\u0000\u04eb\u0001\u0000\u0000\u0000\u0000\u04ed\u0001\u0000\u0000"+ + "\u0000\u0000\u04ef\u0001\u0000\u0000\u0000\u0000\u04f1\u0001\u0000\u0000"+ + "\u0000\u0000\u04f3\u0001\u0000\u0000\u0000\u0000\u04f5\u0001\u0000\u0000"+ + "\u0000\u0000\u04f7\u0001\u0000\u0000\u0000\u0000\u04f9\u0001\u0000\u0000"+ + "\u0000\u0000\u04fb\u0001\u0000\u0000\u0000\u0000\u04fd\u0001\u0000\u0000"+ + "\u0000\u0000\u04ff\u0001\u0000\u0000\u0000\u0000\u0501\u0001\u0000\u0000"+ + "\u0000\u0000\u0503\u0001\u0000\u0000\u0000\u0000\u050b\u0001\u0000\u0000"+ + "\u0000\u0000\u050d\u0001\u0000\u0000\u0000\u0000\u050f\u0001\u0000\u0000"+ + "\u0000\u0000\u0511\u0001\u0000\u0000\u0000\u0000\u0513\u0001\u0000\u0000"+ + "\u0000\u0000\u0515\u0001\u0000\u0000\u0000\u0000\u0517\u0001\u0000\u0000"+ + "\u0000\u0000\u0519\u0001\u0000\u0000\u0000\u0000\u051b\u0001\u0000\u0000"+ + "\u0000\u0000\u051d\u0001\u0000\u0000\u0000\u0000\u051f\u0001\u0000\u0000"+ + "\u0000\u0000\u0521\u0001\u0000\u0000\u0000\u0000\u0523\u0001\u0000\u0000"+ + "\u0000\u0000\u0525\u0001\u0000\u0000\u0000\u0000\u0529\u0001\u0000\u0000"+ + "\u0000\u0000\u052b\u0001\u0000\u0000\u0000\u0000\u052d\u0001\u0000\u0000"+ + "\u0000\u0000\u052f\u0001\u0000\u0000\u0000\u0000\u0531\u0001\u0000\u0000"+ + "\u0000\u0000\u0533\u0001\u0000\u0000\u0000\u0000\u0535\u0001\u0000\u0000"+ + "\u0000\u0000\u0537\u0001\u0000\u0000\u0000\u0000\u0539\u0001\u0000\u0000"+ + "\u0000\u0000\u053b\u0001\u0000\u0000\u0000\u0000\u053d\u0001\u0000\u0000"+ + "\u0000\u0000\u0541\u0001\u0000\u0000\u0000\u0000\u0543\u0001\u0000\u0000"+ + "\u0000\u0000\u0545\u0001\u0000\u0000\u0000\u0000\u0547\u0001\u0000\u0000"+ + "\u0000\u0000\u0549\u0001\u0000\u0000\u0000\u0000\u054b\u0001\u0000\u0000"+ + "\u0000\u0000\u054d\u0001\u0000\u0000\u0000\u0000\u054f\u0001\u0000\u0000"+ + "\u0000\u0000\u0551\u0001\u0000\u0000\u0000\u0000\u0553\u0001\u0000\u0000"+ + "\u0000\u0001\u0555\u0001\u0000\u0000\u0000\u0001\u0557\u0001\u0000\u0000"+ + "\u0000\u0001\u055b\u0001\u0000\u0000\u0000\u0001\u055d\u0001\u0000\u0000"+ + "\u0000\u0002\u0561\u0001\u0000\u0000\u0000\u0002\u0563\u0001\u0000\u0000"+ + "\u0000\u0002\u0565\u0001\u0000\u0000\u0000\u0003\u0567\u0001\u0000\u0000"+ + "\u0000\u0003\u0569\u0001\u0000\u0000\u0000\u0003\u056b\u0001\u0000\u0000"+ + "\u0000\u0003\u056d\u0001\u0000\u0000\u0000\u0004\u056f\u0001\u0000\u0000"+ + "\u0000\u0004\u0571\u0001\u0000\u0000\u0000\u0005\u0573\u0001\u0000\u0000"+ + "\u0000\u0007\u0575\u0001\u0000\u0000\u0000\t\u0577\u0001\u0000\u0000\u0000"+ + "\u000b\u0579\u0001\u0000\u0000\u0000\r\u057b\u0001\u0000\u0000\u0000\u000f"+ + "\u057d\u0001\u0000\u0000\u0000\u0011\u057f\u0001\u0000\u0000\u0000\u0013"+ + "\u0581\u0001\u0000\u0000\u0000\u0015\u0583\u0001\u0000\u0000\u0000\u0017"+ + "\u0585\u0001\u0000\u0000\u0000\u0019\u0587\u0001\u0000\u0000\u0000\u001b"+ + "\u0589\u0001\u0000\u0000\u0000\u001d\u058b\u0001\u0000\u0000\u0000\u001f"+ + "\u058d\u0001\u0000\u0000\u0000!\u058f\u0001\u0000\u0000\u0000#\u0591\u0001"+ + "\u0000\u0000\u0000%\u0593\u0001\u0000\u0000\u0000\'\u0595\u0001\u0000"+ + "\u0000\u0000)\u0598\u0001\u0000\u0000\u0000+\u059b\u0001\u0000\u0000\u0000"+ + "-\u059e\u0001\u0000\u0000\u0000/\u05a1\u0001\u0000\u0000\u00001\u05a4"+ + "\u0001\u0000\u0000\u00003\u05a7\u0001\u0000\u0000\u00005\u05aa\u0001\u0000"+ + "\u0000\u00007\u05ad\u0001\u0000\u0000\u00009\u05b0\u0001\u0000\u0000\u0000"+ + ";\u05b2\u0001\u0000\u0000\u0000=\u05cc\u0001\u0000\u0000\u0000?\u05d7"+ + "\u0001\u0000\u0000\u0000A\u05e7\u0001\u0000\u0000\u0000C\u05e9\u0001\u0000"+ + "\u0000\u0000E\u05eb\u0001\u0000\u0000\u0000G\u05ed\u0001\u0000\u0000\u0000"+ + "I\u05f1\u0001\u0000\u0000\u0000K\u05f9\u0001\u0000\u0000\u0000M\u0601"+ + "\u0001\u0000\u0000\u0000O\u0605\u0001\u0000\u0000\u0000Q\u0609\u0001\u0000"+ + "\u0000\u0000S\u060f\u0001\u0000\u0000\u0000U\u0612\u0001\u0000\u0000\u0000"+ + "W\u0616\u0001\u0000\u0000\u0000Y\u0621\u0001\u0000\u0000\u0000[\u0626"+ + "\u0001\u0000\u0000\u0000]\u062b\u0001\u0000\u0000\u0000_\u0630\u0001\u0000"+ + "\u0000\u0000a\u0636\u0001\u0000\u0000\u0000c\u063e\u0001\u0000\u0000\u0000"+ + "e\u0645\u0001\u0000\u0000\u0000g\u0650\u0001\u0000\u0000\u0000i\u0657"+ + "\u0001\u0000\u0000\u0000k\u0667\u0001\u0000\u0000\u0000m\u0674\u0001\u0000"+ + "\u0000\u0000o\u0681\u0001\u0000\u0000\u0000q\u068e\u0001\u0000\u0000\u0000"+ + "s\u06a0\u0001\u0000\u0000\u0000u\u06ad\u0001\u0000\u0000\u0000w\u06b5"+ + "\u0001\u0000\u0000\u0000y\u06c0\u0001\u0000\u0000\u0000{\u06c5\u0001\u0000"+ + "\u0000\u0000}\u06ce\u0001\u0000\u0000\u0000\u007f\u06d1\u0001\u0000\u0000"+ + "\u0000\u0081\u06d6\u0001\u0000\u0000\u0000\u0083\u06dd\u0001\u0000\u0000"+ + "\u0000\u0085\u06e3\u0001\u0000\u0000\u0000\u0087\u06e9\u0001\u0000\u0000"+ + "\u0000\u0089\u06ed\u0001\u0000\u0000\u0000\u008b\u06f5\u0001\u0000\u0000"+ + "\u0000\u008d\u06fa\u0001\u0000\u0000\u0000\u008f\u0700\u0001\u0000\u0000"+ + "\u0000\u0091\u0706\u0001\u0000\u0000\u0000\u0093\u070d\u0001\u0000\u0000"+ + "\u0000\u0095\u0710\u0001\u0000\u0000\u0000\u0097\u071a\u0001\u0000\u0000"+ + "\u0000\u0099\u0724\u0001\u0000\u0000\u0000\u009b\u0729\u0001\u0000\u0000"+ + "\u0000\u009d\u0731\u0001\u0000\u0000\u0000\u009f\u0739\u0001\u0000\u0000"+ + "\u0000\u00a1\u073f\u0001\u0000\u0000\u0000\u00a3\u0749\u0001\u0000\u0000"+ + "\u0000\u00a5\u0758\u0001\u0000\u0000\u0000\u00a7\u075c\u0001\u0000\u0000"+ + "\u0000\u00a9\u0761\u0001\u0000\u0000\u0000\u00ab\u0768\u0001\u0000\u0000"+ + "\u0000\u00ad\u076b\u0001\u0000\u0000\u0000\u00af\u0770\u0001\u0000\u0000"+ + "\u0000\u00b1\u0773\u0001\u0000\u0000\u0000\u00b3\u0779\u0001\u0000\u0000"+ + "\u0000\u00b5\u0781\u0001\u0000\u0000\u0000\u00b7\u0789\u0001\u0000\u0000"+ + "\u0000\u00b9\u0794\u0001\u0000\u0000\u0000\u00bb\u079e\u0001\u0000\u0000"+ + "\u0000\u00bd\u07a5\u0001\u0000\u0000\u0000\u00bf\u07b2\u0001\u0000\u0000"+ + "\u0000\u00c1\u07b7\u0001\u0000\u0000\u0000\u00c3\u07c1\u0001\u0000\u0000"+ + "\u0000\u00c5\u07c7\u0001\u0000\u0000\u0000\u00c7\u07cc\u0001\u0000\u0000"+ + "\u0000\u00c9\u07cf\u0001\u0000\u0000\u0000\u00cb\u07d8\u0001\u0000\u0000"+ + "\u0000\u00cd\u07dd\u0001\u0000\u0000\u0000\u00cf\u07e3\u0001\u0000\u0000"+ + "\u0000\u00d1\u07ea\u0001\u0000\u0000\u0000\u00d3\u07ef\u0001\u0000\u0000"+ + "\u0000\u00d5\u07f5\u0001\u0000\u0000\u0000\u00d7\u07fe\u0001\u0000\u0000"+ + "\u0000\u00d9\u0803\u0001\u0000\u0000\u0000\u00db\u0809\u0001\u0000\u0000"+ + "\u0000\u00dd\u0810\u0001\u0000\u0000\u0000\u00df\u0815\u0001\u0000\u0000"+ + "\u0000\u00e1\u0823\u0001\u0000\u0000\u0000\u00e3\u082a\u0001\u0000\u0000"+ + "\u0000\u00e5\u0834\u0001\u0000\u0000\u0000\u00e7\u0841\u0001\u0000\u0000"+ + "\u0000\u00e9\u0847\u0001\u0000\u0000\u0000\u00eb\u0856\u0001\u0000\u0000"+ + "\u0000\u00ed\u085d\u0001\u0000\u0000\u0000\u00ef\u0862\u0001\u0000\u0000"+ + "\u0000\u00f1\u0868\u0001\u0000\u0000\u0000\u00f3\u086e\u0001\u0000\u0000"+ + "\u0000\u00f5\u0871\u0001\u0000\u0000\u0000\u00f7\u0878\u0001\u0000\u0000"+ + "\u0000\u00f9\u087d\u0001\u0000\u0000\u0000\u00fb\u0882\u0001\u0000\u0000"+ + "\u0000\u00fd\u0887\u0001\u0000\u0000\u0000\u00ff\u088f\u0001\u0000\u0000"+ + "\u0000\u0101\u0897\u0001\u0000\u0000\u0000\u0103\u089d\u0001\u0000\u0000"+ + "\u0000\u0105\u08a2\u0001\u0000\u0000\u0000\u0107\u08ab\u0001\u0000\u0000"+ + "\u0000\u0109\u08b1\u0001\u0000\u0000\u0000\u010b\u08b9\u0001\u0000\u0000"+ + "\u0000\u010d\u08c1\u0001\u0000\u0000\u0000\u010f\u08c7\u0001\u0000\u0000"+ + "\u0000\u0111\u08d0\u0001\u0000\u0000\u0000\u0113\u08d7\u0001\u0000\u0000"+ + "\u0000\u0115\u08de\u0001\u0000\u0000\u0000\u0117\u08e2\u0001\u0000\u0000"+ + "\u0000\u0119\u08e8\u0001\u0000\u0000\u0000\u011b\u08ee\u0001\u0000\u0000"+ + "\u0000\u011d\u08f8\u0001\u0000\u0000\u0000\u011f\u08fd\u0001\u0000\u0000"+ + "\u0000\u0121\u0903\u0001\u0000\u0000\u0000\u0123\u090a\u0001\u0000\u0000"+ + "\u0000\u0125\u0914\u0001\u0000\u0000\u0000\u0127\u091f\u0001\u0000\u0000"+ + "\u0000\u0129\u0922\u0001\u0000\u0000\u0000\u012b\u092c\u0001\u0000\u0000"+ + "\u0000\u012d\u0935\u0001\u0000\u0000\u0000\u012f\u093c\u0001\u0000\u0000"+ + "\u0000\u0131\u0942\u0001\u0000\u0000\u0000\u0133\u0945\u0001\u0000\u0000"+ + "\u0000\u0135\u094b\u0001\u0000\u0000\u0000\u0137\u0952\u0001\u0000\u0000"+ + "\u0000\u0139\u095a\u0001\u0000\u0000\u0000\u013b\u0963\u0001\u0000\u0000"+ + "\u0000\u013d\u096b\u0001\u0000\u0000\u0000\u013f\u0971\u0001\u0000\u0000"+ + "\u0000\u0141\u0981\u0001\u0000\u0000\u0000\u0143\u098c\u0001\u0000\u0000"+ + "\u0000\u0145\u0992\u0001\u0000\u0000\u0000\u0147\u0998\u0001\u0000\u0000"+ + "\u0000\u0149\u09a0\u0001\u0000\u0000\u0000\u014b\u09a8\u0001\u0000\u0000"+ + "\u0000\u014d\u09b1\u0001\u0000\u0000\u0000\u014f\u09b8\u0001\u0000\u0000"+ + "\u0000\u0151\u09c2\u0001\u0000\u0000\u0000\u0153\u09d0\u0001\u0000\u0000"+ + "\u0000\u0155\u09db\u0001\u0000\u0000\u0000\u0157\u09e7\u0001\u0000\u0000"+ + "\u0000\u0159\u09ef\u0001\u0000\u0000\u0000\u015b\u09f8\u0001\u0000\u0000"+ + "\u0000\u015d\u0a03\u0001\u0000\u0000\u0000\u015f\u0a08\u0001\u0000\u0000"+ + "\u0000\u0161\u0a0d\u0001\u0000\u0000\u0000\u0163\u0a11\u0001\u0000\u0000"+ + "\u0000\u0165\u0a18\u0001\u0000\u0000\u0000\u0167\u0a1e\u0001\u0000\u0000"+ + "\u0000\u0169\u0a23\u0001\u0000\u0000\u0000\u016b\u0a2c\u0001\u0000\u0000"+ + "\u0000\u016d\u0a30\u0001\u0000\u0000\u0000\u016f\u0a3b\u0001\u0000\u0000"+ + "\u0000\u0171\u0a43\u0001\u0000\u0000\u0000\u0173\u0a4c\u0001\u0000\u0000"+ + "\u0000\u0175\u0a55\u0001\u0000\u0000\u0000\u0177\u0a5d\u0001\u0000\u0000"+ + "\u0000\u0179\u0a64\u0001\u0000\u0000\u0000\u017b\u0a6e\u0001\u0000\u0000"+ + "\u0000\u017d\u0a79\u0001\u0000\u0000\u0000\u017f\u0a84\u0001\u0000\u0000"+ + "\u0000\u0181\u0a8c\u0001\u0000\u0000\u0000\u0183\u0a94\u0001\u0000\u0000"+ + "\u0000\u0185\u0a9d\u0001\u0000\u0000\u0000\u0187\u0aa4\u0001\u0000\u0000"+ + "\u0000\u0189\u0aab\u0001\u0000\u0000\u0000\u018b\u0ab0\u0001\u0000\u0000"+ + "\u0000\u018d\u0ab5\u0001\u0000\u0000\u0000\u018f\u0abc\u0001\u0000\u0000"+ + "\u0000\u0191\u0ac5\u0001\u0000\u0000\u0000\u0193\u0acf\u0001\u0000\u0000"+ + "\u0000\u0195\u0ad4\u0001\u0000\u0000\u0000\u0197\u0adb\u0001\u0000\u0000"+ + "\u0000\u0199\u0ae1\u0001\u0000\u0000\u0000\u019b\u0ae9\u0001\u0000\u0000"+ + "\u0000\u019d\u0af3\u0001\u0000\u0000\u0000\u019f\u0afd\u0001\u0000\u0000"+ + "\u0000\u01a1\u0b05\u0001\u0000\u0000\u0000\u01a3\u0b0d\u0001\u0000\u0000"+ + "\u0000\u01a5\u0b17\u0001\u0000\u0000\u0000\u01a7\u0b20\u0001\u0000\u0000"+ + "\u0000\u01a9\u0b27\u0001\u0000\u0000\u0000\u01ab\u0b2d\u0001\u0000\u0000"+ + "\u0000\u01ad\u0b37\u0001\u0000\u0000\u0000\u01af\u0b3d\u0001\u0000\u0000"+ + "\u0000\u01b1\u0b45\u0001\u0000\u0000\u0000\u01b3\u0b4e\u0001\u0000\u0000"+ + "\u0000\u01b5\u0b58\u0001\u0000\u0000\u0000\u01b7\u0b5f\u0001\u0000\u0000"+ + "\u0000\u01b9\u0b67\u0001\u0000\u0000\u0000\u01bb\u0b6f\u0001\u0000\u0000"+ + "\u0000\u01bd\u0b76\u0001\u0000\u0000\u0000\u01bf\u0b7b\u0001\u0000\u0000"+ + "\u0000\u01c1\u0b80\u0001\u0000\u0000\u0000\u01c3\u0b89\u0001\u0000\u0000"+ + "\u0000\u01c5\u0b8c\u0001\u0000\u0000\u0000\u01c7\u0b96\u0001\u0000\u0000"+ + "\u0000\u01c9\u0ba0\u0001\u0000\u0000\u0000\u01cb\u0ba9\u0001\u0000\u0000"+ + "\u0000\u01cd\u0bb3\u0001\u0000\u0000\u0000\u01cf\u0bbd\u0001\u0000\u0000"+ + "\u0000\u01d1\u0bc3\u0001\u0000\u0000\u0000\u01d3\u0bcb\u0001\u0000\u0000"+ + "\u0000\u01d5\u0bd3\u0001\u0000\u0000\u0000\u01d7\u0bdc\u0001\u0000\u0000"+ + "\u0000\u01d9\u0be3\u0001\u0000\u0000\u0000\u01db\u0bef\u0001\u0000\u0000"+ + "\u0000\u01dd\u0bf6\u0001\u0000\u0000\u0000\u01df\u0bfe\u0001\u0000\u0000"+ + "\u0000\u01e1\u0c06\u0001\u0000\u0000\u0000\u01e3\u0c10\u0001\u0000\u0000"+ + "\u0000\u01e5\u0c14\u0001\u0000\u0000\u0000\u01e7\u0c1a\u0001\u0000\u0000"+ + "\u0000\u01e9\u0c23\u0001\u0000\u0000\u0000\u01eb\u0c29\u0001\u0000\u0000"+ + "\u0000\u01ed\u0c2e\u0001\u0000\u0000\u0000\u01ef\u0c38\u0001\u0000\u0000"+ + "\u0000\u01f1\u0c3e\u0001\u0000\u0000\u0000\u01f3\u0c45\u0001\u0000\u0000"+ + "\u0000\u01f5\u0c4a\u0001\u0000\u0000\u0000\u01f7\u0c50\u0001\u0000\u0000"+ + "\u0000\u01f9\u0c59\u0001\u0000\u0000\u0000\u01fb\u0c5e\u0001\u0000\u0000"+ + "\u0000\u01fd\u0c66\u0001\u0000\u0000\u0000\u01ff\u0c6c\u0001\u0000\u0000"+ + "\u0000\u0201\u0c74\u0001\u0000\u0000\u0000\u0203\u0c81\u0001\u0000\u0000"+ + "\u0000\u0205\u0c8a\u0001\u0000\u0000\u0000\u0207\u0c90\u0001\u0000\u0000"+ + "\u0000\u0209\u0c97\u0001\u0000\u0000\u0000\u020b\u0ca0\u0001\u0000\u0000"+ + "\u0000\u020d\u0ca5\u0001\u0000\u0000\u0000\u020f\u0cab\u0001\u0000\u0000"+ + "\u0000\u0211\u0cb0\u0001\u0000\u0000\u0000\u0213\u0cb5\u0001\u0000\u0000"+ + "\u0000\u0215\u0cbb\u0001\u0000\u0000\u0000\u0217\u0cc0\u0001\u0000\u0000"+ + "\u0000\u0219\u0cc3\u0001\u0000\u0000\u0000\u021b\u0ccb\u0001\u0000\u0000"+ + "\u0000\u021d\u0cd2\u0001\u0000\u0000\u0000\u021f\u0cd9\u0001\u0000\u0000"+ + "\u0000\u0221\u0cdf\u0001\u0000\u0000\u0000\u0223\u0ce6\u0001\u0000\u0000"+ + "\u0000\u0225\u0ce9\u0001\u0000\u0000\u0000\u0227\u0ced\u0001\u0000\u0000"+ + "\u0000\u0229\u0cf2\u0001\u0000\u0000\u0000\u022b\u0cfb\u0001\u0000\u0000"+ + "\u0000\u022d\u0d02\u0001\u0000\u0000\u0000\u022f\u0d0a\u0001\u0000\u0000"+ + "\u0000\u0231\u0d10\u0001\u0000\u0000\u0000\u0233\u0d16\u0001\u0000\u0000"+ + "\u0000\u0235\u0d1d\u0001\u0000\u0000\u0000\u0237\u0d25\u0001\u0000\u0000"+ + "\u0000\u0239\u0d2f\u0001\u0000\u0000\u0000\u023b\u0d37\u0001\u0000\u0000"+ + "\u0000\u023d\u0d40\u0001\u0000\u0000\u0000\u023f\u0d46\u0001\u0000\u0000"+ + "\u0000\u0241\u0d50\u0001\u0000\u0000\u0000\u0243\u0d58\u0001\u0000\u0000"+ + "\u0000\u0245\u0d61\u0001\u0000\u0000\u0000\u0247\u0d6a\u0001\u0000\u0000"+ + "\u0000\u0249\u0d70\u0001\u0000\u0000\u0000\u024b\u0d7b\u0001\u0000\u0000"+ + "\u0000\u024d\u0d86\u0001\u0000\u0000\u0000\u024f\u0d90\u0001\u0000\u0000"+ + "\u0000\u0251\u0d98\u0001\u0000\u0000\u0000\u0253\u0d9e\u0001\u0000\u0000"+ + "\u0000\u0255\u0da4\u0001\u0000\u0000\u0000\u0257\u0da9\u0001\u0000\u0000"+ + "\u0000\u0259\u0db2\u0001\u0000\u0000\u0000\u025b\u0dba\u0001\u0000\u0000"+ + "\u0000\u025d\u0dc4\u0001\u0000\u0000\u0000\u025f\u0dc8\u0001\u0000\u0000"+ + "\u0000\u0261\u0dd0\u0001\u0000\u0000\u0000\u0263\u0dd8\u0001\u0000\u0000"+ + "\u0000\u0265\u0de1\u0001\u0000\u0000\u0000\u0267\u0de9\u0001\u0000\u0000"+ + "\u0000\u0269\u0df0\u0001\u0000\u0000\u0000\u026b\u0dfb\u0001\u0000\u0000"+ + "\u0000\u026d\u0e03\u0001\u0000\u0000\u0000\u026f\u0e0b\u0001\u0000\u0000"+ + "\u0000\u0271\u0e11\u0001\u0000\u0000\u0000\u0273\u0e19\u0001\u0000\u0000"+ + "\u0000\u0275\u0e22\u0001\u0000\u0000\u0000\u0277\u0e2a\u0001\u0000\u0000"+ + "\u0000\u0279\u0e31\u0001\u0000\u0000\u0000\u027b\u0e36\u0001\u0000\u0000"+ + "\u0000\u027d\u0e3f\u0001\u0000\u0000\u0000\u027f\u0e44\u0001\u0000\u0000"+ + "\u0000\u0281\u0e49\u0001\u0000\u0000\u0000\u0283\u0e53\u0001\u0000\u0000"+ + "\u0000\u0285\u0e5a\u0001\u0000\u0000\u0000\u0287\u0e61\u0001\u0000\u0000"+ + "\u0000\u0289\u0e68\u0001\u0000\u0000\u0000\u028b\u0e6f\u0001\u0000\u0000"+ + "\u0000\u028d\u0e78\u0001\u0000\u0000\u0000\u028f\u0e81\u0001\u0000\u0000"+ + "\u0000\u0291\u0e8b\u0001\u0000\u0000\u0000\u0293\u0e98\u0001\u0000\u0000"+ + "\u0000\u0295\u0e9f\u0001\u0000\u0000\u0000\u0297\u0ea7\u0001\u0000\u0000"+ + "\u0000\u0299\u0eab\u0001\u0000\u0000\u0000\u029b\u0eb1\u0001\u0000\u0000"+ + "\u0000\u029d\u0eb6\u0001\u0000\u0000\u0000\u029f\u0ebd\u0001\u0000\u0000"+ + "\u0000\u02a1\u0ec6\u0001\u0000\u0000\u0000\u02a3\u0ecd\u0001\u0000\u0000"+ + "\u0000\u02a5\u0ed8\u0001\u0000\u0000\u0000\u02a7\u0ede\u0001\u0000\u0000"+ + "\u0000\u02a9\u0ee8\u0001\u0000\u0000\u0000\u02ab\u0ef3\u0001\u0000\u0000"+ + "\u0000\u02ad\u0ef9\u0001\u0000\u0000\u0000\u02af\u0f00\u0001\u0000\u0000"+ + "\u0000\u02b1\u0f08\u0001\u0000\u0000\u0000\u02b3\u0f0f\u0001\u0000\u0000"+ + "\u0000\u02b5\u0f15\u0001\u0000\u0000\u0000\u02b7\u0f1b\u0001\u0000\u0000"+ + "\u0000\u02b9\u0f22\u0001\u0000\u0000\u0000\u02bb\u0f29\u0001\u0000\u0000"+ + "\u0000\u02bd\u0f34\u0001\u0000\u0000\u0000\u02bf\u0f39\u0001\u0000\u0000"+ + "\u0000\u02c1\u0f42\u0001\u0000\u0000\u0000\u02c3\u0f4c\u0001\u0000\u0000"+ + "\u0000\u02c5\u0f51\u0001\u0000\u0000\u0000\u02c7\u0f5d\u0001\u0000\u0000"+ + "\u0000\u02c9\u0f65\u0001\u0000\u0000\u0000\u02cb\u0f6e\u0001\u0000\u0000"+ + "\u0000\u02cd\u0f76\u0001\u0000\u0000\u0000\u02cf\u0f7b\u0001\u0000\u0000"+ + "\u0000\u02d1\u0f81\u0001\u0000\u0000\u0000\u02d3\u0f8b\u0001\u0000\u0000"+ + "\u0000\u02d5\u0f97\u0001\u0000\u0000\u0000\u02d7\u0fa3\u0001\u0000\u0000"+ + "\u0000\u02d9\u0fab\u0001\u0000\u0000\u0000\u02db\u0fb4\u0001\u0000\u0000"+ + "\u0000\u02dd\u0fbd\u0001\u0000\u0000\u0000\u02df\u0fc3\u0001\u0000\u0000"+ + "\u0000\u02e1\u0fca\u0001\u0000\u0000\u0000\u02e3\u0fd1\u0001\u0000\u0000"+ + "\u0000\u02e5\u0fd7\u0001\u0000\u0000\u0000\u02e7\u0fe0\u0001\u0000\u0000"+ + "\u0000\u02e9\u0fea\u0001\u0000\u0000\u0000\u02eb\u0ff2\u0001\u0000\u0000"+ + "\u0000\u02ed\u0ffa\u0001\u0000\u0000\u0000\u02ef\u0fff\u0001\u0000\u0000"+ + "\u0000\u02f1\u1008\u0001\u0000\u0000\u0000\u02f3\u1013\u0001\u0000\u0000"+ + "\u0000\u02f5\u101b\u0001\u0000\u0000\u0000\u02f7\u1020\u0001\u0000\u0000"+ + "\u0000\u02f9\u1028\u0001\u0000\u0000\u0000\u02fb\u102e\u0001\u0000\u0000"+ + "\u0000\u02fd\u1032\u0001\u0000\u0000\u0000\u02ff\u1037\u0001\u0000"; + private static final String _serializedATNSegment1 = + "\u0000\u0000\u0301\u103b\u0001\u0000\u0000\u0000\u0303\u1040\u0001\u0000"+ + "\u0000\u0000\u0305\u1048\u0001\u0000\u0000\u0000\u0307\u104f\u0001\u0000"+ + "\u0000\u0000\u0309\u1053\u0001\u0000\u0000\u0000\u030b\u105b\u0001\u0000"+ + "\u0000\u0000\u030d\u1060\u0001\u0000\u0000\u0000\u030f\u106a\u0001\u0000"+ + "\u0000\u0000\u0311\u1073\u0001\u0000\u0000\u0000\u0313\u1077\u0001\u0000"+ + "\u0000\u0000\u0315\u107f\u0001\u0000\u0000\u0000\u0317\u1086\u0001\u0000"+ + "\u0000\u0000\u0319\u108e\u0001\u0000\u0000\u0000\u031b\u1094\u0001\u0000"+ + "\u0000\u0000\u031d\u109d\u0001\u0000\u0000\u0000\u031f\u10a3\u0001\u0000"+ + "\u0000\u0000\u0321\u10a7\u0001\u0000\u0000\u0000\u0323\u10af\u0001\u0000"+ + "\u0000\u0000\u0325\u10b8\u0001\u0000\u0000\u0000\u0327\u10be\u0001\u0000"+ + "\u0000\u0000\u0329\u10c7\u0001\u0000\u0000\u0000\u032b\u10cd\u0001\u0000"+ + "\u0000\u0000\u032d\u10d2\u0001\u0000\u0000\u0000\u032f\u10d9\u0001\u0000"+ + "\u0000\u0000\u0331\u10e1\u0001\u0000\u0000\u0000\u0333\u10e9\u0001\u0000"+ + "\u0000\u0000\u0335\u10f2\u0001\u0000\u0000\u0000\u0337\u10fc\u0001\u0000"+ + "\u0000\u0000\u0339\u1101\u0001\u0000\u0000\u0000\u033b\u1105\u0001\u0000"+ + "\u0000\u0000\u033d\u110b\u0001\u0000\u0000\u0000\u033f\u1114\u0001\u0000"+ + "\u0000\u0000\u0341\u111e\u0001\u0000\u0000\u0000\u0343\u1123\u0001\u0000"+ + "\u0000\u0000\u0345\u112d\u0001\u0000\u0000\u0000\u0347\u1133\u0001\u0000"+ + "\u0000\u0000\u0349\u1138\u0001\u0000\u0000\u0000\u034b\u113f\u0001\u0000"+ + "\u0000\u0000\u034d\u1147\u0001\u0000\u0000\u0000\u034f\u1155\u0001\u0000"+ + "\u0000\u0000\u0351\u1160\u0001\u0000\u0000\u0000\u0353\u1167\u0001\u0000"+ + "\u0000\u0000\u0355\u117a\u0001\u0000\u0000\u0000\u0357\u1196\u0001\u0000"+ + "\u0000\u0000\u0359\u11b1\u0001\u0000\u0000\u0000\u035b\u11b7\u0001\u0000"+ + "\u0000\u0000\u035d\u11c4\u0001\u0000\u0000\u0000\u035f\u11ce\u0001\u0000"+ + "\u0000\u0000\u0361\u11d9\u0001\u0000\u0000\u0000\u0363\u11e3\u0001\u0000"+ + "\u0000\u0000\u0365\u11ed\u0001\u0000\u0000\u0000\u0367\u11f6\u0001\u0000"+ + "\u0000\u0000\u0369\u11fc\u0001\u0000\u0000\u0000\u036b\u1204\u0001\u0000"+ + "\u0000\u0000\u036d\u1211\u0001\u0000\u0000\u0000\u036f\u1216\u0001\u0000"+ + "\u0000\u0000\u0371\u121e\u0001\u0000\u0000\u0000\u0373\u1225\u0001\u0000"+ + "\u0000\u0000\u0375\u122c\u0001\u0000\u0000\u0000\u0377\u1237\u0001\u0000"+ + "\u0000\u0000\u0379\u1241\u0001\u0000\u0000\u0000\u037b\u1248\u0001\u0000"+ + "\u0000\u0000\u037d\u124f\u0001\u0000\u0000\u0000\u037f\u1257\u0001\u0000"+ + "\u0000\u0000\u0381\u125f\u0001\u0000\u0000\u0000\u0383\u1269\u0001\u0000"+ + "\u0000\u0000\u0385\u1270\u0001\u0000\u0000\u0000\u0387\u1277\u0001\u0000"+ + "\u0000\u0000\u0389\u127e\u0001\u0000\u0000\u0000\u038b\u128a\u0001\u0000"+ + "\u0000\u0000\u038d\u128e\u0001\u0000\u0000\u0000\u038f\u1292\u0001\u0000"+ + "\u0000\u0000\u0391\u1298\u0001\u0000\u0000\u0000\u0393\u12a5\u0001\u0000"+ + "\u0000\u0000\u0395\u12b1\u0001\u0000\u0000\u0000\u0397\u12b5\u0001\u0000"+ + "\u0000\u0000\u0399\u12b9\u0001\u0000\u0000\u0000\u039b\u12c2\u0001\u0000"+ + "\u0000\u0000\u039d\u12ca\u0001\u0000\u0000\u0000\u039f\u12d5\u0001\u0000"+ + "\u0000\u0000\u03a1\u12db\u0001\u0000\u0000\u0000\u03a3\u12e3\u0001\u0000"+ + "\u0000\u0000\u03a5\u12ec\u0001\u0000\u0000\u0000\u03a7\u12f0\u0001\u0000"+ + "\u0000\u0000\u03a9\u12f8\u0001\u0000\u0000\u0000\u03ab\u1303\u0001\u0000"+ + "\u0000\u0000\u03ad\u130c\u0001\u0000\u0000\u0000\u03af\u1311\u0001\u0000"+ + "\u0000\u0000\u03b1\u1318\u0001\u0000\u0000\u0000\u03b3\u131d\u0001\u0000"+ + "\u0000\u0000\u03b5\u1324\u0001\u0000\u0000\u0000\u03b7\u1329\u0001\u0000"+ + "\u0000\u0000\u03b9\u1332\u0001\u0000\u0000\u0000\u03bb\u1337\u0001\u0000"+ + "\u0000\u0000\u03bd\u1343\u0001\u0000\u0000\u0000\u03bf\u134e\u0001\u0000"+ + "\u0000\u0000\u03c1\u1357\u0001\u0000\u0000\u0000\u03c3\u135f\u0001\u0000"+ + "\u0000\u0000\u03c5\u136d\u0001\u0000\u0000\u0000\u03c7\u1375\u0001\u0000"+ + "\u0000\u0000\u03c9\u1380\u0001\u0000\u0000\u0000\u03cb\u1387\u0001\u0000"+ + "\u0000\u0000\u03cd\u138e\u0001\u0000\u0000\u0000\u03cf\u1395\u0001\u0000"+ + "\u0000\u0000\u03d1\u139c\u0001\u0000\u0000\u0000\u03d3\u13a0\u0001\u0000"+ + "\u0000\u0000\u03d5\u13a4\u0001\u0000\u0000\u0000\u03d7\u13a9\u0001\u0000"+ + "\u0000\u0000\u03d9\u13ae\u0001\u0000\u0000\u0000\u03db\u13b6\u0001\u0000"+ + "\u0000\u0000\u03dd\u13bc\u0001\u0000\u0000\u0000\u03df\u13c6\u0001\u0000"+ + "\u0000\u0000\u03e1\u13cb\u0001\u0000\u0000\u0000\u03e3\u13df\u0001\u0000"+ + "\u0000\u0000\u03e5\u13f1\u0001\u0000\u0000\u0000\u03e7\u13f7\u0001\u0000"+ + "\u0000\u0000\u03e9\u1404\u0001\u0000\u0000\u0000\u03eb\u140f\u0001\u0000"+ + "\u0000\u0000\u03ed\u1415\u0001\u0000\u0000\u0000\u03ef\u141e\u0001\u0000"+ + "\u0000\u0000\u03f1\u1426\u0001\u0000\u0000\u0000\u03f3\u142a\u0001\u0000"+ + "\u0000\u0000\u03f5\u1436\u0001\u0000\u0000\u0000\u03f7\u143e\u0001\u0000"+ + "\u0000\u0000\u03f9\u1444\u0001\u0000\u0000\u0000\u03fb\u144a\u0001\u0000"+ + "\u0000\u0000\u03fd\u1452\u0001\u0000\u0000\u0000\u03ff\u145a\u0001\u0000"+ + "\u0000\u0000\u0401\u1460\u0001\u0000\u0000\u0000\u0403\u1465\u0001\u0000"+ + "\u0000\u0000\u0405\u146c\u0001\u0000\u0000\u0000\u0407\u1472\u0001\u0000"+ + "\u0000\u0000\u0409\u1478\u0001\u0000\u0000\u0000\u040b\u1481\u0001\u0000"+ + "\u0000\u0000\u040d\u1487\u0001\u0000\u0000\u0000\u040f\u148b\u0001\u0000"+ + "\u0000\u0000\u0411\u1490\u0001\u0000\u0000\u0000\u0413\u1497\u0001\u0000"+ + "\u0000\u0000\u0415\u149f\u0001\u0000\u0000\u0000\u0417\u14a9\u0001\u0000"+ + "\u0000\u0000\u0419\u14b0\u0001\u0000\u0000\u0000\u041b\u14b5\u0001\u0000"+ + "\u0000\u0000\u041d\u14ba\u0001\u0000\u0000\u0000\u041f\u14be\u0001\u0000"+ + "\u0000\u0000\u0421\u14c3\u0001\u0000\u0000\u0000\u0423\u14c8\u0001\u0000"+ + "\u0000\u0000\u0425\u14d0\u0001\u0000\u0000\u0000\u0427\u14d8\u0001\u0000"+ + "\u0000\u0000\u0429\u14dc\u0001\u0000\u0000\u0000\u042b\u14e0\u0001\u0000"+ + "\u0000\u0000\u042d\u14ea\u0001\u0000\u0000\u0000\u042f\u14f0\u0001\u0000"+ + "\u0000\u0000\u0431\u14f4\u0001\u0000\u0000\u0000\u0433\u14f8\u0001\u0000"+ + "\u0000\u0000\u0435\u14fb\u0001\u0000\u0000\u0000\u0437\u1501\u0001\u0000"+ + "\u0000\u0000\u0439\u150b\u0001\u0000\u0000\u0000\u043b\u150f\u0001\u0000"+ + "\u0000\u0000\u043d\u1512\u0001\u0000\u0000\u0000\u043f\u1518\u0001\u0000"+ + "\u0000\u0000\u0441\u1520\u0001\u0000\u0000\u0000\u0443\u1526\u0001\u0000"+ + "\u0000\u0000\u0445\u152c\u0001\u0000\u0000\u0000\u0447\u1531\u0001\u0000"+ + "\u0000\u0000\u0449\u1536\u0001\u0000\u0000\u0000\u044b\u1541\u0001\u0000"+ + "\u0000\u0000\u044d\u1547\u0001\u0000\u0000\u0000\u044f\u1554\u0001\u0000"+ + "\u0000\u0000\u0451\u155b\u0001\u0000\u0000\u0000\u0453\u1563\u0001\u0000"+ + "\u0000\u0000\u0455\u1568\u0001\u0000\u0000\u0000\u0457\u156e\u0001\u0000"+ + "\u0000\u0000\u0459\u1573\u0001\u0000\u0000\u0000\u045b\u1579\u0001\u0000"+ + "\u0000\u0000\u045d\u157e\u0001\u0000\u0000\u0000\u045f\u1584\u0001\u0000"+ + "\u0000\u0000\u0461\u158a\u0001\u0000\u0000\u0000\u0463\u1591\u0001\u0000"+ + "\u0000\u0000\u0465\u1595\u0001\u0000\u0000\u0000\u0467\u159a\u0001\u0000"+ + "\u0000\u0000\u0469\u159e\u0001\u0000\u0000\u0000\u046b\u15a3\u0001\u0000"+ + "\u0000\u0000\u046d\u15a7\u0001\u0000\u0000\u0000\u046f\u15ac\u0001\u0000"+ + "\u0000\u0000\u0471\u15b0\u0001\u0000\u0000\u0000\u0473\u15b5\u0001\u0000"+ + "\u0000\u0000\u0475\u15ba\u0001\u0000\u0000\u0000\u0477\u15bf\u0001\u0000"+ + "\u0000\u0000\u0479\u15c4\u0001\u0000\u0000\u0000\u047b\u15ca\u0001\u0000"+ + "\u0000\u0000\u047d\u15d0\u0001\u0000\u0000\u0000\u047f\u15d6\u0001\u0000"+ + "\u0000\u0000\u0481\u15e1\u0001\u0000\u0000\u0000\u0483\u15ed\u0001\u0000"+ + "\u0000\u0000\u0485\u15fe\u0001\u0000\u0000\u0000\u0487\u1604\u0001\u0000"+ + "\u0000\u0000\u0489\u1611\u0001\u0000\u0000\u0000\u048b\u1617\u0001\u0000"+ + "\u0000\u0000\u048d\u161d\u0001\u0000\u0000\u0000\u048f\u1623\u0001\u0000"+ + "\u0000\u0000\u0491\u1627\u0001\u0000\u0000\u0000\u0493\u162e\u0001\u0000"+ + "\u0000\u0000\u0495\u1638\u0001\u0000\u0000\u0000\u0497\u163f\u0001\u0000"+ + "\u0000\u0000\u0499\u1647\u0001\u0000\u0000\u0000\u049b\u164e\u0001\u0000"+ + "\u0000\u0000\u049d\u1653\u0001\u0000\u0000\u0000\u049f\u1659\u0001\u0000"+ + "\u0000\u0000\u04a1\u165d\u0001\u0000\u0000\u0000\u04a3\u1669\u0001\u0000"+ + "\u0000\u0000\u04a5\u167c\u0001\u0000\u0000\u0000\u04a7\u1688\u0001\u0000"+ + "\u0000\u0000\u04a9\u1696\u0001\u0000\u0000\u0000\u04ab\u16a5\u0001\u0000"+ + "\u0000\u0000\u04ad\u16b2\u0001\u0000\u0000\u0000\u04af\u16bf\u0001\u0000"+ + "\u0000\u0000\u04b1\u16cb\u0001\u0000\u0000\u0000\u04b3\u16d8\u0001\u0000"+ + "\u0000\u0000\u04b5\u16e7\u0001\u0000\u0000\u0000\u04b7\u16f6\u0001\u0000"+ + "\u0000\u0000\u04b9\u170c\u0001\u0000\u0000\u0000\u04bb\u1722\u0001\u0000"+ + "\u0000\u0000\u04bd\u1730\u0001\u0000\u0000\u0000\u04bf\u1737\u0001\u0000"+ + "\u0000\u0000\u04c1\u173c\u0001\u0000\u0000\u0000\u04c3\u1742\u0001\u0000"+ + "\u0000\u0000\u04c5\u174d\u0001\u0000\u0000\u0000\u04c7\u1759\u0001\u0000"+ + "\u0000\u0000\u04c9\u1769\u0001\u0000\u0000\u0000\u04cb\u1779\u0001\u0000"+ + "\u0000\u0000\u04cd\u1780\u0001\u0000\u0000\u0000\u04cf\u1787\u0001\u0000"+ + "\u0000\u0000\u04d1\u1790\u0001\u0000\u0000\u0000\u04d3\u1797\u0001\u0000"+ + "\u0000\u0000\u04d5\u17a1\u0001\u0000\u0000\u0000\u04d7\u17a8\u0001\u0000"+ + "\u0000\u0000\u04d9\u17ac\u0001\u0000\u0000\u0000\u04db\u17bc\u0001\u0000"+ + "\u0000\u0000\u04dd\u17c5\u0001\u0000\u0000\u0000\u04df\u17cf\u0001\u0000"+ + "\u0000\u0000\u04e1\u17da\u0001\u0000\u0000\u0000\u04e3\u17e3\u0001\u0000"+ + "\u0000\u0000\u04e5\u17f0\u0001\u0000\u0000\u0000\u04e7\u17fe\u0001\u0000"+ + "\u0000\u0000\u04e9\u180f\u0001\u0000\u0000\u0000\u04eb\u1819\u0001\u0000"+ + "\u0000\u0000\u04ed\u1827\u0001\u0000\u0000\u0000\u04ef\u1831\u0001\u0000"+ + "\u0000\u0000\u04f1\u1840\u0001\u0000\u0000\u0000\u04f3\u1851\u0001\u0000"+ + "\u0000\u0000\u04f5\u1855\u0001\u0000\u0000\u0000\u04f7\u1869\u0001\u0000"+ + "\u0000\u0000\u04f9\u1873\u0001\u0000\u0000\u0000\u04fb\u1889\u0001\u0000"+ + "\u0000\u0000\u04fd\u1896\u0001\u0000\u0000\u0000\u04ff\u189e\u0001\u0000"+ + "\u0000\u0000\u0501\u18a6\u0001\u0000\u0000\u0000\u0503\u18b0\u0001\u0000"+ + "\u0000\u0000\u0505\u18bd\u0001\u0000\u0000\u0000\u0507\u18c1\u0001\u0000"+ + "\u0000\u0000\u0509\u18c5\u0001\u0000\u0000\u0000\u050b\u18c7\u0001\u0000"+ + "\u0000\u0000\u050d\u18ca\u0001\u0000\u0000\u0000\u050f\u18d3\u0001\u0000"+ + "\u0000\u0000\u0511\u18d6\u0001\u0000\u0000\u0000\u0513\u18df\u0001\u0000"+ + "\u0000\u0000\u0515\u18e3\u0001\u0000\u0000\u0000\u0517\u18e7\u0001\u0000"+ + "\u0000\u0000\u0519\u18eb\u0001\u0000\u0000\u0000\u051b\u18ef\u0001\u0000"+ + "\u0000\u0000\u051d\u18f2\u0001\u0000\u0000\u0000\u051f\u18fb\u0001\u0000"+ + "\u0000\u0000\u0521\u1901\u0001\u0000\u0000\u0000\u0523\u1904\u0001\u0000"+ + "\u0000\u0000\u0525\u1908\u0001\u0000\u0000\u0000\u0527\u1911\u0001\u0000"+ + "\u0000\u0000\u0529\u1918\u0001\u0000\u0000\u0000\u052b\u191b\u0001\u0000"+ + "\u0000\u0000\u052d\u1923\u0001\u0000\u0000\u0000\u052f\u1926\u0001\u0000"+ + "\u0000\u0000\u0531\u1929\u0001\u0000\u0000\u0000\u0533\u192c\u0001\u0000"+ + "\u0000\u0000\u0535\u1934\u0001\u0000\u0000\u0000\u0537\u1937\u0001\u0000"+ + "\u0000\u0000\u0539\u193a\u0001\u0000\u0000\u0000\u053b\u193c\u0001\u0000"+ + "\u0000\u0000\u053d\u195e\u0001\u0000\u0000\u0000\u053f\u1961\u0001\u0000"+ + "\u0000\u0000\u0541\u1965\u0001\u0000\u0000\u0000\u0543\u196d\u0001\u0000"+ + "\u0000\u0000\u0545\u197d\u0001\u0000\u0000\u0000\u0547\u1988\u0001\u0000"+ + "\u0000\u0000\u0549\u198c\u0001\u0000\u0000\u0000\u054b\u1997\u0001\u0000"+ + "\u0000\u0000\u054d\u19be\u0001\u0000\u0000\u0000\u054f\u19f1\u0001\u0000"+ + "\u0000\u0000\u0551\u1a09\u0001\u0000\u0000\u0000\u0553\u1a0c\u0001\u0000"+ + "\u0000\u0000\u0555\u1a0e\u0001\u0000\u0000\u0000\u0557\u1a13\u0001\u0000"+ + "\u0000\u0000\u0559\u1a32\u0001\u0000\u0000\u0000\u055b\u1a35\u0001\u0000"+ + "\u0000\u0000\u055d\u1a3a\u0001\u0000\u0000\u0000\u055f\u1a47\u0001\u0000"+ + "\u0000\u0000\u0561\u1a4a\u0001\u0000\u0000\u0000\u0563\u1a4f\u0001\u0000"+ + "\u0000\u0000\u0565\u1a55\u0001\u0000\u0000\u0000\u0567\u1a5a\u0001\u0000"+ + "\u0000\u0000\u0569\u1a5f\u0001\u0000\u0000\u0000\u056b\u1a64\u0001\u0000"+ + "\u0000\u0000\u056d\u1a69\u0001\u0000\u0000\u0000\u056f\u1a7a\u0001\u0000"+ + "\u0000\u0000\u0571\u1a7c\u0001\u0000\u0000\u0000\u0573\u0574\u0005$\u0000"+ + "\u0000\u0574\u0006\u0001\u0000\u0000\u0000\u0575\u0576\u0005(\u0000\u0000"+ + "\u0576\b\u0001\u0000\u0000\u0000\u0577\u0578\u0005)\u0000\u0000\u0578"+ + "\n\u0001\u0000\u0000\u0000\u0579\u057a\u0005[\u0000\u0000\u057a\f\u0001"+ + "\u0000\u0000\u0000\u057b\u057c\u0005]\u0000\u0000\u057c\u000e\u0001\u0000"+ + "\u0000\u0000\u057d\u057e\u0005,\u0000\u0000\u057e\u0010\u0001\u0000\u0000"+ + "\u0000\u057f\u0580\u0005;\u0000\u0000\u0580\u0012\u0001\u0000\u0000\u0000"+ + "\u0581\u0582\u0005:\u0000\u0000\u0582\u0014\u0001\u0000\u0000\u0000\u0583"+ + "\u0584\u0005*\u0000\u0000\u0584\u0016\u0001\u0000\u0000\u0000\u0585\u0586"+ + "\u0005=\u0000\u0000\u0586\u0018\u0001\u0000\u0000\u0000\u0587\u0588\u0005"+ + ".\u0000\u0000\u0588\u001a\u0001\u0000\u0000\u0000\u0589\u058a\u0005+\u0000"+ + "\u0000\u058a\u001c\u0001\u0000\u0000\u0000\u058b\u058c\u0005-\u0000\u0000"+ + "\u058c\u001e\u0001\u0000\u0000\u0000\u058d\u058e\u0005/\u0000\u0000\u058e"+ + " \u0001\u0000\u0000\u0000\u058f\u0590\u0005^\u0000\u0000\u0590\"\u0001"+ + "\u0000\u0000\u0000\u0591\u0592\u0005<\u0000\u0000\u0592$\u0001\u0000\u0000"+ + "\u0000\u0593\u0594\u0005>\u0000\u0000\u0594&\u0001\u0000\u0000\u0000\u0595"+ + "\u0596\u0005<\u0000\u0000\u0596\u0597\u0005<\u0000\u0000\u0597(\u0001"+ + "\u0000\u0000\u0000\u0598\u0599\u0005>\u0000\u0000\u0599\u059a\u0005>\u0000"+ + "\u0000\u059a*\u0001\u0000\u0000\u0000\u059b\u059c\u0005:\u0000\u0000\u059c"+ + "\u059d\u0005=\u0000\u0000\u059d,\u0001\u0000\u0000\u0000\u059e\u059f\u0005"+ + "<\u0000\u0000\u059f\u05a0\u0005=\u0000\u0000\u05a0.\u0001\u0000\u0000"+ + "\u0000\u05a1\u05a2\u0005=\u0000\u0000\u05a2\u05a3\u0005>\u0000\u0000\u05a3"+ + "0\u0001\u0000\u0000\u0000\u05a4\u05a5\u0005>\u0000\u0000\u05a5\u05a6\u0005"+ + "=\u0000\u0000\u05a62\u0001\u0000\u0000\u0000\u05a7\u05a8\u0005.\u0000"+ + "\u0000\u05a8\u05a9\u0005.\u0000\u0000\u05a94\u0001\u0000\u0000\u0000\u05aa"+ + "\u05ab\u0005<\u0000\u0000\u05ab\u05ac\u0005>\u0000\u0000\u05ac6\u0001"+ + "\u0000\u0000\u0000\u05ad\u05ae\u0005:\u0000\u0000\u05ae\u05af\u0005:\u0000"+ + "\u0000\u05af8\u0001\u0000\u0000\u0000\u05b0\u05b1\u0005%\u0000\u0000\u05b1"+ + ":\u0001\u0000\u0000\u0000\u05b2\u05b4\u0005$\u0000\u0000\u05b3\u05b5\u0007"+ + "\u0000\u0000\u0000\u05b4\u05b3\u0001\u0000\u0000\u0000\u05b5\u05b6\u0001"+ + "\u0000\u0000\u0000\u05b6\u05b4\u0001\u0000\u0000\u0000\u05b6\u05b7\u0001"+ + "\u0000\u0000\u0000\u05b7<\u0001\u0000\u0000\u0000\u05b8\u05c8\u0003A\u001e"+ + "\u0000\u05b9\u05bd\u0005+\u0000\u0000\u05ba\u05bb\u0005-\u0000\u0000\u05bb"+ + "\u05bd\u0004\u001c\u0000\u0000\u05bc\u05b9\u0001\u0000\u0000\u0000\u05bc"+ + "\u05ba\u0001\u0000\u0000\u0000\u05bd\u05be\u0001\u0000\u0000\u0000\u05be"+ + "\u05bc\u0001\u0000\u0000\u0000\u05be\u05bf\u0001\u0000\u0000\u0000\u05bf"+ + "\u05c3\u0001\u0000\u0000\u0000\u05c0\u05c4\u0003A\u001e\u0000\u05c1\u05c2"+ + "\u0005/\u0000\u0000\u05c2\u05c4\u0004\u001c\u0001\u0000\u05c3\u05c0\u0001"+ + "\u0000\u0000\u0000\u05c3\u05c1\u0001\u0000\u0000\u0000\u05c4\u05c8\u0001"+ + "\u0000\u0000\u0000\u05c5\u05c6\u0005/\u0000\u0000\u05c6\u05c8\u0004\u001c"+ + "\u0002\u0000\u05c7\u05b8\u0001\u0000\u0000\u0000\u05c7\u05bc\u0001\u0000"+ + "\u0000\u0000\u05c7\u05c5\u0001\u0000\u0000\u0000\u05c8\u05c9\u0001\u0000"+ + "\u0000\u0000\u05c9\u05c7\u0001\u0000\u0000\u0000\u05c9\u05ca\u0001\u0000"+ + "\u0000\u0000\u05ca\u05cd\u0001\u0000\u0000\u0000\u05cb\u05cd\u0007\u0001"+ + "\u0000\u0000\u05cc\u05c7\u0001\u0000\u0000\u0000\u05cc\u05cb\u0001\u0000"+ + "\u0000\u0000\u05cd\u05ce\u0001\u0000\u0000\u0000\u05ce\u05cf\u0006\u001c"+ + "\u0000\u0000\u05cf>\u0001\u0000\u0000\u0000\u05d0\u05d6\u0003C\u001f\u0000"+ + "\u05d1\u05d2\u0005-\u0000\u0000\u05d2\u05d6\u0004\u001d\u0003\u0000\u05d3"+ + "\u05d4\u0005/\u0000\u0000\u05d4\u05d6\u0004\u001d\u0004\u0000\u05d5\u05d0"+ + "\u0001\u0000\u0000\u0000\u05d5\u05d1\u0001\u0000\u0000\u0000\u05d5\u05d3"+ + "\u0001\u0000\u0000\u0000\u05d6\u05d9\u0001\u0000\u0000\u0000\u05d7\u05d5"+ + "\u0001\u0000\u0000\u0000\u05d7\u05d8\u0001\u0000\u0000\u0000\u05d8\u05da"+ + "\u0001\u0000\u0000\u0000\u05d9\u05d7\u0001\u0000\u0000\u0000\u05da\u05dc"+ + "\u0003E \u0000\u05db\u05dd\u0003=\u001c\u0000\u05dc\u05db\u0001\u0000"+ + "\u0000\u0000\u05dc\u05dd\u0001\u0000\u0000\u0000\u05dd\u05e1\u0001\u0000"+ + "\u0000\u0000\u05de\u05e2\u0005+\u0000\u0000\u05df\u05e0\u0005-\u0000\u0000"+ + "\u05e0\u05e2\u0004\u001d\u0005\u0000\u05e1\u05de\u0001\u0000\u0000\u0000"+ + "\u05e1\u05df\u0001\u0000\u0000\u0000\u05e2\u05e3\u0001\u0000\u0000\u0000"+ + "\u05e3\u05e1\u0001\u0000\u0000\u0000\u05e3\u05e4\u0001\u0000\u0000\u0000"+ + "\u05e4\u05e5\u0001\u0000\u0000\u0000\u05e5\u05e6\u0006\u001d\u0001\u0000"+ + "\u05e6@\u0001\u0000\u0000\u0000\u05e7\u05e8\u0007\u0002\u0000\u0000\u05e8"+ + "B\u0001\u0000\u0000\u0000\u05e9\u05ea\u0007\u0003\u0000\u0000\u05eaD\u0001"+ + "\u0000\u0000\u0000\u05eb\u05ec\u0007\u0004\u0000\u0000\u05ecF\u0001\u0000"+ + "\u0000\u0000\u05ed\u05ee\u0007\u0005\u0000\u0000\u05ee\u05ef\u0007\u0006"+ + "\u0000\u0000\u05ef\u05f0\u0007\u0006\u0000\u0000\u05f0H\u0001\u0000\u0000"+ + "\u0000\u05f1\u05f2\u0007\u0005\u0000\u0000\u05f2\u05f3\u0007\u0007\u0000"+ + "\u0000\u05f3\u05f4\u0007\u0005\u0000\u0000\u05f4\u05f5\u0007\u0006\u0000"+ + "\u0000\u05f5\u05f6\u0007\b\u0000\u0000\u05f6\u05f7\u0007\t\u0000\u0000"+ + "\u05f7\u05f8\u0007\n\u0000\u0000\u05f8J\u0001\u0000\u0000\u0000\u05f9"+ + "\u05fa\u0007\u0005\u0000\u0000\u05fa\u05fb\u0007\u0007\u0000\u0000\u05fb"+ + "\u05fc\u0007\u0005\u0000\u0000\u05fc\u05fd\u0007\u0006\u0000\u0000\u05fd"+ + "\u05fe\u0007\b\u0000\u0000\u05fe\u05ff\u0007\u000b\u0000\u0000\u05ff\u0600"+ + "\u0007\n\u0000\u0000\u0600L\u0001\u0000\u0000\u0000\u0601\u0602\u0007"+ + "\u0005\u0000\u0000\u0602\u0603\u0007\u0007\u0000\u0000\u0603\u0604\u0007"+ + "\f\u0000\u0000\u0604N\u0001\u0000\u0000\u0000\u0605\u0606\u0007\u0005"+ + "\u0000\u0000\u0606\u0607\u0007\u0007\u0000\u0000\u0607\u0608\u0007\b\u0000"+ + "\u0000\u0608P\u0001\u0000\u0000\u0000\u0609\u060a\u0007\u0005\u0000\u0000"+ + "\u060a\u060b\u0007\r\u0000\u0000\u060b\u060c\u0007\r\u0000\u0000\u060c"+ + "\u060d\u0007\u0005\u0000\u0000\u060d\u060e\u0007\b\u0000\u0000\u060eR"+ + "\u0001\u0000\u0000\u0000\u060f\u0610\u0007\u0005\u0000\u0000\u0610\u0611"+ + "\u0007\t\u0000\u0000\u0611T\u0001\u0000\u0000\u0000\u0612\u0613\u0007"+ + "\u0005\u0000\u0000\u0613\u0614\u0007\t\u0000\u0000\u0614\u0615\u0007\u000e"+ + "\u0000\u0000\u0615V\u0001\u0000\u0000\u0000\u0616\u0617\u0007\u0005\u0000"+ + "\u0000\u0617\u0618\u0007\t\u0000\u0000\u0618\u0619\u0007\b\u0000\u0000"+ + "\u0619\u061a\u0007\u000f\u0000\u0000\u061a\u061b\u0007\u000f\u0000\u0000"+ + "\u061b\u061c\u0007\n\u0000\u0000\u061c\u061d\u0007\u0010\u0000\u0000\u061d"+ + "\u061e\u0007\r\u0000\u0000\u061e\u061f\u0007\u0011\u0000\u0000\u061f\u0620"+ + "\u0007\u000e\u0000\u0000\u0620X\u0001\u0000\u0000\u0000\u0621\u0622\u0007"+ + "\u0012\u0000\u0000\u0622\u0623\u0007\u0013\u0000\u0000\u0623\u0624\u0007"+ + "\u0010\u0000\u0000\u0624\u0625\u0007\u0014\u0000\u0000\u0625Z\u0001\u0000"+ + "\u0000\u0000\u0626\u0627\u0007\u000e\u0000\u0000\u0627\u0628\u0007\u0005"+ + "\u0000\u0000\u0628\u0629\u0007\t\u0000\u0000\u0629\u062a\u0007\n\u0000"+ + "\u0000\u062a\\\u0001\u0000\u0000\u0000\u062b\u062c\u0007\u000e\u0000\u0000"+ + "\u062c\u062d\u0007\u0005\u0000\u0000\u062d\u062e\u0007\t\u0000\u0000\u062e"+ + "\u062f\u0007\u0010\u0000\u0000\u062f^\u0001\u0000\u0000\u0000\u0630\u0631"+ + "\u0007\u000e\u0000\u0000\u0631\u0632\u0007\u0014\u0000\u0000\u0632\u0633"+ + "\u0007\n\u0000\u0000\u0633\u0634\u0007\u000e\u0000\u0000\u0634\u0635\u0007"+ + "\u0015\u0000\u0000\u0635`\u0001\u0000\u0000\u0000\u0636\u0637\u0007\u000e"+ + "\u0000\u0000\u0637\u0638\u0007\u0013\u0000\u0000\u0638\u0639\u0007\u0006"+ + "\u0000\u0000\u0639\u063a\u0007\u0006\u0000\u0000\u063a\u063b\u0007\u0005"+ + "\u0000\u0000\u063b\u063c\u0007\u0010\u0000\u0000\u063c\u063d\u0007\n\u0000"+ + "\u0000\u063db\u0001\u0000\u0000\u0000\u063e\u063f\u0007\u000e\u0000\u0000"+ + "\u063f\u0640\u0007\u0013\u0000\u0000\u0640\u0641\u0007\u0006\u0000\u0000"+ + "\u0641\u0642\u0007\u0016\u0000\u0000\u0642\u0643\u0007\u000f\u0000\u0000"+ + "\u0643\u0644\u0007\u0007\u0000\u0000\u0644d\u0001\u0000\u0000\u0000\u0645"+ + "\u0646\u0007\u000e\u0000\u0000\u0646\u0647\u0007\u0013\u0000\u0000\u0647"+ + "\u0648\u0007\u0007\u0000\u0000\u0648\u0649\u0007\t\u0000\u0000\u0649\u064a"+ + "\u0007\u0010\u0000\u0000\u064a\u064b\u0007\r\u0000\u0000\u064b\u064c\u0007"+ + "\u0005\u0000\u0000\u064c\u064d\u0007\u0011\u0000\u0000\u064d\u064e\u0007"+ + "\u0007\u0000\u0000\u064e\u064f\u0007\u0010\u0000\u0000\u064ff\u0001\u0000"+ + "\u0000\u0000\u0650\u0651\u0007\u000e\u0000\u0000\u0651\u0652\u0007\r\u0000"+ + "\u0000\u0652\u0653\u0007\n\u0000\u0000\u0653\u0654\u0007\u0005\u0000\u0000"+ + "\u0654\u0655\u0007\u0010\u0000\u0000\u0655\u0656\u0007\n\u0000\u0000\u0656"+ + "h\u0001\u0000\u0000\u0000\u0657\u0658\u0007\u000e\u0000\u0000\u0658\u0659"+ + "\u0007\u0016\u0000\u0000\u0659\u065a\u0007\r\u0000\u0000\u065a\u065b\u0007"+ + "\r\u0000\u0000\u065b\u065c\u0007\n\u0000\u0000\u065c\u065d\u0007\u0007"+ + "\u0000\u0000\u065d\u065e\u0007\u0010\u0000\u0000\u065e\u065f\u0005_\u0000"+ + "\u0000\u065f\u0660\u0007\u000e\u0000\u0000\u0660\u0661\u0007\u0005\u0000"+ + "\u0000\u0661\u0662\u0007\u0010\u0000\u0000\u0662\u0663\u0007\u0005\u0000"+ + "\u0000\u0663\u0664\u0007\u0006\u0000\u0000\u0664\u0665\u0007\u0013\u0000"+ + "\u0000\u0665\u0666\u0007\u0017\u0000\u0000\u0666j\u0001\u0000\u0000\u0000"+ + "\u0667\u0668\u0007\u000e\u0000\u0000\u0668\u0669\u0007\u0016\u0000\u0000"+ + "\u0669\u066a\u0007\r\u0000\u0000\u066a\u066b\u0007\r\u0000\u0000\u066b"+ + "\u066c\u0007\n\u0000\u0000\u066c\u066d\u0007\u0007\u0000\u0000\u066d\u066e"+ + "\u0007\u0010\u0000\u0000\u066e\u066f\u0005_\u0000\u0000\u066f\u0670\u0007"+ + "\f\u0000\u0000\u0670\u0671\u0007\u0005\u0000\u0000\u0671\u0672\u0007\u0010"+ + "\u0000\u0000\u0672\u0673\u0007\n\u0000\u0000\u0673l\u0001\u0000\u0000"+ + "\u0000\u0674\u0675\u0007\u000e\u0000\u0000\u0675\u0676\u0007\u0016\u0000"+ + "\u0000\u0676\u0677\u0007\r\u0000\u0000\u0677\u0678\u0007\r\u0000\u0000"+ + "\u0678\u0679\u0007\n\u0000\u0000\u0679\u067a\u0007\u0007\u0000\u0000\u067a"+ + "\u067b\u0007\u0010\u0000\u0000\u067b\u067c\u0005_\u0000\u0000\u067c\u067d"+ + "\u0007\r\u0000\u0000\u067d\u067e\u0007\u0013\u0000\u0000\u067e\u067f\u0007"+ + "\u0006\u0000\u0000\u067f\u0680\u0007\n\u0000\u0000\u0680n\u0001\u0000"+ + "\u0000\u0000\u0681\u0682\u0007\u000e\u0000\u0000\u0682\u0683\u0007\u0016"+ + "\u0000\u0000\u0683\u0684\u0007\r\u0000\u0000\u0684\u0685\u0007\r\u0000"+ + "\u0000\u0685\u0686\u0007\n\u0000\u0000\u0686\u0687\u0007\u0007\u0000\u0000"+ + "\u0687\u0688\u0007\u0010\u0000\u0000\u0688\u0689\u0005_\u0000\u0000\u0689"+ + "\u068a\u0007\u0010\u0000\u0000\u068a\u068b\u0007\u0011\u0000\u0000\u068b"+ + "\u068c\u0007\u000f\u0000\u0000\u068c\u068d\u0007\n\u0000\u0000\u068dp"+ + "\u0001\u0000\u0000\u0000\u068e\u068f\u0007\u000e\u0000\u0000\u068f\u0690"+ + "\u0007\u0016\u0000\u0000\u0690\u0691\u0007\r\u0000\u0000\u0691\u0692\u0007"+ + "\r\u0000\u0000\u0692\u0693\u0007\n\u0000\u0000\u0693\u0694\u0007\u0007"+ + "\u0000\u0000\u0694\u0695\u0007\u0010\u0000\u0000\u0695\u0696\u0005_\u0000"+ + "\u0000\u0696\u0697\u0007\u0010\u0000\u0000\u0697\u0698\u0007\u0011\u0000"+ + "\u0000\u0698\u0699\u0007\u000f\u0000\u0000\u0699\u069a\u0007\n\u0000\u0000"+ + "\u069a\u069b\u0007\t\u0000\u0000\u069b\u069c\u0007\u0010\u0000\u0000\u069c"+ + "\u069d\u0007\u0005\u0000\u0000\u069d\u069e\u0007\u000f\u0000\u0000\u069e"+ + "\u069f\u0007\u0018\u0000\u0000\u069fr\u0001\u0000\u0000\u0000\u06a0\u06a1"+ + "\u0007\u000e\u0000\u0000\u06a1\u06a2\u0007\u0016\u0000\u0000\u06a2\u06a3"+ + "\u0007\r\u0000\u0000\u06a3\u06a4\u0007\r\u0000\u0000\u06a4\u06a5\u0007"+ + "\n\u0000\u0000\u06a5\u06a6\u0007\u0007\u0000\u0000\u06a6\u06a7\u0007\u0010"+ + "\u0000\u0000\u06a7\u06a8\u0005_\u0000\u0000\u06a8\u06a9\u0007\u0016\u0000"+ + "\u0000\u06a9\u06aa\u0007\t\u0000\u0000\u06aa\u06ab\u0007\n\u0000\u0000"+ + "\u06ab\u06ac\u0007\r\u0000\u0000\u06act\u0001\u0000\u0000\u0000\u06ad"+ + "\u06ae\u0007\f\u0000\u0000\u06ae\u06af\u0007\n\u0000\u0000\u06af\u06b0"+ + "\u0007\u0019\u0000\u0000\u06b0\u06b1\u0007\u0005\u0000\u0000\u06b1\u06b2"+ + "\u0007\u0016\u0000\u0000\u06b2\u06b3\u0007\u0006\u0000\u0000\u06b3\u06b4"+ + "\u0007\u0010\u0000\u0000\u06b4v\u0001\u0000\u0000\u0000\u06b5\u06b6\u0007"+ + "\f\u0000\u0000\u06b6\u06b7\u0007\n\u0000\u0000\u06b7\u06b8\u0007\u0019"+ + "\u0000\u0000\u06b8\u06b9\u0007\n\u0000\u0000\u06b9\u06ba\u0007\r\u0000"+ + "\u0000\u06ba\u06bb\u0007\r\u0000\u0000\u06bb\u06bc\u0007\u0005\u0000\u0000"+ + "\u06bc\u06bd\u0007\u0012\u0000\u0000\u06bd\u06be\u0007\u0006\u0000\u0000"+ + "\u06be\u06bf\u0007\n\u0000\u0000\u06bfx\u0001\u0000\u0000\u0000\u06c0"+ + "\u06c1\u0007\f\u0000\u0000\u06c1\u06c2\u0007\n\u0000\u0000\u06c2\u06c3"+ + "\u0007\t\u0000\u0000\u06c3\u06c4\u0007\u000e\u0000\u0000\u06c4z\u0001"+ + "\u0000\u0000\u0000\u06c5\u06c6\u0007\f\u0000\u0000\u06c6\u06c7\u0007\u0011"+ + "\u0000\u0000\u06c7\u06c8\u0007\t\u0000\u0000\u06c8\u06c9\u0007\u0010\u0000"+ + "\u0000\u06c9\u06ca\u0007\u0011\u0000\u0000\u06ca\u06cb\u0007\u0007\u0000"+ + "\u0000\u06cb\u06cc\u0007\u000e\u0000\u0000\u06cc\u06cd\u0007\u0010\u0000"+ + "\u0000\u06cd|\u0001\u0000\u0000\u0000\u06ce\u06cf\u0007\f\u0000\u0000"+ + "\u06cf\u06d0\u0007\u0013\u0000\u0000\u06d0~\u0001\u0000\u0000\u0000\u06d1"+ + "\u06d2\u0007\n\u0000\u0000\u06d2\u06d3\u0007\u0006\u0000\u0000\u06d3\u06d4"+ + "\u0007\t\u0000\u0000\u06d4\u06d5\u0007\n\u0000\u0000\u06d5\u0080\u0001"+ + "\u0000\u0000\u0000\u06d6\u06d7\u0007\n\u0000\u0000\u06d7\u06d8\u0007\u001a"+ + "\u0000\u0000\u06d8\u06d9\u0007\u000e\u0000\u0000\u06d9\u06da\u0007\n\u0000"+ + "\u0000\u06da\u06db\u0007\u0018\u0000\u0000\u06db\u06dc\u0007\u0010\u0000"+ + "\u0000\u06dc\u0082\u0001\u0000\u0000\u0000\u06dd\u06de\u0007\u0019\u0000"+ + "\u0000\u06de\u06df\u0007\u0005\u0000\u0000\u06df\u06e0\u0007\u0006\u0000"+ + "\u0000\u06e0\u06e1\u0007\t\u0000\u0000\u06e1\u06e2\u0007\n\u0000\u0000"+ + "\u06e2\u0084\u0001\u0000\u0000\u0000\u06e3\u06e4\u0007\u0019\u0000\u0000"+ + "\u06e4\u06e5\u0007\n\u0000\u0000\u06e5\u06e6\u0007\u0010\u0000\u0000\u06e6"+ + "\u06e7\u0007\u000e\u0000\u0000\u06e7\u06e8\u0007\u0014\u0000\u0000\u06e8"+ + "\u0086\u0001\u0000\u0000\u0000\u06e9\u06ea\u0007\u0019\u0000\u0000\u06ea"+ + "\u06eb\u0007\u0013\u0000\u0000\u06eb\u06ec\u0007\r\u0000\u0000\u06ec\u0088"+ + "\u0001\u0000\u0000\u0000\u06ed\u06ee\u0007\u0019\u0000\u0000\u06ee\u06ef"+ + "\u0007\u0013\u0000\u0000\u06ef\u06f0\u0007\r\u0000\u0000\u06f0\u06f1\u0007"+ + "\n\u0000\u0000\u06f1\u06f2\u0007\u0011\u0000\u0000\u06f2\u06f3\u0007\u0017"+ + "\u0000\u0000\u06f3\u06f4\u0007\u0007\u0000\u0000\u06f4\u008a\u0001\u0000"+ + "\u0000\u0000\u06f5\u06f6\u0007\u0019\u0000\u0000\u06f6\u06f7\u0007\r\u0000"+ + "\u0000\u06f7\u06f8\u0007\u0013\u0000\u0000\u06f8\u06f9\u0007\u000f\u0000"+ + "\u0000\u06f9\u008c\u0001\u0000\u0000\u0000\u06fa\u06fb\u0007\u0017\u0000"+ + "\u0000\u06fb\u06fc\u0007\r\u0000\u0000\u06fc\u06fd\u0007\u0005\u0000\u0000"+ + "\u06fd\u06fe\u0007\u0007\u0000\u0000\u06fe\u06ff\u0007\u0010\u0000\u0000"+ + "\u06ff\u008e\u0001\u0000\u0000\u0000\u0700\u0701\u0007\u0017\u0000\u0000"+ + "\u0701\u0702\u0007\r\u0000\u0000\u0702\u0703\u0007\u0013\u0000\u0000\u0703"+ + "\u0704\u0007\u0016\u0000\u0000\u0704\u0705\u0007\u0018\u0000\u0000\u0705"+ + "\u0090\u0001\u0000\u0000\u0000\u0706\u0707\u0007\u0014\u0000\u0000\u0707"+ + "\u0708\u0007\u0005\u0000\u0000\u0708\u0709\u0007\u001b\u0000\u0000\u0709"+ + "\u070a\u0007\u0011\u0000\u0000\u070a\u070b\u0007\u0007\u0000\u0000\u070b"+ + "\u070c\u0007\u0017\u0000\u0000\u070c\u0092\u0001\u0000\u0000\u0000\u070d"+ + "\u070e\u0007\u0011\u0000\u0000\u070e\u070f\u0007\u0007\u0000\u0000\u070f"+ + "\u0094\u0001\u0000\u0000\u0000\u0710\u0711\u0007\u0011\u0000\u0000\u0711"+ + "\u0712\u0007\u0007\u0000\u0000\u0712\u0713\u0007\u0011\u0000\u0000\u0713"+ + "\u0714\u0007\u0010\u0000\u0000\u0714\u0715\u0007\u0011\u0000\u0000\u0715"+ + "\u0716\u0007\u0005\u0000\u0000\u0716\u0717\u0007\u0006\u0000\u0000\u0717"+ + "\u0718\u0007\u0006\u0000\u0000\u0718\u0719\u0007\b\u0000\u0000\u0719\u0096"+ + "\u0001\u0000\u0000\u0000\u071a\u071b\u0007\u0011\u0000\u0000\u071b\u071c"+ + "\u0007\u0007\u0000\u0000\u071c\u071d\u0007\u0010\u0000\u0000\u071d\u071e"+ + "\u0007\n\u0000\u0000\u071e\u071f\u0007\r\u0000\u0000\u071f\u0720\u0007"+ + "\t\u0000\u0000\u0720\u0721\u0007\n\u0000\u0000\u0721\u0722\u0007\u000e"+ + "\u0000\u0000\u0722\u0723\u0007\u0010\u0000\u0000\u0723\u0098\u0001\u0000"+ + "\u0000\u0000\u0724\u0725\u0007\u0011\u0000\u0000\u0725\u0726\u0007\u0007"+ + "\u0000\u0000\u0726\u0727\u0007\u0010\u0000\u0000\u0727\u0728\u0007\u0013"+ + "\u0000\u0000\u0728\u009a\u0001\u0000\u0000\u0000\u0729\u072a\u0007\u0006"+ + "\u0000\u0000\u072a\u072b\u0007\u0005\u0000\u0000\u072b\u072c\u0007\u0010"+ + "\u0000\u0000\u072c\u072d\u0007\n\u0000\u0000\u072d\u072e\u0007\r\u0000"+ + "\u0000\u072e\u072f\u0007\u0005\u0000\u0000\u072f\u0730\u0007\u0006\u0000"+ + "\u0000\u0730\u009c\u0001\u0000\u0000\u0000\u0731\u0732\u0007\u0006\u0000"+ + "\u0000\u0732\u0733\u0007\n\u0000\u0000\u0733\u0734\u0007\u0005\u0000\u0000"+ + "\u0734\u0735\u0007\f\u0000\u0000\u0735\u0736\u0007\u0011\u0000\u0000\u0736"+ + "\u0737\u0007\u0007\u0000\u0000\u0737\u0738\u0007\u0017\u0000\u0000\u0738"+ + "\u009e\u0001\u0000\u0000\u0000\u0739\u073a\u0007\u0006\u0000\u0000\u073a"+ + "\u073b\u0007\u0011\u0000\u0000\u073b\u073c\u0007\u000f\u0000\u0000\u073c"+ + "\u073d\u0007\u0011\u0000\u0000\u073d\u073e\u0007\u0010\u0000\u0000\u073e"+ + "\u00a0\u0001\u0000\u0000\u0000\u073f\u0740\u0007\u0006\u0000\u0000\u0740"+ + "\u0741\u0007\u0013\u0000\u0000\u0741\u0742\u0007\u000e\u0000\u0000\u0742"+ + "\u0743\u0007\u0005\u0000\u0000\u0743\u0744\u0007\u0006\u0000\u0000\u0744"+ + "\u0745\u0007\u0010\u0000\u0000\u0745\u0746\u0007\u0011\u0000\u0000\u0746"+ + "\u0747\u0007\u000f\u0000\u0000\u0747\u0748\u0007\n\u0000\u0000\u0748\u00a2"+ + "\u0001\u0000\u0000\u0000\u0749\u074a\u0007\u0006\u0000\u0000\u074a\u074b"+ + "\u0007\u0013\u0000\u0000\u074b\u074c\u0007\u000e\u0000\u0000\u074c\u074d"+ + "\u0007\u0005\u0000\u0000\u074d\u074e\u0007\u0006\u0000\u0000\u074e\u074f"+ + "\u0007\u0010\u0000\u0000\u074f\u0750\u0007\u0011\u0000\u0000\u0750\u0751"+ + "\u0007\u000f\u0000\u0000\u0751\u0752\u0007\n\u0000\u0000\u0752\u0753\u0007"+ + "\t\u0000\u0000\u0753\u0754\u0007\u0010\u0000\u0000\u0754\u0755\u0007\u0005"+ + "\u0000\u0000\u0755\u0756\u0007\u000f\u0000\u0000\u0756\u0757\u0007\u0018"+ + "\u0000\u0000\u0757\u00a4\u0001\u0000\u0000\u0000\u0758\u0759\u0007\u0007"+ + "\u0000\u0000\u0759\u075a\u0007\u0013\u0000\u0000\u075a\u075b\u0007\u0010"+ + "\u0000\u0000\u075b\u00a6\u0001\u0000\u0000\u0000\u075c\u075d\u0007\u0007"+ + "\u0000\u0000\u075d\u075e\u0007\u0016\u0000\u0000\u075e\u075f\u0007\u0006"+ + "\u0000\u0000\u075f\u0760\u0007\u0006\u0000\u0000\u0760\u00a8\u0001\u0000"+ + "\u0000\u0000\u0761\u0762\u0007\u0013\u0000\u0000\u0762\u0763\u0007\u0019"+ + "\u0000\u0000\u0763\u0764\u0007\u0019\u0000\u0000\u0764\u0765\u0007\t\u0000"+ + "\u0000\u0765\u0766\u0007\n\u0000\u0000\u0766\u0767\u0007\u0010\u0000\u0000"+ + "\u0767\u00aa\u0001\u0000\u0000\u0000\u0768\u0769\u0007\u0013\u0000\u0000"+ + "\u0769\u076a\u0007\u0007\u0000\u0000\u076a\u00ac\u0001\u0000\u0000\u0000"+ + "\u076b\u076c\u0007\u0013\u0000\u0000\u076c\u076d\u0007\u0007\u0000\u0000"+ + "\u076d\u076e\u0007\u0006\u0000\u0000\u076e\u076f\u0007\b\u0000\u0000\u076f"+ + "\u00ae\u0001\u0000\u0000\u0000\u0770\u0771\u0007\u0013\u0000\u0000\u0771"+ + "\u0772\u0007\r\u0000\u0000\u0772\u00b0\u0001\u0000\u0000\u0000\u0773\u0774"+ + "\u0007\u0013\u0000\u0000\u0774\u0775\u0007\r\u0000\u0000\u0775\u0776\u0007"+ + "\f\u0000\u0000\u0776\u0777\u0007\n\u0000\u0000\u0777\u0778\u0007\r\u0000"+ + "\u0000\u0778\u00b2\u0001\u0000\u0000\u0000\u0779\u077a\u0007\u0018\u0000"+ + "\u0000\u077a\u077b\u0007\u0006\u0000\u0000\u077b\u077c\u0007\u0005\u0000"+ + "\u0000\u077c\u077d\u0007\u000e\u0000\u0000\u077d\u077e\u0007\u0011\u0000"+ + "\u0000\u077e\u077f\u0007\u0007\u0000\u0000\u077f\u0780\u0007\u0017\u0000"+ + "\u0000\u0780\u00b4\u0001\u0000\u0000\u0000\u0781\u0782\u0007\u0018\u0000"+ + "\u0000\u0782\u0783\u0007\r\u0000\u0000\u0783\u0784\u0007\u0011\u0000\u0000"+ + "\u0784\u0785\u0007\u000f\u0000\u0000\u0785\u0786\u0007\u0005\u0000\u0000"+ + "\u0786\u0787\u0007\r\u0000\u0000\u0787\u0788\u0007\b\u0000\u0000\u0788"+ + "\u00b6\u0001\u0000\u0000\u0000\u0789\u078a\u0007\r\u0000\u0000\u078a\u078b"+ + "\u0007\n\u0000\u0000\u078b\u078c\u0007\u0019\u0000\u0000\u078c\u078d\u0007"+ + "\n\u0000\u0000\u078d\u078e\u0007\r\u0000\u0000\u078e\u078f\u0007\n\u0000"+ + "\u0000\u078f\u0790\u0007\u0007\u0000\u0000\u0790\u0791\u0007\u000e\u0000"+ + "\u0000\u0791\u0792\u0007\n\u0000\u0000\u0792\u0793\u0007\t\u0000\u0000"+ + "\u0793\u00b8\u0001\u0000\u0000\u0000\u0794\u0795\u0007\r\u0000\u0000\u0795"+ + "\u0796\u0007\n\u0000\u0000\u0796\u0797\u0007\u0010\u0000\u0000\u0797\u0798"+ + "\u0007\u0016\u0000\u0000\u0798\u0799\u0007\r\u0000\u0000\u0799\u079a\u0007"+ + "\u0007\u0000\u0000\u079a\u079b\u0007\u0011\u0000\u0000\u079b\u079c\u0007"+ + "\u0007\u0000\u0000\u079c\u079d\u0007\u0017\u0000\u0000\u079d\u00ba\u0001"+ + "\u0000\u0000\u0000\u079e\u079f\u0007\t\u0000\u0000\u079f\u07a0\u0007\n"+ + "\u0000\u0000\u07a0\u07a1\u0007\u0006\u0000\u0000\u07a1\u07a2\u0007\n\u0000"+ + "\u0000\u07a2\u07a3\u0007\u000e\u0000\u0000\u07a3\u07a4\u0007\u0010\u0000"+ + "\u0000\u07a4\u00bc\u0001\u0000\u0000\u0000\u07a5\u07a6\u0007\t\u0000\u0000"+ + "\u07a6\u07a7\u0007\n\u0000\u0000\u07a7\u07a8\u0007\t\u0000\u0000\u07a8"+ + "\u07a9\u0007\t\u0000\u0000\u07a9\u07aa\u0007\u0011\u0000\u0000\u07aa\u07ab"+ + "\u0007\u0013\u0000\u0000\u07ab\u07ac\u0007\u0007\u0000\u0000\u07ac\u07ad"+ + "\u0005_\u0000\u0000\u07ad\u07ae\u0007\u0016\u0000\u0000\u07ae\u07af\u0007"+ + "\t\u0000\u0000\u07af\u07b0\u0007\n\u0000\u0000\u07b0\u07b1\u0007\r\u0000"+ + "\u0000\u07b1\u00be\u0001\u0000\u0000\u0000\u07b2\u07b3\u0007\t\u0000\u0000"+ + "\u07b3\u07b4\u0007\u0013\u0000\u0000\u07b4\u07b5\u0007\u000f\u0000\u0000"+ + "\u07b5\u07b6\u0007\n\u0000\u0000\u07b6\u00c0\u0001\u0000\u0000\u0000\u07b7"+ + "\u07b8\u0007\t\u0000\u0000\u07b8\u07b9\u0007\b\u0000\u0000\u07b9\u07ba"+ + "\u0007\u000f\u0000\u0000\u07ba\u07bb\u0007\u000f\u0000\u0000\u07bb\u07bc"+ + "\u0007\n\u0000\u0000\u07bc\u07bd\u0007\u0010\u0000\u0000\u07bd\u07be\u0007"+ + "\r\u0000\u0000\u07be\u07bf\u0007\u0011\u0000\u0000\u07bf\u07c0\u0007\u000e"+ + "\u0000\u0000\u07c0\u00c2\u0001\u0000\u0000\u0000\u07c1\u07c2\u0007\u0010"+ + "\u0000\u0000\u07c2\u07c3\u0007\u0005\u0000\u0000\u07c3\u07c4\u0007\u0012"+ + "\u0000\u0000\u07c4\u07c5\u0007\u0006\u0000\u0000\u07c5\u07c6\u0007\n\u0000"+ + "\u0000\u07c6\u00c4\u0001\u0000\u0000\u0000\u07c7\u07c8\u0007\u0010\u0000"+ + "\u0000\u07c8\u07c9\u0007\u0014\u0000\u0000\u07c9\u07ca\u0007\n\u0000\u0000"+ + "\u07ca\u07cb\u0007\u0007\u0000\u0000\u07cb\u00c6\u0001\u0000\u0000\u0000"+ + "\u07cc\u07cd\u0007\u0010\u0000\u0000\u07cd\u07ce\u0007\u0013\u0000\u0000"+ + "\u07ce\u00c8\u0001\u0000\u0000\u0000\u07cf\u07d0\u0007\u0010\u0000\u0000"+ + "\u07d0\u07d1\u0007\r\u0000\u0000\u07d1\u07d2\u0007\u0005\u0000\u0000\u07d2"+ + "\u07d3\u0007\u0011\u0000\u0000\u07d3\u07d4\u0007\u0006\u0000\u0000\u07d4"+ + "\u07d5\u0007\u0011\u0000\u0000\u07d5\u07d6\u0007\u0007\u0000\u0000\u07d6"+ + "\u07d7\u0007\u0017\u0000\u0000\u07d7\u00ca\u0001\u0000\u0000\u0000\u07d8"+ + "\u07d9\u0007\u0010\u0000\u0000\u07d9\u07da\u0007\r\u0000\u0000\u07da\u07db"+ + "\u0007\u0016\u0000\u0000\u07db\u07dc\u0007\n\u0000\u0000\u07dc\u00cc\u0001"+ + "\u0000\u0000\u0000\u07dd\u07de\u0007\u0016\u0000\u0000\u07de\u07df\u0007"+ + "\u0007\u0000\u0000\u07df\u07e0\u0007\u0011\u0000\u0000\u07e0\u07e1\u0007"+ + "\u0013\u0000\u0000\u07e1\u07e2\u0007\u0007\u0000\u0000\u07e2\u00ce\u0001"+ + "\u0000\u0000\u0000\u07e3\u07e4\u0007\u0016\u0000\u0000\u07e4\u07e5\u0007"+ + "\u0007\u0000\u0000\u07e5\u07e6\u0007\u0011\u0000\u0000\u07e6\u07e7\u0007"+ + "\u001c\u0000\u0000\u07e7\u07e8\u0007\u0016\u0000\u0000\u07e8\u07e9\u0007"+ + "\n\u0000\u0000\u07e9\u00d0\u0001\u0000\u0000\u0000\u07ea\u07eb\u0007\u0016"+ + "\u0000\u0000\u07eb\u07ec\u0007\t\u0000\u0000\u07ec\u07ed\u0007\n\u0000"+ + "\u0000\u07ed\u07ee\u0007\r\u0000\u0000\u07ee\u00d2\u0001\u0000\u0000\u0000"+ + "\u07ef\u07f0\u0007\u0016\u0000\u0000\u07f0\u07f1\u0007\t\u0000\u0000\u07f1"+ + "\u07f2\u0007\u0011\u0000\u0000\u07f2\u07f3\u0007\u0007\u0000\u0000\u07f3"+ + "\u07f4\u0007\u0017\u0000\u0000\u07f4\u00d4\u0001\u0000\u0000\u0000\u07f5"+ + "\u07f6\u0007\u001b\u0000\u0000\u07f6\u07f7\u0007\u0005\u0000\u0000\u07f7"+ + "\u07f8\u0007\r\u0000\u0000\u07f8\u07f9\u0007\u0011\u0000\u0000\u07f9\u07fa"+ + "\u0007\u0005\u0000\u0000\u07fa\u07fb\u0007\f\u0000\u0000\u07fb\u07fc\u0007"+ + "\u0011\u0000\u0000\u07fc\u07fd\u0007\u000e\u0000\u0000\u07fd\u00d6\u0001"+ + "\u0000\u0000\u0000\u07fe\u07ff\u0007\u001d\u0000\u0000\u07ff\u0800\u0007"+ + "\u0014\u0000\u0000\u0800\u0801\u0007\n\u0000\u0000\u0801\u0802\u0007\u0007"+ + "\u0000\u0000\u0802\u00d8\u0001\u0000\u0000\u0000\u0803\u0804\u0007\u001d"+ + "\u0000\u0000\u0804\u0805\u0007\u0014\u0000\u0000\u0805\u0806\u0007\n\u0000"+ + "\u0000\u0806\u0807\u0007\r\u0000\u0000\u0807\u0808\u0007\n\u0000\u0000"+ + "\u0808\u00da\u0001\u0000\u0000\u0000\u0809\u080a\u0007\u001d\u0000\u0000"+ + "\u080a\u080b\u0007\u0011\u0000\u0000\u080b\u080c\u0007\u0007\u0000\u0000"+ + "\u080c\u080d\u0007\f\u0000\u0000\u080d\u080e\u0007\u0013\u0000\u0000\u080e"+ + "\u080f\u0007\u001d\u0000\u0000\u080f\u00dc\u0001\u0000\u0000\u0000\u0810"+ + "\u0811\u0007\u001d\u0000\u0000\u0811\u0812\u0007\u0011\u0000\u0000\u0812"+ + "\u0813\u0007\u0010\u0000\u0000\u0813\u0814\u0007\u0014\u0000\u0000\u0814"+ + "\u00de\u0001\u0000\u0000\u0000\u0815\u0816\u0007\u0005\u0000\u0000\u0816"+ + "\u0817\u0007\u0016\u0000\u0000\u0817\u0818\u0007\u0010\u0000\u0000\u0818"+ + "\u0819\u0007\u0014\u0000\u0000\u0819\u081a\u0007\u0013\u0000\u0000\u081a"+ + "\u081b\u0007\r\u0000\u0000\u081b\u081c\u0007\u0011\u0000\u0000\u081c\u081d"+ + "\u0007\u000b\u0000\u0000\u081d\u081e\u0007\u0005\u0000\u0000\u081e\u081f"+ + "\u0007\u0010\u0000\u0000\u081f\u0820\u0007\u0011\u0000\u0000\u0820\u0821"+ + "\u0007\u0013\u0000\u0000\u0821\u0822\u0007\u0007\u0000\u0000\u0822\u00e0"+ + "\u0001\u0000\u0000\u0000\u0823\u0824\u0007\u0012\u0000\u0000\u0824\u0825"+ + "\u0007\u0011\u0000\u0000\u0825\u0826\u0007\u0007\u0000\u0000\u0826\u0827"+ + "\u0007\u0005\u0000\u0000\u0827\u0828\u0007\r\u0000\u0000\u0828\u0829\u0007"+ + "\b\u0000\u0000\u0829\u00e2\u0001\u0000\u0000\u0000\u082a\u082b\u0007\u000e"+ + "\u0000\u0000\u082b\u082c\u0007\u0013\u0000\u0000\u082c\u082d\u0007\u0006"+ + "\u0000\u0000\u082d\u082e\u0007\u0006\u0000\u0000\u082e\u082f\u0007\u0005"+ + "\u0000\u0000\u082f\u0830\u0007\u0010\u0000\u0000\u0830\u0831\u0007\u0011"+ + "\u0000\u0000\u0831\u0832\u0007\u0013\u0000\u0000\u0832\u0833\u0007\u0007"+ + "\u0000\u0000\u0833\u00e4\u0001\u0000\u0000\u0000\u0834\u0835\u0007\u000e"+ + "\u0000\u0000\u0835\u0836\u0007\u0013\u0000\u0000\u0836\u0837\u0007\u0007"+ + "\u0000\u0000\u0837\u0838\u0007\u000e\u0000\u0000\u0838\u0839\u0007\u0016"+ + "\u0000\u0000\u0839\u083a\u0007\r\u0000\u0000\u083a\u083b\u0007\r\u0000"+ + "\u0000\u083b\u083c\u0007\n\u0000\u0000\u083c\u083d\u0007\u0007\u0000\u0000"+ + "\u083d\u083e\u0007\u0010\u0000\u0000\u083e\u083f\u0007\u0006\u0000\u0000"+ + "\u083f\u0840\u0007\b\u0000\u0000\u0840\u00e6\u0001\u0000\u0000\u0000\u0841"+ + "\u0842\u0007\u000e\u0000\u0000\u0842\u0843\u0007\r\u0000\u0000\u0843\u0844"+ + "\u0007\u0013\u0000\u0000\u0844\u0845\u0007\t\u0000\u0000\u0845\u0846\u0007"+ + "\t\u0000\u0000\u0846\u00e8\u0001\u0000\u0000\u0000\u0847\u0848\u0007\u000e"+ + "\u0000\u0000\u0848\u0849\u0007\u0016\u0000\u0000\u0849\u084a\u0007\r\u0000"+ + "\u0000\u084a\u084b\u0007\r\u0000\u0000\u084b\u084c\u0007\n\u0000\u0000"+ + "\u084c\u084d\u0007\u0007\u0000\u0000\u084d\u084e\u0007\u0010\u0000\u0000"+ + "\u084e\u084f\u0005_\u0000\u0000\u084f\u0850\u0007\t\u0000\u0000\u0850"+ + "\u0851\u0007\u000e\u0000\u0000\u0851\u0852\u0007\u0014\u0000\u0000\u0852"+ + "\u0853\u0007\n\u0000\u0000\u0853\u0854\u0007\u000f\u0000\u0000\u0854\u0855"+ + "\u0007\u0005\u0000\u0000\u0855\u00ea\u0001\u0000\u0000\u0000\u0856\u0857"+ + "\u0007\u0019\u0000\u0000\u0857\u0858\u0007\r\u0000\u0000\u0858\u0859\u0007"+ + "\n\u0000\u0000\u0859\u085a\u0007\n\u0000\u0000\u085a\u085b\u0007\u000b"+ + "\u0000\u0000\u085b\u085c\u0007\n\u0000\u0000\u085c\u00ec\u0001\u0000\u0000"+ + "\u0000\u085d\u085e\u0007\u0019\u0000\u0000\u085e\u085f\u0007\u0016\u0000"+ + "\u0000\u085f\u0860\u0007\u0006\u0000\u0000\u0860\u0861\u0007\u0006\u0000"+ + "\u0000\u0861\u00ee\u0001\u0000\u0000\u0000\u0862\u0863\u0007\u0011\u0000"+ + "\u0000\u0863\u0864\u0007\u0006\u0000\u0000\u0864\u0865\u0007\u0011\u0000"+ + "\u0000\u0865\u0866\u0007\u0015\u0000\u0000\u0866\u0867\u0007\n\u0000\u0000"+ + "\u0867\u00f0\u0001\u0000\u0000\u0000\u0868\u0869\u0007\u0011\u0000\u0000"+ + "\u0869\u086a\u0007\u0007\u0000\u0000\u086a\u086b\u0007\u0007\u0000\u0000"+ + "\u086b\u086c\u0007\n\u0000\u0000\u086c\u086d\u0007\r\u0000\u0000\u086d"+ + "\u00f2\u0001\u0000\u0000\u0000\u086e\u086f\u0007\u0011\u0000\u0000\u086f"+ + "\u0870\u0007\t\u0000\u0000\u0870\u00f4\u0001\u0000\u0000\u0000\u0871\u0872"+ + "\u0007\u0011\u0000\u0000\u0872\u0873\u0007\t\u0000\u0000\u0873\u0874\u0007"+ + "\u0007\u0000\u0000\u0874\u0875\u0007\u0016\u0000\u0000\u0875\u0876\u0007"+ + "\u0006\u0000\u0000\u0876\u0877\u0007\u0006\u0000\u0000\u0877\u00f6\u0001"+ + "\u0000\u0000\u0000\u0878\u0879\u0007\u001e\u0000\u0000\u0879\u087a\u0007"+ + "\u0013\u0000\u0000\u087a\u087b\u0007\u0011\u0000\u0000\u087b\u087c\u0007"+ + "\u0007\u0000\u0000\u087c\u00f8\u0001\u0000\u0000\u0000\u087d\u087e\u0007"+ + "\u0006\u0000\u0000\u087e\u087f\u0007\n\u0000\u0000\u087f\u0880\u0007\u0019"+ + "\u0000\u0000\u0880\u0881\u0007\u0010\u0000\u0000\u0881\u00fa\u0001\u0000"+ + "\u0000\u0000\u0882\u0883\u0007\u0006\u0000\u0000\u0883\u0884\u0007\u0011"+ + "\u0000\u0000\u0884\u0885\u0007\u0015\u0000\u0000\u0885\u0886\u0007\n\u0000"+ + "\u0000\u0886\u00fc\u0001\u0000\u0000\u0000\u0887\u0888\u0007\u0007\u0000"+ + "\u0000\u0888\u0889\u0007\u0005\u0000\u0000\u0889\u088a\u0007\u0010\u0000"+ + "\u0000\u088a\u088b\u0007\u0016\u0000\u0000\u088b\u088c\u0007\r\u0000\u0000"+ + "\u088c\u088d\u0007\u0005\u0000\u0000\u088d\u088e\u0007\u0006\u0000\u0000"+ + "\u088e\u00fe\u0001\u0000\u0000\u0000\u088f\u0890\u0007\u0007\u0000\u0000"+ + "\u0890\u0891\u0007\u0013\u0000\u0000\u0891\u0892\u0007\u0010\u0000\u0000"+ + "\u0892\u0893\u0007\u0007\u0000\u0000\u0893\u0894\u0007\u0016\u0000\u0000"+ + "\u0894\u0895\u0007\u0006\u0000\u0000\u0895\u0896\u0007\u0006\u0000\u0000"+ + "\u0896\u0100\u0001\u0000\u0000\u0000\u0897\u0898\u0007\u0013\u0000\u0000"+ + "\u0898\u0899\u0007\u0016\u0000\u0000\u0899\u089a\u0007\u0010\u0000\u0000"+ + "\u089a\u089b\u0007\n\u0000\u0000\u089b\u089c\u0007\r\u0000\u0000\u089c"+ + "\u0102\u0001\u0000\u0000\u0000\u089d\u089e\u0007\u0013\u0000\u0000\u089e"+ + "\u089f\u0007\u001b\u0000\u0000\u089f\u08a0\u0007\n\u0000\u0000\u08a0\u08a1"+ + "\u0007\r\u0000\u0000\u08a1\u0104\u0001\u0000\u0000\u0000\u08a2\u08a3\u0007"+ + "\u0013\u0000\u0000\u08a3\u08a4\u0007\u001b\u0000\u0000\u08a4\u08a5\u0007"+ + "\n\u0000\u0000\u08a5\u08a6\u0007\r\u0000\u0000\u08a6\u08a7\u0007\u0006"+ + "\u0000\u0000\u08a7\u08a8\u0007\u0005\u0000\u0000\u08a8\u08a9\u0007\u0018"+ + "\u0000\u0000\u08a9\u08aa\u0007\t\u0000\u0000\u08aa\u0106\u0001\u0000\u0000"+ + "\u0000\u08ab\u08ac\u0007\r\u0000\u0000\u08ac\u08ad\u0007\u0011\u0000\u0000"+ + "\u08ad\u08ae\u0007\u0017\u0000\u0000\u08ae\u08af\u0007\u0014\u0000\u0000"+ + "\u08af\u08b0\u0007\u0010\u0000\u0000\u08b0\u0108\u0001\u0000\u0000\u0000"+ + "\u08b1\u08b2\u0007\t\u0000\u0000\u08b2\u08b3\u0007\u0011\u0000\u0000\u08b3"+ + "\u08b4\u0007\u000f\u0000\u0000\u08b4\u08b5\u0007\u0011\u0000\u0000\u08b5"+ + "\u08b6\u0007\u0006\u0000\u0000\u08b6\u08b7\u0007\u0005\u0000\u0000\u08b7"+ + "\u08b8\u0007\r\u0000\u0000\u08b8\u010a\u0001\u0000\u0000\u0000\u08b9\u08ba"+ + "\u0007\u001b\u0000\u0000\u08ba\u08bb\u0007\n\u0000\u0000\u08bb\u08bc\u0007"+ + "\r\u0000\u0000\u08bc\u08bd\u0007\u0012\u0000\u0000\u08bd\u08be\u0007\u0013"+ + "\u0000\u0000\u08be\u08bf\u0007\t\u0000\u0000\u08bf\u08c0\u0007\n\u0000"+ + "\u0000\u08c0\u010c\u0001\u0000\u0000\u0000\u08c1\u08c2\u0007\u0005\u0000"+ + "\u0000\u08c2\u08c3\u0007\u0012\u0000\u0000\u08c3\u08c4\u0007\u0013\u0000"+ + "\u0000\u08c4\u08c5\u0007\r\u0000\u0000\u08c5\u08c6\u0007\u0010\u0000\u0000"+ + "\u08c6\u010e\u0001\u0000\u0000\u0000\u08c7\u08c8\u0007\u0005\u0000\u0000"+ + "\u08c8\u08c9\u0007\u0012\u0000\u0000\u08c9\u08ca\u0007\t\u0000\u0000\u08ca"+ + "\u08cb\u0007\u0013\u0000\u0000\u08cb\u08cc\u0007\u0006\u0000\u0000\u08cc"+ + "\u08cd\u0007\u0016\u0000\u0000\u08cd\u08ce\u0007\u0010\u0000\u0000\u08ce"+ + "\u08cf\u0007\n\u0000\u0000\u08cf\u0110\u0001\u0000\u0000\u0000\u08d0\u08d1"+ + "\u0007\u0005\u0000\u0000\u08d1\u08d2\u0007\u000e\u0000\u0000\u08d2\u08d3"+ + "\u0007\u000e\u0000\u0000\u08d3\u08d4\u0007\n\u0000\u0000\u08d4\u08d5\u0007"+ + "\t\u0000\u0000\u08d5\u08d6\u0007\t\u0000\u0000\u08d6\u0112\u0001\u0000"+ + "\u0000\u0000\u08d7\u08d8\u0007\u0005\u0000\u0000\u08d8\u08d9\u0007\u000e"+ + "\u0000\u0000\u08d9\u08da\u0007\u0010\u0000\u0000\u08da\u08db\u0007\u0011"+ + "\u0000\u0000\u08db\u08dc\u0007\u0013\u0000\u0000\u08dc\u08dd\u0007\u0007"+ + "\u0000\u0000\u08dd\u0114\u0001\u0000\u0000\u0000\u08de\u08df\u0007\u0005"+ + "\u0000\u0000\u08df\u08e0\u0007\f\u0000\u0000\u08e0\u08e1\u0007\f\u0000"+ + "\u0000\u08e1\u0116\u0001\u0000\u0000\u0000\u08e2\u08e3\u0007\u0005\u0000"+ + "\u0000\u08e3\u08e4\u0007\f\u0000\u0000\u08e4\u08e5\u0007\u000f\u0000\u0000"+ + "\u08e5\u08e6\u0007\u0011\u0000\u0000\u08e6\u08e7\u0007\u0007\u0000\u0000"+ + "\u08e7\u0118\u0001\u0000\u0000\u0000\u08e8\u08e9\u0007\u0005\u0000\u0000"+ + "\u08e9\u08ea\u0007\u0019\u0000\u0000\u08ea\u08eb\u0007\u0010\u0000\u0000"+ + "\u08eb\u08ec\u0007\n\u0000\u0000\u08ec\u08ed\u0007\r\u0000\u0000\u08ed"+ + "\u011a\u0001\u0000\u0000\u0000\u08ee\u08ef\u0007\u0005\u0000\u0000\u08ef"+ + "\u08f0\u0007\u0017\u0000\u0000\u08f0\u08f1\u0007\u0017\u0000\u0000\u08f1"+ + "\u08f2\u0007\r\u0000\u0000\u08f2\u08f3\u0007\n\u0000\u0000\u08f3\u08f4"+ + "\u0007\u0017\u0000\u0000\u08f4\u08f5\u0007\u0005\u0000\u0000\u08f5\u08f6"+ + "\u0007\u0010\u0000\u0000\u08f6\u08f7\u0007\n\u0000\u0000\u08f7\u011c\u0001"+ + "\u0000\u0000\u0000\u08f8\u08f9\u0007\u0005\u0000\u0000\u08f9\u08fa\u0007"+ + "\u0006\u0000\u0000\u08fa\u08fb\u0007\t\u0000\u0000\u08fb\u08fc\u0007\u0013"+ + "\u0000\u0000\u08fc\u011e\u0001\u0000\u0000\u0000\u08fd\u08fe\u0007\u0005"+ + "\u0000\u0000\u08fe\u08ff\u0007\u0006\u0000\u0000\u08ff\u0900\u0007\u0010"+ + "\u0000\u0000\u0900\u0901\u0007\n\u0000\u0000\u0901\u0902\u0007\r\u0000"+ + "\u0000\u0902\u0120\u0001\u0000\u0000\u0000\u0903\u0904\u0007\u0005\u0000"+ + "\u0000\u0904\u0905\u0007\u0006\u0000\u0000\u0905\u0906\u0007\u001d\u0000"+ + "\u0000\u0906\u0907\u0007\u0005\u0000\u0000\u0907\u0908\u0007\b\u0000\u0000"+ + "\u0908\u0909\u0007\t\u0000\u0000\u0909\u0122\u0001\u0000\u0000\u0000\u090a"+ + "\u090b\u0007\u0005\u0000\u0000\u090b\u090c\u0007\t\u0000\u0000\u090c\u090d"+ + "\u0007\t\u0000\u0000\u090d\u090e\u0007\n\u0000\u0000\u090e\u090f\u0007"+ + "\r\u0000\u0000\u090f\u0910\u0007\u0010\u0000\u0000\u0910\u0911\u0007\u0011"+ + "\u0000\u0000\u0911\u0912\u0007\u0013\u0000\u0000\u0912\u0913\u0007\u0007"+ + "\u0000\u0000\u0913\u0124\u0001\u0000\u0000\u0000\u0914\u0915\u0007\u0005"+ + "\u0000\u0000\u0915\u0916\u0007\t\u0000\u0000\u0916\u0917\u0007\t\u0000"+ + "\u0000\u0917\u0918\u0007\u0011\u0000\u0000\u0918\u0919\u0007\u0017\u0000"+ + "\u0000\u0919\u091a\u0007\u0007\u0000\u0000\u091a\u091b\u0007\u000f\u0000"+ + "\u0000\u091b\u091c\u0007\n\u0000\u0000\u091c\u091d\u0007\u0007\u0000\u0000"+ + "\u091d\u091e\u0007\u0010\u0000\u0000\u091e\u0126\u0001\u0000\u0000\u0000"+ + "\u091f\u0920\u0007\u0005\u0000\u0000\u0920\u0921\u0007\u0010\u0000\u0000"+ + "\u0921\u0128\u0001\u0000\u0000\u0000\u0922\u0923\u0007\u0005\u0000\u0000"+ + "\u0923\u0924\u0007\u0010\u0000\u0000\u0924\u0925\u0007\u0010\u0000\u0000"+ + "\u0925\u0926\u0007\r\u0000\u0000\u0926\u0927\u0007\u0011\u0000\u0000\u0927"+ + "\u0928\u0007\u0012\u0000\u0000\u0928\u0929\u0007\u0016\u0000\u0000\u0929"+ + "\u092a\u0007\u0010\u0000\u0000\u092a\u092b\u0007\n\u0000\u0000\u092b\u012a"+ + "\u0001\u0000\u0000\u0000\u092c\u092d\u0007\u0012\u0000\u0000\u092d\u092e"+ + "\u0007\u0005\u0000\u0000\u092e\u092f\u0007\u000e\u0000\u0000\u092f\u0930"+ + "\u0007\u0015\u0000\u0000\u0930\u0931\u0007\u001d\u0000\u0000\u0931\u0932"+ + "\u0007\u0005\u0000\u0000\u0932\u0933\u0007\r\u0000\u0000\u0933\u0934\u0007"+ + "\f\u0000\u0000\u0934\u012c\u0001\u0000\u0000\u0000\u0935\u0936\u0007\u0012"+ + "\u0000\u0000\u0936\u0937\u0007\n\u0000\u0000\u0937\u0938\u0007\u0019\u0000"+ + "\u0000\u0938\u0939\u0007\u0013\u0000\u0000\u0939\u093a\u0007\r\u0000\u0000"+ + "\u093a\u093b\u0007\n\u0000\u0000\u093b\u012e\u0001\u0000\u0000\u0000\u093c"+ + "\u093d\u0007\u0012\u0000\u0000\u093d\u093e\u0007\n\u0000\u0000\u093e\u093f"+ + "\u0007\u0017\u0000\u0000\u093f\u0940\u0007\u0011\u0000\u0000\u0940\u0941"+ + "\u0007\u0007\u0000\u0000\u0941\u0130\u0001\u0000\u0000\u0000\u0942\u0943"+ + "\u0007\u0012\u0000\u0000\u0943\u0944\u0007\b\u0000\u0000\u0944\u0132\u0001"+ + "\u0000\u0000\u0000\u0945\u0946\u0007\u000e\u0000\u0000\u0946\u0947\u0007"+ + "\u0005\u0000\u0000\u0947\u0948\u0007\u000e\u0000\u0000\u0948\u0949\u0007"+ + "\u0014\u0000\u0000\u0949\u094a\u0007\n\u0000\u0000\u094a\u0134\u0001\u0000"+ + "\u0000\u0000\u094b\u094c\u0007\u000e\u0000\u0000\u094c\u094d\u0007\u0005"+ + "\u0000\u0000\u094d\u094e\u0007\u0006\u0000\u0000\u094e\u094f\u0007\u0006"+ + "\u0000\u0000\u094f\u0950\u0007\n\u0000\u0000\u0950\u0951\u0007\f\u0000"+ + "\u0000\u0951\u0136\u0001\u0000\u0000\u0000\u0952\u0953\u0007\u000e\u0000"+ + "\u0000\u0953\u0954\u0007\u0005\u0000\u0000\u0954\u0955\u0007\t\u0000\u0000"+ + "\u0955\u0956\u0007\u000e\u0000\u0000\u0956\u0957\u0007\u0005\u0000\u0000"+ + "\u0957\u0958\u0007\f\u0000\u0000\u0958\u0959\u0007\n\u0000\u0000\u0959"+ + "\u0138\u0001\u0000\u0000\u0000\u095a\u095b\u0007\u000e\u0000\u0000\u095b"+ + "\u095c\u0007\u0005\u0000\u0000\u095c\u095d\u0007\t\u0000\u0000\u095d\u095e"+ + "\u0007\u000e\u0000\u0000\u095e\u095f\u0007\u0005\u0000\u0000\u095f\u0960"+ + "\u0007\f\u0000\u0000\u0960\u0961\u0007\n\u0000\u0000\u0961\u0962\u0007"+ + "\f\u0000\u0000\u0962\u013a\u0001\u0000\u0000\u0000\u0963\u0964\u0007\u000e"+ + "\u0000\u0000\u0964\u0965\u0007\u0005\u0000\u0000\u0965\u0966\u0007\u0010"+ + "\u0000\u0000\u0966\u0967\u0007\u0005\u0000\u0000\u0967\u0968\u0007\u0006"+ + "\u0000\u0000\u0968\u0969\u0007\u0013\u0000\u0000\u0969\u096a\u0007\u0017"+ + "\u0000\u0000\u096a\u013c\u0001\u0000\u0000\u0000\u096b\u096c\u0007\u000e"+ + "\u0000\u0000\u096c\u096d\u0007\u0014\u0000\u0000\u096d\u096e\u0007\u0005"+ + "\u0000\u0000\u096e\u096f\u0007\u0011\u0000\u0000\u096f\u0970\u0007\u0007"+ + "\u0000\u0000\u0970\u013e\u0001\u0000\u0000\u0000\u0971\u0972\u0007\u000e"+ + "\u0000\u0000\u0972\u0973\u0007\u0014\u0000\u0000\u0973\u0974\u0007\u0005"+ + "\u0000\u0000\u0974\u0975\u0007\r\u0000\u0000\u0975\u0976\u0007\u0005\u0000"+ + "\u0000\u0976\u0977\u0007\u000e\u0000\u0000\u0977\u0978\u0007\u0010\u0000"+ + "\u0000\u0978\u0979\u0007\n\u0000\u0000\u0979\u097a\u0007\r\u0000\u0000"+ + "\u097a\u097b\u0007\u0011\u0000\u0000\u097b\u097c\u0007\t\u0000\u0000\u097c"+ + "\u097d\u0007\u0010\u0000\u0000\u097d\u097e\u0007\u0011\u0000\u0000\u097e"+ + "\u097f\u0007\u000e\u0000\u0000\u097f\u0980\u0007\t\u0000\u0000\u0980\u0140"+ + "\u0001\u0000\u0000\u0000\u0981\u0982\u0007\u000e\u0000\u0000\u0982\u0983"+ + "\u0007\u0014\u0000\u0000\u0983\u0984\u0007\n\u0000\u0000\u0984\u0985\u0007"+ + "\u000e\u0000\u0000\u0985\u0986\u0007\u0015\u0000\u0000\u0986\u0987\u0007"+ + "\u0018\u0000\u0000\u0987\u0988\u0007\u0013\u0000\u0000\u0988\u0989\u0007"+ + "\u0011\u0000\u0000\u0989\u098a\u0007\u0007\u0000\u0000\u098a\u098b\u0007"+ + "\u0010\u0000\u0000\u098b\u0142\u0001\u0000\u0000\u0000\u098c\u098d\u0007"+ + "\u000e\u0000\u0000\u098d\u098e\u0007\u0006\u0000\u0000\u098e\u098f\u0007"+ + "\u0005\u0000\u0000\u098f\u0990\u0007\t\u0000\u0000\u0990\u0991\u0007\t"+ + "\u0000\u0000\u0991\u0144\u0001\u0000\u0000\u0000\u0992\u0993\u0007\u000e"+ + "\u0000\u0000\u0993\u0994\u0007\u0006\u0000\u0000\u0994\u0995\u0007\u0013"+ + "\u0000\u0000\u0995\u0996\u0007\t\u0000\u0000\u0996\u0997\u0007\n\u0000"+ + "\u0000\u0997\u0146\u0001\u0000\u0000\u0000\u0998\u0999\u0007\u000e\u0000"+ + "\u0000\u0999\u099a\u0007\u0006\u0000\u0000\u099a\u099b\u0007\u0016\u0000"+ + "\u0000\u099b\u099c\u0007\t\u0000\u0000\u099c\u099d\u0007\u0010\u0000\u0000"+ + "\u099d\u099e\u0007\n\u0000\u0000\u099e\u099f\u0007\r\u0000\u0000\u099f"+ + "\u0148\u0001\u0000\u0000\u0000\u09a0\u09a1\u0007\u000e\u0000\u0000\u09a1"+ + "\u09a2\u0007\u0013\u0000\u0000\u09a2\u09a3\u0007\u000f\u0000\u0000\u09a3"+ + "\u09a4\u0007\u000f\u0000\u0000\u09a4\u09a5\u0007\n\u0000\u0000\u09a5\u09a6"+ + "\u0007\u0007\u0000\u0000\u09a6\u09a7\u0007\u0010\u0000\u0000\u09a7\u014a"+ + "\u0001\u0000\u0000\u0000\u09a8\u09a9\u0007\u000e\u0000\u0000\u09a9\u09aa"+ + "\u0007\u0013\u0000\u0000\u09aa\u09ab\u0007\u000f\u0000\u0000\u09ab\u09ac"+ + "\u0007\u000f\u0000\u0000\u09ac\u09ad\u0007\n\u0000\u0000\u09ad\u09ae\u0007"+ + "\u0007\u0000\u0000\u09ae\u09af\u0007\u0010\u0000\u0000\u09af\u09b0\u0007"+ + "\t\u0000\u0000\u09b0\u014c\u0001\u0000\u0000\u0000\u09b1\u09b2\u0007\u000e"+ + "\u0000\u0000\u09b2\u09b3\u0007\u0013\u0000\u0000\u09b3\u09b4\u0007\u000f"+ + "\u0000\u0000\u09b4\u09b5\u0007\u000f\u0000\u0000\u09b5\u09b6\u0007\u0011"+ + "\u0000\u0000\u09b6\u09b7\u0007\u0010\u0000\u0000\u09b7\u014e\u0001\u0000"+ + "\u0000\u0000\u09b8\u09b9\u0007\u000e\u0000\u0000\u09b9\u09ba\u0007\u0013"+ + "\u0000\u0000\u09ba\u09bb\u0007\u000f\u0000\u0000\u09bb\u09bc\u0007\u000f"+ + "\u0000\u0000\u09bc\u09bd\u0007\u0011\u0000\u0000\u09bd\u09be\u0007\u0010"+ + "\u0000\u0000\u09be\u09bf\u0007\u0010\u0000\u0000\u09bf\u09c0\u0007\n\u0000"+ + "\u0000\u09c0\u09c1\u0007\f\u0000\u0000\u09c1\u0150\u0001\u0000\u0000\u0000"+ + "\u09c2\u09c3\u0007\u000e\u0000\u0000\u09c3\u09c4\u0007\u0013\u0000\u0000"+ + "\u09c4\u09c5\u0007\u0007\u0000\u0000\u09c5\u09c6\u0007\u0019\u0000\u0000"+ + "\u09c6\u09c7\u0007\u0011\u0000\u0000\u09c7\u09c8\u0007\u0017\u0000\u0000"+ + "\u09c8\u09c9\u0007\u0016\u0000\u0000\u09c9\u09ca\u0007\r\u0000\u0000\u09ca"+ + "\u09cb\u0007\u0005\u0000\u0000\u09cb\u09cc\u0007\u0010\u0000\u0000\u09cc"+ + "\u09cd\u0007\u0011\u0000\u0000\u09cd\u09ce\u0007\u0013\u0000\u0000\u09ce"+ + "\u09cf\u0007\u0007\u0000\u0000\u09cf\u0152\u0001\u0000\u0000\u0000\u09d0"+ + "\u09d1\u0007\u000e\u0000\u0000\u09d1\u09d2\u0007\u0013\u0000\u0000\u09d2"+ + "\u09d3\u0007\u0007\u0000\u0000\u09d3\u09d4\u0007\u0007\u0000\u0000\u09d4"+ + "\u09d5\u0007\n\u0000\u0000\u09d5\u09d6\u0007\u000e\u0000\u0000\u09d6\u09d7"+ + "\u0007\u0010\u0000\u0000\u09d7\u09d8\u0007\u0011\u0000\u0000\u09d8\u09d9"+ + "\u0007\u0013\u0000\u0000\u09d9\u09da\u0007\u0007\u0000\u0000\u09da\u0154"+ + "\u0001\u0000\u0000\u0000\u09db\u09dc\u0007\u000e\u0000\u0000\u09dc\u09dd"+ + "\u0007\u0013\u0000\u0000\u09dd\u09de\u0007\u0007\u0000\u0000\u09de\u09df"+ + "\u0007\t\u0000\u0000\u09df\u09e0\u0007\u0010\u0000\u0000\u09e0\u09e1\u0007"+ + "\r\u0000\u0000\u09e1\u09e2\u0007\u0005\u0000\u0000\u09e2\u09e3\u0007\u0011"+ + "\u0000\u0000\u09e3\u09e4\u0007\u0007\u0000\u0000\u09e4\u09e5\u0007\u0010"+ + "\u0000\u0000\u09e5\u09e6\u0007\t\u0000\u0000\u09e6\u0156\u0001\u0000\u0000"+ + "\u0000\u09e7\u09e8\u0007\u000e\u0000\u0000\u09e8\u09e9\u0007\u0013\u0000"+ + "\u0000\u09e9\u09ea\u0007\u0007\u0000\u0000\u09ea\u09eb\u0007\u0010\u0000"+ + "\u0000\u09eb\u09ec\u0007\n\u0000\u0000\u09ec\u09ed\u0007\u0007\u0000\u0000"+ + "\u09ed\u09ee\u0007\u0010\u0000\u0000\u09ee\u0158\u0001\u0000\u0000\u0000"+ + "\u09ef\u09f0\u0007\u000e\u0000\u0000\u09f0\u09f1\u0007\u0013\u0000\u0000"+ + "\u09f1\u09f2\u0007\u0007\u0000\u0000\u09f2\u09f3\u0007\u0010\u0000\u0000"+ + "\u09f3\u09f4\u0007\u0011\u0000\u0000\u09f4\u09f5\u0007\u0007\u0000\u0000"+ + "\u09f5\u09f6\u0007\u0016\u0000\u0000\u09f6\u09f7\u0007\n\u0000\u0000\u09f7"+ + "\u015a\u0001\u0000\u0000\u0000\u09f8\u09f9\u0007\u000e\u0000\u0000\u09f9"+ + "\u09fa\u0007\u0013\u0000\u0000\u09fa\u09fb\u0007\u0007\u0000\u0000\u09fb"+ + "\u09fc\u0007\u001b\u0000\u0000\u09fc\u09fd\u0007\n\u0000\u0000\u09fd\u09fe"+ + "\u0007\r\u0000\u0000\u09fe\u09ff\u0007\t\u0000\u0000\u09ff\u0a00\u0007"+ + "\u0011\u0000\u0000\u0a00\u0a01\u0007\u0013\u0000\u0000\u0a01\u0a02\u0007"+ + "\u0007\u0000\u0000\u0a02\u015c\u0001\u0000\u0000\u0000\u0a03\u0a04\u0007"+ + "\u000e\u0000\u0000\u0a04\u0a05\u0007\u0013\u0000\u0000\u0a05\u0a06\u0007"+ + "\u0018\u0000\u0000\u0a06\u0a07\u0007\b\u0000\u0000\u0a07\u015e\u0001\u0000"+ + "\u0000\u0000\u0a08\u0a09\u0007\u000e\u0000\u0000\u0a09\u0a0a\u0007\u0013"+ + "\u0000\u0000\u0a0a\u0a0b\u0007\t\u0000\u0000\u0a0b\u0a0c\u0007\u0010\u0000"+ + "\u0000\u0a0c\u0160\u0001\u0000\u0000\u0000\u0a0d\u0a0e\u0007\u000e\u0000"+ + "\u0000\u0a0e\u0a0f\u0007\t\u0000\u0000\u0a0f\u0a10\u0007\u001b\u0000\u0000"+ + "\u0a10\u0162\u0001\u0000\u0000\u0000\u0a11\u0a12\u0007\u000e\u0000\u0000"+ + "\u0a12\u0a13\u0007\u0016\u0000\u0000\u0a13\u0a14\u0007\r\u0000\u0000\u0a14"+ + "\u0a15\u0007\t\u0000\u0000\u0a15\u0a16\u0007\u0013\u0000\u0000\u0a16\u0a17"+ + "\u0007\r\u0000\u0000\u0a17\u0164\u0001\u0000\u0000\u0000\u0a18\u0a19\u0007"+ + "\u000e\u0000\u0000\u0a19\u0a1a\u0007\b\u0000\u0000\u0a1a\u0a1b\u0007\u000e"+ + "\u0000\u0000\u0a1b\u0a1c\u0007\u0006\u0000\u0000\u0a1c\u0a1d\u0007\n\u0000"+ + "\u0000\u0a1d\u0166\u0001\u0000\u0000\u0000\u0a1e\u0a1f\u0007\f\u0000\u0000"+ + "\u0a1f\u0a20\u0007\u0005\u0000\u0000\u0a20\u0a21\u0007\u0010\u0000\u0000"+ + "\u0a21\u0a22\u0007\u0005\u0000\u0000\u0a22\u0168\u0001\u0000\u0000\u0000"+ + "\u0a23\u0a24\u0007\f\u0000\u0000\u0a24\u0a25\u0007\u0005\u0000\u0000\u0a25"+ + "\u0a26\u0007\u0010\u0000\u0000\u0a26\u0a27\u0007\u0005\u0000\u0000\u0a27"+ + "\u0a28\u0007\u0012\u0000\u0000\u0a28\u0a29\u0007\u0005\u0000\u0000\u0a29"+ + "\u0a2a\u0007\t\u0000\u0000\u0a2a\u0a2b\u0007\n\u0000\u0000\u0a2b\u016a"+ + "\u0001\u0000\u0000\u0000\u0a2c\u0a2d\u0007\f\u0000\u0000\u0a2d\u0a2e\u0007"+ + "\u0005\u0000\u0000\u0a2e\u0a2f\u0007\b\u0000\u0000\u0a2f\u016c\u0001\u0000"+ + "\u0000\u0000\u0a30\u0a31\u0007\f\u0000\u0000\u0a31\u0a32\u0007\n\u0000"+ + "\u0000\u0a32\u0a33\u0007\u0005\u0000\u0000\u0a33\u0a34\u0007\u0006\u0000"+ + "\u0000\u0a34\u0a35\u0007\u0006\u0000\u0000\u0a35\u0a36\u0007\u0013\u0000"+ + "\u0000\u0a36\u0a37\u0007\u000e\u0000\u0000\u0a37\u0a38\u0007\u0005\u0000"+ + "\u0000\u0a38\u0a39\u0007\u0010\u0000\u0000\u0a39\u0a3a\u0007\n\u0000\u0000"+ + "\u0a3a\u016e\u0001\u0000\u0000\u0000\u0a3b\u0a3c\u0007\f\u0000\u0000\u0a3c"+ + "\u0a3d\u0007\n\u0000\u0000\u0a3d\u0a3e\u0007\u000e\u0000\u0000\u0a3e\u0a3f"+ + "\u0007\u0006\u0000\u0000\u0a3f\u0a40\u0007\u0005\u0000\u0000\u0a40\u0a41"+ + "\u0007\r\u0000\u0000\u0a41\u0a42\u0007\n\u0000\u0000\u0a42\u0170\u0001"+ + "\u0000\u0000\u0000\u0a43\u0a44\u0007\f\u0000\u0000\u0a44\u0a45\u0007\n"+ + "\u0000\u0000\u0a45\u0a46\u0007\u0019\u0000\u0000\u0a46\u0a47\u0007\u0005"+ + "\u0000\u0000\u0a47\u0a48\u0007\u0016\u0000\u0000\u0a48\u0a49\u0007\u0006"+ + "\u0000\u0000\u0a49\u0a4a\u0007\u0010\u0000\u0000\u0a4a\u0a4b\u0007\t\u0000"+ + "\u0000\u0a4b\u0172\u0001\u0000\u0000\u0000\u0a4c\u0a4d\u0007\f\u0000\u0000"+ + "\u0a4d\u0a4e\u0007\n\u0000\u0000\u0a4e\u0a4f\u0007\u0019\u0000\u0000\u0a4f"+ + "\u0a50\u0007\n\u0000\u0000\u0a50\u0a51\u0007\r\u0000\u0000\u0a51\u0a52"+ + "\u0007\r\u0000\u0000\u0a52\u0a53\u0007\n\u0000\u0000\u0a53\u0a54\u0007"+ + "\f\u0000\u0000\u0a54\u0174\u0001\u0000\u0000\u0000\u0a55\u0a56\u0007\f"+ + "\u0000\u0000\u0a56\u0a57\u0007\n\u0000\u0000\u0a57\u0a58\u0007\u0019\u0000"+ + "\u0000\u0a58\u0a59\u0007\u0011\u0000\u0000\u0a59\u0a5a\u0007\u0007\u0000"+ + "\u0000\u0a5a\u0a5b\u0007\n\u0000\u0000\u0a5b\u0a5c\u0007\r\u0000\u0000"+ + "\u0a5c\u0176\u0001\u0000\u0000\u0000\u0a5d\u0a5e\u0007\f\u0000\u0000\u0a5e"+ + "\u0a5f\u0007\n\u0000\u0000\u0a5f\u0a60\u0007\u0006\u0000\u0000\u0a60\u0a61"+ + "\u0007\n\u0000\u0000\u0a61\u0a62\u0007\u0010\u0000\u0000\u0a62\u0a63\u0007"+ + "\n\u0000\u0000\u0a63\u0178\u0001\u0000\u0000\u0000\u0a64\u0a65\u0007\f"+ + "\u0000\u0000\u0a65\u0a66\u0007\n\u0000\u0000\u0a66\u0a67\u0007\u0006\u0000"+ + "\u0000\u0a67\u0a68\u0007\u0011\u0000\u0000\u0a68\u0a69\u0007\u000f\u0000"+ + "\u0000\u0a69\u0a6a\u0007\u0011\u0000\u0000\u0a6a\u0a6b\u0007\u0010\u0000"+ + "\u0000\u0a6b\u0a6c\u0007\n\u0000\u0000\u0a6c\u0a6d\u0007\r\u0000\u0000"+ + "\u0a6d\u017a\u0001\u0000\u0000\u0000\u0a6e\u0a6f\u0007\f\u0000\u0000\u0a6f"+ + "\u0a70\u0007\n\u0000\u0000\u0a70\u0a71\u0007\u0006\u0000\u0000\u0a71\u0a72"+ + "\u0007\u0011\u0000\u0000\u0a72\u0a73\u0007\u000f\u0000\u0000\u0a73\u0a74"+ + "\u0007\u0011\u0000\u0000\u0a74\u0a75\u0007\u0010\u0000\u0000\u0a75\u0a76"+ + "\u0007\n\u0000\u0000\u0a76\u0a77\u0007\r\u0000\u0000\u0a77\u0a78\u0007"+ + "\t\u0000\u0000\u0a78\u017c\u0001\u0000\u0000\u0000\u0a79\u0a7a\u0007\f"+ + "\u0000\u0000\u0a7a\u0a7b\u0007\u0011\u0000\u0000\u0a7b\u0a7c\u0007\u000e"+ + "\u0000\u0000\u0a7c\u0a7d\u0007\u0010\u0000\u0000\u0a7d\u0a7e\u0007\u0011"+ + "\u0000\u0000\u0a7e\u0a7f\u0007\u0013\u0000\u0000\u0a7f\u0a80\u0007\u0007"+ + "\u0000\u0000\u0a80\u0a81\u0007\u0005\u0000\u0000\u0a81\u0a82\u0007\r\u0000"+ + "\u0000\u0a82\u0a83\u0007\b\u0000\u0000\u0a83\u017e\u0001\u0000\u0000\u0000"+ + "\u0a84\u0a85\u0007\f\u0000\u0000\u0a85\u0a86\u0007\u0011\u0000\u0000\u0a86"+ + "\u0a87\u0007\t\u0000\u0000\u0a87\u0a88\u0007\u0005\u0000\u0000\u0a88\u0a89"+ + "\u0007\u0012\u0000\u0000\u0a89\u0a8a\u0007\u0006\u0000\u0000\u0a8a\u0a8b"+ + "\u0007\n\u0000\u0000\u0a8b\u0180\u0001\u0000\u0000\u0000\u0a8c\u0a8d\u0007"+ + "\f\u0000\u0000\u0a8d\u0a8e\u0007\u0011\u0000\u0000\u0a8e\u0a8f\u0007\t"+ + "\u0000\u0000\u0a8f\u0a90\u0007\u000e\u0000\u0000\u0a90\u0a91\u0007\u0005"+ + "\u0000\u0000\u0a91\u0a92\u0007\r\u0000\u0000\u0a92\u0a93\u0007\f\u0000"+ + "\u0000\u0a93\u0182\u0001\u0000\u0000\u0000\u0a94\u0a95\u0007\f\u0000\u0000"+ + "\u0a95\u0a96\u0007\u0013\u0000\u0000\u0a96\u0a97\u0007\u000e\u0000\u0000"+ + "\u0a97\u0a98\u0007\u0016\u0000\u0000\u0a98\u0a99\u0007\u000f\u0000\u0000"+ + "\u0a99\u0a9a\u0007\n\u0000\u0000\u0a9a\u0a9b\u0007\u0007\u0000\u0000\u0a9b"+ + "\u0a9c\u0007\u0010\u0000\u0000\u0a9c\u0184\u0001\u0000\u0000\u0000\u0a9d"+ + "\u0a9e\u0007\f\u0000\u0000\u0a9e\u0a9f\u0007\u0013\u0000\u0000\u0a9f\u0aa0"+ + "\u0007\u000f\u0000\u0000\u0aa0\u0aa1\u0007\u0005\u0000\u0000\u0aa1\u0aa2"+ + "\u0007\u0011\u0000\u0000\u0aa2\u0aa3\u0007\u0007\u0000\u0000\u0aa3\u0186"+ + "\u0001\u0000\u0000\u0000\u0aa4\u0aa5\u0007\f\u0000\u0000\u0aa5\u0aa6\u0007"+ + "\u0013\u0000\u0000\u0aa6\u0aa7\u0007\u0016\u0000\u0000\u0aa7\u0aa8\u0007"+ + "\u0012\u0000\u0000\u0aa8\u0aa9\u0007\u0006\u0000\u0000\u0aa9\u0aaa\u0007"+ + "\n\u0000\u0000\u0aaa\u0188\u0001\u0000\u0000\u0000\u0aab\u0aac\u0007\f"+ + "\u0000\u0000\u0aac\u0aad\u0007\r\u0000\u0000\u0aad\u0aae\u0007\u0013\u0000"+ + "\u0000\u0aae\u0aaf\u0007\u0018\u0000\u0000\u0aaf\u018a\u0001\u0000\u0000"+ + "\u0000\u0ab0\u0ab1\u0007\n\u0000\u0000\u0ab1\u0ab2\u0007\u0005\u0000\u0000"+ + "\u0ab2\u0ab3\u0007\u000e\u0000\u0000\u0ab3\u0ab4\u0007\u0014\u0000\u0000"+ + "\u0ab4\u018c\u0001\u0000\u0000\u0000\u0ab5\u0ab6\u0007\n\u0000\u0000\u0ab6"+ + "\u0ab7\u0007\u0007\u0000\u0000\u0ab7\u0ab8\u0007\u0005\u0000\u0000\u0ab8"+ + "\u0ab9\u0007\u0012\u0000\u0000\u0ab9\u0aba\u0007\u0006\u0000\u0000\u0aba"+ + "\u0abb\u0007\n\u0000\u0000\u0abb\u018e\u0001\u0000\u0000\u0000\u0abc\u0abd"+ + "\u0007\n\u0000\u0000\u0abd\u0abe\u0007\u0007\u0000\u0000\u0abe\u0abf\u0007"+ + "\u000e\u0000\u0000\u0abf\u0ac0\u0007\u0013\u0000\u0000\u0ac0\u0ac1\u0007"+ + "\f\u0000\u0000\u0ac1\u0ac2\u0007\u0011\u0000\u0000\u0ac2\u0ac3\u0007\u0007"+ + "\u0000\u0000\u0ac3\u0ac4\u0007\u0017\u0000\u0000\u0ac4\u0190\u0001\u0000"+ + "\u0000\u0000\u0ac5\u0ac6\u0007\n\u0000\u0000\u0ac6\u0ac7\u0007\u0007\u0000"+ + "\u0000\u0ac7\u0ac8\u0007\u000e\u0000\u0000\u0ac8\u0ac9\u0007\r\u0000\u0000"+ + "\u0ac9\u0aca\u0007\b\u0000\u0000\u0aca\u0acb\u0007\u0018\u0000\u0000\u0acb"+ + "\u0acc\u0007\u0010\u0000\u0000\u0acc\u0acd\u0007\n\u0000\u0000\u0acd\u0ace"+ + "\u0007\f\u0000\u0000\u0ace\u0192\u0001\u0000\u0000\u0000\u0acf\u0ad0\u0007"+ + "\n\u0000\u0000\u0ad0\u0ad1\u0007\u0007\u0000\u0000\u0ad1\u0ad2\u0007\u0016"+ + "\u0000\u0000\u0ad2\u0ad3\u0007\u000f\u0000\u0000\u0ad3\u0194\u0001\u0000"+ + "\u0000\u0000\u0ad4\u0ad5\u0007\n\u0000\u0000\u0ad5\u0ad6\u0007\t\u0000"+ + "\u0000\u0ad6\u0ad7\u0007\u000e\u0000\u0000\u0ad7\u0ad8\u0007\u0005\u0000"+ + "\u0000\u0ad8\u0ad9\u0007\u0018\u0000\u0000\u0ad9\u0ada\u0007\n\u0000\u0000"+ + "\u0ada\u0196\u0001\u0000\u0000\u0000\u0adb\u0adc\u0007\n\u0000\u0000\u0adc"+ + "\u0add\u0007\u001b\u0000\u0000\u0add\u0ade\u0007\n\u0000\u0000\u0ade\u0adf"+ + "\u0007\u0007\u0000\u0000\u0adf\u0ae0\u0007\u0010\u0000\u0000\u0ae0\u0198"+ + "\u0001\u0000\u0000\u0000\u0ae1\u0ae2\u0007\n\u0000\u0000\u0ae2\u0ae3\u0007"+ + "\u001a\u0000\u0000\u0ae3\u0ae4\u0007\u000e\u0000\u0000\u0ae4\u0ae5\u0007"+ + "\u0006\u0000\u0000\u0ae5\u0ae6\u0007\u0016\u0000\u0000\u0ae6\u0ae7\u0007"+ + "\f\u0000\u0000\u0ae7\u0ae8\u0007\n\u0000\u0000\u0ae8\u019a\u0001\u0000"+ + "\u0000\u0000\u0ae9\u0aea\u0007\n\u0000\u0000\u0aea\u0aeb\u0007\u001a\u0000"+ + "\u0000\u0aeb\u0aec\u0007\u000e\u0000\u0000\u0aec\u0aed\u0007\u0006\u0000"+ + "\u0000\u0aed\u0aee\u0007\u0016\u0000\u0000\u0aee\u0aef\u0007\f\u0000\u0000"+ + "\u0aef\u0af0\u0007\u0011\u0000\u0000\u0af0\u0af1\u0007\u0007\u0000\u0000"+ + "\u0af1\u0af2\u0007\u0017\u0000\u0000\u0af2\u019c\u0001\u0000\u0000\u0000"+ + "\u0af3\u0af4\u0007\n\u0000\u0000\u0af4\u0af5\u0007\u001a\u0000\u0000\u0af5"+ + "\u0af6\u0007\u000e\u0000\u0000\u0af6\u0af7\u0007\u0006\u0000\u0000\u0af7"+ + "\u0af8\u0007\u0016\u0000\u0000\u0af8\u0af9\u0007\t\u0000\u0000\u0af9\u0afa"+ + "\u0007\u0011\u0000\u0000\u0afa\u0afb\u0007\u001b\u0000\u0000\u0afb\u0afc"+ + "\u0007\n\u0000\u0000\u0afc\u019e\u0001\u0000\u0000\u0000\u0afd\u0afe\u0007"+ + "\n\u0000\u0000\u0afe\u0aff\u0007\u001a\u0000\u0000\u0aff\u0b00\u0007\n"+ + "\u0000\u0000\u0b00\u0b01\u0007\u000e\u0000\u0000\u0b01\u0b02\u0007\u0016"+ + "\u0000\u0000\u0b02\u0b03\u0007\u0010\u0000\u0000\u0b03\u0b04\u0007\n\u0000"+ + "\u0000\u0b04\u01a0\u0001\u0000\u0000\u0000\u0b05\u0b06\u0007\n\u0000\u0000"+ + "\u0b06\u0b07\u0007\u001a\u0000\u0000\u0b07\u0b08\u0007\u0018\u0000\u0000"+ + "\u0b08\u0b09\u0007\u0006\u0000\u0000\u0b09\u0b0a\u0007\u0005\u0000\u0000"+ + "\u0b0a\u0b0b\u0007\u0011\u0000\u0000\u0b0b\u0b0c\u0007\u0007\u0000\u0000"+ + "\u0b0c\u01a2\u0001\u0000\u0000\u0000\u0b0d\u0b0e\u0007\n\u0000\u0000\u0b0e"+ + "\u0b0f\u0007\u001a\u0000\u0000\u0b0f\u0b10\u0007\u0010\u0000\u0000\u0b10"+ + "\u0b11\u0007\n\u0000\u0000\u0b11\u0b12\u0007\u0007\u0000\u0000\u0b12\u0b13"+ + "\u0007\t\u0000\u0000\u0b13\u0b14\u0007\u0011\u0000\u0000\u0b14\u0b15\u0007"+ + "\u0013\u0000\u0000\u0b15\u0b16\u0007\u0007\u0000\u0000\u0b16\u01a4\u0001"+ + "\u0000\u0000\u0000\u0b17\u0b18\u0007\n\u0000\u0000\u0b18\u0b19\u0007\u001a"+ + "\u0000\u0000\u0b19\u0b1a\u0007\u0010\u0000\u0000\u0b1a\u0b1b\u0007\n\u0000"+ + "\u0000\u0b1b\u0b1c\u0007\r\u0000\u0000\u0b1c\u0b1d\u0007\u0007\u0000\u0000"+ + "\u0b1d\u0b1e\u0007\u0005\u0000\u0000\u0b1e\u0b1f\u0007\u0006\u0000\u0000"+ + "\u0b1f\u01a6\u0001\u0000\u0000\u0000\u0b20\u0b21\u0007\u0019\u0000\u0000"+ + "\u0b21\u0b22\u0007\u0005\u0000\u0000\u0b22\u0b23\u0007\u000f\u0000\u0000"+ + "\u0b23\u0b24\u0007\u0011\u0000\u0000\u0b24\u0b25\u0007\u0006\u0000\u0000"+ + "\u0b25\u0b26\u0007\b\u0000\u0000\u0b26\u01a8\u0001\u0000\u0000\u0000\u0b27"+ + "\u0b28\u0007\u0019\u0000\u0000\u0b28\u0b29\u0007\u0011\u0000\u0000\u0b29"+ + "\u0b2a\u0007\r\u0000\u0000\u0b2a\u0b2b\u0007\t\u0000\u0000\u0b2b\u0b2c"+ + "\u0007\u0010\u0000\u0000\u0b2c\u01aa\u0001\u0000\u0000\u0000\u0b2d\u0b2e"+ + "\u0007\u0019\u0000\u0000\u0b2e\u0b2f\u0007\u0013\u0000\u0000\u0b2f\u0b30"+ + "\u0007\u0006\u0000\u0000\u0b30\u0b31\u0007\u0006\u0000\u0000\u0b31\u0b32"+ + "\u0007\u0013\u0000\u0000\u0b32\u0b33\u0007\u001d\u0000\u0000\u0b33\u0b34"+ + "\u0007\u0011\u0000\u0000\u0b34\u0b35\u0007\u0007\u0000\u0000\u0b35\u0b36"+ + "\u0007\u0017\u0000\u0000\u0b36\u01ac\u0001\u0000\u0000\u0000\u0b37\u0b38"+ + "\u0007\u0019\u0000\u0000\u0b38\u0b39\u0007\u0013\u0000\u0000\u0b39\u0b3a"+ + "\u0007\r\u0000\u0000\u0b3a\u0b3b\u0007\u000e\u0000\u0000\u0b3b\u0b3c\u0007"+ + "\n\u0000\u0000\u0b3c\u01ae\u0001\u0000\u0000\u0000\u0b3d\u0b3e\u0007\u0019"+ + "\u0000\u0000\u0b3e\u0b3f\u0007\u0013\u0000\u0000\u0b3f\u0b40\u0007\r\u0000"+ + "\u0000\u0b40\u0b41\u0007\u001d\u0000\u0000\u0b41\u0b42\u0007\u0005\u0000"+ + "\u0000\u0b42\u0b43\u0007\r\u0000\u0000\u0b43\u0b44\u0007\f\u0000\u0000"+ + "\u0b44\u01b0\u0001\u0000\u0000\u0000\u0b45\u0b46\u0007\u0019\u0000\u0000"+ + "\u0b46\u0b47\u0007\u0016\u0000\u0000\u0b47\u0b48\u0007\u0007\u0000\u0000"+ + "\u0b48\u0b49\u0007\u000e\u0000\u0000\u0b49\u0b4a\u0007\u0010\u0000\u0000"+ + "\u0b4a\u0b4b\u0007\u0011\u0000\u0000\u0b4b\u0b4c\u0007\u0013\u0000\u0000"+ + "\u0b4c\u0b4d\u0007\u0007\u0000\u0000\u0b4d\u01b2\u0001\u0000\u0000\u0000"+ + "\u0b4e\u0b4f\u0007\u0019\u0000\u0000\u0b4f\u0b50\u0007\u0016\u0000\u0000"+ + "\u0b50\u0b51\u0007\u0007\u0000\u0000\u0b51\u0b52\u0007\u000e\u0000\u0000"+ + "\u0b52\u0b53\u0007\u0010\u0000\u0000\u0b53\u0b54\u0007\u0011\u0000\u0000"+ + "\u0b54\u0b55\u0007\u0013\u0000\u0000\u0b55\u0b56\u0007\u0007\u0000\u0000"+ + "\u0b56\u0b57\u0007\t\u0000\u0000\u0b57\u01b4\u0001\u0000\u0000\u0000\u0b58"+ + "\u0b59\u0007\u0017\u0000\u0000\u0b59\u0b5a\u0007\u0006\u0000\u0000\u0b5a"+ + "\u0b5b\u0007\u0013\u0000\u0000\u0b5b\u0b5c\u0007\u0012\u0000\u0000\u0b5c"+ + "\u0b5d\u0007\u0005\u0000\u0000\u0b5d\u0b5e\u0007\u0006\u0000\u0000\u0b5e"+ + "\u01b6\u0001\u0000\u0000\u0000\u0b5f\u0b60\u0007\u0017\u0000\u0000\u0b60"+ + "\u0b61\u0007\r\u0000\u0000\u0b61\u0b62\u0007\u0005\u0000\u0000\u0b62\u0b63"+ + "\u0007\u0007\u0000\u0000\u0b63\u0b64\u0007\u0010\u0000\u0000\u0b64\u0b65"+ + "\u0007\n\u0000\u0000\u0b65\u0b66\u0007\f\u0000\u0000\u0b66\u01b8\u0001"+ + "\u0000\u0000\u0000\u0b67\u0b68\u0007\u0014\u0000\u0000\u0b68\u0b69\u0007"+ + "\u0005\u0000\u0000\u0b69\u0b6a\u0007\u0007\u0000\u0000\u0b6a\u0b6b\u0007"+ + "\f\u0000\u0000\u0b6b\u0b6c\u0007\u0006\u0000\u0000\u0b6c\u0b6d\u0007\n"+ + "\u0000\u0000\u0b6d\u0b6e\u0007\r\u0000\u0000\u0b6e\u01ba\u0001\u0000\u0000"+ + "\u0000\u0b6f\u0b70\u0007\u0014\u0000\u0000\u0b70\u0b71\u0007\n\u0000\u0000"+ + "\u0b71\u0b72\u0007\u0005\u0000\u0000\u0b72\u0b73\u0007\f\u0000\u0000\u0b73"+ + "\u0b74\u0007\n\u0000\u0000\u0b74\u0b75\u0007\r\u0000\u0000\u0b75\u01bc"+ + "\u0001\u0000\u0000\u0000\u0b76\u0b77\u0007\u0014\u0000\u0000\u0b77\u0b78"+ + "\u0007\u0013\u0000\u0000\u0b78\u0b79\u0007\u0006\u0000\u0000\u0b79\u0b7a"+ + "\u0007\f\u0000\u0000\u0b7a\u01be\u0001\u0000\u0000\u0000\u0b7b\u0b7c\u0007"+ + "\u0014\u0000\u0000\u0b7c\u0b7d\u0007\u0013\u0000\u0000\u0b7d\u0b7e\u0007"+ + "\u0016\u0000\u0000\u0b7e\u0b7f\u0007\r\u0000\u0000\u0b7f\u01c0\u0001\u0000"+ + "\u0000\u0000\u0b80\u0b81\u0007\u0011\u0000\u0000\u0b81\u0b82\u0007\f\u0000"+ + "\u0000\u0b82\u0b83\u0007\n\u0000\u0000\u0b83\u0b84\u0007\u0007\u0000\u0000"+ + "\u0b84\u0b85\u0007\u0010\u0000\u0000\u0b85\u0b86\u0007\u0011\u0000\u0000"+ + "\u0b86\u0b87\u0007\u0010\u0000\u0000\u0b87\u0b88\u0007\b\u0000\u0000\u0b88"+ + "\u01c2\u0001\u0000\u0000\u0000\u0b89\u0b8a\u0007\u0011\u0000\u0000\u0b8a"+ + "\u0b8b\u0007\u0019\u0000\u0000\u0b8b\u01c4\u0001\u0000\u0000\u0000\u0b8c"+ + "\u0b8d\u0007\u0011\u0000\u0000\u0b8d\u0b8e\u0007\u000f\u0000\u0000\u0b8e"+ + "\u0b8f\u0007\u000f\u0000\u0000\u0b8f\u0b90\u0007\n\u0000\u0000\u0b90\u0b91"+ + "\u0007\f\u0000\u0000\u0b91\u0b92\u0007\u0011\u0000\u0000\u0b92\u0b93\u0007"+ + "\u0005\u0000\u0000\u0b93\u0b94\u0007\u0010\u0000\u0000\u0b94\u0b95\u0007"+ + "\n\u0000\u0000\u0b95\u01c6\u0001\u0000\u0000\u0000\u0b96\u0b97\u0007\u0011"+ + "\u0000\u0000\u0b97\u0b98\u0007\u000f\u0000\u0000\u0b98\u0b99\u0007\u000f"+ + "\u0000\u0000\u0b99\u0b9a\u0007\u0016\u0000\u0000\u0b9a\u0b9b\u0007\u0010"+ + "\u0000\u0000\u0b9b\u0b9c\u0007\u0005\u0000\u0000\u0b9c\u0b9d\u0007\u0012"+ + "\u0000\u0000\u0b9d\u0b9e\u0007\u0006\u0000\u0000\u0b9e\u0b9f\u0007\n\u0000"+ + "\u0000\u0b9f\u01c8\u0001\u0000\u0000\u0000\u0ba0\u0ba1\u0007\u0011\u0000"+ + "\u0000\u0ba1\u0ba2\u0007\u000f\u0000\u0000\u0ba2\u0ba3\u0007\u0018\u0000"+ + "\u0000\u0ba3\u0ba4\u0007\u0006\u0000\u0000\u0ba4\u0ba5\u0007\u0011\u0000"+ + "\u0000\u0ba5\u0ba6\u0007\u000e\u0000\u0000\u0ba6\u0ba7\u0007\u0011\u0000"+ + "\u0000\u0ba7\u0ba8\u0007\u0010\u0000\u0000\u0ba8\u01ca\u0001\u0000\u0000"+ + "\u0000\u0ba9\u0baa\u0007\u0011\u0000\u0000\u0baa\u0bab\u0007\u0007\u0000"+ + "\u0000\u0bab\u0bac\u0007\u000e\u0000\u0000\u0bac\u0bad\u0007\u0006\u0000"+ + "\u0000\u0bad\u0bae\u0007\u0016\u0000\u0000\u0bae\u0baf\u0007\f\u0000\u0000"+ + "\u0baf\u0bb0\u0007\u0011\u0000\u0000\u0bb0\u0bb1\u0007\u0007\u0000\u0000"+ + "\u0bb1\u0bb2\u0007\u0017\u0000\u0000\u0bb2\u01cc\u0001\u0000\u0000\u0000"+ + "\u0bb3\u0bb4\u0007\u0011\u0000\u0000\u0bb4\u0bb5\u0007\u0007\u0000\u0000"+ + "\u0bb5\u0bb6\u0007\u000e\u0000\u0000\u0bb6\u0bb7\u0007\r\u0000\u0000\u0bb7"+ + "\u0bb8\u0007\n\u0000\u0000\u0bb8\u0bb9\u0007\u000f\u0000\u0000\u0bb9\u0bba"+ + "\u0007\n\u0000\u0000\u0bba\u0bbb\u0007\u0007\u0000\u0000\u0bbb\u0bbc\u0007"+ + "\u0010\u0000\u0000\u0bbc\u01ce\u0001\u0000\u0000\u0000\u0bbd\u0bbe\u0007"+ + "\u0011\u0000\u0000\u0bbe\u0bbf\u0007\u0007\u0000\u0000\u0bbf\u0bc0\u0007"+ + "\f\u0000\u0000\u0bc0\u0bc1\u0007\n\u0000\u0000\u0bc1\u0bc2\u0007\u001a"+ + "\u0000\u0000\u0bc2\u01d0\u0001\u0000\u0000\u0000\u0bc3\u0bc4\u0007\u0011"+ + "\u0000\u0000\u0bc4\u0bc5\u0007\u0007\u0000\u0000\u0bc5\u0bc6\u0007\f\u0000"+ + "\u0000\u0bc6\u0bc7\u0007\n\u0000\u0000\u0bc7\u0bc8\u0007\u001a\u0000\u0000"+ + "\u0bc8\u0bc9\u0007\n\u0000\u0000\u0bc9\u0bca\u0007\t\u0000\u0000\u0bca"+ + "\u01d2\u0001\u0000\u0000\u0000\u0bcb\u0bcc\u0007\u0011\u0000\u0000\u0bcc"+ + "\u0bcd\u0007\u0007\u0000\u0000\u0bcd\u0bce\u0007\u0014\u0000\u0000\u0bce"+ + "\u0bcf\u0007\n\u0000\u0000\u0bcf\u0bd0\u0007\r\u0000\u0000\u0bd0\u0bd1"+ + "\u0007\u0011\u0000\u0000\u0bd1\u0bd2\u0007\u0010\u0000\u0000\u0bd2\u01d4"+ + "\u0001\u0000\u0000\u0000\u0bd3\u0bd4\u0007\u0011\u0000\u0000\u0bd4\u0bd5"+ + "\u0007\u0007\u0000\u0000\u0bd5\u0bd6\u0007\u0014\u0000\u0000\u0bd6\u0bd7"+ + "\u0007\n\u0000\u0000\u0bd7\u0bd8\u0007\r\u0000\u0000\u0bd8\u0bd9\u0007"+ + "\u0011\u0000\u0000\u0bd9\u0bda\u0007\u0010\u0000\u0000\u0bda\u0bdb\u0007"+ + "\t\u0000\u0000\u0bdb\u01d6\u0001\u0000\u0000\u0000\u0bdc\u0bdd\u0007\u0011"+ + "\u0000\u0000\u0bdd\u0bde\u0007\u0007\u0000\u0000\u0bde\u0bdf\u0007\u0006"+ + "\u0000\u0000\u0bdf\u0be0\u0007\u0011\u0000\u0000\u0be0\u0be1\u0007\u0007"+ + "\u0000\u0000\u0be1\u0be2\u0007\n\u0000\u0000\u0be2\u01d8\u0001\u0000\u0000"+ + "\u0000\u0be3\u0be4\u0007\u0011\u0000\u0000\u0be4\u0be5\u0007\u0007\u0000"+ + "\u0000\u0be5\u0be6\u0007\t\u0000\u0000\u0be6\u0be7\u0007\n\u0000\u0000"+ + "\u0be7\u0be8\u0007\u0007\u0000\u0000\u0be8\u0be9\u0007\t\u0000\u0000\u0be9"+ + "\u0bea\u0007\u0011\u0000\u0000\u0bea\u0beb\u0007\u0010\u0000\u0000\u0beb"+ + "\u0bec\u0007\u0011\u0000\u0000\u0bec\u0bed\u0007\u001b\u0000\u0000\u0bed"+ + "\u0bee\u0007\n\u0000\u0000\u0bee\u01da\u0001\u0000\u0000\u0000\u0bef\u0bf0"+ + "\u0007\u0011\u0000\u0000\u0bf0\u0bf1\u0007\u0007\u0000\u0000\u0bf1\u0bf2"+ + "\u0007\t\u0000\u0000\u0bf2\u0bf3\u0007\n\u0000\u0000\u0bf3\u0bf4\u0007"+ + "\r\u0000\u0000\u0bf4\u0bf5\u0007\u0010\u0000\u0000\u0bf5\u01dc\u0001\u0000"+ + "\u0000\u0000\u0bf6\u0bf7\u0007\u0011\u0000\u0000\u0bf7\u0bf8\u0007\u0007"+ + "\u0000\u0000\u0bf8\u0bf9\u0007\t\u0000\u0000\u0bf9\u0bfa\u0007\u0010\u0000"+ + "\u0000\u0bfa\u0bfb\u0007\n\u0000\u0000\u0bfb\u0bfc\u0007\u0005\u0000\u0000"+ + "\u0bfc\u0bfd\u0007\f\u0000\u0000\u0bfd\u01de\u0001\u0000\u0000\u0000\u0bfe"+ + "\u0bff\u0007\u0011\u0000\u0000\u0bff\u0c00\u0007\u0007\u0000\u0000\u0c00"+ + "\u0c01\u0007\u001b\u0000\u0000\u0c01\u0c02\u0007\u0013\u0000\u0000\u0c02"+ + "\u0c03\u0007\u0015\u0000\u0000\u0c03\u0c04\u0007\n\u0000\u0000\u0c04\u0c05"+ + "\u0007\r\u0000\u0000\u0c05\u01e0\u0001\u0000\u0000\u0000\u0c06\u0c07\u0007"+ + "\u0011\u0000\u0000\u0c07\u0c08\u0007\t\u0000\u0000\u0c08\u0c09\u0007\u0013"+ + "\u0000\u0000\u0c09\u0c0a\u0007\u0006\u0000\u0000\u0c0a\u0c0b\u0007\u0005"+ + "\u0000\u0000\u0c0b\u0c0c\u0007\u0010\u0000\u0000\u0c0c\u0c0d\u0007\u0011"+ + "\u0000\u0000\u0c0d\u0c0e\u0007\u0013\u0000\u0000\u0c0e\u0c0f\u0007\u0007"+ + "\u0000\u0000\u0c0f\u01e2\u0001\u0000\u0000\u0000\u0c10\u0c11\u0007\u0015"+ + "\u0000\u0000\u0c11\u0c12\u0007\n\u0000\u0000\u0c12\u0c13\u0007\b\u0000"+ + "\u0000\u0c13\u01e4\u0001\u0000\u0000\u0000\u0c14\u0c15\u0007\u0006\u0000"+ + "\u0000\u0c15\u0c16\u0007\u0005\u0000\u0000\u0c16\u0c17\u0007\u0012\u0000"+ + "\u0000\u0c17\u0c18\u0007\n\u0000\u0000\u0c18\u0c19\u0007\u0006\u0000\u0000"+ + "\u0c19\u01e6\u0001\u0000\u0000\u0000\u0c1a\u0c1b\u0007\u0006\u0000\u0000"+ + "\u0c1b\u0c1c\u0007\u0005\u0000\u0000\u0c1c\u0c1d\u0007\u0007\u0000\u0000"+ + "\u0c1d\u0c1e\u0007\u0017\u0000\u0000\u0c1e\u0c1f\u0007\u0016\u0000\u0000"+ + "\u0c1f\u0c20\u0007\u0005\u0000\u0000\u0c20\u0c21\u0007\u0017\u0000\u0000"+ + "\u0c21\u0c22\u0007\n\u0000\u0000\u0c22\u01e8\u0001\u0000\u0000\u0000\u0c23"+ + "\u0c24\u0007\u0006\u0000\u0000\u0c24\u0c25\u0007\u0005\u0000\u0000\u0c25"+ + "\u0c26\u0007\r\u0000\u0000\u0c26\u0c27\u0007\u0017\u0000\u0000\u0c27\u0c28"+ + "\u0007\n\u0000\u0000\u0c28\u01ea\u0001\u0000\u0000\u0000\u0c29\u0c2a\u0007"+ + "\u0006\u0000\u0000\u0c2a\u0c2b\u0007\u0005\u0000\u0000\u0c2b\u0c2c\u0007"+ + "\t\u0000\u0000\u0c2c\u0c2d\u0007\u0010\u0000\u0000\u0c2d\u01ec\u0001\u0000"+ + "\u0000\u0000\u0c2e\u0c2f\u0007\u0006\u0000\u0000\u0c2f\u0c30\u0007\n\u0000"+ + "\u0000\u0c30\u0c31\u0007\u0005\u0000\u0000\u0c31\u0c32\u0007\u0015\u0000"+ + "\u0000\u0c32\u0c33\u0007\u0018\u0000\u0000\u0c33\u0c34\u0007\r\u0000\u0000"+ + "\u0c34\u0c35\u0007\u0013\u0000\u0000\u0c35\u0c36\u0007\u0013\u0000\u0000"+ + "\u0c36\u0c37\u0007\u0019\u0000\u0000\u0c37\u01ee\u0001\u0000\u0000\u0000"+ + "\u0c38\u0c39\u0007\u0006\u0000\u0000\u0c39\u0c3a\u0007\n\u0000\u0000\u0c3a"+ + "\u0c3b\u0007\u001b\u0000\u0000\u0c3b\u0c3c\u0007\n\u0000\u0000\u0c3c\u0c3d"+ + "\u0007\u0006\u0000\u0000\u0c3d\u01f0\u0001\u0000\u0000\u0000\u0c3e\u0c3f"+ + "\u0007\u0006\u0000\u0000\u0c3f\u0c40\u0007\u0011\u0000\u0000\u0c40\u0c41"+ + "\u0007\t\u0000\u0000\u0c41\u0c42\u0007\u0010\u0000\u0000\u0c42\u0c43\u0007"+ + "\n\u0000\u0000\u0c43\u0c44\u0007\u0007\u0000\u0000\u0c44\u01f2\u0001\u0000"+ + "\u0000\u0000\u0c45\u0c46\u0007\u0006\u0000\u0000\u0c46\u0c47\u0007\u0013"+ + "\u0000\u0000\u0c47\u0c48\u0007\u0005\u0000\u0000\u0c48\u0c49\u0007\f\u0000"+ + "\u0000\u0c49\u01f4\u0001\u0000\u0000\u0000\u0c4a\u0c4b\u0007\u0006\u0000"+ + "\u0000\u0c4b\u0c4c\u0007\u0013\u0000\u0000\u0c4c\u0c4d\u0007\u000e\u0000"+ + "\u0000\u0c4d\u0c4e\u0007\u0005\u0000\u0000\u0c4e\u0c4f\u0007\u0006\u0000"+ + "\u0000\u0c4f\u01f6\u0001\u0000\u0000\u0000\u0c50\u0c51\u0007\u0006\u0000"+ + "\u0000\u0c51\u0c52\u0007\u0013\u0000\u0000\u0c52\u0c53\u0007\u000e\u0000"+ + "\u0000\u0c53\u0c54\u0007\u0005\u0000\u0000\u0c54\u0c55\u0007\u0010\u0000"+ + "\u0000\u0c55\u0c56\u0007\u0011\u0000\u0000\u0c56\u0c57\u0007\u0013\u0000"+ + "\u0000\u0c57\u0c58\u0007\u0007\u0000\u0000\u0c58\u01f8\u0001\u0000\u0000"+ + "\u0000\u0c59\u0c5a\u0007\u0006\u0000\u0000\u0c5a\u0c5b\u0007\u0013\u0000"+ + "\u0000\u0c5b\u0c5c\u0007\u000e\u0000\u0000\u0c5c\u0c5d\u0007\u0015\u0000"+ + "\u0000\u0c5d\u01fa\u0001\u0000\u0000\u0000\u0c5e\u0c5f\u0007\u000f\u0000"+ + "\u0000\u0c5f\u0c60\u0007\u0005\u0000\u0000\u0c60\u0c61\u0007\u0018\u0000"+ + "\u0000\u0c61\u0c62\u0007\u0018\u0000\u0000\u0c62\u0c63\u0007\u0011\u0000"+ + "\u0000\u0c63\u0c64\u0007\u0007\u0000\u0000\u0c64\u0c65\u0007\u0017\u0000"+ + "\u0000\u0c65\u01fc\u0001\u0000\u0000\u0000\u0c66\u0c67\u0007\u000f\u0000"+ + "\u0000\u0c67\u0c68\u0007\u0005\u0000\u0000\u0c68\u0c69\u0007\u0010\u0000"+ + "\u0000\u0c69\u0c6a\u0007\u000e\u0000\u0000\u0c6a\u0c6b\u0007\u0014\u0000"+ + "\u0000\u0c6b\u01fe\u0001\u0000\u0000\u0000\u0c6c\u0c6d\u0007\u000f\u0000"+ + "\u0000\u0c6d\u0c6e\u0007\u0005\u0000\u0000\u0c6e\u0c6f\u0007\u0010\u0000"+ + "\u0000\u0c6f\u0c70\u0007\u000e\u0000\u0000\u0c70\u0c71\u0007\u0014\u0000"+ + "\u0000\u0c71\u0c72\u0007\n\u0000\u0000\u0c72\u0c73\u0007\f\u0000\u0000"+ + "\u0c73\u0200\u0001\u0000\u0000\u0000\u0c74\u0c75\u0007\u000f\u0000\u0000"+ + "\u0c75\u0c76\u0007\u0005\u0000\u0000\u0c76\u0c77\u0007\u0010\u0000\u0000"+ + "\u0c77\u0c78\u0007\n\u0000\u0000\u0c78\u0c79\u0007\r\u0000\u0000\u0c79"+ + "\u0c7a\u0007\u0011\u0000\u0000\u0c7a\u0c7b\u0007\u0005\u0000\u0000\u0c7b"+ + "\u0c7c\u0007\u0006\u0000\u0000\u0c7c\u0c7d\u0007\u0011\u0000\u0000\u0c7d"+ + "\u0c7e\u0007\u000b\u0000\u0000\u0c7e\u0c7f\u0007\n\u0000\u0000\u0c7f\u0c80"+ + "\u0007\f\u0000\u0000\u0c80\u0202\u0001\u0000\u0000\u0000\u0c81\u0c82\u0007"+ + "\u000f\u0000\u0000\u0c82\u0c83\u0007\u0005\u0000\u0000\u0c83\u0c84\u0007"+ + "\u001a\u0000\u0000\u0c84\u0c85\u0007\u001b\u0000\u0000\u0c85\u0c86\u0007"+ + "\u0005\u0000\u0000\u0c86\u0c87\u0007\u0006\u0000\u0000\u0c87\u0c88\u0007"+ + "\u0016\u0000\u0000\u0c88\u0c89\u0007\n\u0000\u0000\u0c89\u0204\u0001\u0000"+ + "\u0000\u0000\u0c8a\u0c8b\u0007\u000f\u0000\u0000\u0c8b\u0c8c\u0007\n\u0000"+ + "\u0000\u0c8c\u0c8d\u0007\r\u0000\u0000\u0c8d\u0c8e\u0007\u0017\u0000\u0000"+ + "\u0c8e\u0c8f\u0007\n\u0000\u0000\u0c8f\u0206\u0001\u0000\u0000\u0000\u0c90"+ + "\u0c91\u0007\u000f\u0000\u0000\u0c91\u0c92\u0007\u0011\u0000\u0000\u0c92"+ + "\u0c93\u0007\u0007\u0000\u0000\u0c93\u0c94\u0007\u0016\u0000\u0000\u0c94"+ + "\u0c95\u0007\u0010\u0000\u0000\u0c95\u0c96\u0007\n\u0000\u0000\u0c96\u0208"+ + "\u0001\u0000\u0000\u0000\u0c97\u0c98\u0007\u000f\u0000\u0000\u0c98\u0c99"+ + "\u0007\u0011\u0000\u0000\u0c99\u0c9a\u0007\u0007\u0000\u0000\u0c9a\u0c9b"+ + "\u0007\u001b\u0000\u0000\u0c9b\u0c9c\u0007\u0005\u0000\u0000\u0c9c\u0c9d"+ + "\u0007\u0006\u0000\u0000\u0c9d\u0c9e\u0007\u0016\u0000\u0000\u0c9e\u0c9f"+ + "\u0007\n\u0000\u0000\u0c9f\u020a\u0001\u0000\u0000\u0000\u0ca0\u0ca1\u0007"+ + "\u000f\u0000\u0000\u0ca1\u0ca2\u0007\u0013\u0000\u0000\u0ca2\u0ca3\u0007"+ + "\f\u0000\u0000\u0ca3\u0ca4\u0007\n\u0000\u0000\u0ca4\u020c\u0001\u0000"+ + "\u0000\u0000\u0ca5\u0ca6\u0007\u000f\u0000\u0000\u0ca6\u0ca7\u0007\u0013"+ + "\u0000\u0000\u0ca7\u0ca8\u0007\u0007\u0000\u0000\u0ca8\u0ca9\u0007\u0010"+ + "\u0000\u0000\u0ca9\u0caa\u0007\u0014\u0000\u0000\u0caa\u020e\u0001\u0000"+ + "\u0000\u0000\u0cab\u0cac\u0007\u000f\u0000\u0000\u0cac\u0cad\u0007\u0013"+ + "\u0000\u0000\u0cad\u0cae\u0007\u001b\u0000\u0000\u0cae\u0caf\u0007\n\u0000"+ + "\u0000\u0caf\u0210\u0001\u0000\u0000\u0000\u0cb0\u0cb1\u0007\u0007\u0000"+ + "\u0000\u0cb1\u0cb2\u0007\u0005\u0000\u0000\u0cb2\u0cb3\u0007\u000f\u0000"+ + "\u0000\u0cb3\u0cb4\u0007\n\u0000\u0000\u0cb4\u0212\u0001\u0000\u0000\u0000"+ + "\u0cb5\u0cb6\u0007\u0007\u0000\u0000\u0cb6\u0cb7\u0007\u0005\u0000\u0000"+ + "\u0cb7\u0cb8\u0007\u000f\u0000\u0000\u0cb8\u0cb9\u0007\n\u0000\u0000\u0cb9"+ + "\u0cba\u0007\t\u0000\u0000\u0cba\u0214\u0001\u0000\u0000\u0000\u0cbb\u0cbc"+ + "\u0007\u0007\u0000\u0000\u0cbc\u0cbd\u0007\n\u0000\u0000\u0cbd\u0cbe\u0007"+ + "\u001a\u0000\u0000\u0cbe\u0cbf\u0007\u0010\u0000\u0000\u0cbf\u0216\u0001"+ + "\u0000\u0000\u0000\u0cc0\u0cc1\u0007\u0007\u0000\u0000\u0cc1\u0cc2\u0007"+ + "\u0013\u0000\u0000\u0cc2\u0218\u0001\u0000\u0000\u0000\u0cc3\u0cc4\u0007"+ + "\u0007\u0000\u0000\u0cc4\u0cc5\u0007\u0013\u0000\u0000\u0cc5\u0cc6\u0007"+ + "\u0010\u0000\u0000\u0cc6\u0cc7\u0007\u0014\u0000\u0000\u0cc7\u0cc8\u0007"+ + "\u0011\u0000\u0000\u0cc8\u0cc9\u0007\u0007\u0000\u0000\u0cc9\u0cca\u0007"+ + "\u0017\u0000\u0000\u0cca\u021a\u0001\u0000\u0000\u0000\u0ccb\u0ccc\u0007"+ + "\u0007\u0000\u0000\u0ccc\u0ccd\u0007\u0013\u0000\u0000\u0ccd\u0cce\u0007"+ + "\u0010\u0000\u0000\u0cce\u0ccf\u0007\u0011\u0000\u0000\u0ccf\u0cd0\u0007"+ + "\u0019\u0000\u0000\u0cd0\u0cd1\u0007\b\u0000\u0000\u0cd1\u021c\u0001\u0000"+ + "\u0000\u0000\u0cd2\u0cd3\u0007\u0007\u0000\u0000\u0cd3\u0cd4\u0007\u0013"+ + "\u0000\u0000\u0cd4\u0cd5\u0007\u001d\u0000\u0000\u0cd5\u0cd6\u0007\u0005"+ + "\u0000\u0000\u0cd6\u0cd7\u0007\u0011\u0000\u0000\u0cd7\u0cd8\u0007\u0010"+ + "\u0000\u0000\u0cd8\u021e\u0001\u0000\u0000\u0000\u0cd9\u0cda\u0007\u0007"+ + "\u0000\u0000\u0cda\u0cdb\u0007\u0016\u0000\u0000\u0cdb\u0cdc\u0007\u0006"+ + "\u0000\u0000\u0cdc\u0cdd\u0007\u0006\u0000\u0000\u0cdd\u0cde\u0007\t\u0000"+ + "\u0000\u0cde\u0220\u0001\u0000\u0000\u0000\u0cdf\u0ce0\u0007\u0013\u0000"+ + "\u0000\u0ce0\u0ce1\u0007\u0012\u0000\u0000\u0ce1\u0ce2\u0007\u001e\u0000"+ + "\u0000\u0ce2\u0ce3\u0007\n\u0000\u0000\u0ce3\u0ce4\u0007\u000e\u0000\u0000"+ + "\u0ce4\u0ce5\u0007\u0010\u0000\u0000\u0ce5\u0222\u0001\u0000\u0000\u0000"+ + "\u0ce6\u0ce7\u0007\u0013\u0000\u0000\u0ce7\u0ce8\u0007\u0019\u0000\u0000"+ + "\u0ce8\u0224\u0001\u0000\u0000\u0000\u0ce9\u0cea\u0007\u0013\u0000\u0000"+ + "\u0cea\u0ceb\u0007\u0019\u0000\u0000\u0ceb\u0cec\u0007\u0019\u0000\u0000"+ + "\u0cec\u0226\u0001\u0000\u0000\u0000\u0ced\u0cee\u0007\u0013\u0000\u0000"+ + "\u0cee\u0cef\u0007\u0011\u0000\u0000\u0cef\u0cf0\u0007\f\u0000\u0000\u0cf0"+ + "\u0cf1\u0007\t\u0000\u0000\u0cf1\u0228\u0001\u0000\u0000\u0000\u0cf2\u0cf3"+ + "\u0007\u0013\u0000\u0000\u0cf3\u0cf4\u0007\u0018\u0000\u0000\u0cf4\u0cf5"+ + "\u0007\n\u0000\u0000\u0cf5\u0cf6\u0007\r\u0000\u0000\u0cf6\u0cf7\u0007"+ + "\u0005\u0000\u0000\u0cf7\u0cf8\u0007\u0010\u0000\u0000\u0cf8\u0cf9\u0007"+ + "\u0013\u0000\u0000\u0cf9\u0cfa\u0007\r\u0000\u0000\u0cfa\u022a\u0001\u0000"+ + "\u0000\u0000\u0cfb\u0cfc\u0007\u0013\u0000\u0000\u0cfc\u0cfd\u0007\u0018"+ + "\u0000\u0000\u0cfd\u0cfe\u0007\u0010\u0000\u0000\u0cfe\u0cff\u0007\u0011"+ + "\u0000\u0000\u0cff\u0d00\u0007\u0013\u0000\u0000\u0d00\u0d01\u0007\u0007"+ + "\u0000\u0000\u0d01\u022c\u0001\u0000\u0000\u0000\u0d02\u0d03\u0007\u0013"+ + "\u0000\u0000\u0d03\u0d04\u0007\u0018\u0000\u0000\u0d04\u0d05\u0007\u0010"+ + "\u0000\u0000\u0d05\u0d06\u0007\u0011\u0000\u0000\u0d06\u0d07\u0007\u0013"+ + "\u0000\u0000\u0d07\u0d08\u0007\u0007\u0000\u0000\u0d08\u0d09\u0007\t\u0000"+ + "\u0000\u0d09\u022e\u0001\u0000\u0000\u0000\u0d0a\u0d0b\u0007\u0013\u0000"+ + "\u0000\u0d0b\u0d0c\u0007\u001d\u0000\u0000\u0d0c\u0d0d\u0007\u0007\u0000"+ + "\u0000\u0d0d\u0d0e\u0007\n\u0000\u0000\u0d0e\u0d0f\u0007\f\u0000\u0000"+ + "\u0d0f\u0230\u0001\u0000\u0000\u0000\u0d10\u0d11\u0007\u0013\u0000\u0000"+ + "\u0d11\u0d12\u0007\u001d\u0000\u0000\u0d12\u0d13\u0007\u0007\u0000\u0000"+ + "\u0d13\u0d14\u0007\n\u0000\u0000\u0d14\u0d15\u0007\r\u0000\u0000\u0d15"+ + "\u0232\u0001\u0000\u0000\u0000\u0d16\u0d17\u0007\u0018\u0000\u0000\u0d17"+ + "\u0d18\u0007\u0005\u0000\u0000\u0d18\u0d19\u0007\r\u0000\u0000\u0d19\u0d1a"+ + "\u0007\t\u0000\u0000\u0d1a\u0d1b\u0007\n\u0000\u0000\u0d1b\u0d1c\u0007"+ + "\r\u0000\u0000\u0d1c\u0234\u0001\u0000\u0000\u0000\u0d1d\u0d1e\u0007\u0018"+ + "\u0000\u0000\u0d1e\u0d1f\u0007\u0005\u0000\u0000\u0d1f\u0d20\u0007\r\u0000"+ + "\u0000\u0d20\u0d21\u0007\u0010\u0000\u0000\u0d21\u0d22\u0007\u0011\u0000"+ + "\u0000\u0d22\u0d23\u0007\u0005\u0000\u0000\u0d23\u0d24\u0007\u0006\u0000"+ + "\u0000\u0d24\u0236\u0001\u0000\u0000\u0000\u0d25\u0d26\u0007\u0018\u0000"+ + "\u0000\u0d26\u0d27\u0007\u0005\u0000\u0000\u0d27\u0d28\u0007\r\u0000\u0000"+ + "\u0d28\u0d29\u0007\u0010\u0000\u0000\u0d29\u0d2a\u0007\u0011\u0000\u0000"+ + "\u0d2a\u0d2b\u0007\u0010\u0000\u0000\u0d2b\u0d2c\u0007\u0011\u0000\u0000"+ + "\u0d2c\u0d2d\u0007\u0013\u0000\u0000\u0d2d\u0d2e\u0007\u0007\u0000\u0000"+ + "\u0d2e\u0238\u0001\u0000\u0000\u0000\u0d2f\u0d30\u0007\u0018\u0000\u0000"+ + "\u0d30\u0d31\u0007\u0005\u0000\u0000\u0d31\u0d32\u0007\t\u0000\u0000\u0d32"+ + "\u0d33\u0007\t\u0000\u0000\u0d33\u0d34\u0007\u0011\u0000\u0000\u0d34\u0d35"+ + "\u0007\u0007\u0000\u0000\u0d35\u0d36\u0007\u0017\u0000\u0000\u0d36\u023a"+ + "\u0001\u0000\u0000\u0000\u0d37\u0d38\u0007\u0018\u0000\u0000\u0d38\u0d39"+ + "\u0007\u0005\u0000\u0000\u0d39\u0d3a\u0007\t\u0000\u0000\u0d3a\u0d3b\u0007"+ + "\t\u0000\u0000\u0d3b\u0d3c\u0007\u001d\u0000\u0000\u0d3c\u0d3d\u0007\u0013"+ + "\u0000\u0000\u0d3d\u0d3e\u0007\r\u0000\u0000\u0d3e\u0d3f\u0007\f\u0000"+ + "\u0000\u0d3f\u023c\u0001\u0000\u0000\u0000\u0d40\u0d41\u0007\u0018\u0000"+ + "\u0000\u0d41\u0d42\u0007\u0006\u0000\u0000\u0d42\u0d43\u0007\u0005\u0000"+ + "\u0000\u0d43\u0d44\u0007\u0007\u0000\u0000\u0d44\u0d45\u0007\t\u0000\u0000"+ + "\u0d45\u023e\u0001\u0000\u0000\u0000\u0d46\u0d47\u0007\u0018\u0000\u0000"+ + "\u0d47\u0d48\u0007\r\u0000\u0000\u0d48\u0d49\u0007\n\u0000\u0000\u0d49"+ + "\u0d4a\u0007\u000e\u0000\u0000\u0d4a\u0d4b\u0007\n\u0000\u0000\u0d4b\u0d4c"+ + "\u0007\f\u0000\u0000\u0d4c\u0d4d\u0007\u0011\u0000\u0000\u0d4d\u0d4e\u0007"+ + "\u0007\u0000\u0000\u0d4e\u0d4f\u0007\u0017\u0000\u0000\u0d4f\u0240\u0001"+ + "\u0000\u0000\u0000\u0d50\u0d51\u0007\u0018\u0000\u0000\u0d51\u0d52\u0007"+ + "\r\u0000\u0000\u0d52\u0d53\u0007\n\u0000\u0000\u0d53\u0d54\u0007\u0018"+ + "\u0000\u0000\u0d54\u0d55\u0007\u0005\u0000\u0000\u0d55\u0d56\u0007\r\u0000"+ + "\u0000\u0d56\u0d57\u0007\n\u0000\u0000\u0d57\u0242\u0001\u0000\u0000\u0000"+ + "\u0d58\u0d59\u0007\u0018\u0000\u0000\u0d59\u0d5a\u0007\r\u0000\u0000\u0d5a"+ + "\u0d5b\u0007\n\u0000\u0000\u0d5b\u0d5c\u0007\u0018\u0000\u0000\u0d5c\u0d5d"+ + "\u0007\u0005\u0000\u0000\u0d5d\u0d5e\u0007\r\u0000\u0000\u0d5e\u0d5f\u0007"+ + "\n\u0000\u0000\u0d5f\u0d60\u0007\f\u0000\u0000\u0d60\u0244\u0001\u0000"+ + "\u0000\u0000\u0d61\u0d62\u0007\u0018\u0000\u0000\u0d62\u0d63\u0007\r\u0000"+ + "\u0000\u0d63\u0d64\u0007\n\u0000\u0000\u0d64\u0d65\u0007\t\u0000\u0000"+ + "\u0d65\u0d66\u0007\n\u0000\u0000\u0d66\u0d67\u0007\r\u0000\u0000\u0d67"+ + "\u0d68\u0007\u001b\u0000\u0000\u0d68\u0d69\u0007\n\u0000\u0000\u0d69\u0246"+ + "\u0001\u0000\u0000\u0000\u0d6a\u0d6b\u0007\u0018\u0000\u0000\u0d6b\u0d6c"+ + "\u0007\r\u0000\u0000\u0d6c\u0d6d\u0007\u0011\u0000\u0000\u0d6d\u0d6e\u0007"+ + "\u0013\u0000\u0000\u0d6e\u0d6f\u0007\r\u0000\u0000\u0d6f\u0248\u0001\u0000"+ + "\u0000\u0000\u0d70\u0d71\u0007\u0018\u0000\u0000\u0d71\u0d72\u0007\r\u0000"+ + "\u0000\u0d72\u0d73\u0007\u0011\u0000\u0000\u0d73\u0d74\u0007\u001b\u0000"+ + "\u0000\u0d74\u0d75\u0007\u0011\u0000\u0000\u0d75\u0d76\u0007\u0006\u0000"+ + "\u0000\u0d76\u0d77\u0007\n\u0000\u0000\u0d77\u0d78\u0007\u0017\u0000\u0000"+ + "\u0d78\u0d79\u0007\n\u0000\u0000\u0d79\u0d7a\u0007\t\u0000\u0000\u0d7a"+ + "\u024a\u0001\u0000\u0000\u0000\u0d7b\u0d7c\u0007\u0018\u0000\u0000\u0d7c"+ + "\u0d7d\u0007\r\u0000\u0000\u0d7d\u0d7e\u0007\u0013\u0000\u0000\u0d7e\u0d7f"+ + "\u0007\u000e\u0000\u0000\u0d7f\u0d80\u0007\n\u0000\u0000\u0d80\u0d81\u0007"+ + "\f\u0000\u0000\u0d81\u0d82\u0007\u0016\u0000\u0000\u0d82\u0d83\u0007\r"+ + "\u0000\u0000\u0d83\u0d84\u0007\u0005\u0000\u0000\u0d84\u0d85\u0007\u0006"+ + "\u0000\u0000\u0d85\u024c\u0001\u0000\u0000\u0000\u0d86\u0d87\u0007\u0018"+ + "\u0000\u0000\u0d87\u0d88\u0007\r\u0000\u0000\u0d88\u0d89\u0007\u0013\u0000"+ + "\u0000\u0d89\u0d8a\u0007\u000e\u0000\u0000\u0d8a\u0d8b\u0007\n\u0000\u0000"+ + "\u0d8b\u0d8c\u0007\f\u0000\u0000\u0d8c\u0d8d\u0007\u0016\u0000\u0000\u0d8d"+ + "\u0d8e\u0007\r\u0000\u0000\u0d8e\u0d8f\u0007\n\u0000\u0000\u0d8f\u024e"+ + "\u0001\u0000\u0000\u0000\u0d90\u0d91\u0007\u0018\u0000\u0000\u0d91\u0d92"+ + "\u0007\r\u0000\u0000\u0d92\u0d93\u0007\u0013\u0000\u0000\u0d93\u0d94\u0007"+ + "\u0017\u0000\u0000\u0d94\u0d95\u0007\r\u0000\u0000\u0d95\u0d96\u0007\u0005"+ + "\u0000\u0000\u0d96\u0d97\u0007\u000f\u0000\u0000\u0d97\u0250\u0001\u0000"+ + "\u0000\u0000\u0d98\u0d99\u0007\u001c\u0000\u0000\u0d99\u0d9a\u0007\u0016"+ + "\u0000\u0000\u0d9a\u0d9b\u0007\u0013\u0000\u0000\u0d9b\u0d9c\u0007\u0010"+ + "\u0000\u0000\u0d9c\u0d9d\u0007\n\u0000\u0000\u0d9d\u0252\u0001\u0000\u0000"+ + "\u0000\u0d9e\u0d9f\u0007\r\u0000\u0000\u0d9f\u0da0\u0007\u0005\u0000\u0000"+ + "\u0da0\u0da1\u0007\u0007\u0000\u0000\u0da1\u0da2\u0007\u0017\u0000\u0000"+ + "\u0da2\u0da3\u0007\n\u0000\u0000\u0da3\u0254\u0001\u0000\u0000\u0000\u0da4"+ + "\u0da5\u0007\r\u0000\u0000\u0da5\u0da6\u0007\n\u0000\u0000\u0da6\u0da7"+ + "\u0007\u0005\u0000\u0000\u0da7\u0da8\u0007\f\u0000\u0000\u0da8\u0256\u0001"+ + "\u0000\u0000\u0000\u0da9\u0daa\u0007\r\u0000\u0000\u0daa\u0dab\u0007\n"+ + "\u0000\u0000\u0dab\u0dac\u0007\u0005\u0000\u0000\u0dac\u0dad\u0007\t\u0000"+ + "\u0000\u0dad\u0dae\u0007\t\u0000\u0000\u0dae\u0daf\u0007\u0011\u0000\u0000"+ + "\u0daf\u0db0\u0007\u0017\u0000\u0000\u0db0\u0db1\u0007\u0007\u0000\u0000"+ + "\u0db1\u0258\u0001\u0000\u0000\u0000\u0db2\u0db3\u0007\r\u0000\u0000\u0db3"+ + "\u0db4\u0007\n\u0000\u0000\u0db4\u0db5\u0007\u000e\u0000\u0000\u0db5\u0db6"+ + "\u0007\u0014\u0000\u0000\u0db6\u0db7\u0007\n\u0000\u0000\u0db7\u0db8\u0007"+ + "\u000e\u0000\u0000\u0db8\u0db9\u0007\u0015\u0000\u0000\u0db9\u025a\u0001"+ + "\u0000\u0000\u0000\u0dba\u0dbb\u0007\r\u0000\u0000\u0dbb\u0dbc\u0007\n"+ + "\u0000\u0000\u0dbc\u0dbd\u0007\u000e\u0000\u0000\u0dbd\u0dbe\u0007\u0016"+ + "\u0000\u0000\u0dbe\u0dbf\u0007\r\u0000\u0000\u0dbf\u0dc0\u0007\t\u0000"+ + "\u0000\u0dc0\u0dc1\u0007\u0011\u0000\u0000\u0dc1\u0dc2\u0007\u001b\u0000"+ + "\u0000\u0dc2\u0dc3\u0007\n\u0000\u0000\u0dc3\u025c\u0001\u0000\u0000\u0000"+ + "\u0dc4\u0dc5\u0007\r\u0000\u0000\u0dc5\u0dc6\u0007\n\u0000\u0000\u0dc6"+ + "\u0dc7\u0007\u0019\u0000\u0000\u0dc7\u025e\u0001\u0000\u0000\u0000\u0dc8"+ + "\u0dc9\u0007\r\u0000\u0000\u0dc9\u0dca\u0007\n\u0000\u0000\u0dca\u0dcb"+ + "\u0007\u0019\u0000\u0000\u0dcb\u0dcc\u0007\r\u0000\u0000\u0dcc\u0dcd\u0007"+ + "\n\u0000\u0000\u0dcd\u0dce\u0007\t\u0000\u0000\u0dce\u0dcf\u0007\u0014"+ + "\u0000\u0000\u0dcf\u0260\u0001\u0000\u0000\u0000\u0dd0\u0dd1\u0007\r\u0000"+ + "\u0000\u0dd1\u0dd2\u0007\n\u0000\u0000\u0dd2\u0dd3\u0007\u0011\u0000\u0000"+ + "\u0dd3\u0dd4\u0007\u0007\u0000\u0000\u0dd4\u0dd5\u0007\f\u0000\u0000\u0dd5"+ + "\u0dd6\u0007\n\u0000\u0000\u0dd6\u0dd7\u0007\u001a\u0000\u0000\u0dd7\u0262"+ + "\u0001\u0000\u0000\u0000\u0dd8\u0dd9\u0007\r\u0000\u0000\u0dd9\u0dda\u0007"+ + "\n\u0000\u0000\u0dda\u0ddb\u0007\u0006\u0000\u0000\u0ddb\u0ddc\u0007\u0005"+ + "\u0000\u0000\u0ddc\u0ddd\u0007\u0010\u0000\u0000\u0ddd\u0dde\u0007\u0011"+ + "\u0000\u0000\u0dde\u0ddf\u0007\u001b\u0000\u0000\u0ddf\u0de0\u0007\n\u0000"+ + "\u0000\u0de0\u0264\u0001\u0000\u0000\u0000\u0de1\u0de2\u0007\r\u0000\u0000"+ + "\u0de2\u0de3\u0007\n\u0000\u0000\u0de3\u0de4\u0007\u0006\u0000\u0000\u0de4"+ + "\u0de5\u0007\n\u0000\u0000\u0de5\u0de6\u0007\u0005\u0000\u0000\u0de6\u0de7"+ + "\u0007\t\u0000\u0000\u0de7\u0de8\u0007\n\u0000\u0000\u0de8\u0266\u0001"+ + "\u0000\u0000\u0000\u0de9\u0dea\u0007\r\u0000\u0000\u0dea\u0deb\u0007\n"+ + "\u0000\u0000\u0deb\u0dec\u0007\u0007\u0000\u0000\u0dec\u0ded\u0007\u0005"+ + "\u0000\u0000\u0ded\u0dee\u0007\u000f\u0000\u0000\u0dee\u0def\u0007\n\u0000"+ + "\u0000\u0def\u0268\u0001\u0000\u0000\u0000\u0df0\u0df1\u0007\r\u0000\u0000"+ + "\u0df1\u0df2\u0007\n\u0000\u0000\u0df2\u0df3\u0007\u0018\u0000\u0000\u0df3"+ + "\u0df4\u0007\n\u0000\u0000\u0df4\u0df5\u0007\u0005\u0000\u0000\u0df5\u0df6"+ + "\u0007\u0010\u0000\u0000\u0df6\u0df7\u0007\u0005\u0000\u0000\u0df7\u0df8"+ + "\u0007\u0012\u0000\u0000\u0df8\u0df9\u0007\u0006\u0000\u0000\u0df9\u0dfa"+ + "\u0007\n\u0000\u0000\u0dfa\u026a\u0001\u0000\u0000\u0000\u0dfb\u0dfc\u0007"+ + "\r\u0000\u0000\u0dfc\u0dfd\u0007\n\u0000\u0000\u0dfd\u0dfe\u0007\u0018"+ + "\u0000\u0000\u0dfe\u0dff\u0007\u0006\u0000\u0000\u0dff\u0e00\u0007\u0005"+ + "\u0000\u0000\u0e00\u0e01\u0007\u000e\u0000\u0000\u0e01\u0e02\u0007\n\u0000"+ + "\u0000\u0e02\u026c\u0001\u0000\u0000\u0000\u0e03\u0e04\u0007\r\u0000\u0000"+ + "\u0e04\u0e05\u0007\n\u0000\u0000\u0e05\u0e06\u0007\u0018\u0000\u0000\u0e06"+ + "\u0e07\u0007\u0006\u0000\u0000\u0e07\u0e08\u0007\u0011\u0000\u0000\u0e08"+ + "\u0e09\u0007\u000e\u0000\u0000\u0e09\u0e0a\u0007\u0005\u0000\u0000\u0e0a"+ + "\u026e\u0001\u0000\u0000\u0000\u0e0b\u0e0c\u0007\r\u0000\u0000\u0e0c\u0e0d"+ + "\u0007\n\u0000\u0000\u0e0d\u0e0e\u0007\t\u0000\u0000\u0e0e\u0e0f\u0007"+ + "\n\u0000\u0000\u0e0f\u0e10\u0007\u0010\u0000\u0000\u0e10\u0270\u0001\u0000"+ + "\u0000\u0000\u0e11\u0e12\u0007\r\u0000\u0000\u0e12\u0e13\u0007\n\u0000"+ + "\u0000\u0e13\u0e14\u0007\t\u0000\u0000\u0e14\u0e15\u0007\u0010\u0000\u0000"+ + "\u0e15\u0e16\u0007\u0005\u0000\u0000\u0e16\u0e17\u0007\r\u0000\u0000\u0e17"+ + "\u0e18\u0007\u0010\u0000\u0000\u0e18\u0272\u0001\u0000\u0000\u0000\u0e19"+ + "\u0e1a\u0007\r\u0000\u0000\u0e1a\u0e1b\u0007\n\u0000\u0000\u0e1b\u0e1c"+ + "\u0007\t\u0000\u0000\u0e1c\u0e1d\u0007\u0010\u0000\u0000\u0e1d\u0e1e\u0007"+ + "\r\u0000\u0000\u0e1e\u0e1f\u0007\u0011\u0000\u0000\u0e1f\u0e20\u0007\u000e"+ + "\u0000\u0000\u0e20\u0e21\u0007\u0010\u0000\u0000\u0e21\u0274\u0001\u0000"+ + "\u0000\u0000\u0e22\u0e23\u0007\r\u0000\u0000\u0e23\u0e24\u0007\n\u0000"+ + "\u0000\u0e24\u0e25\u0007\u0010\u0000\u0000\u0e25\u0e26\u0007\u0016\u0000"+ + "\u0000\u0e26\u0e27\u0007\r\u0000\u0000\u0e27\u0e28\u0007\u0007\u0000\u0000"+ + "\u0e28\u0e29\u0007\t\u0000\u0000\u0e29\u0276\u0001\u0000\u0000\u0000\u0e2a"+ + "\u0e2b\u0007\r\u0000\u0000\u0e2b\u0e2c\u0007\n\u0000\u0000\u0e2c\u0e2d"+ + "\u0007\u001b\u0000\u0000\u0e2d\u0e2e\u0007\u0013\u0000\u0000\u0e2e\u0e2f"+ + "\u0007\u0015\u0000\u0000\u0e2f\u0e30\u0007\n\u0000\u0000\u0e30\u0278\u0001"+ + "\u0000\u0000\u0000\u0e31\u0e32\u0007\r\u0000\u0000\u0e32\u0e33\u0007\u0013"+ + "\u0000\u0000\u0e33\u0e34\u0007\u0006\u0000\u0000\u0e34\u0e35\u0007\n\u0000"+ + "\u0000\u0e35\u027a\u0001\u0000\u0000\u0000\u0e36\u0e37\u0007\r\u0000\u0000"+ + "\u0e37\u0e38\u0007\u0013\u0000\u0000\u0e38\u0e39\u0007\u0006\u0000\u0000"+ + "\u0e39\u0e3a\u0007\u0006\u0000\u0000\u0e3a\u0e3b\u0007\u0012\u0000\u0000"+ + "\u0e3b\u0e3c\u0007\u0005\u0000\u0000\u0e3c\u0e3d\u0007\u000e\u0000\u0000"+ + "\u0e3d\u0e3e\u0007\u0015\u0000\u0000\u0e3e\u027c\u0001\u0000\u0000\u0000"+ + "\u0e3f\u0e40\u0007\r\u0000\u0000\u0e40\u0e41\u0007\u0013\u0000\u0000\u0e41"+ + "\u0e42\u0007\u001d\u0000\u0000\u0e42\u0e43\u0007\t\u0000\u0000\u0e43\u027e"+ + "\u0001\u0000\u0000\u0000\u0e44\u0e45\u0007\r\u0000\u0000\u0e45\u0e46\u0007"+ + "\u0016\u0000\u0000\u0e46\u0e47\u0007\u0006\u0000\u0000\u0e47\u0e48\u0007"+ + "\n\u0000\u0000\u0e48\u0280\u0001\u0000\u0000\u0000\u0e49\u0e4a\u0007\t"+ + "\u0000\u0000\u0e4a\u0e4b\u0007\u0005\u0000\u0000\u0e4b\u0e4c\u0007\u001b"+ + "\u0000\u0000\u0e4c\u0e4d\u0007\n\u0000\u0000\u0e4d\u0e4e\u0007\u0018\u0000"+ + "\u0000\u0e4e\u0e4f\u0007\u0013\u0000\u0000\u0e4f\u0e50\u0007\u0011\u0000"+ + "\u0000\u0e50\u0e51\u0007\u0007\u0000\u0000\u0e51\u0e52\u0007\u0010\u0000"+ + "\u0000\u0e52\u0282\u0001\u0000\u0000\u0000\u0e53\u0e54\u0007\t\u0000\u0000"+ + "\u0e54\u0e55\u0007\u000e\u0000\u0000\u0e55\u0e56\u0007\u0014\u0000\u0000"+ + "\u0e56\u0e57\u0007\n\u0000\u0000\u0e57\u0e58\u0007\u000f\u0000\u0000\u0e58"+ + "\u0e59\u0007\u0005\u0000\u0000\u0e59\u0284\u0001\u0000\u0000\u0000\u0e5a"+ + "\u0e5b\u0007\t\u0000\u0000\u0e5b\u0e5c\u0007\u000e\u0000\u0000\u0e5c\u0e5d"+ + "\u0007\r\u0000\u0000\u0e5d\u0e5e\u0007\u0013\u0000\u0000\u0e5e\u0e5f\u0007"+ + "\u0006\u0000\u0000\u0e5f\u0e60\u0007\u0006\u0000\u0000\u0e60\u0286\u0001"+ + "\u0000\u0000\u0000\u0e61\u0e62\u0007\t\u0000\u0000\u0e62\u0e63\u0007\n"+ + "\u0000\u0000\u0e63\u0e64\u0007\u0005\u0000\u0000\u0e64\u0e65\u0007\r\u0000"+ + "\u0000\u0e65\u0e66\u0007\u000e\u0000\u0000\u0e66\u0e67\u0007\u0014\u0000"+ + "\u0000\u0e67\u0288\u0001\u0000\u0000\u0000\u0e68\u0e69\u0007\t\u0000\u0000"+ + "\u0e69\u0e6a\u0007\n\u0000\u0000\u0e6a\u0e6b\u0007\u000e\u0000\u0000\u0e6b"+ + "\u0e6c\u0007\u0013\u0000\u0000\u0e6c\u0e6d\u0007\u0007\u0000\u0000\u0e6d"+ + "\u0e6e\u0007\f\u0000\u0000\u0e6e\u028a\u0001\u0000\u0000\u0000\u0e6f\u0e70"+ + "\u0007\t\u0000\u0000\u0e70\u0e71\u0007\n\u0000\u0000\u0e71\u0e72\u0007"+ + "\u000e\u0000\u0000\u0e72\u0e73\u0007\u0016\u0000\u0000\u0e73\u0e74\u0007"+ + "\r\u0000\u0000\u0e74\u0e75\u0007\u0011\u0000\u0000\u0e75\u0e76\u0007\u0010"+ + "\u0000\u0000\u0e76\u0e77\u0007\b\u0000\u0000\u0e77\u028c\u0001\u0000\u0000"+ + "\u0000\u0e78\u0e79\u0007\t\u0000\u0000\u0e79\u0e7a\u0007\n\u0000\u0000"+ + "\u0e7a\u0e7b\u0007\u001c\u0000\u0000\u0e7b\u0e7c\u0007\u0016\u0000\u0000"+ + "\u0e7c\u0e7d\u0007\n\u0000\u0000\u0e7d\u0e7e\u0007\u0007\u0000\u0000\u0e7e"+ + "\u0e7f\u0007\u000e\u0000\u0000\u0e7f\u0e80\u0007\n\u0000\u0000\u0e80\u028e"+ + "\u0001\u0000\u0000\u0000\u0e81\u0e82\u0007\t\u0000\u0000\u0e82\u0e83\u0007"+ + "\n\u0000\u0000\u0e83\u0e84\u0007\u001c\u0000\u0000\u0e84\u0e85\u0007\u0016"+ + "\u0000\u0000\u0e85\u0e86\u0007\n\u0000\u0000\u0e86\u0e87\u0007\u0007\u0000"+ + "\u0000\u0e87\u0e88\u0007\u000e\u0000\u0000\u0e88\u0e89\u0007\n\u0000\u0000"+ + "\u0e89\u0e8a\u0007\t\u0000\u0000\u0e8a\u0290\u0001\u0000\u0000\u0000\u0e8b"+ + "\u0e8c\u0007\t\u0000\u0000\u0e8c\u0e8d\u0007\n\u0000\u0000\u0e8d\u0e8e"+ + "\u0007\r\u0000\u0000\u0e8e\u0e8f\u0007\u0011\u0000\u0000\u0e8f\u0e90\u0007"+ + "\u0005\u0000\u0000\u0e90\u0e91\u0007\u0006\u0000\u0000\u0e91\u0e92\u0007"+ + "\u0011\u0000\u0000\u0e92\u0e93\u0007\u000b\u0000\u0000\u0e93\u0e94\u0007"+ + "\u0005\u0000\u0000\u0e94\u0e95\u0007\u0012\u0000\u0000\u0e95\u0e96\u0007"+ + "\u0006\u0000\u0000\u0e96\u0e97\u0007\n\u0000\u0000\u0e97\u0292\u0001\u0000"+ + "\u0000\u0000\u0e98\u0e99\u0007\t\u0000\u0000\u0e99\u0e9a\u0007\n\u0000"+ + "\u0000\u0e9a\u0e9b\u0007\r\u0000\u0000\u0e9b\u0e9c\u0007\u001b\u0000\u0000"+ + "\u0e9c\u0e9d\u0007\n\u0000\u0000\u0e9d\u0e9e\u0007\r\u0000\u0000\u0e9e"+ + "\u0294\u0001\u0000\u0000\u0000\u0e9f\u0ea0\u0007\t\u0000\u0000\u0ea0\u0ea1"+ + "\u0007\n\u0000\u0000\u0ea1\u0ea2\u0007\t\u0000\u0000\u0ea2\u0ea3\u0007"+ + "\t\u0000\u0000\u0ea3\u0ea4\u0007\u0011\u0000\u0000\u0ea4\u0ea5\u0007\u0013"+ + "\u0000\u0000\u0ea5\u0ea6\u0007\u0007\u0000\u0000\u0ea6\u0296\u0001\u0000"+ + "\u0000\u0000\u0ea7\u0ea8\u0007\t\u0000\u0000\u0ea8\u0ea9\u0007\n\u0000"+ + "\u0000\u0ea9\u0eaa\u0007\u0010\u0000\u0000\u0eaa\u0298\u0001\u0000\u0000"+ + "\u0000\u0eab\u0eac\u0007\t\u0000\u0000\u0eac\u0ead\u0007\u0014\u0000\u0000"+ + "\u0ead\u0eae\u0007\u0005\u0000\u0000\u0eae\u0eaf\u0007\r\u0000\u0000\u0eaf"+ + "\u0eb0\u0007\n\u0000\u0000\u0eb0\u029a\u0001\u0000\u0000\u0000\u0eb1\u0eb2"+ + "\u0007\t\u0000\u0000\u0eb2\u0eb3\u0007\u0014\u0000\u0000\u0eb3\u0eb4\u0007"+ + "\u0013\u0000\u0000\u0eb4\u0eb5\u0007\u001d\u0000\u0000\u0eb5\u029c\u0001"+ + "\u0000\u0000\u0000\u0eb6\u0eb7\u0007\t\u0000\u0000\u0eb7\u0eb8\u0007\u0011"+ + "\u0000\u0000\u0eb8\u0eb9\u0007\u000f\u0000\u0000\u0eb9\u0eba\u0007\u0018"+ + "\u0000\u0000\u0eba\u0ebb\u0007\u0006\u0000\u0000\u0ebb\u0ebc\u0007\n\u0000"+ + "\u0000\u0ebc\u029e\u0001\u0000\u0000\u0000\u0ebd\u0ebe\u0007\t\u0000\u0000"+ + "\u0ebe\u0ebf\u0007\u0007\u0000\u0000\u0ebf\u0ec0\u0007\u0005\u0000\u0000"+ + "\u0ec0\u0ec1\u0007\u0018\u0000\u0000\u0ec1\u0ec2\u0007\t\u0000\u0000\u0ec2"+ + "\u0ec3\u0007\u0014\u0000\u0000\u0ec3\u0ec4\u0007\u0013\u0000\u0000\u0ec4"+ + "\u0ec5\u0007\u0010\u0000\u0000\u0ec5\u02a0\u0001\u0000\u0000\u0000\u0ec6"+ + "\u0ec7\u0007\t\u0000\u0000\u0ec7\u0ec8\u0007\u0010\u0000\u0000\u0ec8\u0ec9"+ + "\u0007\u0005\u0000\u0000\u0ec9\u0eca\u0007\u0012\u0000\u0000\u0eca\u0ecb"+ + "\u0007\u0006\u0000\u0000\u0ecb\u0ecc\u0007\n\u0000\u0000\u0ecc\u02a2\u0001"+ + "\u0000\u0000\u0000\u0ecd\u0ece\u0007\t\u0000\u0000\u0ece\u0ecf\u0007\u0010"+ + "\u0000\u0000\u0ecf\u0ed0\u0007\u0005\u0000\u0000\u0ed0\u0ed1\u0007\u0007"+ + "\u0000\u0000\u0ed1\u0ed2\u0007\f\u0000\u0000\u0ed2\u0ed3\u0007\u0005\u0000"+ + "\u0000\u0ed3\u0ed4\u0007\u0006\u0000\u0000\u0ed4\u0ed5\u0007\u0013\u0000"+ + "\u0000\u0ed5\u0ed6\u0007\u0007\u0000\u0000\u0ed6\u0ed7\u0007\n\u0000\u0000"+ + "\u0ed7\u02a4\u0001\u0000\u0000\u0000\u0ed8\u0ed9\u0007\t\u0000\u0000\u0ed9"+ + "\u0eda\u0007\u0010\u0000\u0000\u0eda\u0edb\u0007\u0005\u0000\u0000\u0edb"+ + "\u0edc\u0007\r\u0000\u0000\u0edc\u0edd\u0007\u0010\u0000\u0000\u0edd\u02a6"+ + "\u0001\u0000\u0000\u0000\u0ede\u0edf\u0007\t\u0000\u0000\u0edf\u0ee0\u0007"+ + "\u0010\u0000\u0000\u0ee0\u0ee1\u0007\u0005\u0000\u0000\u0ee1\u0ee2\u0007"+ + "\u0010\u0000\u0000\u0ee2\u0ee3\u0007\n\u0000\u0000\u0ee3\u0ee4\u0007\u000f"+ + "\u0000\u0000\u0ee4\u0ee5\u0007\n\u0000\u0000\u0ee5\u0ee6\u0007\u0007\u0000"+ + "\u0000\u0ee6\u0ee7\u0007\u0010\u0000\u0000\u0ee7\u02a8\u0001\u0000\u0000"+ + "\u0000\u0ee8\u0ee9\u0007\t\u0000\u0000\u0ee9\u0eea\u0007\u0010\u0000\u0000"+ + "\u0eea\u0eeb\u0007\u0005\u0000\u0000\u0eeb\u0eec\u0007\u0010\u0000\u0000"+ + "\u0eec\u0eed\u0007\u0011\u0000\u0000\u0eed\u0eee\u0007\t\u0000\u0000\u0eee"+ + "\u0eef\u0007\u0010\u0000\u0000\u0eef\u0ef0\u0007\u0011\u0000\u0000\u0ef0"+ + "\u0ef1\u0007\u000e\u0000\u0000\u0ef1\u0ef2\u0007\t\u0000\u0000\u0ef2\u02aa"+ + "\u0001\u0000\u0000\u0000\u0ef3\u0ef4\u0007\t\u0000\u0000\u0ef4\u0ef5\u0007"+ + "\u0010\u0000\u0000\u0ef5\u0ef6\u0007\f\u0000\u0000\u0ef6\u0ef7\u0007\u0011"+ + "\u0000\u0000\u0ef7\u0ef8\u0007\u0007\u0000\u0000\u0ef8\u02ac\u0001\u0000"+ + "\u0000\u0000\u0ef9\u0efa\u0007\t\u0000\u0000\u0efa\u0efb\u0007\u0010\u0000"+ + "\u0000\u0efb\u0efc\u0007\f\u0000\u0000\u0efc\u0efd\u0007\u0013\u0000\u0000"+ + "\u0efd\u0efe\u0007\u0016\u0000\u0000\u0efe\u0eff\u0007\u0010\u0000\u0000"+ + "\u0eff\u02ae\u0001\u0000\u0000\u0000\u0f00\u0f01\u0007\t\u0000\u0000\u0f01"+ + "\u0f02\u0007\u0010\u0000\u0000\u0f02\u0f03\u0007\u0013\u0000\u0000\u0f03"+ + "\u0f04\u0007\r\u0000\u0000\u0f04\u0f05\u0007\u0005\u0000\u0000\u0f05\u0f06"+ + "\u0007\u0017\u0000\u0000\u0f06\u0f07\u0007\n\u0000\u0000\u0f07\u02b0\u0001"+ + "\u0000\u0000\u0000\u0f08\u0f09\u0007\t\u0000\u0000\u0f09\u0f0a\u0007\u0010"+ + "\u0000\u0000\u0f0a\u0f0b\u0007\r\u0000\u0000\u0f0b\u0f0c\u0007\u0011\u0000"+ + "\u0000\u0f0c\u0f0d\u0007\u000e\u0000\u0000\u0f0d\u0f0e\u0007\u0010\u0000"+ + "\u0000\u0f0e\u02b2\u0001\u0000\u0000\u0000\u0f0f\u0f10\u0007\t\u0000\u0000"+ + "\u0f10\u0f11\u0007\u0010\u0000\u0000\u0f11\u0f12\u0007\r\u0000\u0000\u0f12"+ + "\u0f13\u0007\u0011\u0000\u0000\u0f13\u0f14\u0007\u0018\u0000\u0000\u0f14"+ + "\u02b4\u0001\u0000\u0000\u0000\u0f15\u0f16\u0007\t\u0000\u0000\u0f16\u0f17"+ + "\u0007\b\u0000\u0000\u0f17\u0f18\u0007\t\u0000\u0000\u0f18\u0f19\u0007"+ + "\u0011\u0000\u0000\u0f19\u0f1a\u0007\f\u0000\u0000\u0f1a\u02b6\u0001\u0000"+ + "\u0000\u0000\u0f1b\u0f1c\u0007\t\u0000\u0000\u0f1c\u0f1d\u0007\b\u0000"+ + "\u0000\u0f1d\u0f1e\u0007\t\u0000\u0000\u0f1e\u0f1f\u0007\u0010\u0000\u0000"+ + "\u0f1f\u0f20\u0007\n\u0000\u0000\u0f20\u0f21\u0007\u000f\u0000\u0000\u0f21"+ + "\u02b8\u0001\u0000\u0000\u0000\u0f22\u0f23\u0007\u0010\u0000\u0000\u0f23"+ + "\u0f24\u0007\u0005\u0000\u0000\u0f24\u0f25\u0007\u0012\u0000\u0000\u0f25"+ + "\u0f26\u0007\u0006\u0000\u0000\u0f26\u0f27\u0007\n\u0000\u0000\u0f27\u0f28"+ + "\u0007\t\u0000\u0000\u0f28\u02ba\u0001\u0000\u0000\u0000\u0f29\u0f2a\u0007"+ + "\u0010\u0000\u0000\u0f2a\u0f2b\u0007\u0005\u0000\u0000\u0f2b\u0f2c\u0007"+ + "\u0012\u0000\u0000\u0f2c\u0f2d\u0007\u0006\u0000\u0000\u0f2d\u0f2e\u0007"+ + "\n\u0000\u0000\u0f2e\u0f2f\u0007\t\u0000\u0000\u0f2f\u0f30\u0007\u0018"+ + "\u0000\u0000\u0f30\u0f31\u0007\u0005\u0000\u0000\u0f31\u0f32\u0007\u000e"+ + "\u0000\u0000\u0f32\u0f33\u0007\n\u0000\u0000\u0f33\u02bc\u0001\u0000\u0000"+ + "\u0000\u0f34\u0f35\u0007\u0010\u0000\u0000\u0f35\u0f36\u0007\n\u0000\u0000"+ + "\u0f36\u0f37\u0007\u000f\u0000\u0000\u0f37\u0f38\u0007\u0018\u0000\u0000"+ + "\u0f38\u02be\u0001\u0000\u0000\u0000\u0f39\u0f3a\u0007\u0010\u0000\u0000"+ + "\u0f3a\u0f3b\u0007\n\u0000\u0000\u0f3b\u0f3c\u0007\u000f\u0000\u0000\u0f3c"+ + "\u0f3d\u0007\u0018\u0000\u0000\u0f3d\u0f3e\u0007\u0006\u0000\u0000\u0f3e"+ + "\u0f3f\u0007\u0005\u0000\u0000\u0f3f\u0f40\u0007\u0010\u0000\u0000\u0f40"+ + "\u0f41\u0007\n\u0000\u0000\u0f41\u02c0\u0001\u0000\u0000\u0000\u0f42\u0f43"+ + "\u0007\u0010\u0000\u0000\u0f43\u0f44\u0007\n\u0000\u0000\u0f44\u0f45\u0007"+ + "\u000f\u0000\u0000\u0f45\u0f46\u0007\u0018\u0000\u0000\u0f46\u0f47\u0007"+ + "\u0013\u0000\u0000\u0f47\u0f48\u0007\r\u0000\u0000\u0f48\u0f49\u0007\u0005"+ + "\u0000\u0000\u0f49\u0f4a\u0007\r\u0000\u0000\u0f4a\u0f4b\u0007\b\u0000"+ + "\u0000\u0f4b\u02c2\u0001\u0000\u0000\u0000\u0f4c\u0f4d\u0007\u0010\u0000"+ + "\u0000\u0f4d\u0f4e\u0007\n\u0000\u0000\u0f4e\u0f4f\u0007\u001a\u0000\u0000"+ + "\u0f4f\u0f50\u0007\u0010\u0000\u0000\u0f50\u02c4\u0001\u0000\u0000\u0000"+ + "\u0f51\u0f52\u0007\u0010\u0000\u0000\u0f52\u0f53\u0007\r\u0000\u0000\u0f53"+ + "\u0f54\u0007\u0005\u0000\u0000\u0f54\u0f55\u0007\u0007\u0000\u0000\u0f55"+ + "\u0f56\u0007\t\u0000\u0000\u0f56\u0f57\u0007\u0005\u0000\u0000\u0f57\u0f58"+ + "\u0007\u000e\u0000\u0000\u0f58\u0f59\u0007\u0010\u0000\u0000\u0f59\u0f5a"+ + "\u0007\u0011\u0000\u0000\u0f5a\u0f5b\u0007\u0013\u0000\u0000\u0f5b\u0f5c"+ + "\u0007\u0007\u0000\u0000\u0f5c\u02c6\u0001\u0000\u0000\u0000\u0f5d\u0f5e"+ + "\u0007\u0010\u0000\u0000\u0f5e\u0f5f\u0007\r\u0000\u0000\u0f5f\u0f60\u0007"+ + "\u0011\u0000\u0000\u0f60\u0f61\u0007\u0017\u0000\u0000\u0f61\u0f62\u0007"+ + "\u0017\u0000\u0000\u0f62\u0f63\u0007\n\u0000\u0000\u0f63\u0f64\u0007\r"+ + "\u0000\u0000\u0f64\u02c8\u0001\u0000\u0000\u0000\u0f65\u0f66\u0007\u0010"+ + "\u0000\u0000\u0f66\u0f67\u0007\r\u0000\u0000\u0f67\u0f68\u0007\u0016\u0000"+ + "\u0000\u0f68\u0f69\u0007\u0007\u0000\u0000\u0f69\u0f6a\u0007\u000e\u0000"+ + "\u0000\u0f6a\u0f6b\u0007\u0005\u0000\u0000\u0f6b\u0f6c\u0007\u0010\u0000"+ + "\u0000\u0f6c\u0f6d\u0007\n\u0000\u0000\u0f6d\u02ca\u0001\u0000\u0000\u0000"+ + "\u0f6e\u0f6f\u0007\u0010\u0000\u0000\u0f6f\u0f70\u0007\r\u0000\u0000\u0f70"+ + "\u0f71\u0007\u0016\u0000\u0000\u0f71\u0f72\u0007\t\u0000\u0000\u0f72\u0f73"+ + "\u0007\u0010\u0000\u0000\u0f73\u0f74\u0007\n\u0000\u0000\u0f74\u0f75\u0007"+ + "\f\u0000\u0000\u0f75\u02cc\u0001\u0000\u0000\u0000\u0f76\u0f77\u0007\u0010"+ + "\u0000\u0000\u0f77\u0f78\u0007\b\u0000\u0000\u0f78\u0f79\u0007\u0018\u0000"+ + "\u0000\u0f79\u0f7a\u0007\n\u0000\u0000\u0f7a\u02ce\u0001\u0000\u0000\u0000"+ + "\u0f7b\u0f7c\u0007\u0010\u0000\u0000\u0f7c\u0f7d\u0007\b\u0000\u0000\u0f7d"+ + "\u0f7e\u0007\u0018\u0000\u0000\u0f7e\u0f7f\u0007\n\u0000\u0000\u0f7f\u0f80"+ + "\u0007\t\u0000\u0000\u0f80\u02d0\u0001\u0000\u0000\u0000\u0f81\u0f82\u0007"+ + "\u0016\u0000\u0000\u0f82\u0f83\u0007\u0007\u0000\u0000\u0f83\u0f84\u0007"+ + "\u0012\u0000\u0000\u0f84\u0f85\u0007\u0013\u0000\u0000\u0f85\u0f86\u0007"+ + "\u0016\u0000\u0000\u0f86\u0f87\u0007\u0007\u0000\u0000\u0f87\u0f88\u0007"+ + "\f\u0000\u0000\u0f88\u0f89\u0007\n\u0000\u0000\u0f89\u0f8a\u0007\f\u0000"+ + "\u0000\u0f8a\u02d2\u0001\u0000\u0000\u0000\u0f8b\u0f8c\u0007\u0016\u0000"+ + "\u0000\u0f8c\u0f8d\u0007\u0007\u0000\u0000\u0f8d\u0f8e\u0007\u000e\u0000"+ + "\u0000\u0f8e\u0f8f\u0007\u0013\u0000\u0000\u0f8f\u0f90\u0007\u000f\u0000"+ + "\u0000\u0f90\u0f91\u0007\u000f\u0000\u0000\u0f91\u0f92\u0007\u0011\u0000"+ + "\u0000\u0f92\u0f93\u0007\u0010\u0000\u0000\u0f93\u0f94\u0007\u0010\u0000"+ + "\u0000\u0f94\u0f95\u0007\n\u0000\u0000\u0f95\u0f96\u0007\f\u0000\u0000"+ + "\u0f96\u02d4\u0001\u0000\u0000\u0000\u0f97\u0f98\u0007\u0016\u0000\u0000"+ + "\u0f98\u0f99\u0007\u0007\u0000\u0000\u0f99\u0f9a\u0007\n\u0000\u0000\u0f9a"+ + "\u0f9b\u0007\u0007\u0000\u0000\u0f9b\u0f9c\u0007\u000e\u0000\u0000\u0f9c"+ + "\u0f9d\u0007\r\u0000\u0000\u0f9d\u0f9e\u0007\b\u0000\u0000\u0f9e\u0f9f"+ + "\u0007\u0018\u0000\u0000\u0f9f\u0fa0\u0007\u0010\u0000\u0000\u0fa0\u0fa1"+ + "\u0007\n\u0000\u0000\u0fa1\u0fa2\u0007\f\u0000\u0000\u0fa2\u02d6\u0001"+ + "\u0000\u0000\u0000\u0fa3\u0fa4\u0007\u0016\u0000\u0000\u0fa4\u0fa5\u0007"+ + "\u0007\u0000\u0000\u0fa5\u0fa6\u0007\u0015\u0000\u0000\u0fa6\u0fa7\u0007"+ + "\u0007\u0000\u0000\u0fa7\u0fa8\u0007\u0013\u0000\u0000\u0fa8\u0fa9\u0007"+ + "\u001d\u0000\u0000\u0fa9\u0faa\u0007\u0007\u0000\u0000\u0faa\u02d8\u0001"+ + "\u0000\u0000\u0000\u0fab\u0fac\u0007\u0016\u0000\u0000\u0fac\u0fad\u0007"+ + "\u0007\u0000\u0000\u0fad\u0fae\u0007\u0006\u0000\u0000\u0fae\u0faf\u0007"+ + "\u0011\u0000\u0000\u0faf\u0fb0\u0007\t\u0000\u0000\u0fb0\u0fb1\u0007\u0010"+ + "\u0000\u0000\u0fb1\u0fb2\u0007\n\u0000\u0000\u0fb2\u0fb3\u0007\u0007\u0000"+ + "\u0000\u0fb3\u02da\u0001\u0000\u0000\u0000\u0fb4\u0fb5\u0007\u0016\u0000"+ + "\u0000\u0fb5\u0fb6\u0007\u0007\u0000\u0000\u0fb6\u0fb7\u0007\u0006\u0000"+ + "\u0000\u0fb7\u0fb8\u0007\u0013\u0000\u0000\u0fb8\u0fb9\u0007\u0017\u0000"+ + "\u0000\u0fb9\u0fba\u0007\u0017\u0000\u0000\u0fba\u0fbb\u0007\n\u0000\u0000"+ + "\u0fbb\u0fbc\u0007\f\u0000\u0000\u0fbc\u02dc\u0001\u0000\u0000\u0000\u0fbd"+ + "\u0fbe\u0007\u0016\u0000\u0000\u0fbe\u0fbf\u0007\u0007\u0000\u0000\u0fbf"+ + "\u0fc0\u0007\u0010\u0000\u0000\u0fc0\u0fc1\u0007\u0011\u0000\u0000\u0fc1"+ + "\u0fc2\u0007\u0006\u0000\u0000\u0fc2\u02de\u0001\u0000\u0000\u0000\u0fc3"+ + "\u0fc4\u0007\u0016\u0000\u0000\u0fc4\u0fc5\u0007\u0018\u0000\u0000\u0fc5"+ + "\u0fc6\u0007\f\u0000\u0000\u0fc6\u0fc7\u0007\u0005\u0000\u0000\u0fc7\u0fc8"+ + "\u0007\u0010\u0000\u0000\u0fc8\u0fc9\u0007\n\u0000\u0000\u0fc9\u02e0\u0001"+ + "\u0000\u0000\u0000\u0fca\u0fcb\u0007\u001b\u0000\u0000\u0fcb\u0fcc\u0007"+ + "\u0005\u0000\u0000\u0fcc\u0fcd\u0007\u000e\u0000\u0000\u0fcd\u0fce\u0007"+ + "\u0016\u0000\u0000\u0fce\u0fcf\u0007\u0016\u0000\u0000\u0fcf\u0fd0\u0007"+ + "\u000f\u0000\u0000\u0fd0\u02e2\u0001\u0000\u0000\u0000\u0fd1\u0fd2\u0007"+ + "\u001b\u0000\u0000\u0fd2\u0fd3\u0007\u0005\u0000\u0000\u0fd3\u0fd4\u0007"+ + "\u0006\u0000\u0000\u0fd4\u0fd5\u0007\u0011\u0000\u0000\u0fd5\u0fd6\u0007"+ + "\f\u0000\u0000\u0fd6\u02e4\u0001\u0000\u0000\u0000\u0fd7\u0fd8\u0007\u001b"+ + "\u0000\u0000\u0fd8\u0fd9\u0007\u0005\u0000\u0000\u0fd9\u0fda\u0007\u0006"+ + "\u0000\u0000\u0fda\u0fdb\u0007\u0011\u0000\u0000\u0fdb\u0fdc\u0007\f\u0000"+ + "\u0000\u0fdc\u0fdd\u0007\u0005\u0000\u0000\u0fdd\u0fde\u0007\u0010\u0000"+ + "\u0000\u0fde\u0fdf\u0007\n\u0000\u0000\u0fdf\u02e6\u0001\u0000\u0000\u0000"+ + "\u0fe0\u0fe1\u0007\u001b\u0000\u0000\u0fe1\u0fe2\u0007\u0005\u0000\u0000"+ + "\u0fe2\u0fe3\u0007\u0006\u0000\u0000\u0fe3\u0fe4\u0007\u0011\u0000\u0000"+ + "\u0fe4\u0fe5\u0007\f\u0000\u0000\u0fe5\u0fe6\u0007\u0005\u0000\u0000\u0fe6"+ + "\u0fe7\u0007\u0010\u0000\u0000\u0fe7\u0fe8\u0007\u0013\u0000\u0000\u0fe8"+ + "\u0fe9\u0007\r\u0000\u0000\u0fe9\u02e8\u0001\u0000\u0000\u0000\u0fea\u0feb"+ + "\u0007\u001b\u0000\u0000\u0feb\u0fec\u0007\u0005\u0000\u0000\u0fec\u0fed"+ + "\u0007\r\u0000\u0000\u0fed\u0fee\u0007\b\u0000\u0000\u0fee\u0fef\u0007"+ + "\u0011\u0000\u0000\u0fef\u0ff0\u0007\u0007\u0000\u0000\u0ff0\u0ff1\u0007"+ + "\u0017\u0000\u0000\u0ff1\u02ea\u0001\u0000\u0000\u0000\u0ff2\u0ff3\u0007"+ + "\u001b\u0000\u0000\u0ff3\u0ff4\u0007\n\u0000\u0000\u0ff4\u0ff5\u0007\r"+ + "\u0000\u0000\u0ff5\u0ff6\u0007\t\u0000\u0000\u0ff6\u0ff7\u0007\u0011\u0000"+ + "\u0000\u0ff7\u0ff8\u0007\u0013\u0000\u0000\u0ff8\u0ff9\u0007\u0007\u0000"+ + "\u0000\u0ff9\u02ec\u0001\u0000\u0000\u0000\u0ffa\u0ffb\u0007\u001b\u0000"+ + "\u0000\u0ffb\u0ffc\u0007\u0011\u0000\u0000\u0ffc\u0ffd\u0007\n\u0000\u0000"+ + "\u0ffd\u0ffe\u0007\u001d\u0000\u0000\u0ffe\u02ee\u0001\u0000\u0000\u0000"+ + "\u0fff\u1000\u0007\u001b\u0000\u0000\u1000\u1001\u0007\u0013\u0000\u0000"+ + "\u1001\u1002\u0007\u0006\u0000\u0000\u1002\u1003\u0007\u0005\u0000\u0000"+ + "\u1003\u1004\u0007\u0010\u0000\u0000\u1004\u1005\u0007\u0011\u0000\u0000"+ + "\u1005\u1006\u0007\u0006\u0000\u0000\u1006\u1007\u0007\n\u0000\u0000\u1007"+ + "\u02f0\u0001\u0000\u0000\u0000\u1008\u1009\u0007\u001d\u0000\u0000\u1009"+ + "\u100a\u0007\u0014\u0000\u0000\u100a\u100b\u0007\u0011\u0000\u0000\u100b"+ + "\u100c\u0007\u0010\u0000\u0000\u100c\u100d\u0007\n\u0000\u0000\u100d\u100e"+ + "\u0007\t\u0000\u0000\u100e\u100f\u0007\u0018\u0000\u0000\u100f\u1010\u0007"+ + "\u0005\u0000\u0000\u1010\u1011\u0007\u000e\u0000\u0000\u1011\u1012\u0007"+ + "\n\u0000\u0000\u1012\u02f2\u0001\u0000\u0000\u0000\u1013\u1014\u0007\u001d"+ + "\u0000\u0000\u1014\u1015\u0007\u0011\u0000\u0000\u1015\u1016\u0007\u0010"+ + "\u0000\u0000\u1016\u1017\u0007\u0014\u0000\u0000\u1017\u1018\u0007\u0013"+ + "\u0000\u0000\u1018\u1019\u0007\u0016\u0000\u0000\u1019\u101a\u0007\u0010"+ + "\u0000\u0000\u101a\u02f4\u0001\u0000\u0000\u0000\u101b\u101c\u0007\u001d"+ + "\u0000\u0000\u101c\u101d\u0007\u0013\u0000\u0000\u101d\u101e\u0007\r\u0000"+ + "\u0000\u101e\u101f\u0007\u0015\u0000\u0000\u101f\u02f6\u0001\u0000\u0000"+ + "\u0000\u1020\u1021\u0007\u001d\u0000\u0000\u1021\u1022\u0007\r\u0000\u0000"+ + "\u1022\u1023\u0007\u0005\u0000\u0000\u1023\u1024\u0007\u0018\u0000\u0000"+ + "\u1024\u1025\u0007\u0018\u0000\u0000\u1025\u1026\u0007\n\u0000\u0000\u1026"+ + "\u1027\u0007\r\u0000\u0000\u1027\u02f8\u0001\u0000\u0000\u0000\u1028\u1029"+ + "\u0007\u001d\u0000\u0000\u1029\u102a\u0007\r\u0000\u0000\u102a\u102b\u0007"+ + "\u0011\u0000\u0000\u102b\u102c\u0007\u0010\u0000\u0000\u102c\u102d\u0007"+ + "\n\u0000\u0000\u102d\u02fa\u0001\u0000\u0000\u0000\u102e\u102f\u0007\u001a"+ + "\u0000\u0000\u102f\u1030\u0007\u000f\u0000\u0000\u1030\u1031\u0007\u0006"+ + "\u0000\u0000\u1031\u02fc\u0001\u0000\u0000\u0000\u1032\u1033\u0007\b\u0000"+ + "\u0000\u1033\u1034\u0007\n\u0000\u0000\u1034\u1035\u0007\u0005\u0000\u0000"+ + "\u1035\u1036\u0007\r\u0000\u0000\u1036\u02fe\u0001\u0000\u0000\u0000\u1037"+ + "\u1038\u0007\b\u0000\u0000\u1038\u1039\u0007\n\u0000\u0000\u1039\u103a"+ + "\u0007\t\u0000\u0000\u103a\u0300\u0001\u0000\u0000\u0000\u103b\u103c\u0007"+ + "\u000b\u0000\u0000\u103c\u103d\u0007\u0013\u0000\u0000\u103d\u103e\u0007"+ + "\u0007\u0000\u0000\u103e\u103f\u0007\n\u0000\u0000\u103f\u0302\u0001\u0000"+ + "\u0000\u0000\u1040\u1041\u0007\u0012\u0000\u0000\u1041\u1042\u0007\n\u0000"+ + "\u0000\u1042\u1043\u0007\u0010\u0000\u0000\u1043\u1044\u0007\u001d\u0000"+ + "\u0000\u1044\u1045\u0007\n\u0000\u0000\u1045\u1046\u0007\n\u0000\u0000"+ + "\u1046\u1047\u0007\u0007\u0000\u0000\u1047\u0304\u0001\u0000\u0000\u0000"+ + "\u1048\u1049\u0007\u0012\u0000\u0000\u1049\u104a\u0007\u0011\u0000\u0000"+ + "\u104a\u104b\u0007\u0017\u0000\u0000\u104b\u104c\u0007\u0011\u0000\u0000"+ + "\u104c\u104d\u0007\u0007\u0000\u0000\u104d\u104e\u0007\u0010\u0000\u0000"+ + "\u104e\u0306\u0001\u0000\u0000\u0000\u104f\u1050\u0007\u0012\u0000\u0000"+ + "\u1050\u1051\u0007\u0011\u0000\u0000\u1051\u1052\u0007\u0010\u0000\u0000"+ + "\u1052\u0308\u0001\u0000\u0000\u0000\u1053\u1054\u0007\u0012\u0000\u0000"+ + "\u1054\u1055\u0007\u0013\u0000\u0000\u1055\u1056\u0007\u0013\u0000\u0000"+ + "\u1056\u1057\u0007\u0006\u0000\u0000\u1057\u1058\u0007\n\u0000\u0000\u1058"+ + "\u1059\u0007\u0005\u0000\u0000\u1059\u105a\u0007\u0007\u0000\u0000\u105a"+ + "\u030a\u0001\u0000\u0000\u0000\u105b\u105c\u0007\u000e\u0000\u0000\u105c"+ + "\u105d\u0007\u0014\u0000\u0000\u105d\u105e\u0007\u0005\u0000\u0000\u105e"+ + "\u105f\u0007\r\u0000\u0000\u105f\u030c\u0001\u0000\u0000\u0000\u1060\u1061"+ + "\u0007\u000e\u0000\u0000\u1061\u1062\u0007\u0014\u0000\u0000\u1062\u1063"+ + "\u0007\u0005\u0000\u0000\u1063\u1064\u0007\r\u0000\u0000\u1064\u1065\u0007"+ + "\u0005\u0000\u0000\u1065\u1066\u0007\u000e\u0000\u0000\u1066\u1067\u0007"+ + "\u0010\u0000\u0000\u1067\u1068\u0007\n\u0000\u0000\u1068\u1069\u0007\r"+ + "\u0000\u0000\u1069\u030e\u0001\u0000\u0000\u0000\u106a\u106b\u0007\u000e"+ + "\u0000\u0000\u106b\u106c\u0007\u0013\u0000\u0000\u106c\u106d\u0007\u0005"+ + "\u0000\u0000\u106d\u106e\u0007\u0006\u0000\u0000\u106e\u106f\u0007\n\u0000"+ + "\u0000\u106f\u1070\u0007\t\u0000\u0000\u1070\u1071\u0007\u000e\u0000\u0000"+ + "\u1071\u1072\u0007\n\u0000\u0000\u1072\u0310\u0001\u0000\u0000\u0000\u1073"+ + "\u1074\u0007\f\u0000\u0000\u1074\u1075\u0007\n\u0000\u0000\u1075\u1076"+ + "\u0007\u000e\u0000\u0000\u1076\u0312\u0001\u0000\u0000\u0000\u1077\u1078"+ + "\u0007\f\u0000\u0000\u1078\u1079\u0007\n\u0000\u0000\u1079\u107a\u0007"+ + "\u000e\u0000\u0000\u107a\u107b\u0007\u0011\u0000\u0000\u107b\u107c\u0007"+ + "\u000f\u0000\u0000\u107c\u107d\u0007\u0005\u0000\u0000\u107d\u107e\u0007"+ + "\u0006\u0000\u0000\u107e\u0314\u0001\u0000\u0000\u0000\u107f\u1080\u0007"+ + "\n\u0000\u0000\u1080\u1081\u0007\u001a\u0000\u0000\u1081\u1082\u0007\u0011"+ + "\u0000\u0000\u1082\u1083\u0007\t\u0000\u0000\u1083\u1084\u0007\u0010\u0000"+ + "\u0000\u1084\u1085\u0007\t\u0000\u0000\u1085\u0316\u0001\u0000\u0000\u0000"+ + "\u1086\u1087\u0007\n\u0000\u0000\u1087\u1088\u0007\u001a\u0000\u0000\u1088"+ + "\u1089\u0007\u0010\u0000\u0000\u1089\u108a\u0007\r\u0000\u0000\u108a\u108b"+ + "\u0007\u0005\u0000\u0000\u108b\u108c\u0007\u000e\u0000\u0000\u108c\u108d"+ + "\u0007\u0010\u0000\u0000\u108d\u0318\u0001\u0000\u0000\u0000\u108e\u108f"+ + "\u0007\u0019\u0000\u0000\u108f\u1090\u0007\u0006\u0000\u0000\u1090\u1091"+ + "\u0007\u0013\u0000\u0000\u1091\u1092\u0007\u0005\u0000\u0000\u1092\u1093"+ + "\u0007\u0010\u0000\u0000\u1093\u031a\u0001\u0000\u0000\u0000\u1094\u1095"+ + "\u0007\u0017\u0000\u0000\u1095\u1096\u0007\r\u0000\u0000\u1096\u1097\u0007"+ + "\n\u0000\u0000\u1097\u1098\u0007\u0005\u0000\u0000\u1098\u1099\u0007\u0010"+ + "\u0000\u0000\u1099\u109a\u0007\n\u0000\u0000\u109a\u109b\u0007\t\u0000"+ + "\u0000\u109b\u109c\u0007\u0010\u0000\u0000\u109c\u031c\u0001\u0000\u0000"+ + "\u0000\u109d\u109e\u0007\u0011\u0000\u0000\u109e\u109f\u0007\u0007\u0000"+ + "\u0000\u109f\u10a0\u0007\u0013\u0000\u0000\u10a0\u10a1\u0007\u0016\u0000"+ + "\u0000\u10a1\u10a2\u0007\u0010\u0000\u0000\u10a2\u031e\u0001\u0000\u0000"+ + "\u0000\u10a3\u10a4\u0007\u0011\u0000\u0000\u10a4\u10a5\u0007\u0007\u0000"+ + "\u0000\u10a5\u10a6\u0007\u0010\u0000\u0000\u10a6\u0320\u0001\u0000\u0000"+ + "\u0000\u10a7\u10a8\u0007\u0011\u0000\u0000\u10a8\u10a9\u0007\u0007\u0000"+ + "\u0000\u10a9\u10aa\u0007\u0010\u0000\u0000\u10aa\u10ab\u0007\n\u0000\u0000"+ + "\u10ab\u10ac\u0007\u0017\u0000\u0000\u10ac\u10ad\u0007\n\u0000\u0000\u10ad"+ + "\u10ae\u0007\r\u0000\u0000\u10ae\u0322\u0001\u0000\u0000\u0000\u10af\u10b0"+ + "\u0007\u0011\u0000\u0000\u10b0\u10b1\u0007\u0007\u0000\u0000\u10b1\u10b2"+ + "\u0007\u0010\u0000\u0000\u10b2\u10b3\u0007\n\u0000\u0000\u10b3\u10b4\u0007"+ + "\r\u0000\u0000\u10b4\u10b5\u0007\u001b\u0000\u0000\u10b5\u10b6\u0007\u0005"+ + "\u0000\u0000\u10b6\u10b7\u0007\u0006\u0000\u0000\u10b7\u0324\u0001\u0000"+ + "\u0000\u0000\u10b8\u10b9\u0007\u0006\u0000\u0000\u10b9\u10ba\u0007\n\u0000"+ + "\u0000\u10ba\u10bb\u0007\u0005\u0000\u0000\u10bb\u10bc\u0007\t\u0000\u0000"+ + "\u10bc\u10bd\u0007\u0010\u0000\u0000\u10bd\u0326\u0001\u0000\u0000\u0000"+ + "\u10be\u10bf\u0007\u0007\u0000\u0000\u10bf\u10c0\u0007\u0005\u0000\u0000"+ + "\u10c0\u10c1\u0007\u0010\u0000\u0000\u10c1\u10c2\u0007\u0011\u0000\u0000"+ + "\u10c2\u10c3\u0007\u0013\u0000\u0000\u10c3\u10c4\u0007\u0007\u0000\u0000"+ + "\u10c4\u10c5\u0007\u0005\u0000\u0000\u10c5\u10c6\u0007\u0006\u0000\u0000"+ + "\u10c6\u0328\u0001\u0000\u0000\u0000\u10c7\u10c8\u0007\u0007\u0000\u0000"+ + "\u10c8\u10c9\u0007\u000e\u0000\u0000\u10c9\u10ca\u0007\u0014\u0000\u0000"+ + "\u10ca\u10cb\u0007\u0005\u0000\u0000\u10cb\u10cc\u0007\r\u0000\u0000\u10cc"+ + "\u032a\u0001\u0000\u0000\u0000\u10cd\u10ce\u0007\u0007\u0000\u0000\u10ce"+ + "\u10cf\u0007\u0013\u0000\u0000\u10cf\u10d0\u0007\u0007\u0000\u0000\u10d0"+ + "\u10d1\u0007\n\u0000\u0000\u10d1\u032c\u0001\u0000\u0000\u0000\u10d2\u10d3"+ + "\u0007\u0007\u0000\u0000\u10d3\u10d4\u0007\u0016\u0000\u0000\u10d4\u10d5"+ + "\u0007\u0006\u0000\u0000\u10d5\u10d6\u0007\u0006\u0000\u0000\u10d6\u10d7"+ + "\u0007\u0011\u0000\u0000\u10d7\u10d8\u0007\u0019\u0000\u0000\u10d8\u032e"+ + "\u0001\u0000\u0000\u0000\u10d9\u10da\u0007\u0007\u0000\u0000\u10da\u10db"+ + "\u0007\u0016\u0000\u0000\u10db\u10dc\u0007\u000f\u0000\u0000\u10dc\u10dd"+ + "\u0007\n\u0000\u0000\u10dd\u10de\u0007\r\u0000\u0000\u10de\u10df\u0007"+ + "\u0011\u0000\u0000\u10df\u10e0\u0007\u000e\u0000\u0000\u10e0\u0330\u0001"+ + "\u0000\u0000\u0000\u10e1\u10e2\u0007\u0013\u0000\u0000\u10e2\u10e3\u0007"+ + "\u001b\u0000\u0000\u10e3\u10e4\u0007\n\u0000\u0000\u10e4\u10e5\u0007\r"+ + "\u0000\u0000\u10e5\u10e6\u0007\u0006\u0000\u0000\u10e6\u10e7\u0007\u0005"+ + "\u0000\u0000\u10e7\u10e8\u0007\b\u0000\u0000\u10e8\u0332\u0001\u0000\u0000"+ + "\u0000\u10e9\u10ea\u0007\u0018\u0000\u0000\u10ea\u10eb\u0007\u0013\u0000"+ + "\u0000\u10eb\u10ec\u0007\t\u0000\u0000\u10ec\u10ed\u0007\u0011\u0000\u0000"+ + "\u10ed\u10ee\u0007\u0010\u0000\u0000\u10ee\u10ef\u0007\u0011\u0000\u0000"+ + "\u10ef\u10f0\u0007\u0013\u0000\u0000\u10f0\u10f1\u0007\u0007\u0000\u0000"+ + "\u10f1\u0334\u0001\u0000\u0000\u0000\u10f2\u10f3\u0007\u0018\u0000\u0000"+ + "\u10f3\u10f4\u0007\r\u0000\u0000\u10f4\u10f5\u0007\n\u0000\u0000\u10f5"+ + "\u10f6\u0007\u000e\u0000\u0000\u10f6\u10f7\u0007\u0011\u0000\u0000\u10f7"+ + "\u10f8\u0007\t\u0000\u0000\u10f8\u10f9\u0007\u0011\u0000\u0000\u10f9\u10fa"+ + "\u0007\u0013\u0000\u0000\u10fa\u10fb\u0007\u0007\u0000\u0000\u10fb\u0336"+ + "\u0001\u0000\u0000\u0000\u10fc\u10fd\u0007\r\u0000\u0000\u10fd\u10fe\u0007"+ + "\n\u0000\u0000\u10fe\u10ff\u0007\u0005\u0000\u0000\u10ff\u1100\u0007\u0006"+ + "\u0000\u0000\u1100\u0338\u0001\u0000\u0000\u0000\u1101\u1102\u0007\r\u0000"+ + "\u0000\u1102\u1103\u0007\u0013\u0000\u0000\u1103\u1104\u0007\u001d\u0000"+ + "\u0000\u1104\u033a\u0001\u0000\u0000\u0000\u1105\u1106\u0007\t\u0000\u0000"+ + "\u1106\u1107\u0007\n\u0000\u0000\u1107\u1108\u0007\u0010\u0000\u0000\u1108"+ + "\u1109\u0007\u0013\u0000\u0000\u1109\u110a\u0007\u0019\u0000\u0000\u110a"+ + "\u033c\u0001\u0000\u0000\u0000\u110b\u110c\u0007\t\u0000\u0000\u110c\u110d"+ + "\u0007\u000f\u0000\u0000\u110d\u110e\u0007\u0005\u0000\u0000\u110e\u110f"+ + "\u0007\u0006\u0000\u0000\u110f\u1110\u0007\u0006\u0000\u0000\u1110\u1111"+ + "\u0007\u0011\u0000\u0000\u1111\u1112\u0007\u0007\u0000\u0000\u1112\u1113"+ + "\u0007\u0010\u0000\u0000\u1113\u033e\u0001\u0000\u0000\u0000\u1114\u1115"+ + "\u0007\t\u0000\u0000\u1115\u1116\u0007\u0016\u0000\u0000\u1116\u1117\u0007"+ + "\u0012\u0000\u0000\u1117\u1118\u0007\t\u0000\u0000\u1118\u1119\u0007\u0010"+ + "\u0000\u0000\u1119\u111a\u0007\r\u0000\u0000\u111a\u111b\u0007\u0011\u0000"+ + "\u0000\u111b\u111c\u0007\u0007\u0000\u0000\u111c\u111d\u0007\u0017\u0000"+ + "\u0000\u111d\u0340\u0001\u0000\u0000\u0000\u111e\u111f\u0007\u0010\u0000"+ + "\u0000\u111f\u1120\u0007\u0011\u0000\u0000\u1120\u1121\u0007\u000f\u0000"+ + "\u0000\u1121\u1122\u0007\n\u0000\u0000\u1122\u0342\u0001\u0000\u0000\u0000"+ + "\u1123\u1124\u0007\u0010\u0000\u0000\u1124\u1125\u0007\u0011\u0000\u0000"+ + "\u1125\u1126\u0007\u000f\u0000\u0000\u1126\u1127\u0007\n\u0000\u0000\u1127"+ + "\u1128\u0007\t\u0000\u0000\u1128\u1129\u0007\u0010\u0000\u0000\u1129\u112a"+ + "\u0007\u0005\u0000\u0000\u112a\u112b\u0007\u000f\u0000\u0000\u112b\u112c"+ + "\u0007\u0018\u0000\u0000\u112c\u0344\u0001\u0000\u0000\u0000\u112d\u112e"+ + "\u0007\u0010\u0000\u0000\u112e\u112f\u0007\r\u0000\u0000\u112f\u1130\u0007"+ + "\n\u0000\u0000\u1130\u1131\u0007\u0005\u0000\u0000\u1131\u1132\u0007\u0010"+ + "\u0000\u0000\u1132\u0346\u0001\u0000\u0000\u0000\u1133\u1134\u0007\u0010"+ + "\u0000\u0000\u1134\u1135\u0007\r\u0000\u0000\u1135\u1136\u0007\u0011\u0000"+ + "\u0000\u1136\u1137\u0007\u000f\u0000\u0000\u1137\u0348\u0001\u0000\u0000"+ + "\u0000\u1138\u1139\u0007\u001b\u0000\u0000\u1139\u113a\u0007\u0005\u0000"+ + "\u0000\u113a\u113b\u0007\u0006\u0000\u0000\u113b\u113c\u0007\u0016\u0000"+ + "\u0000\u113c\u113d\u0007\n\u0000\u0000\u113d\u113e\u0007\t\u0000\u0000"+ + "\u113e\u034a\u0001\u0000\u0000\u0000\u113f\u1140\u0007\u001b\u0000\u0000"+ + "\u1140\u1141\u0007\u0005\u0000\u0000\u1141\u1142\u0007\r\u0000\u0000\u1142"+ + "\u1143\u0007\u000e\u0000\u0000\u1143\u1144\u0007\u0014\u0000\u0000\u1144"+ + "\u1145\u0007\u0005\u0000\u0000\u1145\u1146\u0007\r\u0000\u0000\u1146\u034c"+ + "\u0001\u0000\u0000\u0000\u1147\u1148\u0007\u001a\u0000\u0000\u1148\u1149"+ + "\u0007\u000f\u0000\u0000\u1149\u114a\u0007\u0006\u0000\u0000\u114a\u114b"+ + "\u0007\u0005\u0000\u0000\u114b\u114c\u0007\u0010\u0000\u0000\u114c\u114d"+ + "\u0007\u0010\u0000\u0000\u114d\u114e\u0007\r\u0000\u0000\u114e\u114f\u0007"+ + "\u0011\u0000\u0000\u114f\u1150\u0007\u0012\u0000\u0000\u1150\u1151\u0007"+ + "\u0016\u0000\u0000\u1151\u1152\u0007\u0010\u0000\u0000\u1152\u1153\u0007"+ + "\n\u0000\u0000\u1153\u1154\u0007\t\u0000\u0000\u1154\u034e\u0001\u0000"+ + "\u0000\u0000\u1155\u1156\u0007\u001a\u0000\u0000\u1156\u1157\u0007\u000f"+ + "\u0000\u0000\u1157\u1158\u0007\u0006\u0000\u0000\u1158\u1159\u0007\u000e"+ + "\u0000\u0000\u1159\u115a\u0007\u0013\u0000\u0000\u115a\u115b\u0007\u000f"+ + "\u0000\u0000\u115b\u115c\u0007\u000f\u0000\u0000\u115c\u115d\u0007\n\u0000"+ + "\u0000\u115d\u115e\u0007\u0007\u0000\u0000\u115e\u115f\u0007\u0010\u0000"+ + "\u0000\u115f\u0350\u0001\u0000\u0000\u0000\u1160\u1161\u0007\u001a\u0000"+ + "\u0000\u1161\u1162\u0007\u000f\u0000\u0000\u1162\u1163\u0007\u0006\u0000"+ + "\u0000\u1163\u1164\u0007\u0005\u0000\u0000\u1164\u1165\u0007\u0017\u0000"+ + "\u0000\u1165\u1166\u0007\u0017\u0000\u0000\u1166\u0352\u0001\u0000\u0000"+ + "\u0000\u1167\u1168\u0007\u001a\u0000\u0000\u1168\u1169\u0007\u000f\u0000"+ + "\u0000\u1169\u116a\u0007\u0006\u0000\u0000\u116a\u116b\u0005_\u0000\u0000"+ + "\u116b\u116c\u0007\u0011\u0000\u0000\u116c\u116d\u0007\t\u0000\u0000\u116d"+ + "\u116e\u0005_\u0000\u0000\u116e\u116f\u0007\u001d\u0000\u0000\u116f\u1170"+ + "\u0007\n\u0000\u0000\u1170\u1171\u0007\u0006\u0000\u0000\u1171\u1172\u0007"+ + "\u0006\u0000\u0000\u1172\u1173\u0005_\u0000\u0000\u1173\u1174\u0007\u0019"+ + "\u0000\u0000\u1174\u1175\u0007\u0013\u0000\u0000\u1175\u1176\u0007\r\u0000"+ + "\u0000\u1176\u1177\u0007\u000f\u0000\u0000\u1177\u1178\u0007\n\u0000\u0000"+ + "\u1178\u1179\u0007\f\u0000\u0000\u1179\u0354\u0001\u0000\u0000\u0000\u117a"+ + "\u117b\u0007\u001a\u0000\u0000\u117b\u117c\u0007\u000f\u0000\u0000\u117c"+ + "\u117d\u0007\u0006\u0000\u0000\u117d\u117e\u0005_\u0000\u0000\u117e\u117f"+ + "\u0007\u0011\u0000\u0000\u117f\u1180\u0007\t\u0000\u0000\u1180\u1181\u0005"+ + "_\u0000\u0000\u1181\u1182\u0007\u001d\u0000\u0000\u1182\u1183\u0007\n"+ + "\u0000\u0000\u1183\u1184\u0007\u0006\u0000\u0000\u1184\u1185\u0007\u0006"+ + "\u0000\u0000\u1185\u1186\u0005_\u0000\u0000\u1186\u1187\u0007\u0019\u0000"+ + "\u0000\u1187\u1188\u0007\u0013\u0000\u0000\u1188\u1189\u0007\r\u0000\u0000"+ + "\u1189\u118a\u0007\u000f\u0000\u0000\u118a\u118b\u0007\n\u0000\u0000\u118b"+ + "\u118c\u0007\f\u0000\u0000\u118c\u118d\u0005_\u0000\u0000\u118d\u118e"+ + "\u0007\f\u0000\u0000\u118e\u118f\u0007\u0013\u0000\u0000\u118f\u1190\u0007"+ + "\u000e\u0000\u0000\u1190\u1191\u0007\u0016\u0000\u0000\u1191\u1192\u0007"+ + "\u000f\u0000\u0000\u1192\u1193\u0007\n\u0000\u0000\u1193\u1194\u0007\u0007"+ + "\u0000\u0000\u1194\u1195\u0007\u0010\u0000\u0000\u1195\u0356\u0001\u0000"+ + "\u0000\u0000\u1196\u1197\u0007\u001a\u0000\u0000\u1197\u1198\u0007\u000f"+ + "\u0000\u0000\u1198\u1199\u0007\u0006\u0000\u0000\u1199\u119a\u0005_\u0000"+ + "\u0000\u119a\u119b\u0007\u0011\u0000\u0000\u119b\u119c\u0007\t\u0000\u0000"+ + "\u119c\u119d\u0005_\u0000\u0000\u119d\u119e\u0007\u001d\u0000\u0000\u119e"+ + "\u119f\u0007\n\u0000\u0000\u119f\u11a0\u0007\u0006\u0000\u0000\u11a0\u11a1"+ + "\u0007\u0006\u0000\u0000\u11a1\u11a2\u0005_\u0000\u0000\u11a2\u11a3\u0007"+ + "\u0019\u0000\u0000\u11a3\u11a4\u0007\u0013\u0000\u0000\u11a4\u11a5\u0007"+ + "\r\u0000\u0000\u11a5\u11a6\u0007\u000f\u0000\u0000\u11a6\u11a7\u0007\n"+ + "\u0000\u0000\u11a7\u11a8\u0007\f\u0000\u0000\u11a8\u11a9\u0005_\u0000"+ + "\u0000\u11a9\u11aa\u0007\u000e\u0000\u0000\u11aa\u11ab\u0007\u0013\u0000"+ + "\u0000\u11ab\u11ac\u0007\u0007\u0000\u0000\u11ac\u11ad\u0007\u0010\u0000"+ + "\u0000\u11ad\u11ae\u0007\n\u0000\u0000\u11ae\u11af\u0007\u0007\u0000\u0000"+ + "\u11af\u11b0\u0007\u0010\u0000\u0000\u11b0\u0358\u0001\u0000\u0000\u0000"+ + "\u11b1\u11b2\u0007\u001a\u0000\u0000\u11b2\u11b3\u0007\u0018\u0000\u0000"+ + "\u11b3\u11b4\u0007\u0005\u0000\u0000\u11b4\u11b5\u0007\u0010\u0000\u0000"+ + "\u11b5\u11b6\u0007\u0014\u0000\u0000\u11b6\u035a\u0001\u0000\u0000\u0000"+ + "\u11b7\u11b8\u0007\u001a\u0000\u0000\u11b8\u11b9\u0007\u0018\u0000\u0000"+ + "\u11b9\u11ba\u0007\u0005\u0000\u0000\u11ba\u11bb\u0007\u0010\u0000\u0000"+ + "\u11bb\u11bc\u0007\u0014\u0000\u0000\u11bc\u11bd\u0005_\u0000\u0000\u11bd"+ + "\u11be\u0007\n\u0000\u0000\u11be\u11bf\u0007\u001a\u0000\u0000\u11bf\u11c0"+ + "\u0007\u0011\u0000\u0000\u11c0\u11c1\u0007\t\u0000\u0000\u11c1\u11c2\u0007"+ + "\u0010\u0000\u0000\u11c2\u11c3\u0007\t\u0000\u0000\u11c3\u035c\u0001\u0000"+ + "\u0000\u0000\u11c4\u11c5\u0007\u001a\u0000\u0000\u11c5\u11c6\u0007\u000f"+ + "\u0000\u0000\u11c6\u11c7\u0007\u0006\u0000\u0000\u11c7\u11c8\u0007\u000e"+ + "\u0000\u0000\u11c8\u11c9\u0007\u0013\u0000\u0000\u11c9\u11ca\u0007\u0007"+ + "\u0000\u0000\u11ca\u11cb\u0007\u000e\u0000\u0000\u11cb\u11cc\u0007\u0005"+ + "\u0000\u0000\u11cc\u11cd\u0007\u0010\u0000\u0000\u11cd\u035e\u0001\u0000"+ + "\u0000\u0000\u11ce\u11cf\u0007\u001a\u0000\u0000\u11cf\u11d0\u0007\u000f"+ + "\u0000\u0000\u11d0\u11d1\u0007\u0006\u0000\u0000\u11d1\u11d2\u0007\n\u0000"+ + "\u0000\u11d2\u11d3\u0007\u0006\u0000\u0000\u11d3\u11d4\u0007\n\u0000\u0000"+ + "\u11d4\u11d5\u0007\u000f\u0000\u0000\u11d5\u11d6\u0007\n\u0000\u0000\u11d6"+ + "\u11d7\u0007\u0007\u0000\u0000\u11d7\u11d8\u0007\u0010\u0000\u0000\u11d8"+ + "\u0360\u0001\u0000\u0000\u0000\u11d9\u11da\u0007\u001a\u0000\u0000\u11da"+ + "\u11db\u0007\u000f\u0000\u0000\u11db\u11dc\u0007\u0006\u0000\u0000\u11dc"+ + "\u11dd\u0007\n\u0000\u0000\u11dd\u11de\u0007\u001a\u0000\u0000\u11de\u11df"+ + "\u0007\u0011\u0000\u0000\u11df\u11e0\u0007\t\u0000\u0000\u11e0\u11e1\u0007"+ + "\u0010\u0000\u0000\u11e1\u11e2\u0007\t\u0000\u0000\u11e2\u0362\u0001\u0000"+ + "\u0000\u0000\u11e3\u11e4\u0007\u001a\u0000\u0000\u11e4\u11e5\u0007\u000f"+ + "\u0000\u0000\u11e5\u11e6\u0007\u0006\u0000\u0000\u11e6\u11e7\u0007\u0019"+ + "\u0000\u0000\u11e7\u11e8\u0007\u0013\u0000\u0000\u11e8\u11e9\u0007\r\u0000"+ + "\u0000\u11e9\u11ea\u0007\n\u0000\u0000\u11ea\u11eb\u0007\t\u0000\u0000"+ + "\u11eb\u11ec\u0007\u0010\u0000\u0000\u11ec\u0364\u0001\u0000\u0000\u0000"+ + "\u11ed\u11ee\u0007\u001a\u0000\u0000\u11ee\u11ef\u0007\u000f\u0000\u0000"+ + "\u11ef\u11f0\u0007\u0006\u0000\u0000\u11f0\u11f1\u0007\u0018\u0000\u0000"+ + "\u11f1\u11f2\u0007\u0005\u0000\u0000\u11f2\u11f3\u0007\r\u0000\u0000\u11f3"+ + "\u11f4\u0007\t\u0000\u0000\u11f4\u11f5\u0007\n\u0000\u0000\u11f5\u0366"+ + "\u0001\u0000\u0000\u0000\u11f6\u11f7\u0007\u001a\u0000\u0000\u11f7\u11f8"+ + "\u0007\u000f\u0000\u0000\u11f8\u11f9\u0007\u0006\u0000\u0000\u11f9\u11fa"+ + "\u0007\u0018\u0000\u0000\u11fa\u11fb\u0007\u0011\u0000\u0000\u11fb\u0368"+ + "\u0001\u0000\u0000\u0000\u11fc\u11fd\u0007\u001a\u0000\u0000\u11fd\u11fe"+ + "\u0007\u000f\u0000\u0000\u11fe\u11ff\u0007\u0006\u0000\u0000\u11ff\u1200"+ + "\u0007\r\u0000\u0000\u1200\u1201\u0007\u0013\u0000\u0000\u1201\u1202\u0007"+ + "\u0013\u0000\u0000\u1202\u1203\u0007\u0010\u0000\u0000\u1203\u036a\u0001"+ + "\u0000\u0000\u0000\u1204\u1205\u0007\u001a\u0000\u0000\u1205\u1206\u0007"+ + "\u000f\u0000\u0000\u1206\u1207\u0007\u0006\u0000\u0000\u1207\u1208\u0007"+ + "\t\u0000\u0000\u1208\u1209\u0007\n\u0000\u0000\u1209\u120a\u0007\r\u0000"+ + "\u0000\u120a\u120b\u0007\u0011\u0000\u0000\u120b\u120c\u0007\u0005\u0000"+ + "\u0000\u120c\u120d\u0007\u0006\u0000\u0000\u120d\u120e\u0007\u0011\u0000"+ + "\u0000\u120e\u120f\u0007\u000b\u0000\u0000\u120f\u1210\u0007\n\u0000\u0000"+ + "\u1210\u036c\u0001\u0000\u0000\u0000\u1211\u1212\u0007\u000e\u0000\u0000"+ + "\u1212\u1213\u0007\u0005\u0000\u0000\u1213\u1214\u0007\u0006\u0000\u0000"+ + "\u1214\u1215\u0007\u0006\u0000\u0000\u1215\u036e\u0001\u0000\u0000\u0000"+ + "\u1216\u1217\u0007\u000e\u0000\u0000\u1217\u1218\u0007\u0016\u0000\u0000"+ + "\u1218\u1219\u0007\r\u0000\u0000\u1219\u121a\u0007\r\u0000\u0000\u121a"+ + "\u121b\u0007\n\u0000\u0000\u121b\u121c\u0007\u0007\u0000\u0000\u121c\u121d"+ + "\u0007\u0010\u0000\u0000\u121d\u0370\u0001\u0000\u0000\u0000\u121e\u121f"+ + "\u0007\u0005\u0000\u0000\u121f\u1220\u0007\u0010\u0000\u0000\u1220\u1221"+ + "\u0007\u0010\u0000\u0000\u1221\u1222\u0007\u0005\u0000\u0000\u1222\u1223"+ + "\u0007\u000e\u0000\u0000\u1223\u1224\u0007\u0014\u0000\u0000\u1224\u0372"+ + "\u0001\u0000\u0000\u0000\u1225\u1226\u0007\f\u0000\u0000\u1226\u1227\u0007"+ + "\n\u0000\u0000\u1227\u1228\u0007\u0010\u0000\u0000\u1228\u1229\u0007\u0005"+ + "\u0000\u0000\u1229\u122a\u0007\u000e\u0000\u0000\u122a\u122b\u0007\u0014"+ + "\u0000\u0000\u122b\u0374\u0001\u0000\u0000\u0000\u122c\u122d\u0007\n\u0000"+ + "\u0000\u122d\u122e\u0007\u001a\u0000\u0000\u122e\u122f\u0007\u0018\u0000"+ + "\u0000\u122f\u1230\u0007\r\u0000\u0000\u1230\u1231\u0007\n\u0000\u0000"+ + "\u1231\u1232\u0007\t\u0000\u0000\u1232\u1233\u0007\t\u0000\u0000\u1233"+ + "\u1234\u0007\u0011\u0000\u0000\u1234\u1235\u0007\u0013\u0000\u0000\u1235"+ + "\u1236\u0007\u0007\u0000\u0000\u1236\u0376\u0001\u0000\u0000\u0000\u1237"+ + "\u1238\u0007\u0017\u0000\u0000\u1238\u1239\u0007\n\u0000\u0000\u1239\u123a"+ + "\u0007\u0007\u0000\u0000\u123a\u123b\u0007\n\u0000\u0000\u123b\u123c\u0007"+ + "\r\u0000\u0000\u123c\u123d\u0007\u0005\u0000\u0000\u123d\u123e\u0007\u0010"+ + "\u0000\u0000\u123e\u123f\u0007\n\u0000\u0000\u123f\u1240\u0007\f\u0000"+ + "\u0000\u1240\u0378\u0001\u0000\u0000\u0000\u1241\u1242\u0007\u0006\u0000"+ + "\u0000\u1242\u1243\u0007\u0013\u0000\u0000\u1243\u1244\u0007\u0017\u0000"+ + "\u0000\u1244\u1245\u0007\u0017\u0000\u0000\u1245\u1246\u0007\n\u0000\u0000"+ + "\u1246\u1247\u0007\f\u0000\u0000\u1247\u037a\u0001\u0000\u0000\u0000\u1248"+ + "\u1249\u0007\t\u0000\u0000\u1249\u124a\u0007\u0010\u0000\u0000\u124a\u124b"+ + "\u0007\u0013\u0000\u0000\u124b\u124c\u0007\r\u0000\u0000\u124c\u124d\u0007"+ + "\n\u0000\u0000\u124d\u124e\u0007\f\u0000\u0000\u124e\u037c\u0001\u0000"+ + "\u0000\u0000\u124f\u1250\u0007\u0011\u0000\u0000\u1250\u1251\u0007\u0007"+ + "\u0000\u0000\u1251\u1252\u0007\u000e\u0000\u0000\u1252\u1253\u0007\u0006"+ + "\u0000\u0000\u1253\u1254\u0007\u0016\u0000\u0000\u1254\u1255\u0007\f\u0000"+ + "\u0000\u1255\u1256\u0007\n\u0000\u0000\u1256\u037e\u0001\u0000\u0000\u0000"+ + "\u1257\u1258\u0007\r\u0000\u0000\u1258\u1259\u0007\u0013\u0000\u0000\u1259"+ + "\u125a\u0007\u0016\u0000\u0000\u125a\u125b\u0007\u0010\u0000\u0000\u125b"+ + "\u125c\u0007\u0011\u0000\u0000\u125c\u125d\u0007\u0007\u0000\u0000\u125d"+ + "\u125e\u0007\n\u0000\u0000\u125e\u0380\u0001\u0000\u0000\u0000\u125f\u1260"+ + "\u0007\u0010\u0000\u0000\u1260\u1261\u0007\r\u0000\u0000\u1261\u1262\u0007"+ + "\u0005\u0000\u0000\u1262\u1263\u0007\u0007\u0000\u0000\u1263\u1264\u0007"+ + "\t\u0000\u0000\u1264\u1265\u0007"; + private static final String _serializedATNSegment2 = + "\u0019\u0000\u0000\u1265\u1266\u0007\u0013\u0000\u0000\u1266\u1267\u0007"+ + "\r\u0000\u0000\u1267\u1268\u0007\u000f\u0000\u0000\u1268\u0382\u0001\u0000"+ + "\u0000\u0000\u1269\u126a\u0007\u0011\u0000\u0000\u126a\u126b\u0007\u000f"+ + "\u0000\u0000\u126b\u126c\u0007\u0018\u0000\u0000\u126c\u126d\u0007\u0013"+ + "\u0000\u0000\u126d\u126e\u0007\r\u0000\u0000\u126e\u126f\u0007\u0010\u0000"+ + "\u0000\u126f\u0384\u0001\u0000\u0000\u0000\u1270\u1271\u0007\u0018\u0000"+ + "\u0000\u1271\u1272\u0007\u0013\u0000\u0000\u1272\u1273\u0007\u0006\u0000"+ + "\u0000\u1273\u1274\u0007\u0011\u0000\u0000\u1274\u1275\u0007\u000e\u0000"+ + "\u0000\u1275\u1276\u0007\b\u0000\u0000\u1276\u0386\u0001\u0000\u0000\u0000"+ + "\u1277\u1278\u0007\u000f\u0000\u0000\u1278\u1279\u0007\n\u0000\u0000\u1279"+ + "\u127a\u0007\u0010\u0000\u0000\u127a\u127b\u0007\u0014\u0000\u0000\u127b"+ + "\u127c\u0007\u0013\u0000\u0000\u127c\u127d\u0007\f\u0000\u0000\u127d\u0388"+ + "\u0001\u0000\u0000\u0000\u127e\u127f\u0007\r\u0000\u0000\u127f\u1280\u0007"+ + "\n\u0000\u0000\u1280\u1281\u0007\u0019\u0000\u0000\u1281\u1282\u0007\n"+ + "\u0000\u0000\u1282\u1283\u0007\r\u0000\u0000\u1283\u1284\u0007\n\u0000"+ + "\u0000\u1284\u1285\u0007\u0007\u0000\u0000\u1285\u1286\u0007\u000e\u0000"+ + "\u0000\u1286\u1287\u0007\u0011\u0000\u0000\u1287\u1288\u0007\u0007\u0000"+ + "\u0000\u1288\u1289\u0007\u0017\u0000\u0000\u1289\u038a\u0001\u0000\u0000"+ + "\u0000\u128a\u128b\u0007\u0007\u0000\u0000\u128b\u128c\u0007\n\u0000\u0000"+ + "\u128c\u128d\u0007\u001d\u0000\u0000\u128d\u038c\u0001\u0000\u0000\u0000"+ + "\u128e\u128f\u0007\u0013\u0000\u0000\u128f\u1290\u0007\u0006\u0000\u0000"+ + "\u1290\u1291\u0007\f\u0000\u0000\u1291\u038e\u0001\u0000\u0000\u0000\u1292"+ + "\u1293\u0007\u001b\u0000\u0000\u1293\u1294\u0007\u0005\u0000\u0000\u1294"+ + "\u1295\u0007\u0006\u0000\u0000\u1295\u1296\u0007\u0016\u0000\u0000\u1296"+ + "\u1297\u0007\n\u0000\u0000\u1297\u0390\u0001\u0000\u0000\u0000\u1298\u1299"+ + "\u0007\t\u0000\u0000\u1299\u129a\u0007\u0016\u0000\u0000\u129a\u129b\u0007"+ + "\u0012\u0000\u0000\u129b\u129c\u0007\t\u0000\u0000\u129c\u129d\u0007\u000e"+ + "\u0000\u0000\u129d\u129e\u0007\r\u0000\u0000\u129e\u129f\u0007\u0011\u0000"+ + "\u0000\u129f\u12a0\u0007\u0018\u0000\u0000\u12a0\u12a1\u0007\u0010\u0000"+ + "\u0000\u12a1\u12a2\u0007\u0011\u0000\u0000\u12a2\u12a3\u0007\u0013\u0000"+ + "\u0000\u12a3\u12a4\u0007\u0007\u0000\u0000\u12a4\u0392\u0001\u0000\u0000"+ + "\u0000\u12a5\u12a6\u0007\u0018\u0000\u0000\u12a6\u12a7\u0007\u0016\u0000"+ + "\u0000\u12a7\u12a8\u0007\u0012\u0000\u0000\u12a8\u12a9\u0007\u0006\u0000"+ + "\u0000\u12a9\u12aa\u0007\u0011\u0000\u0000\u12aa\u12ab\u0007\u000e\u0000"+ + "\u0000\u12ab\u12ac\u0007\u0005\u0000\u0000\u12ac\u12ad\u0007\u0010\u0000"+ + "\u0000\u12ad\u12ae\u0007\u0011\u0000\u0000\u12ae\u12af\u0007\u0013\u0000"+ + "\u0000\u12af\u12b0\u0007\u0007\u0000\u0000\u12b0\u0394\u0001\u0000\u0000"+ + "\u0000\u12b1\u12b2\u0007\u0013\u0000\u0000\u12b2\u12b3\u0007\u0016\u0000"+ + "\u0000\u12b3\u12b4\u0007\u0010\u0000\u0000\u12b4\u0396\u0001\u0000\u0000"+ + "\u0000\u12b5\u12b6\u0007\n\u0000\u0000\u12b6\u12b7\u0007\u0007\u0000\u0000"+ + "\u12b7\u12b8\u0007\f\u0000\u0000\u12b8\u0398\u0001\u0000\u0000\u0000\u12b9"+ + "\u12ba\u0007\r\u0000\u0000\u12ba\u12bb\u0007\u0013\u0000\u0000\u12bb\u12bc"+ + "\u0007\u0016\u0000\u0000\u12bc\u12bd\u0007\u0010\u0000\u0000\u12bd\u12be"+ + "\u0007\u0011\u0000\u0000\u12be\u12bf\u0007\u0007\u0000\u0000\u12bf\u12c0"+ + "\u0007\n\u0000\u0000\u12c0\u12c1\u0007\t\u0000\u0000\u12c1\u039a\u0001"+ + "\u0000\u0000\u0000\u12c2\u12c3\u0007\t\u0000\u0000\u12c3\u12c4\u0007\u000e"+ + "\u0000\u0000\u12c4\u12c5\u0007\u0014\u0000\u0000\u12c5\u12c6\u0007\n\u0000"+ + "\u0000\u12c6\u12c7\u0007\u000f\u0000\u0000\u12c7\u12c8\u0007\u0005\u0000"+ + "\u0000\u12c8\u12c9\u0007\t\u0000\u0000\u12c9\u039c\u0001\u0000\u0000\u0000"+ + "\u12ca\u12cb\u0007\u0018\u0000\u0000\u12cb\u12cc\u0007\r\u0000\u0000\u12cc"+ + "\u12cd\u0007\u0013\u0000\u0000\u12cd\u12ce\u0007\u000e\u0000\u0000\u12ce"+ + "\u12cf\u0007\n\u0000\u0000\u12cf\u12d0\u0007\f\u0000\u0000\u12d0\u12d1"+ + "\u0007\u0016\u0000\u0000\u12d1\u12d2\u0007\r\u0000\u0000\u12d2\u12d3\u0007"+ + "\n\u0000\u0000\u12d3\u12d4\u0007\t\u0000\u0000\u12d4\u039e\u0001\u0000"+ + "\u0000\u0000\u12d5\u12d6\u0007\u0011\u0000\u0000\u12d6\u12d7\u0007\u0007"+ + "\u0000\u0000\u12d7\u12d8\u0007\u0018\u0000\u0000\u12d8\u12d9\u0007\u0016"+ + "\u0000\u0000\u12d9\u12da\u0007\u0010\u0000\u0000\u12da\u03a0\u0001\u0000"+ + "\u0000\u0000\u12db\u12dc\u0007\t\u0000\u0000\u12dc\u12dd\u0007\u0016\u0000"+ + "\u0000\u12dd\u12de\u0007\u0018\u0000\u0000\u12de\u12df\u0007\u0018\u0000"+ + "\u0000\u12df\u12e0\u0007\u0013\u0000\u0000\u12e0\u12e1\u0007\r\u0000\u0000"+ + "\u12e1\u12e2\u0007\u0010\u0000\u0000\u12e2\u03a2\u0001\u0000\u0000\u0000"+ + "\u12e3\u12e4\u0007\u0018\u0000\u0000\u12e4\u12e5\u0007\u0005\u0000\u0000"+ + "\u12e5\u12e6\u0007\r\u0000\u0000\u12e6\u12e7\u0007\u0005\u0000\u0000\u12e7"+ + "\u12e8\u0007\u0006\u0000\u0000\u12e8\u12e9\u0007\u0006\u0000\u0000\u12e9"+ + "\u12ea\u0007\n\u0000\u0000\u12ea\u12eb\u0007\u0006\u0000\u0000\u12eb\u03a4"+ + "\u0001\u0000\u0000\u0000\u12ec\u12ed\u0007\t\u0000\u0000\u12ed\u12ee\u0007"+ + "\u001c\u0000\u0000\u12ee\u12ef\u0007\u0006\u0000\u0000\u12ef\u03a6\u0001"+ + "\u0000\u0000\u0000\u12f0\u12f1\u0007\f\u0000\u0000\u12f1\u12f2\u0007\n"+ + "\u0000\u0000\u12f2\u12f3\u0007\u0018\u0000\u0000\u12f3\u12f4\u0007\n\u0000"+ + "\u0000\u12f4\u12f5\u0007\u0007\u0000\u0000\u12f5\u12f6\u0007\f\u0000\u0000"+ + "\u12f6\u12f7\u0007\t\u0000\u0000\u12f7\u03a8\u0001\u0000\u0000\u0000\u12f8"+ + "\u12f9\u0007\u0013\u0000\u0000\u12f9\u12fa\u0007\u001b\u0000\u0000\u12fa"+ + "\u12fb\u0007\n\u0000\u0000\u12fb\u12fc\u0007\r\u0000\u0000\u12fc\u12fd"+ + "\u0007\r\u0000\u0000\u12fd\u12fe\u0007\u0011\u0000\u0000\u12fe\u12ff\u0007"+ + "\f\u0000\u0000\u12ff\u1300\u0007\u0011\u0000\u0000\u1300\u1301\u0007\u0007"+ + "\u0000\u0000\u1301\u1302\u0007\u0017\u0000\u0000\u1302\u03aa\u0001\u0000"+ + "\u0000\u0000\u1303\u1304\u0007\u000e\u0000\u0000\u1304\u1305\u0007\u0013"+ + "\u0000\u0000\u1305\u1306\u0007\u0007\u0000\u0000\u1306\u1307\u0007\u0019"+ + "\u0000\u0000\u1307\u1308\u0007\u0006\u0000\u0000\u1308\u1309\u0007\u0011"+ + "\u0000\u0000\u1309\u130a\u0007\u000e\u0000\u0000\u130a\u130b\u0007\u0010"+ + "\u0000\u0000\u130b\u03ac\u0001\u0000\u0000\u0000\u130c\u130d\u0007\t\u0000"+ + "\u0000\u130d\u130e\u0007\u0015\u0000\u0000\u130e\u130f\u0007\u0011\u0000"+ + "\u0000\u130f\u1310\u0007\u0018\u0000\u0000\u1310\u03ae\u0001\u0000\u0000"+ + "\u0000\u1311\u1312\u0007\u0006\u0000\u0000\u1312\u1313\u0007\u0013\u0000"+ + "\u0000\u1313\u1314\u0007\u000e\u0000\u0000\u1314\u1315\u0007\u0015\u0000"+ + "\u0000\u1315\u1316\u0007\n\u0000\u0000\u1316\u1317\u0007\f\u0000\u0000"+ + "\u1317\u03b0\u0001\u0000\u0000\u0000\u1318\u1319\u0007\u0010\u0000\u0000"+ + "\u1319\u131a\u0007\u0011\u0000\u0000\u131a\u131b\u0007\n\u0000\u0000\u131b"+ + "\u131c\u0007\t\u0000\u0000\u131c\u03b2\u0001\u0000\u0000\u0000\u131d\u131e"+ + "\u0007\r\u0000\u0000\u131e\u131f\u0007\u0013\u0000\u0000\u131f\u1320\u0007"+ + "\u0006\u0000\u0000\u1320\u1321\u0007\u0006\u0000\u0000\u1321\u1322\u0007"+ + "\u0016\u0000\u0000\u1322\u1323\u0007\u0018\u0000\u0000\u1323\u03b4\u0001"+ + "\u0000\u0000\u0000\u1324\u1325\u0007\u000e\u0000\u0000\u1325\u1326\u0007"+ + "\u0016\u0000\u0000\u1326\u1327\u0007\u0012\u0000\u0000\u1327\u1328\u0007"+ + "\n\u0000\u0000\u1328\u03b6\u0001\u0000\u0000\u0000\u1329\u132a\u0007\u0017"+ + "\u0000\u0000\u132a\u132b\u0007\r\u0000\u0000\u132b\u132c\u0007\u0013\u0000"+ + "\u0000\u132c\u132d\u0007\u0016\u0000\u0000\u132d\u132e\u0007\u0018\u0000"+ + "\u0000\u132e\u132f\u0007\u0011\u0000\u0000\u132f\u1330\u0007\u0007\u0000"+ + "\u0000\u1330\u1331\u0007\u0017\u0000\u0000\u1331\u03b8\u0001\u0000\u0000"+ + "\u0000\u1332\u1333\u0007\t\u0000\u0000\u1333\u1334\u0007\n\u0000\u0000"+ + "\u1334\u1335\u0007\u0010\u0000\u0000\u1335\u1336\u0007\t\u0000\u0000\u1336"+ + "\u03ba\u0001\u0000\u0000\u0000\u1337\u1338\u0007\u0010\u0000\u0000\u1338"+ + "\u1339\u0007\u0005\u0000\u0000\u1339\u133a\u0007\u0012\u0000\u0000\u133a"+ + "\u133b\u0007\u0006\u0000\u0000\u133b\u133c\u0007\n\u0000\u0000\u133c\u133d"+ + "\u0007\t\u0000\u0000\u133d\u133e\u0007\u0005\u0000\u0000\u133e\u133f\u0007"+ + "\u000f\u0000\u0000\u133f\u1340\u0007\u0018\u0000\u0000\u1340\u1341\u0007"+ + "\u0006\u0000\u0000\u1341\u1342\u0007\n\u0000\u0000\u1342\u03bc\u0001\u0000"+ + "\u0000\u0000\u1343\u1344\u0007\u0013\u0000\u0000\u1344\u1345\u0007\r\u0000"+ + "\u0000\u1345\u1346\u0007\f\u0000\u0000\u1346\u1347\u0007\u0011\u0000\u0000"+ + "\u1347\u1348\u0007\u0007\u0000\u0000\u1348\u1349\u0007\u0005\u0000\u0000"+ + "\u1349\u134a\u0007\u0006\u0000\u0000\u134a\u134b\u0007\u0011\u0000\u0000"+ + "\u134b\u134c\u0007\u0010\u0000\u0000\u134c\u134d\u0007\b\u0000\u0000\u134d"+ + "\u03be\u0001\u0000\u0000\u0000\u134e\u134f\u0007\u001a\u0000\u0000\u134f"+ + "\u1350\u0007\u000f\u0000\u0000\u1350\u1351\u0007\u0006\u0000\u0000\u1351"+ + "\u1352\u0007\u0010\u0000\u0000\u1352\u1353\u0007\u0005\u0000\u0000\u1353"+ + "\u1354\u0007\u0012\u0000\u0000\u1354\u1355\u0007\u0006\u0000\u0000\u1355"+ + "\u1356\u0007\n\u0000\u0000\u1356\u03c0\u0001\u0000\u0000\u0000\u1357\u1358"+ + "\u0007\u000e\u0000\u0000\u1358\u1359\u0007\u0013\u0000\u0000\u1359\u135a"+ + "\u0007\u0006\u0000\u0000\u135a\u135b\u0007\u0016\u0000\u0000\u135b\u135c"+ + "\u0007\u000f\u0000\u0000\u135c\u135d\u0007\u0007\u0000\u0000\u135d\u135e"+ + "\u0007\t\u0000\u0000\u135e\u03c2\u0001\u0000\u0000\u0000\u135f\u1360\u0007"+ + "\u001a\u0000\u0000\u1360\u1361\u0007\u000f\u0000\u0000\u1361\u1362\u0007"+ + "\u0006\u0000\u0000\u1362\u1363\u0007\u0007\u0000\u0000\u1363\u1364\u0007"+ + "\u0005\u0000\u0000\u1364\u1365\u0007\u000f\u0000\u0000\u1365\u1366\u0007"+ + "\n\u0000\u0000\u1366\u1367\u0007\t\u0000\u0000\u1367\u1368\u0007\u0018"+ + "\u0000\u0000\u1368\u1369\u0007\u0005\u0000\u0000\u1369\u136a\u0007\u000e"+ + "\u0000\u0000\u136a\u136b\u0007\n\u0000\u0000\u136b\u136c\u0007\t\u0000"+ + "\u0000\u136c\u03c4\u0001\u0000\u0000\u0000\u136d\u136e\u0007\r\u0000\u0000"+ + "\u136e\u136f\u0007\u0013\u0000\u0000\u136f\u1370\u0007\u001d\u0000\u0000"+ + "\u1370\u1371\u0007\u0010\u0000\u0000\u1371\u1372\u0007\b\u0000\u0000\u1372"+ + "\u1373\u0007\u0018\u0000\u0000\u1373\u1374\u0007\n\u0000\u0000\u1374\u03c6"+ + "\u0001\u0000\u0000\u0000\u1375\u1376\u0007\u0007\u0000\u0000\u1376\u1377"+ + "\u0007\u0013\u0000\u0000\u1377\u1378\u0007\r\u0000\u0000\u1378\u1379\u0007"+ + "\u000f\u0000\u0000\u1379\u137a\u0007\u0005\u0000\u0000\u137a\u137b\u0007"+ + "\u0006\u0000\u0000\u137b\u137c\u0007\u0011\u0000\u0000\u137c\u137d\u0007"+ + "\u000b\u0000\u0000\u137d\u137e\u0007\n\u0000\u0000\u137e\u137f\u0007\f"+ + "\u0000\u0000\u137f\u03c8\u0001\u0000\u0000\u0000\u1380\u1381\u0007\u001d"+ + "\u0000\u0000\u1381\u1382\u0007\u0011\u0000\u0000\u1382\u1383\u0007\u0010"+ + "\u0000\u0000\u1383\u1384\u0007\u0014\u0000\u0000\u1384\u1385\u0007\u0011"+ + "\u0000\u0000\u1385\u1386\u0007\u0007\u0000\u0000\u1386\u03ca\u0001\u0000"+ + "\u0000\u0000\u1387\u1388\u0007\u0019\u0000\u0000\u1388\u1389\u0007\u0011"+ + "\u0000\u0000\u1389\u138a\u0007\u0006\u0000\u0000\u138a\u138b\u0007\u0010"+ + "\u0000\u0000\u138b\u138c\u0007\n\u0000\u0000\u138c\u138d\u0007\r\u0000"+ + "\u0000\u138d\u03cc\u0001\u0000\u0000\u0000\u138e\u138f\u0007\u0017\u0000"+ + "\u0000\u138f\u1390\u0007\r\u0000\u0000\u1390\u1391\u0007\u0013\u0000\u0000"+ + "\u1391\u1392\u0007\u0016\u0000\u0000\u1392\u1393\u0007\u0018\u0000\u0000"+ + "\u1393\u1394\u0007\t\u0000\u0000\u1394\u03ce\u0001\u0000\u0000\u0000\u1395"+ + "\u1396\u0007\u0013\u0000\u0000\u1396\u1397\u0007\u0010\u0000\u0000\u1397"+ + "\u1398\u0007\u0014\u0000\u0000\u1398\u1399\u0007\n\u0000\u0000\u1399\u139a"+ + "\u0007\r\u0000\u0000\u139a\u139b\u0007\t\u0000\u0000\u139b\u03d0\u0001"+ + "\u0000\u0000\u0000\u139c\u139d\u0007\u0007\u0000\u0000\u139d\u139e\u0007"+ + "\u0019\u0000\u0000\u139e\u139f\u0007\u000e\u0000\u0000\u139f\u03d2\u0001"+ + "\u0000\u0000\u0000\u13a0\u13a1\u0007\u0007\u0000\u0000\u13a1\u13a2\u0007"+ + "\u0019\u0000\u0000\u13a2\u13a3\u0007\f\u0000\u0000\u13a3\u03d4\u0001\u0000"+ + "\u0000\u0000\u13a4\u13a5\u0007\u0007\u0000\u0000\u13a5\u13a6\u0007\u0019"+ + "\u0000\u0000\u13a6\u13a7\u0007\u0015\u0000\u0000\u13a7\u13a8\u0007\u000e"+ + "\u0000\u0000\u13a8\u03d6\u0001\u0000\u0000\u0000\u13a9\u13aa\u0007\u0007"+ + "\u0000\u0000\u13aa\u13ab\u0007\u0019\u0000\u0000\u13ab\u13ac\u0007\u0015"+ + "\u0000\u0000\u13ac\u13ad\u0007\f\u0000\u0000\u13ad\u03d8\u0001\u0000\u0000"+ + "\u0000\u13ae\u13af\u0007\u0016\u0000\u0000\u13af\u13b0\u0007\n\u0000\u0000"+ + "\u13b0\u13b1\u0007\t\u0000\u0000\u13b1\u13b2\u0007\u000e\u0000\u0000\u13b2"+ + "\u13b3\u0007\u0005\u0000\u0000\u13b3\u13b4\u0007\u0018\u0000\u0000\u13b4"+ + "\u13b5\u0007\n\u0000\u0000\u13b5\u03da\u0001\u0000\u0000\u0000\u13b6\u13b7"+ + "\u0007\u001b\u0000\u0000\u13b7\u13b8\u0007\u0011\u0000\u0000\u13b8\u13b9"+ + "\u0007\n\u0000\u0000\u13b9\u13ba\u0007\u001d\u0000\u0000\u13ba\u13bb\u0007"+ + "\t\u0000\u0000\u13bb\u03dc\u0001\u0000\u0000\u0000\u13bc\u13bd\u0007\u0007"+ + "\u0000\u0000\u13bd\u13be\u0007\u0013\u0000\u0000\u13be\u13bf\u0007\r\u0000"+ + "\u0000\u13bf\u13c0\u0007\u000f\u0000\u0000\u13c0\u13c1\u0007\u0005\u0000"+ + "\u0000\u13c1\u13c2\u0007\u0006\u0000\u0000\u13c2\u13c3\u0007\u0011\u0000"+ + "\u0000\u13c3\u13c4\u0007\u000b\u0000\u0000\u13c4\u13c5\u0007\n\u0000\u0000"+ + "\u13c5\u03de\u0001\u0000\u0000\u0000\u13c6\u13c7\u0007\f\u0000\u0000\u13c7"+ + "\u13c8\u0007\u0016\u0000\u0000\u13c8\u13c9\u0007\u000f\u0000\u0000\u13c9"+ + "\u13ca\u0007\u0018\u0000\u0000\u13ca\u03e0\u0001\u0000\u0000\u0000\u13cb"+ + "\u13cc\u0007\u0018\u0000\u0000\u13cc\u13cd\u0007\r\u0000\u0000\u13cd\u13ce"+ + "\u0007\u0011\u0000\u0000\u13ce\u13cf\u0007\u0007\u0000\u0000\u13cf\u13d0"+ + "\u0007\u0010\u0000\u0000\u13d0\u13d1\u0005_\u0000\u0000\u13d1\u13d2\u0007"+ + "\t\u0000\u0000\u13d2\u13d3\u0007\u0010\u0000\u0000\u13d3\u13d4\u0007\r"+ + "\u0000\u0000\u13d4\u13d5\u0007\u0011\u0000\u0000\u13d5\u13d6\u0007\u000e"+ + "\u0000\u0000\u13d6\u13d7\u0007\u0010\u0000\u0000\u13d7\u13d8\u0005_\u0000"+ + "\u0000\u13d8\u13d9\u0007\u0018\u0000\u0000\u13d9\u13da\u0007\u0005\u0000"+ + "\u0000\u13da\u13db\u0007\r\u0000\u0000\u13db\u13dc\u0007\u0005\u0000\u0000"+ + "\u13dc\u13dd\u0007\u000f\u0000\u0000\u13dd\u13de\u0007\t\u0000\u0000\u13de"+ + "\u03e2\u0001\u0000\u0000\u0000\u13df\u13e0\u0007\u001b\u0000\u0000\u13e0"+ + "\u13e1\u0007\u0005\u0000\u0000\u13e1\u13e2\u0007\r\u0000\u0000\u13e2\u13e3"+ + "\u0007\u0011\u0000\u0000\u13e3\u13e4\u0007\u0005\u0000\u0000\u13e4\u13e5"+ + "\u0007\u0012\u0000\u0000\u13e5\u13e6\u0007\u0006\u0000\u0000\u13e6\u13e7"+ + "\u0007\n\u0000\u0000\u13e7\u13e8\u0005_\u0000\u0000\u13e8\u13e9\u0007"+ + "\u000e\u0000\u0000\u13e9\u13ea\u0007\u0013\u0000\u0000\u13ea\u13eb\u0007"+ + "\u0007\u0000\u0000\u13eb\u13ec\u0007\u0019\u0000\u0000\u13ec\u13ed\u0007"+ + "\u0006\u0000\u0000\u13ed\u13ee\u0007\u0011\u0000\u0000\u13ee\u13ef\u0007"+ + "\u000e\u0000\u0000\u13ef\u13f0\u0007\u0010\u0000\u0000\u13f0\u03e4\u0001"+ + "\u0000\u0000\u0000\u13f1\u13f2\u0007\n\u0000\u0000\u13f2\u13f3\u0007\r"+ + "\u0000\u0000\u13f3\u13f4\u0007\r\u0000\u0000\u13f4\u13f5\u0007\u0013\u0000"+ + "\u0000\u13f5\u13f6\u0007\r\u0000\u0000\u13f6\u03e6\u0001\u0000\u0000\u0000"+ + "\u13f7\u13f8\u0007\u0016\u0000\u0000\u13f8\u13f9\u0007\t\u0000\u0000\u13f9"+ + "\u13fa\u0007\n\u0000\u0000\u13fa\u13fb\u0005_\u0000\u0000\u13fb\u13fc"+ + "\u0007\u001b\u0000\u0000\u13fc\u13fd\u0007\u0005\u0000\u0000\u13fd\u13fe"+ + "\u0007\r\u0000\u0000\u13fe\u13ff\u0007\u0011\u0000\u0000\u13ff\u1400\u0007"+ + "\u0005\u0000\u0000\u1400\u1401\u0007\u0012\u0000\u0000\u1401\u1402\u0007"+ + "\u0006\u0000\u0000\u1402\u1403\u0007\n\u0000\u0000\u1403\u03e8\u0001\u0000"+ + "\u0000\u0000\u1404\u1405\u0007\u0016\u0000\u0000\u1405\u1406\u0007\t\u0000"+ + "\u0000\u1406\u1407\u0007\n\u0000\u0000\u1407\u1408\u0005_\u0000\u0000"+ + "\u1408\u1409\u0007\u000e\u0000\u0000\u1409\u140a\u0007\u0013\u0000\u0000"+ + "\u140a\u140b\u0007\u0006\u0000\u0000\u140b\u140c\u0007\u0016\u0000\u0000"+ + "\u140c\u140d\u0007\u000f\u0000\u0000\u140d\u140e\u0007\u0007\u0000\u0000"+ + "\u140e\u03ea\u0001\u0000\u0000\u0000\u140f\u1410\u0007\u0005\u0000\u0000"+ + "\u1410\u1411\u0007\u0006\u0000\u0000\u1411\u1412\u0007\u0011\u0000\u0000"+ + "\u1412\u1413\u0007\u0005\u0000\u0000\u1413\u1414\u0007\t\u0000\u0000\u1414"+ + "\u03ec\u0001\u0000\u0000\u0000\u1415\u1416\u0007\u000e\u0000\u0000\u1416"+ + "\u1417\u0007\u0013\u0000\u0000\u1417\u1418\u0007\u0007\u0000\u0000\u1418"+ + "\u1419\u0007\t\u0000\u0000\u1419\u141a\u0007\u0010\u0000\u0000\u141a\u141b"+ + "\u0007\u0005\u0000\u0000\u141b\u141c\u0007\u0007\u0000\u0000\u141c\u141d"+ + "\u0007\u0010\u0000\u0000\u141d\u03ee\u0001\u0000\u0000\u0000\u141e\u141f"+ + "\u0007\u0018\u0000\u0000\u141f\u1420\u0007\n\u0000\u0000\u1420\u1421\u0007"+ + "\r\u0000\u0000\u1421\u1422\u0007\u0019\u0000\u0000\u1422\u1423\u0007\u0013"+ + "\u0000\u0000\u1423\u1424\u0007\r\u0000\u0000\u1424\u1425\u0007\u000f\u0000"+ + "\u0000\u1425\u03f0\u0001\u0000\u0000\u0000\u1426\u1427\u0007\u0017\u0000"+ + "\u0000\u1427\u1428\u0007\n\u0000\u0000\u1428\u1429\u0007\u0010\u0000\u0000"+ + "\u1429\u03f2\u0001\u0000\u0000\u0000\u142a\u142b\u0007\f\u0000\u0000\u142b"+ + "\u142c\u0007\u0011\u0000\u0000\u142c\u142d\u0007\u0005\u0000\u0000\u142d"+ + "\u142e\u0007\u0017\u0000\u0000\u142e\u142f\u0007\u0007\u0000\u0000\u142f"+ + "\u1430\u0007\u0013\u0000\u0000\u1430\u1431\u0007\t\u0000\u0000\u1431\u1432"+ + "\u0007\u0010\u0000\u0000\u1432\u1433\u0007\u0011\u0000\u0000\u1433\u1434"+ + "\u0007\u000e\u0000\u0000\u1434\u1435\u0007\t\u0000\u0000\u1435\u03f4\u0001"+ + "\u0000\u0000\u0000\u1436\u1437\u0007\t\u0000\u0000\u1437\u1438\u0007\u0010"+ + "\u0000\u0000\u1438\u1439\u0007\u0005\u0000\u0000\u1439\u143a\u0007\u000e"+ + "\u0000\u0000\u143a\u143b\u0007\u0015\u0000\u0000\u143b\u143c\u0007\n\u0000"+ + "\u0000\u143c\u143d\u0007\f\u0000\u0000\u143d\u03f6\u0001\u0000\u0000\u0000"+ + "\u143e\u143f\u0007\n\u0000\u0000\u143f\u1440\u0007\u0006\u0000\u0000\u1440"+ + "\u1441\u0007\t\u0000\u0000\u1441\u1442\u0007\u0011\u0000\u0000\u1442\u1443"+ + "\u0007\u0019\u0000\u0000\u1443\u03f8\u0001\u0000\u0000\u0000\u1444\u1445"+ + "\u0007\u001d\u0000\u0000\u1445\u1446\u0007\u0014\u0000\u0000\u1446\u1447"+ + "\u0007\u0011\u0000\u0000\u1447\u1448\u0007\u0006\u0000\u0000\u1448\u1449"+ + "\u0007\n\u0000\u0000\u1449\u03fa\u0001\u0000\u0000\u0000\u144a\u144b\u0007"+ + "\r\u0000\u0000\u144b\u144c\u0007\n\u0000\u0000\u144c\u144d\u0007\u001b"+ + "\u0000\u0000\u144d\u144e\u0007\n\u0000\u0000\u144e\u144f\u0007\r\u0000"+ + "\u0000\u144f\u1450\u0007\t\u0000\u0000\u1450\u1451\u0007\n\u0000\u0000"+ + "\u1451\u03fc\u0001\u0000\u0000\u0000\u1452\u1453\u0007\u0019\u0000\u0000"+ + "\u1453\u1454\u0007\u0013\u0000\u0000\u1454\u1455\u0007\r\u0000\u0000\u1455"+ + "\u1456\u0007\n\u0000\u0000\u1456\u1457\u0007\u0005\u0000\u0000\u1457\u1458"+ + "\u0007\u000e\u0000\u0000\u1458\u1459\u0007\u0014\u0000\u0000\u1459\u03fe"+ + "\u0001\u0000\u0000\u0000\u145a\u145b\u0007\t\u0000\u0000\u145b\u145c\u0007"+ + "\u0006\u0000\u0000\u145c\u145d\u0007\u0011\u0000\u0000\u145d\u145e\u0007"+ + "\u000e\u0000\u0000\u145e\u145f\u0007\n\u0000\u0000\u145f\u0400\u0001\u0000"+ + "\u0000\u0000\u1460\u1461\u0007\n\u0000\u0000\u1461\u1462\u0007\u001a\u0000"+ + "\u0000\u1462\u1463\u0007\u0011\u0000\u0000\u1463\u1464\u0007\u0010\u0000"+ + "\u0000\u1464\u0402\u0001\u0000\u0000\u0000\u1465\u1466\u0007\r\u0000\u0000"+ + "\u1466\u1467\u0007\n\u0000\u0000\u1467\u1468\u0007\u0010\u0000\u0000\u1468"+ + "\u1469\u0007\u0016\u0000\u0000\u1469\u146a\u0007\r\u0000\u0000\u146a\u146b"+ + "\u0007\u0007\u0000\u0000\u146b\u0404\u0001\u0000\u0000\u0000\u146c\u146d"+ + "\u0007\u001c\u0000\u0000\u146d\u146e\u0007\u0016\u0000\u0000\u146e\u146f"+ + "\u0007\n\u0000\u0000\u146f\u1470\u0007\r\u0000\u0000\u1470\u1471\u0007"+ + "\b\u0000\u0000\u1471\u0406\u0001\u0000\u0000\u0000\u1472\u1473\u0007\r"+ + "\u0000\u0000\u1473\u1474\u0007\u0005\u0000\u0000\u1474\u1475\u0007\u0011"+ + "\u0000\u0000\u1475\u1476\u0007\t\u0000\u0000\u1476\u1477\u0007\n\u0000"+ + "\u0000\u1477\u0408\u0001\u0000\u0000\u0000\u1478\u1479\u0007\t\u0000\u0000"+ + "\u1479\u147a\u0007\u001c\u0000\u0000\u147a\u147b\u0007\u0006\u0000\u0000"+ + "\u147b\u147c\u0007\t\u0000\u0000\u147c\u147d\u0007\u0010\u0000\u0000\u147d"+ + "\u147e\u0007\u0005\u0000\u0000\u147e\u147f\u0007\u0010\u0000\u0000\u147f"+ + "\u1480\u0007\n\u0000\u0000\u1480\u040a\u0001\u0000\u0000\u0000\u1481\u1482"+ + "\u0007\f\u0000\u0000\u1482\u1483\u0007\n\u0000\u0000\u1483\u1484\u0007"+ + "\u0012\u0000\u0000\u1484\u1485\u0007\u0016\u0000\u0000\u1485\u1486\u0007"+ + "\u0017\u0000\u0000\u1486\u040c\u0001\u0000\u0000\u0000\u1487\u1488\u0007"+ + "\u0006\u0000\u0000\u1488\u1489\u0007\u0013\u0000\u0000\u1489\u148a\u0007"+ + "\u0017\u0000\u0000\u148a\u040e\u0001\u0000\u0000\u0000\u148b\u148c\u0007"+ + "\u0011\u0000\u0000\u148c\u148d\u0007\u0007\u0000\u0000\u148d\u148e\u0007"+ + "\u0019\u0000\u0000\u148e\u148f\u0007\u0013\u0000\u0000\u148f\u0410\u0001"+ + "\u0000\u0000\u0000\u1490\u1491\u0007\u0007\u0000\u0000\u1491\u1492\u0007"+ + "\u0013\u0000\u0000\u1492\u1493\u0007\u0010\u0000\u0000\u1493\u1494\u0007"+ + "\u0011\u0000\u0000\u1494\u1495\u0007\u000e\u0000\u0000\u1495\u1496\u0007"+ + "\n\u0000\u0000\u1496\u0412\u0001\u0000\u0000\u0000\u1497\u1498\u0007\u001d"+ + "\u0000\u0000\u1498\u1499\u0007\u0005\u0000\u0000\u1499\u149a\u0007\r\u0000"+ + "\u0000\u149a\u149b\u0007\u0007\u0000\u0000\u149b\u149c\u0007\u0011\u0000"+ + "\u0000\u149c\u149d\u0007\u0007\u0000\u0000\u149d\u149e\u0007\u0017\u0000"+ + "\u0000\u149e\u0414\u0001\u0000\u0000\u0000\u149f\u14a0\u0007\n\u0000\u0000"+ + "\u14a0\u14a1\u0007\u001a\u0000\u0000\u14a1\u14a2\u0007\u000e\u0000\u0000"+ + "\u14a2\u14a3\u0007\n\u0000\u0000\u14a3\u14a4\u0007\u0018\u0000\u0000\u14a4"+ + "\u14a5\u0007\u0010\u0000\u0000\u14a5\u14a6\u0007\u0011\u0000\u0000\u14a6"+ + "\u14a7\u0007\u0013\u0000\u0000\u14a7\u14a8\u0007\u0007\u0000\u0000\u14a8"+ + "\u0416\u0001\u0000\u0000\u0000\u14a9\u14aa\u0007\u0005\u0000\u0000\u14aa"+ + "\u14ab\u0007\t\u0000\u0000\u14ab\u14ac\u0007\t\u0000\u0000\u14ac\u14ad"+ + "\u0007\n\u0000\u0000\u14ad\u14ae\u0007\r\u0000\u0000\u14ae\u14af\u0007"+ + "\u0010\u0000\u0000\u14af\u0418\u0001\u0000\u0000\u0000\u14b0\u14b1\u0007"+ + "\u0006\u0000\u0000\u14b1\u14b2\u0007\u0013\u0000\u0000\u14b2\u14b3\u0007"+ + "\u0013\u0000\u0000\u14b3\u14b4\u0007\u0018\u0000\u0000\u14b4\u041a\u0001"+ + "\u0000\u0000\u0000\u14b5\u14b6\u0007\u0013\u0000\u0000\u14b6\u14b7\u0007"+ + "\u0018\u0000\u0000\u14b7\u14b8\u0007\n\u0000\u0000\u14b8\u14b9\u0007\u0007"+ + "\u0000\u0000\u14b9\u041c\u0001\u0000\u0000\u0000\u14ba\u14bb\u0007\u0005"+ + "\u0000\u0000\u14bb\u14bc\u0007\u0012\u0000\u0000\u14bc\u14bd\u0007\t\u0000"+ + "\u0000\u14bd\u041e\u0001\u0000\u0000\u0000\u14be\u14bf\u0007\u000e\u0000"+ + "\u0000\u14bf\u14c0\u0007\u0012\u0000\u0000\u14c0\u14c1\u0007\r\u0000\u0000"+ + "\u14c1\u14c2\u0007\u0010\u0000\u0000\u14c2\u0420\u0001\u0000\u0000\u0000"+ + "\u14c3\u14c4\u0007\u000e\u0000\u0000\u14c4\u14c5\u0007\n\u0000\u0000\u14c5"+ + "\u14c6\u0007\u0011\u0000\u0000\u14c6\u14c7\u0007\u0006\u0000\u0000\u14c7"+ + "\u0422\u0001\u0000\u0000\u0000\u14c8\u14c9\u0007\u000e\u0000\u0000\u14c9"+ + "\u14ca\u0007\n\u0000\u0000\u14ca\u14cb\u0007\u0011\u0000\u0000\u14cb\u14cc"+ + "\u0007\u0006\u0000\u0000\u14cc\u14cd\u0007\u0011\u0000\u0000\u14cd\u14ce"+ + "\u0007\u0007\u0000\u0000\u14ce\u14cf\u0007\u0017\u0000\u0000\u14cf\u0424"+ + "\u0001\u0000\u0000\u0000\u14d0\u14d1\u0007\f\u0000\u0000\u14d1\u14d2\u0007"+ + "\n\u0000\u0000\u14d2\u14d3\u0007\u0017\u0000\u0000\u14d3\u14d4\u0007\r"+ + "\u0000\u0000\u14d4\u14d5\u0007\n\u0000\u0000\u14d5\u14d6\u0007\n\u0000"+ + "\u0000\u14d6\u14d7\u0007\t\u0000\u0000\u14d7\u0426\u0001\u0000\u0000\u0000"+ + "\u14d8\u14d9\u0007\f\u0000\u0000\u14d9\u14da\u0007\u0011\u0000\u0000\u14da"+ + "\u14db\u0007\u001b\u0000\u0000\u14db\u0428\u0001\u0000\u0000\u0000\u14dc"+ + "\u14dd\u0007\n\u0000\u0000\u14dd\u14de\u0007\u001a\u0000\u0000\u14de\u14df"+ + "\u0007\u0018\u0000\u0000\u14df\u042a\u0001\u0000\u0000\u0000\u14e0\u14e1"+ + "\u0007\u0019\u0000\u0000\u14e1\u14e2\u0007\u0005\u0000\u0000\u14e2\u14e3"+ + "\u0007\u000e\u0000\u0000\u14e3\u14e4\u0007\u0010\u0000\u0000\u14e4\u14e5"+ + "\u0007\u0013\u0000\u0000\u14e5\u14e6\u0007\r\u0000\u0000\u14e6\u14e7\u0007"+ + "\u0011\u0000\u0000\u14e7\u14e8\u0007\u0005\u0000\u0000\u14e8\u14e9\u0007"+ + "\u0006\u0000\u0000\u14e9\u042c\u0001\u0000\u0000\u0000\u14ea\u14eb\u0007"+ + "\u0019\u0000\u0000\u14eb\u14ec\u0007\u0006\u0000\u0000\u14ec\u14ed\u0007"+ + "\u0013\u0000\u0000\u14ed\u14ee\u0007\u0013\u0000\u0000\u14ee\u14ef\u0007"+ + "\r\u0000\u0000\u14ef\u042e\u0001\u0000\u0000\u0000\u14f0\u14f1\u0007\u0017"+ + "\u0000\u0000\u14f1\u14f2\u0007\u000e\u0000\u0000\u14f2\u14f3\u0007\f\u0000"+ + "\u0000\u14f3\u0430\u0001\u0000\u0000\u0000\u14f4\u14f5\u0007\u0006\u0000"+ + "\u0000\u14f5\u14f6\u0007\u000e\u0000\u0000\u14f6\u14f7\u0007\u000f\u0000"+ + "\u0000\u14f7\u0432\u0001\u0000\u0000\u0000\u14f8\u14f9\u0007\u0006\u0000"+ + "\u0000\u14f9\u14fa\u0007\u0007\u0000\u0000\u14fa\u0434\u0001\u0000\u0000"+ + "\u0000\u14fb\u14fc\u0007\u0006\u0000\u0000\u14fc\u14fd\u0007\u0013\u0000"+ + "\u0000\u14fd\u14fe\u0007\u0017\u0000\u0000\u14fe\u14ff\u00051\u0000\u0000"+ + "\u14ff\u1500\u00050\u0000\u0000\u1500\u0436\u0001\u0000\u0000\u0000\u1501"+ + "\u1502\u0007\u000f\u0000\u0000\u1502\u1503\u0007\u0011\u0000\u0000\u1503"+ + "\u1504\u0007\u0007\u0000\u0000\u1504\u1505\u0005_\u0000\u0000\u1505\u1506"+ + "\u0007\t\u0000\u0000\u1506\u1507\u0007\u000e\u0000\u0000\u1507\u1508\u0007"+ + "\u0005\u0000\u0000\u1508\u1509\u0007\u0006\u0000\u0000\u1509\u150a\u0007"+ + "\n\u0000\u0000\u150a\u0438\u0001\u0000\u0000\u0000\u150b\u150c\u0007\u000f"+ + "\u0000\u0000\u150c\u150d\u0007\u0013\u0000\u0000\u150d\u150e\u0007\f\u0000"+ + "\u0000\u150e\u043a\u0001\u0000\u0000\u0000\u150f\u1510\u0007\u0018\u0000"+ + "\u0000\u1510\u1511\u0007\u0011\u0000\u0000\u1511\u043c\u0001\u0000\u0000"+ + "\u0000\u1512\u1513\u0007\u0018\u0000\u0000\u1513\u1514\u0007\u0013\u0000"+ + "\u0000\u1514\u1515\u0007\u001d\u0000\u0000\u1515\u1516\u0007\n\u0000\u0000"+ + "\u1516\u1517\u0007\r\u0000\u0000\u1517\u043e\u0001\u0000\u0000\u0000\u1518"+ + "\u1519\u0007\r\u0000\u0000\u1519\u151a\u0007\u0005\u0000\u0000\u151a\u151b"+ + "\u0007\f\u0000\u0000\u151b\u151c\u0007\u0011\u0000\u0000\u151c\u151d\u0007"+ + "\u0005\u0000\u0000\u151d\u151e\u0007\u0007\u0000\u0000\u151e\u151f\u0007"+ + "\t\u0000\u0000\u151f\u0440\u0001\u0000\u0000\u0000\u1520\u1521\u0007\r"+ + "\u0000\u0000\u1521\u1522\u0007\u0013\u0000\u0000\u1522\u1523\u0007\u0016"+ + "\u0000\u0000\u1523\u1524\u0007\u0007\u0000\u0000\u1524\u1525\u0007\f\u0000"+ + "\u0000\u1525\u0442\u0001\u0000\u0000\u0000\u1526\u1527\u0007\t\u0000\u0000"+ + "\u1527\u1528\u0007\u000e\u0000\u0000\u1528\u1529\u0007\u0005\u0000\u0000"+ + "\u1529\u152a\u0007\u0006\u0000\u0000\u152a\u152b\u0007\n\u0000\u0000\u152b"+ + "\u0444\u0001\u0000\u0000\u0000\u152c\u152d\u0007\t\u0000\u0000\u152d\u152e"+ + "\u0007\u0011\u0000\u0000\u152e\u152f\u0007\u0017\u0000\u0000\u152f\u1530"+ + "\u0007\u0007\u0000\u0000\u1530\u0446\u0001\u0000\u0000\u0000\u1531\u1532"+ + "\u0007\t\u0000\u0000\u1532\u1533\u0007\u001c\u0000\u0000\u1533\u1534\u0007"+ + "\r\u0000\u0000\u1534\u1535\u0007\u0010\u0000\u0000\u1535\u0448\u0001\u0000"+ + "\u0000\u0000\u1536\u1537\u0007\u0010\u0000\u0000\u1537\u1538\u0007\r\u0000"+ + "\u0000\u1538\u1539\u0007\u0011\u0000\u0000\u1539\u153a\u0007\u000f\u0000"+ + "\u0000\u153a\u153b\u0005_\u0000\u0000\u153b\u153c\u0007\t\u0000\u0000"+ + "\u153c\u153d\u0007\u000e\u0000\u0000\u153d\u153e\u0007\u0005\u0000\u0000"+ + "\u153e\u153f\u0007\u0006\u0000\u0000\u153f\u1540\u0007\n\u0000\u0000\u1540"+ + "\u044a\u0001\u0000\u0000\u0000\u1541\u1542\u0007\u0010\u0000\u0000\u1542"+ + "\u1543\u0007\r\u0000\u0000\u1543\u1544\u0007\u0016\u0000\u0000\u1544\u1545"+ + "\u0007\u0007\u0000\u0000\u1545\u1546\u0007\u000e\u0000\u0000\u1546\u044c"+ + "\u0001\u0000\u0000\u0000\u1547\u1548\u0007\u001d\u0000\u0000\u1548\u1549"+ + "\u0007\u0011\u0000\u0000\u1549\u154a\u0007\f\u0000\u0000\u154a\u154b\u0007"+ + "\u0010\u0000\u0000\u154b\u154c\u0007\u0014\u0000\u0000\u154c\u154d\u0005"+ + "_\u0000\u0000\u154d\u154e\u0007\u0012\u0000\u0000\u154e\u154f\u0007\u0016"+ + "\u0000\u0000\u154f\u1550\u0007\u000e\u0000\u0000\u1550\u1551\u0007\u0015"+ + "\u0000\u0000\u1551\u1552\u0007\n\u0000\u0000\u1552\u1553\u0007\u0010\u0000"+ + "\u0000\u1553\u044e\u0001\u0000\u0000\u0000\u1554\u1555\u0007\r\u0000\u0000"+ + "\u1555\u1556\u0007\u0005\u0000\u0000\u1556\u1557\u0007\u0007\u0000\u0000"+ + "\u1557\u1558\u0007\f\u0000\u0000\u1558\u1559\u0007\u0013\u0000\u0000\u1559"+ + "\u155a\u0007\u000f\u0000\u0000\u155a\u0450\u0001\u0000\u0000\u0000\u155b"+ + "\u155c\u0007\t\u0000\u0000\u155c\u155d\u0007\n\u0000\u0000\u155d\u155e"+ + "\u0007\u0010\u0000\u0000\u155e\u155f\u0007\t\u0000\u0000\u155f\u1560\u0007"+ + "\n\u0000\u0000\u1560\u1561\u0007\n\u0000\u0000\u1561\u1562\u0007\f\u0000"+ + "\u0000\u1562\u0452\u0001\u0000\u0000\u0000\u1563\u1564\u0007\u0005\u0000"+ + "\u0000\u1564\u1565\u0007\u000e\u0000\u0000\u1565\u1566\u0007\u0013\u0000"+ + "\u0000\u1566\u1567\u0007\t\u0000\u0000\u1567\u0454\u0001\u0000\u0000\u0000"+ + "\u1568\u1569\u0007\u0005\u0000\u0000\u1569\u156a\u0007\u000e\u0000\u0000"+ + "\u156a\u156b\u0007\u0013\u0000\u0000\u156b\u156c\u0007\t\u0000\u0000\u156c"+ + "\u156d\u0007\f\u0000\u0000\u156d\u0456\u0001\u0000\u0000\u0000\u156e\u156f"+ + "\u0007\u0005\u0000\u0000\u156f\u1570\u0007\t\u0000\u0000\u1570\u1571\u0007"+ + "\u0011\u0000\u0000\u1571\u1572\u0007\u0007\u0000\u0000\u1572\u0458\u0001"+ + "\u0000\u0000\u0000\u1573\u1574\u0007\u0005\u0000\u0000\u1574\u1575\u0007"+ + "\t\u0000\u0000\u1575\u1576\u0007\u0011\u0000\u0000\u1576\u1577\u0007\u0007"+ + "\u0000\u0000\u1577\u1578\u0007\f\u0000\u0000\u1578\u045a\u0001\u0000\u0000"+ + "\u0000\u1579\u157a\u0007\u0005\u0000\u0000\u157a\u157b\u0007\u0010\u0000"+ + "\u0000\u157b\u157c\u0007\u0005\u0000\u0000\u157c\u157d\u0007\u0007\u0000"+ + "\u0000\u157d\u045c\u0001\u0000\u0000\u0000\u157e\u157f\u0007\u0005\u0000"+ + "\u0000\u157f\u1580\u0007\u0010\u0000\u0000\u1580\u1581\u0007\u0005\u0000"+ + "\u0000\u1581\u1582\u0007\u0007\u0000\u0000\u1582\u1583\u0007\f\u0000\u0000"+ + "\u1583\u045e\u0001\u0000\u0000\u0000\u1584\u1585\u0007\u0005\u0000\u0000"+ + "\u1585\u1586\u0007\u0010\u0000\u0000\u1586\u1587\u0007\u0005\u0000\u0000"+ + "\u1587\u1588\u0007\u0007\u0000\u0000\u1588\u1589\u00052\u0000\u0000\u1589"+ + "\u0460\u0001\u0000\u0000\u0000\u158a\u158b\u0007\u0005\u0000\u0000\u158b"+ + "\u158c\u0007\u0010\u0000\u0000\u158c\u158d\u0007\u0005\u0000\u0000\u158d"+ + "\u158e\u0007\u0007\u0000\u0000\u158e\u158f\u00052\u0000\u0000\u158f\u1590"+ + "\u0007\f\u0000\u0000\u1590\u0462\u0001\u0000\u0000\u0000\u1591\u1592\u0007"+ + "\u000e\u0000\u0000\u1592\u1593\u0007\u0013\u0000\u0000\u1593\u1594\u0007"+ + "\t\u0000\u0000\u1594\u0464\u0001\u0000\u0000\u0000\u1595\u1596\u0007\u000e"+ + "\u0000\u0000\u1596\u1597\u0007\u0013\u0000\u0000\u1597\u1598\u0007\t\u0000"+ + "\u0000\u1598\u1599\u0007\f\u0000\u0000\u1599\u0466\u0001\u0000\u0000\u0000"+ + "\u159a\u159b\u0007\u000e\u0000\u0000\u159b\u159c\u0007\u0013\u0000\u0000"+ + "\u159c\u159d\u0007\u0010\u0000\u0000\u159d\u0468\u0001\u0000\u0000\u0000"+ + "\u159e\u159f\u0007\u000e\u0000\u0000\u159f\u15a0\u0007\u0013\u0000\u0000"+ + "\u15a0\u15a1\u0007\u0010\u0000\u0000\u15a1\u15a2\u0007\f\u0000\u0000\u15a2"+ + "\u046a\u0001\u0000\u0000\u0000\u15a3\u15a4\u0007\t\u0000\u0000\u15a4\u15a5"+ + "\u0007\u0011\u0000\u0000\u15a5\u15a6\u0007\u0007\u0000\u0000\u15a6\u046c"+ + "\u0001\u0000\u0000\u0000\u15a7\u15a8\u0007\t\u0000\u0000\u15a8\u15a9\u0007"+ + "\u0011\u0000\u0000\u15a9\u15aa\u0007\u0007\u0000\u0000\u15aa\u15ab\u0007"+ + "\f\u0000\u0000\u15ab\u046e\u0001\u0000\u0000\u0000\u15ac\u15ad\u0007\u0010"+ + "\u0000\u0000\u15ad\u15ae\u0007\u0005\u0000\u0000\u15ae\u15af\u0007\u0007"+ + "\u0000\u0000\u15af\u0470\u0001\u0000\u0000\u0000\u15b0\u15b1\u0007\u0010"+ + "\u0000\u0000\u15b1\u15b2\u0007\u0005\u0000\u0000\u15b2\u15b3\u0007\u0007"+ + "\u0000\u0000\u15b3\u15b4\u0007\f\u0000\u0000\u15b4\u0472\u0001\u0000\u0000"+ + "\u0000\u15b5\u15b6\u0007\t\u0000\u0000\u15b6\u15b7\u0007\u0011\u0000\u0000"+ + "\u15b7\u15b8\u0007\u0007\u0000\u0000\u15b8\u15b9\u0007\u0014\u0000\u0000"+ + "\u15b9\u0474\u0001\u0000\u0000\u0000\u15ba\u15bb\u0007\u000e\u0000\u0000"+ + "\u15bb\u15bc\u0007\u0013\u0000\u0000\u15bc\u15bd\u0007\t\u0000\u0000\u15bd"+ + "\u15be\u0007\u0014\u0000\u0000\u15be\u0476\u0001\u0000\u0000\u0000\u15bf"+ + "\u15c0\u0007\u0010\u0000\u0000\u15c0\u15c1\u0007\u0005\u0000\u0000\u15c1"+ + "\u15c2\u0007\u0007\u0000\u0000\u15c2\u15c3\u0007\u0014\u0000\u0000\u15c3"+ + "\u0478\u0001\u0000\u0000\u0000\u15c4\u15c5\u0007\u0005\u0000\u0000\u15c5"+ + "\u15c6\u0007\t\u0000\u0000\u15c6\u15c7\u0007\u0011\u0000\u0000\u15c7\u15c8"+ + "\u0007\u0007\u0000\u0000\u15c8\u15c9\u0007\u0014\u0000\u0000\u15c9\u047a"+ + "\u0001\u0000\u0000\u0000\u15ca\u15cb\u0007\u0005\u0000\u0000\u15cb\u15cc"+ + "\u0007\u000e\u0000\u0000\u15cc\u15cd\u0007\u0013\u0000\u0000\u15cd\u15ce"+ + "\u0007\t\u0000\u0000\u15ce\u15cf\u0007\u0014\u0000\u0000\u15cf\u047c\u0001"+ + "\u0000\u0000\u0000\u15d0\u15d1\u0007\u0005\u0000\u0000\u15d1\u15d2\u0007"+ + "\u0010\u0000\u0000\u15d2\u15d3\u0007\u0005\u0000\u0000\u15d3\u15d4\u0007"+ + "\u0007\u0000\u0000\u15d4\u15d5\u0007\u0014\u0000\u0000\u15d5\u047e\u0001"+ + "\u0000\u0000\u0000\u15d6\u15d7\u0007\u0012\u0000\u0000\u15d7\u15d8\u0007"+ + "\u0011\u0000\u0000\u15d8\u15d9\u0007\u0010\u0000\u0000\u15d9\u15da\u0005"+ + "_\u0000\u0000\u15da\u15db\u0007\u0006\u0000\u0000\u15db\u15dc\u0007\n"+ + "\u0000\u0000\u15dc\u15dd\u0007\u0007\u0000\u0000\u15dd\u15de\u0007\u0017"+ + "\u0000\u0000\u15de\u15df\u0007\u0010\u0000\u0000\u15df\u15e0\u0007\u0014"+ + "\u0000\u0000\u15e0\u0480\u0001\u0000\u0000\u0000\u15e1\u15e2\u0007\u000e"+ + "\u0000\u0000\u15e2\u15e3\u0007\u0014\u0000\u0000\u15e3\u15e4\u0007\u0005"+ + "\u0000\u0000\u15e4\u15e5\u0007\r\u0000\u0000\u15e5\u15e6\u0005_\u0000"+ + "\u0000\u15e6\u15e7\u0007\u0006\u0000\u0000\u15e7\u15e8\u0007\n\u0000\u0000"+ + "\u15e8\u15e9\u0007\u0007\u0000\u0000\u15e9\u15ea\u0007\u0017\u0000\u0000"+ + "\u15ea\u15eb\u0007\u0010\u0000\u0000\u15eb\u15ec\u0007\u0014\u0000\u0000"+ + "\u15ec\u0482\u0001\u0000\u0000\u0000\u15ed\u15ee\u0007\u000e\u0000\u0000"+ + "\u15ee\u15ef\u0007\u0014\u0000\u0000\u15ef\u15f0\u0007\u0005\u0000\u0000"+ + "\u15f0\u15f1\u0007\r\u0000\u0000\u15f1\u15f2\u0007\u0005\u0000\u0000\u15f2"+ + "\u15f3\u0007\u000e\u0000\u0000\u15f3\u15f4\u0007\u0010\u0000\u0000\u15f4"+ + "\u15f5\u0007\n\u0000\u0000\u15f5\u15f6\u0007\r\u0000\u0000\u15f6\u15f7"+ + "\u0005_\u0000\u0000\u15f7\u15f8\u0007\u0006\u0000\u0000\u15f8\u15f9\u0007"+ + "\n\u0000\u0000\u15f9\u15fa\u0007\u0007\u0000\u0000\u15fa\u15fb\u0007\u0017"+ + "\u0000\u0000\u15fb\u15fc\u0007\u0010\u0000\u0000\u15fc\u15fd\u0007\u0014"+ + "\u0000\u0000\u15fd\u0484\u0001\u0000\u0000\u0000\u15fe\u15ff\u0007\u0006"+ + "\u0000\u0000\u15ff\u1600\u0007\u0013\u0000\u0000\u1600\u1601\u0007\u001d"+ + "\u0000\u0000\u1601\u1602\u0007\n\u0000\u0000\u1602\u1603\u0007\r\u0000"+ + "\u0000\u1603\u0486\u0001\u0000\u0000\u0000\u1604\u1605\u0007\u0013\u0000"+ + "\u0000\u1605\u1606\u0007\u000e\u0000\u0000\u1606\u1607\u0007\u0010\u0000"+ + "\u0000\u1607\u1608\u0007\n\u0000\u0000\u1608\u1609\u0007\u0010\u0000\u0000"+ + "\u1609\u160a\u0005_\u0000\u0000\u160a\u160b\u0007\u0006\u0000\u0000\u160b"+ + "\u160c\u0007\n\u0000\u0000\u160c\u160d\u0007\u0007\u0000\u0000\u160d\u160e"+ + "\u0007\u0017\u0000\u0000\u160e\u160f\u0007\u0010\u0000\u0000\u160f\u1610"+ + "\u0007\u0014\u0000\u0000\u1610\u0488\u0001\u0000\u0000\u0000\u1611\u1612"+ + "\u0007\u0016\u0000\u0000\u1612\u1613\u0007\u0018\u0000\u0000\u1613\u1614"+ + "\u0007\u0018\u0000\u0000\u1614\u1615\u0007\n\u0000\u0000\u1615\u1616\u0007"+ + "\r\u0000\u0000\u1616\u048a\u0001\u0000\u0000\u0000\u1617\u1618\u0007\u0005"+ + "\u0000\u0000\u1618\u1619\u0007\t\u0000\u0000\u1619\u161a\u0007\u000e\u0000"+ + "\u0000\u161a\u161b\u0007\u0011\u0000\u0000\u161b\u161c\u0007\u0011\u0000"+ + "\u0000\u161c\u048c\u0001\u0000\u0000\u0000\u161d\u161e\u0007\u0012\u0000"+ + "\u0000\u161e\u161f\u0007\u0010\u0000\u0000\u161f\u1620\u0007\r\u0000\u0000"+ + "\u1620\u1621\u0007\u0011\u0000\u0000\u1621\u1622\u0007\u000f\u0000\u0000"+ + "\u1622\u048e\u0001\u0000\u0000\u0000\u1623\u1624\u0007\u000e\u0000\u0000"+ + "\u1624\u1625\u0007\u0014\u0000\u0000\u1625\u1626\u0007\r\u0000\u0000\u1626"+ + "\u0490\u0001\u0000\u0000\u0000\u1627\u1628\u0007\u000e\u0000\u0000\u1628"+ + "\u1629\u0007\u0013\u0000\u0000\u1629\u162a\u0007\u0007\u0000\u0000\u162a"+ + "\u162b\u0007\u000e\u0000\u0000\u162b\u162c\u0007\u0005\u0000\u0000\u162c"+ + "\u162d\u0007\u0010\u0000\u0000\u162d\u0492\u0001\u0000\u0000\u0000\u162e"+ + "\u162f\u0007\u000e\u0000\u0000\u162f\u1630\u0007\u0013\u0000\u0000\u1630"+ + "\u1631\u0007\u0007\u0000\u0000\u1631\u1632\u0007\u000e\u0000\u0000\u1632"+ + "\u1633\u0007\u0005\u0000\u0000\u1633\u1634\u0007\u0010\u0000\u0000\u1634"+ + "\u1635\u0005_\u0000\u0000\u1635\u1636\u0007\u001d\u0000\u0000\u1636\u1637"+ + "\u0007\t\u0000\u0000\u1637\u0494\u0001\u0000\u0000\u0000\u1638\u1639\u0007"+ + "\u0019\u0000\u0000\u1639\u163a\u0007\u0013\u0000\u0000\u163a\u163b\u0007"+ + "\r\u0000\u0000\u163b\u163c\u0007\u000f\u0000\u0000\u163c\u163d\u0007\u0005"+ + "\u0000\u0000\u163d\u163e\u0007\u0010\u0000\u0000\u163e\u0496\u0001\u0000"+ + "\u0000\u0000\u163f\u1640\u0007\u0011\u0000\u0000\u1640\u1641\u0007\u0007"+ + "\u0000\u0000\u1641\u1642\u0007\u0011\u0000\u0000\u1642\u1643\u0007\u0010"+ + "\u0000\u0000\u1643\u1644\u0007\u000e\u0000\u0000\u1644\u1645\u0007\u0005"+ + "\u0000\u0000\u1645\u1646\u0007\u0018\u0000\u0000\u1646\u0498\u0001\u0000"+ + "\u0000\u0000\u1647\u1648\u0007\u0006\u0000\u0000\u1648\u1649\u0007\n\u0000"+ + "\u0000\u1649\u164a\u0007\u0007\u0000\u0000\u164a\u164b\u0007\u0017\u0000"+ + "\u0000\u164b\u164c\u0007\u0010\u0000\u0000\u164c\u164d\u0007\u0014\u0000"+ + "\u0000\u164d\u049a\u0001\u0000\u0000\u0000\u164e\u164f\u0007\u0006\u0000"+ + "\u0000\u164f\u1650\u0007\u0018\u0000\u0000\u1650\u1651\u0007\u0005\u0000"+ + "\u0000\u1651\u1652\u0007\f\u0000\u0000\u1652\u049c\u0001\u0000\u0000\u0000"+ + "\u1653\u1654\u0007\u0006\u0000\u0000\u1654\u1655\u0007\u0010\u0000\u0000"+ + "\u1655\u1656\u0007\r\u0000\u0000\u1656\u1657\u0007\u0011\u0000\u0000\u1657"+ + "\u1658\u0007\u000f\u0000\u0000\u1658\u049e\u0001\u0000\u0000\u0000\u1659"+ + "\u165a\u0007\u000f\u0000\u0000\u165a\u165b\u0007\f\u0000\u0000\u165b\u165c"+ + "\u00055\u0000\u0000\u165c\u04a0\u0001\u0000\u0000\u0000\u165d\u165e\u0007"+ + "\u0018\u0000\u0000\u165e\u165f\u0007\u0005\u0000\u0000\u165f\u1660\u0007"+ + "\r\u0000\u0000\u1660\u1661\u0007\t\u0000\u0000\u1661\u1662\u0007\n\u0000"+ + "\u0000\u1662\u1663\u0005_\u0000\u0000\u1663\u1664\u0007\u0011\u0000\u0000"+ + "\u1664\u1665\u0007\f\u0000\u0000\u1665\u1666\u0007\n\u0000\u0000\u1666"+ + "\u1667\u0007\u0007\u0000\u0000\u1667\u1668\u0007\u0010\u0000\u0000\u1668"+ + "\u04a2\u0001\u0000\u0000\u0000\u1669\u166a\u0007\u0018\u0000\u0000\u166a"+ + "\u166b\u0007\u0017\u0000\u0000\u166b\u166c\u0005_\u0000\u0000\u166c\u166d"+ + "\u0007\u000e\u0000\u0000\u166d\u166e\u0007\u0006\u0000\u0000\u166e\u166f"+ + "\u0007\u0011\u0000\u0000\u166f\u1670\u0007\n\u0000\u0000\u1670\u1671\u0007"+ + "\u0007\u0000\u0000\u1671\u1672\u0007\u0010\u0000\u0000\u1672\u1673\u0005"+ + "_\u0000\u0000\u1673\u1674\u0007\n\u0000\u0000\u1674\u1675\u0007\u0007"+ + "\u0000\u0000\u1675\u1676\u0007\u000e\u0000\u0000\u1676\u1677\u0007\u0013"+ + "\u0000\u0000\u1677\u1678\u0007\f\u0000\u0000\u1678\u1679\u0007\u0011\u0000"+ + "\u0000\u1679\u167a\u0007\u0007\u0000\u0000\u167a\u167b\u0007\u0017\u0000"+ + "\u0000\u167b\u04a4\u0001\u0000\u0000\u0000\u167c\u167d\u0007\u001c\u0000"+ + "\u0000\u167d\u167e\u0007\u0016\u0000\u0000\u167e\u167f\u0007\u0013\u0000"+ + "\u0000\u167f\u1680\u0007\u0010\u0000\u0000\u1680\u1681\u0007\n\u0000\u0000"+ + "\u1681\u1682\u0005_\u0000\u0000\u1682\u1683\u0007\u0011\u0000\u0000\u1683"+ + "\u1684\u0007\f\u0000\u0000\u1684\u1685\u0007\n\u0000\u0000\u1685\u1686"+ + "\u0007\u0007\u0000\u0000\u1686\u1687\u0007\u0010\u0000\u0000\u1687\u04a6"+ + "\u0001\u0000\u0000\u0000\u1688\u1689\u0007\u001c\u0000\u0000\u1689\u168a"+ + "\u0007\u0016\u0000\u0000\u168a\u168b\u0007\u0013\u0000\u0000\u168b\u168c"+ + "\u0007\u0010\u0000\u0000\u168c\u168d\u0007\n\u0000\u0000\u168d\u168e\u0005"+ + "_\u0000\u0000\u168e\u168f\u0007\u0006\u0000\u0000\u168f\u1690\u0007\u0011"+ + "\u0000\u0000\u1690\u1691\u0007\u0010\u0000\u0000\u1691\u1692\u0007\n\u0000"+ + "\u0000\u1692\u1693\u0007\r\u0000\u0000\u1693\u1694\u0007\u0005\u0000\u0000"+ + "\u1694\u1695\u0007\u0006\u0000\u0000\u1695\u04a8\u0001\u0000\u0000\u0000"+ + "\u1696\u1697\u0007\u001c\u0000\u0000\u1697\u1698\u0007\u0016\u0000\u0000"+ + "\u1698\u1699\u0007\u0013\u0000\u0000\u1699\u169a\u0007\u0010\u0000\u0000"+ + "\u169a\u169b\u0007\n\u0000\u0000\u169b\u169c\u0005_\u0000\u0000\u169c"+ + "\u169d\u0007\u0007\u0000\u0000\u169d\u169e\u0007\u0016\u0000\u0000\u169e"+ + "\u169f\u0007\u0006\u0000\u0000\u169f\u16a0\u0007\u0006\u0000\u0000\u16a0"+ + "\u16a1\u0007\u0005\u0000\u0000\u16a1\u16a2\u0007\u0012\u0000\u0000\u16a2"+ + "\u16a3\u0007\u0006\u0000\u0000\u16a3\u16a4\u0007\n\u0000\u0000\u16a4\u04aa"+ + "\u0001\u0000\u0000\u0000\u16a5\u16a6\u0007\r\u0000\u0000\u16a6\u16a7\u0007"+ + "\n\u0000\u0000\u16a7\u16a8\u0007\u0017\u0000\u0000\u16a8\u16a9\u0007\n"+ + "\u0000\u0000\u16a9\u16aa\u0007\u001a\u0000\u0000\u16aa\u16ab\u0007\u0018"+ + "\u0000\u0000\u16ab\u16ac\u0005_\u0000\u0000\u16ac\u16ad\u0007\u000e\u0000"+ + "\u0000\u16ad\u16ae\u0007\u0013\u0000\u0000\u16ae\u16af\u0007\u0016\u0000"+ + "\u0000\u16af\u16b0\u0007\u0007\u0000\u0000\u16b0\u16b1\u0007\u0010\u0000"+ + "\u0000\u16b1\u04ac\u0001\u0000\u0000\u0000\u16b2\u16b3\u0007\r\u0000\u0000"+ + "\u16b3\u16b4\u0007\n\u0000\u0000\u16b4\u16b5\u0007\u0017\u0000\u0000\u16b5"+ + "\u16b6\u0007\n\u0000\u0000\u16b6\u16b7\u0007\u001a\u0000\u0000\u16b7\u16b8"+ + "\u0007\u0018\u0000\u0000\u16b8\u16b9\u0005_\u0000\u0000\u16b9\u16ba\u0007"+ + "\u0011\u0000\u0000\u16ba\u16bb\u0007\u0007\u0000\u0000\u16bb\u16bc\u0007"+ + "\t\u0000\u0000\u16bc\u16bd\u0007\u0010\u0000\u0000\u16bd\u16be\u0007\r"+ + "\u0000\u0000\u16be\u04ae\u0001\u0000\u0000\u0000\u16bf\u16c0\u0007\r\u0000"+ + "\u0000\u16c0\u16c1\u0007\n\u0000\u0000\u16c1\u16c2\u0007\u0017\u0000\u0000"+ + "\u16c2\u16c3\u0007\n\u0000\u0000\u16c3\u16c4\u0007\u001a\u0000\u0000\u16c4"+ + "\u16c5\u0007\u0018\u0000\u0000\u16c5\u16c6\u0005_\u0000\u0000\u16c6\u16c7"+ + "\u0007\u0006\u0000\u0000\u16c7\u16c8\u0007\u0011\u0000\u0000\u16c8\u16c9"+ + "\u0007\u0015\u0000\u0000\u16c9\u16ca\u0007\n\u0000\u0000\u16ca\u04b0\u0001"+ + "\u0000\u0000\u0000\u16cb\u16cc\u0007\r\u0000\u0000\u16cc\u16cd\u0007\n"+ + "\u0000\u0000\u16cd\u16ce\u0007\u0017\u0000\u0000\u16ce\u16cf\u0007\n\u0000"+ + "\u0000\u16cf\u16d0\u0007\u001a\u0000\u0000\u16d0\u16d1\u0007\u0018\u0000"+ + "\u0000\u16d1\u16d2\u0005_\u0000\u0000\u16d2\u16d3\u0007\u000f\u0000\u0000"+ + "\u16d3\u16d4\u0007\u0005\u0000\u0000\u16d4\u16d5\u0007\u0010\u0000\u0000"+ + "\u16d5\u16d6\u0007\u000e\u0000\u0000\u16d6\u16d7\u0007\u0014\u0000\u0000"+ + "\u16d7\u04b2\u0001\u0000\u0000\u0000\u16d8\u16d9\u0007\r\u0000\u0000\u16d9"+ + "\u16da\u0007\n\u0000\u0000\u16da\u16db\u0007\u0017\u0000\u0000\u16db\u16dc"+ + "\u0007\n\u0000\u0000\u16dc\u16dd\u0007\u001a\u0000\u0000\u16dd\u16de\u0007"+ + "\u0018\u0000\u0000\u16de\u16df\u0005_\u0000\u0000\u16df\u16e0\u0007\u000f"+ + "\u0000\u0000\u16e0\u16e1\u0007\u0005\u0000\u0000\u16e1\u16e2\u0007\u0010"+ + "\u0000\u0000\u16e2\u16e3\u0007\u000e\u0000\u0000\u16e3\u16e4\u0007\u0014"+ + "\u0000\u0000\u16e4\u16e5\u0007\n\u0000\u0000\u16e5\u16e6\u0007\t\u0000"+ + "\u0000\u16e6\u04b4\u0001\u0000\u0000\u0000\u16e7\u16e8\u0007\r\u0000\u0000"+ + "\u16e8\u16e9\u0007\n\u0000\u0000\u16e9\u16ea\u0007\u0017\u0000\u0000\u16ea"+ + "\u16eb\u0007\n\u0000\u0000\u16eb\u16ec\u0007\u001a\u0000\u0000\u16ec\u16ed"+ + "\u0007\u0018\u0000\u0000\u16ed\u16ee\u0005_\u0000\u0000\u16ee\u16ef\u0007"+ + "\r\u0000\u0000\u16ef\u16f0\u0007\n\u0000\u0000\u16f0\u16f1\u0007\u0018"+ + "\u0000\u0000\u16f1\u16f2\u0007\u0006\u0000\u0000\u16f2\u16f3\u0007\u0005"+ + "\u0000\u0000\u16f3\u16f4\u0007\u000e\u0000\u0000\u16f4\u16f5\u0007\n\u0000"+ + "\u0000\u16f5\u04b6\u0001\u0000\u0000\u0000\u16f6\u16f7\u0007\r\u0000\u0000"+ + "\u16f7\u16f8\u0007\n\u0000\u0000\u16f8\u16f9\u0007\u0017\u0000\u0000\u16f9"+ + "\u16fa\u0007\n\u0000\u0000\u16fa\u16fb\u0007\u001a\u0000\u0000\u16fb\u16fc"+ + "\u0007\u0018\u0000\u0000\u16fc\u16fd\u0005_\u0000\u0000\u16fd\u16fe\u0007"+ + "\t\u0000\u0000\u16fe\u16ff\u0007\u0018\u0000\u0000\u16ff\u1700\u0007\u0006"+ + "\u0000\u0000\u1700\u1701\u0007\u0011\u0000\u0000\u1701\u1702\u0007\u0010"+ + "\u0000\u0000\u1702\u1703\u0005_\u0000\u0000\u1703\u1704\u0007\u0010\u0000"+ + "\u0000\u1704\u1705\u0007\u0013\u0000\u0000\u1705\u1706\u0005_\u0000\u0000"+ + "\u1706\u1707\u0007\u0005\u0000\u0000\u1707\u1708\u0007\r\u0000\u0000\u1708"+ + "\u1709\u0007\r\u0000\u0000\u1709\u170a\u0007\u0005\u0000\u0000\u170a\u170b"+ + "\u0007\b\u0000\u0000\u170b\u04b8\u0001\u0000\u0000\u0000\u170c\u170d\u0007"+ + "\r\u0000\u0000\u170d\u170e\u0007\n\u0000\u0000\u170e\u170f\u0007\u0017"+ + "\u0000\u0000\u170f\u1710\u0007\n\u0000\u0000\u1710\u1711\u0007\u001a\u0000"+ + "\u0000\u1711\u1712\u0007\u0018\u0000\u0000\u1712\u1713\u0005_\u0000\u0000"+ + "\u1713\u1714\u0007\t\u0000\u0000\u1714\u1715\u0007\u0018\u0000\u0000\u1715"+ + "\u1716\u0007\u0006\u0000\u0000\u1716\u1717\u0007\u0011\u0000\u0000\u1717"+ + "\u1718\u0007\u0010\u0000\u0000\u1718\u1719\u0005_\u0000\u0000\u1719\u171a"+ + "\u0007\u0010\u0000\u0000\u171a\u171b\u0007\u0013\u0000\u0000\u171b\u171c"+ + "\u0005_\u0000\u0000\u171c\u171d\u0007\u0010\u0000\u0000\u171d\u171e\u0007"+ + "\u0005\u0000\u0000\u171e\u171f\u0007\u0012\u0000\u0000\u171f\u1720\u0007"+ + "\u0006\u0000\u0000\u1720\u1721\u0007\n\u0000\u0000\u1721\u04ba\u0001\u0000"+ + "\u0000\u0000\u1722\u1723\u0007\r\u0000\u0000\u1723\u1724\u0007\n\u0000"+ + "\u0000\u1724\u1725\u0007\u0017\u0000\u0000\u1725\u1726\u0007\n\u0000\u0000"+ + "\u1726\u1727\u0007\u001a\u0000\u0000\u1727\u1728\u0007\u0018\u0000\u0000"+ + "\u1728\u1729\u0005_\u0000\u0000\u1729\u172a\u0007\t\u0000\u0000\u172a"+ + "\u172b\u0007\u0016\u0000\u0000\u172b\u172c\u0007\u0012\u0000\u0000\u172c"+ + "\u172d\u0007\t\u0000\u0000\u172d\u172e\u0007\u0010\u0000\u0000\u172e\u172f"+ + "\u0007\r\u0000\u0000\u172f\u04bc\u0001\u0000\u0000\u0000\u1730\u1731\u0007"+ + "\r\u0000\u0000\u1731\u1732\u0007\n\u0000\u0000\u1732\u1733\u0007\u0018"+ + "\u0000\u0000\u1733\u1734\u0007\n\u0000\u0000\u1734\u1735\u0007\u0005\u0000"+ + "\u0000\u1735\u1736\u0007\u0010\u0000\u0000\u1736\u04be\u0001\u0000\u0000"+ + "\u0000\u1737\u1738\u0007\r\u0000\u0000\u1738\u1739\u0007\u0018\u0000\u0000"+ + "\u1739\u173a\u0007\u0005\u0000\u0000\u173a\u173b\u0007\f\u0000\u0000\u173b"+ + "\u04c0\u0001\u0000\u0000\u0000\u173c\u173d\u0007\r\u0000\u0000\u173d\u173e"+ + "\u0007\u0010\u0000\u0000\u173e\u173f\u0007\r\u0000\u0000\u173f\u1740\u0007"+ + "\u0011\u0000\u0000\u1740\u1741\u0007\u000f\u0000\u0000\u1741\u04c2\u0001"+ + "\u0000\u0000\u0000\u1742\u1743\u0007\t\u0000\u0000\u1743\u1744\u0007\u0018"+ + "\u0000\u0000\u1744\u1745\u0007\u0006\u0000\u0000\u1745\u1746\u0007\u0011"+ + "\u0000\u0000\u1746\u1747\u0007\u0010\u0000\u0000\u1747\u1748\u0005_\u0000"+ + "\u0000\u1748\u1749\u0007\u0018\u0000\u0000\u1749\u174a\u0007\u0005\u0000"+ + "\u0000\u174a\u174b\u0007\r\u0000\u0000\u174b\u174c\u0007\u0010\u0000\u0000"+ + "\u174c\u04c4\u0001\u0000\u0000\u0000\u174d\u174e\u0007\t\u0000\u0000\u174e"+ + "\u174f\u0007\u0010\u0000\u0000\u174f\u1750\u0007\u0005\u0000\u0000\u1750"+ + "\u1751\u0007\r\u0000\u0000\u1751\u1752\u0007\u0010\u0000\u0000\u1752\u1753"+ + "\u0007\t\u0000\u0000\u1753\u1754\u0005_\u0000\u0000\u1754\u1755\u0007"+ + "\u001d\u0000\u0000\u1755\u1756\u0007\u0011\u0000\u0000\u1756\u1757\u0007"+ + "\u0010\u0000\u0000\u1757\u1758\u0007\u0014\u0000\u0000\u1758\u04c6\u0001"+ + "\u0000\u0000\u0000\u1759\u175a\u0007\t\u0000\u0000\u175a\u175b\u0007\u0010"+ + "\u0000\u0000\u175b\u175c\u0007\r\u0000\u0000\u175c\u175d\u0007\u0011\u0000"+ + "\u0000\u175d\u175e\u0007\u0007\u0000\u0000\u175e\u175f\u0007\u0017\u0000"+ + "\u0000\u175f\u1760\u0005_\u0000\u0000\u1760\u1761\u0007\u0010\u0000\u0000"+ + "\u1761\u1762\u0007\u0013\u0000\u0000\u1762\u1763\u0005_\u0000\u0000\u1763"+ + "\u1764\u0007\u0005\u0000\u0000\u1764\u1765\u0007\r\u0000\u0000\u1765\u1766"+ + "\u0007\r\u0000\u0000\u1766\u1767\u0007\u0005\u0000\u0000\u1767\u1768\u0007"+ + "\b\u0000\u0000\u1768\u04c8\u0001\u0000\u0000\u0000\u1769\u176a\u0007\t"+ + "\u0000\u0000\u176a\u176b\u0007\u0010\u0000\u0000\u176b\u176c\u0007\r\u0000"+ + "\u0000\u176c\u176d\u0007\u0011\u0000\u0000\u176d\u176e\u0007\u0007\u0000"+ + "\u0000\u176e\u176f\u0007\u0017\u0000\u0000\u176f\u1770\u0005_\u0000\u0000"+ + "\u1770\u1771\u0007\u0010\u0000\u0000\u1771\u1772\u0007\u0013\u0000\u0000"+ + "\u1772\u1773\u0005_\u0000\u0000\u1773\u1774\u0007\u0010\u0000\u0000\u1774"+ + "\u1775\u0007\u0005\u0000\u0000\u1775\u1776\u0007\u0012\u0000\u0000\u1776"+ + "\u1777\u0007\u0006\u0000\u0000\u1777\u1778\u0007\n\u0000\u0000\u1778\u04ca"+ + "\u0001\u0000\u0000\u0000\u1779\u177a\u0007\t\u0000\u0000\u177a\u177b\u0007"+ + "\u0010\u0000\u0000\u177b\u177c\u0007\r\u0000\u0000\u177c\u177d\u0007\u0018"+ + "\u0000\u0000\u177d\u177e\u0007\u0013\u0000\u0000\u177e\u177f\u0007\t\u0000"+ + "\u0000\u177f\u04cc\u0001\u0000\u0000\u0000\u1780\u1781\u0007\t\u0000\u0000"+ + "\u1781\u1782\u0007\u0016\u0000\u0000\u1782\u1783\u0007\u0012\u0000\u0000"+ + "\u1783\u1784\u0007\t\u0000\u0000\u1784\u1785\u0007\u0010\u0000\u0000\u1785"+ + "\u1786\u0007\r\u0000\u0000\u1786\u04ce\u0001\u0000\u0000\u0000\u1787\u1788"+ + "\u0007\u0010\u0000\u0000\u1788\u1789\u0007\u0013\u0000\u0000\u1789\u178a"+ + "\u0005_\u0000\u0000\u178a\u178b\u0007\u0005\u0000\u0000\u178b\u178c\u0007"+ + "\t\u0000\u0000\u178c\u178d\u0007\u000e\u0000\u0000\u178d\u178e\u0007\u0011"+ + "\u0000\u0000\u178e\u178f\u0007\u0011\u0000\u0000\u178f\u04d0\u0001\u0000"+ + "\u0000\u0000\u1790\u1791\u0007\u0010\u0000\u0000\u1791\u1792\u0007\u0013"+ + "\u0000\u0000\u1792\u1793\u0005_\u0000\u0000\u1793\u1794\u0007\u0014\u0000"+ + "\u0000\u1794\u1795\u0007\n\u0000\u0000\u1795\u1796\u0007\u001a\u0000\u0000"+ + "\u1796\u04d2\u0001\u0000\u0000\u0000\u1797\u1798\u0007\u0010\u0000\u0000"+ + "\u1798\u1799\u0007\r\u0000\u0000\u1799\u179a\u0007\u0005\u0000\u0000\u179a"+ + "\u179b\u0007\u0007\u0000\u0000\u179b\u179c\u0007\t\u0000\u0000\u179c\u179d"+ + "\u0007\u0006\u0000\u0000\u179d\u179e\u0007\u0005\u0000\u0000\u179e\u179f"+ + "\u0007\u0010\u0000\u0000\u179f\u17a0\u0007\n\u0000\u0000\u17a0\u04d4\u0001"+ + "\u0000\u0000\u0000\u17a1\u17a2\u0007\u0016\u0000\u0000\u17a2\u17a3\u0007"+ + "\u0007\u0000\u0000\u17a3\u17a4\u0007\u0011\u0000\u0000\u17a4\u17a5\u0007"+ + "\t\u0000\u0000\u17a5\u17a6\u0007\u0010\u0000\u0000\u17a6\u17a7\u0007\r"+ + "\u0000\u0000\u17a7\u04d6\u0001\u0000\u0000\u0000\u17a8\u17a9\u0007\u0005"+ + "\u0000\u0000\u17a9\u17aa\u0007\u0017\u0000\u0000\u17aa\u17ab\u0007\n\u0000"+ + "\u0000\u17ab\u04d8\u0001\u0000\u0000\u0000\u17ac\u17ad\u0007\u000e\u0000"+ + "\u0000\u17ad\u17ae\u0007\u0006\u0000\u0000\u17ae\u17af\u0007\u0013\u0000"+ + "\u0000\u17af\u17b0\u0007\u000e\u0000\u0000\u17b0\u17b1\u0007\u0015\u0000"+ + "\u0000\u17b1\u17b2\u0005_\u0000\u0000\u17b2\u17b3\u0007\u0010\u0000\u0000"+ + "\u17b3\u17b4\u0007\u0011\u0000\u0000\u17b4\u17b5\u0007\u000f\u0000\u0000"+ + "\u17b5\u17b6\u0007\n\u0000\u0000\u17b6\u17b7\u0007\t\u0000\u0000\u17b7"+ + "\u17b8\u0007\u0010\u0000\u0000\u17b8\u17b9\u0007\u0005\u0000\u0000\u17b9"+ + "\u17ba\u0007\u000f\u0000\u0000\u17ba\u17bb\u0007\u0018\u0000\u0000\u17bb"+ + "\u04da\u0001\u0000\u0000\u0000\u17bc\u17bd\u0007\f\u0000\u0000\u17bd\u17be"+ + "\u0007\u0005\u0000\u0000\u17be\u17bf\u0007\u0010\u0000\u0000\u17bf\u17c0"+ + "\u0007\n\u0000\u0000\u17c0\u17c1\u0005_\u0000\u0000\u17c1\u17c2\u0007"+ + "\u0012\u0000\u0000\u17c2\u17c3\u0007\u0011\u0000\u0000\u17c3\u17c4\u0007"+ + "\u0007\u0000\u0000\u17c4\u04dc\u0001\u0000\u0000\u0000\u17c5\u17c6\u0007"+ + "\f\u0000\u0000\u17c6\u17c7\u0007\u0005\u0000\u0000\u17c7\u17c8\u0007\u0010"+ + "\u0000\u0000\u17c8\u17c9\u0007\n\u0000\u0000\u17c9\u17ca\u0005_\u0000"+ + "\u0000\u17ca\u17cb\u0007\u0018\u0000\u0000\u17cb\u17cc\u0007\u0005\u0000"+ + "\u0000\u17cc\u17cd\u0007\r\u0000\u0000\u17cd\u17ce\u0007\u0010\u0000\u0000"+ + "\u17ce\u04de\u0001\u0000\u0000\u0000\u17cf\u17d0\u0007\f\u0000\u0000\u17d0"+ + "\u17d1\u0007\u0005\u0000\u0000\u17d1\u17d2\u0007\u0010\u0000\u0000\u17d2"+ + "\u17d3\u0007\n\u0000\u0000\u17d3\u17d4\u0005_\u0000\u0000\u17d4\u17d5"+ + "\u0007\u0010\u0000\u0000\u17d5\u17d6\u0007\r\u0000\u0000\u17d6\u17d7\u0007"+ + "\u0016\u0000\u0000\u17d7\u17d8\u0007\u0007\u0000\u0000\u17d8\u17d9\u0007"+ + "\u000e\u0000\u0000\u17d9\u04e0\u0001\u0000\u0000\u0000\u17da\u17db\u0007"+ + "\u0011\u0000\u0000\u17db\u17dc\u0007\t\u0000\u0000\u17dc\u17dd\u0007\u0019"+ + "\u0000\u0000\u17dd\u17de\u0007\u0011\u0000\u0000\u17de\u17df\u0007\u0007"+ + "\u0000\u0000\u17df\u17e0\u0007\u0011\u0000\u0000\u17e0\u17e1\u0007\u0010"+ + "\u0000\u0000\u17e1\u17e2\u0007\n\u0000\u0000\u17e2\u04e2\u0001\u0000\u0000"+ + "\u0000\u17e3\u17e4\u0007\u001e\u0000\u0000\u17e4\u17e5\u0007\u0016\u0000"+ + "\u0000\u17e5\u17e6\u0007\t\u0000\u0000\u17e6\u17e7\u0007\u0010\u0000\u0000"+ + "\u17e7\u17e8\u0007\u0011\u0000\u0000\u17e8\u17e9\u0007\u0019\u0000\u0000"+ + "\u17e9\u17ea\u0007\b\u0000\u0000\u17ea\u17eb\u0005_\u0000\u0000\u17eb"+ + "\u17ec\u0007\f\u0000\u0000\u17ec\u17ed\u0007\u0005\u0000\u0000\u17ed\u17ee"+ + "\u0007\b\u0000\u0000\u17ee\u17ef\u0007\t\u0000\u0000\u17ef\u04e4\u0001"+ + "\u0000\u0000\u0000\u17f0\u17f1\u0007\u001e\u0000\u0000\u17f1\u17f2\u0007"+ + "\u0016\u0000\u0000\u17f2\u17f3\u0007\t\u0000\u0000\u17f3\u17f4\u0007\u0010"+ + "\u0000\u0000\u17f4\u17f5\u0007\u0011\u0000\u0000\u17f5\u17f6\u0007\u0019"+ + "\u0000\u0000\u17f6\u17f7\u0007\b\u0000\u0000\u17f7\u17f8\u0005_\u0000"+ + "\u0000\u17f8\u17f9\u0007\u0014\u0000\u0000\u17f9\u17fa\u0007\u0013\u0000"+ + "\u0000\u17fa\u17fb\u0007\u0016\u0000\u0000\u17fb\u17fc\u0007\r\u0000\u0000"+ + "\u17fc\u17fd\u0007\t\u0000\u0000\u17fd\u04e6\u0001\u0000\u0000\u0000\u17fe"+ + "\u17ff\u0007\u001e\u0000\u0000\u17ff\u1800\u0007\u0016\u0000\u0000\u1800"+ + "\u1801\u0007\t\u0000\u0000\u1801\u1802\u0007\u0010\u0000\u0000\u1802\u1803"+ + "\u0007\u0011\u0000\u0000\u1803\u1804\u0007\u0019\u0000\u0000\u1804\u1805"+ + "\u0007\b\u0000\u0000\u1805\u1806\u0005_\u0000\u0000\u1806\u1807\u0007"+ + "\u0011\u0000\u0000\u1807\u1808\u0007\u0007\u0000\u0000\u1808\u1809\u0007"+ + "\u0010\u0000\u0000\u1809\u180a\u0007\n\u0000\u0000\u180a\u180b\u0007\r"+ + "\u0000\u0000\u180b\u180c\u0007\u001b\u0000\u0000\u180c\u180d\u0007\u0005"+ + "\u0000\u0000\u180d\u180e\u0007\u0006\u0000\u0000\u180e\u04e8\u0001\u0000"+ + "\u0000\u0000\u180f\u1810\u0007\u000f\u0000\u0000\u1810\u1811\u0007\u0005"+ + "\u0000\u0000\u1811\u1812\u0007\u0015\u0000\u0000\u1812\u1813\u0007\n\u0000"+ + "\u0000\u1813\u1814\u0005_\u0000\u0000\u1814\u1815\u0007\f\u0000\u0000"+ + "\u1815\u1816\u0007\u0005\u0000\u0000\u1816\u1817\u0007\u0010\u0000\u0000"+ + "\u1817\u1818\u0007\n\u0000\u0000\u1818\u04ea\u0001\u0000\u0000\u0000\u1819"+ + "\u181a\u0007\u000f\u0000\u0000\u181a\u181b\u0007\u0005\u0000\u0000\u181b"+ + "\u181c\u0007\u0015\u0000\u0000\u181c\u181d\u0007\n\u0000\u0000\u181d\u181e"+ + "\u0005_\u0000\u0000\u181e\u181f\u0007\u0011\u0000\u0000\u181f\u1820\u0007"+ + "\u0007\u0000\u0000\u1820\u1821\u0007\u0010\u0000\u0000\u1821\u1822\u0007"+ + "\n\u0000\u0000\u1822\u1823\u0007\r\u0000\u0000\u1823\u1824\u0007\u001b"+ + "\u0000\u0000\u1824\u1825\u0007\u0005\u0000\u0000\u1825\u1826\u0007\u0006"+ + "\u0000\u0000\u1826\u04ec\u0001\u0000\u0000\u0000\u1827\u1828\u0007\u000f"+ + "\u0000\u0000\u1828\u1829\u0007\u0005\u0000\u0000\u1829\u182a\u0007\u0015"+ + "\u0000\u0000\u182a\u182b\u0007\n\u0000\u0000\u182b\u182c\u0005_\u0000"+ + "\u0000\u182c\u182d\u0007\u0010\u0000\u0000\u182d\u182e\u0007\u0011\u0000"+ + "\u0000\u182e\u182f\u0007\u000f\u0000\u0000\u182f\u1830\u0007\n\u0000\u0000"+ + "\u1830\u04ee\u0001\u0000\u0000\u0000\u1831\u1832\u0007\u000f\u0000\u0000"+ + "\u1832\u1833\u0007\u0005\u0000\u0000\u1833\u1834\u0007\u0015\u0000\u0000"+ + "\u1834\u1835\u0007\n\u0000\u0000\u1835\u1836\u0005_\u0000\u0000\u1836"+ + "\u1837\u0007\u0010\u0000\u0000\u1837\u1838\u0007\u0011\u0000\u0000\u1838"+ + "\u1839\u0007\u000f\u0000\u0000\u1839\u183a\u0007\n\u0000\u0000\u183a\u183b"+ + "\u0007\t\u0000\u0000\u183b\u183c\u0007\u0010\u0000\u0000\u183c\u183d\u0007"+ + "\u0005\u0000\u0000\u183d\u183e\u0007\u000f\u0000\u0000\u183e\u183f\u0007"+ + "\u0018\u0000\u0000\u183f\u04f0\u0001\u0000\u0000\u0000\u1840\u1841\u0007"+ + "\u000f\u0000\u0000\u1841\u1842\u0007\u0005\u0000\u0000\u1842\u1843\u0007"+ + "\u0015\u0000\u0000\u1843\u1844\u0007\n\u0000\u0000\u1844\u1845\u0005_"+ + "\u0000\u0000\u1845\u1846\u0007\u0010\u0000\u0000\u1846\u1847\u0007\u0011"+ + "\u0000\u0000\u1847\u1848\u0007\u000f\u0000\u0000\u1848\u1849\u0007\n\u0000"+ + "\u0000\u1849\u184a\u0007\t\u0000\u0000\u184a\u184b\u0007\u0010\u0000\u0000"+ + "\u184b\u184c\u0007\u0005\u0000\u0000\u184c\u184d\u0007\u000f\u0000\u0000"+ + "\u184d\u184e\u0007\u0018\u0000\u0000\u184e\u184f\u0007\u0010\u0000\u0000"+ + "\u184f\u1850\u0007\u000b\u0000\u0000\u1850\u04f2\u0001\u0000\u0000\u0000"+ + "\u1851\u1852\u0007\u0007\u0000\u0000\u1852\u1853\u0007\u0013\u0000\u0000"+ + "\u1853\u1854\u0007\u001d\u0000\u0000\u1854\u04f4\u0001\u0000\u0000\u0000"+ + "\u1855\u1856\u0007\t\u0000\u0000\u1856\u1857\u0007\u0010\u0000\u0000\u1857"+ + "\u1858\u0007\u0005\u0000\u0000\u1858\u1859\u0007\u0010\u0000\u0000\u1859"+ + "\u185a\u0007\n\u0000\u0000\u185a\u185b\u0007\u000f\u0000\u0000\u185b\u185c"+ + "\u0007\n\u0000\u0000\u185c\u185d\u0007\u0007\u0000\u0000\u185d\u185e\u0007"+ + "\u0010\u0000\u0000\u185e\u185f\u0005_\u0000\u0000\u185f\u1860\u0007\u0010"+ + "\u0000\u0000\u1860\u1861\u0007\u0011\u0000\u0000\u1861\u1862\u0007\u000f"+ + "\u0000\u0000\u1862\u1863\u0007\n\u0000\u0000\u1863\u1864\u0007\t\u0000"+ + "\u0000\u1864\u1865\u0007\u0010\u0000\u0000\u1865\u1866\u0007\u0005\u0000"+ + "\u0000\u1866\u1867\u0007\u000f\u0000\u0000\u1867\u1868\u0007\u0018\u0000"+ + "\u0000\u1868\u04f6\u0001\u0000\u0000\u0000\u1869\u186a\u0007\u0010\u0000"+ + "\u0000\u186a\u186b\u0007\u0011\u0000\u0000\u186b\u186c\u0007\u000f\u0000"+ + "\u0000\u186c\u186d\u0007\n\u0000\u0000\u186d\u186e\u0007\u0013\u0000\u0000"+ + "\u186e\u186f\u0007\u0019\u0000\u0000\u186f\u1870\u0007\f\u0000\u0000\u1870"+ + "\u1871\u0007\u0005\u0000\u0000\u1871\u1872\u0007\b\u0000\u0000\u1872\u04f8"+ + "\u0001\u0000\u0000\u0000\u1873\u1874\u0007\u0010\u0000\u0000\u1874\u1875"+ + "\u0007\r\u0000\u0000\u1875\u1876\u0007\u0005\u0000\u0000\u1876\u1877\u0007"+ + "\u0007\u0000\u0000\u1877\u1878\u0007\t\u0000\u0000\u1878\u1879\u0007\u0005"+ + "\u0000\u0000\u1879\u187a\u0007\u000e\u0000\u0000\u187a\u187b\u0007\u0010"+ + "\u0000\u0000\u187b\u187c\u0007\u0011\u0000\u0000\u187c\u187d\u0007\u0013"+ + "\u0000\u0000\u187d\u187e\u0007\u0007\u0000\u0000\u187e\u187f\u0005_\u0000"+ + "\u0000\u187f\u1880\u0007\u0010\u0000\u0000\u1880\u1881\u0007\u0011\u0000"+ + "\u0000\u1881\u1882\u0007\u000f\u0000\u0000\u1882\u1883\u0007\n\u0000\u0000"+ + "\u1883\u1884\u0007\t\u0000\u0000\u1884\u1885\u0007\u0010\u0000\u0000\u1885"+ + "\u1886\u0007\u0005\u0000\u0000\u1886\u1887\u0007\u000f\u0000\u0000\u1887"+ + "\u1888\u0007\u0018\u0000\u0000\u1888\u04fa\u0001\u0000\u0000\u0000\u1889"+ + "\u188a\u0007\u0010\u0000\u0000\u188a\u188b\u0007\u0013\u0000\u0000\u188b"+ + "\u188c\u0005_\u0000\u0000\u188c\u188d\u0007\u0010\u0000\u0000\u188d\u188e"+ + "\u0007\u0011\u0000\u0000\u188e\u188f\u0007\u000f\u0000\u0000\u188f\u1890"+ + "\u0007\n\u0000\u0000\u1890\u1891\u0007\t\u0000\u0000\u1891\u1892\u0007"+ + "\u0010\u0000\u0000\u1892\u1893\u0007\u0005\u0000\u0000\u1893\u1894\u0007"+ + "\u000f\u0000\u0000\u1894\u1895\u0007\u0018\u0000\u0000\u1895\u04fc\u0001"+ + "\u0000\u0000\u0000\u1896\u1897\u0007\u0010\u0000\u0000\u1897\u1898\u0007"+ + "\u0013\u0000\u0000\u1898\u1899\u0005_\u0000\u0000\u1899\u189a\u0007\u000e"+ + "\u0000\u0000\u189a\u189b\u0007\u0014\u0000\u0000\u189b\u189c\u0007\u0005"+ + "\u0000\u0000\u189c\u189d\u0007\r\u0000\u0000\u189d\u04fe\u0001\u0000\u0000"+ + "\u0000\u189e\u189f\u0007\u0010\u0000\u0000\u189f\u18a0\u0007\u0013\u0000"+ + "\u0000\u18a0\u18a1\u0005_\u0000\u0000\u18a1\u18a2\u0007\f\u0000\u0000"+ + "\u18a2\u18a3\u0007\u0005\u0000\u0000\u18a3\u18a4\u0007\u0010\u0000\u0000"+ + "\u18a4\u18a5\u0007\n\u0000\u0000\u18a5\u0500\u0001\u0000\u0000\u0000\u18a6"+ + "\u18a7\u0007\u0010\u0000\u0000\u18a7\u18a8\u0007\u0013\u0000\u0000\u18a8"+ + "\u18a9\u0005_\u0000\u0000\u18a9\u18aa\u0007\u0007\u0000\u0000\u18aa\u18ab"+ + "\u0007\u0016\u0000\u0000\u18ab\u18ac\u0007\u000f\u0000\u0000\u18ac\u18ad"+ + "\u0007\u0012\u0000\u0000\u18ad\u18ae\u0007\n\u0000\u0000\u18ae\u18af\u0007"+ + "\r\u0000\u0000\u18af\u0502\u0001\u0000\u0000\u0000\u18b0\u18b4\u0003\u0505"+ + "\u0280\u0000\u18b1\u18b3\u0003\u0507\u0281\u0000\u18b2\u18b1\u0001\u0000"+ + "\u0000\u0000\u18b3\u18b6\u0001\u0000\u0000\u0000\u18b4\u18b2\u0001\u0000"+ + "\u0000\u0000\u18b4\u18b5\u0001\u0000\u0000\u0000\u18b5\u0504\u0001\u0000"+ + "\u0000\u0000\u18b6\u18b4\u0001\u0000\u0000\u0000\u18b7\u18be\u0007\u001f"+ + "\u0000\u0000\u18b8\u18b9\u0007 \u0000\u0000\u18b9\u18be\u0004\u0280\u0006"+ + "\u0000\u18ba\u18bb\u0007!\u0000\u0000\u18bb\u18bc\u0007\"\u0000\u0000"+ + "\u18bc\u18be\u0004\u0280\u0007\u0000\u18bd\u18b7\u0001\u0000\u0000\u0000"+ + "\u18bd\u18b8\u0001\u0000\u0000\u0000\u18bd\u18ba\u0001\u0000\u0000\u0000"+ + "\u18be\u0506\u0001\u0000\u0000\u0000\u18bf\u18c2\u0003\u0509\u0282\u0000"+ + "\u18c0\u18c2\u0005$\u0000\u0000\u18c1\u18bf\u0001\u0000\u0000\u0000\u18c1"+ + "\u18c0\u0001\u0000\u0000\u0000\u18c2\u0508\u0001\u0000\u0000\u0000\u18c3"+ + "\u18c6\u0003\u0505\u0280\u0000\u18c4\u18c6\u0007\u0000\u0000\u0000\u18c5"+ + "\u18c3\u0001\u0000\u0000\u0000\u18c5\u18c4\u0001\u0000\u0000\u0000\u18c6"+ + "\u050a\u0001\u0000\u0000\u0000\u18c7\u18c8\u0003\u050d\u0284\u0000\u18c8"+ + "\u18c9\u0005\"\u0000\u0000\u18c9\u050c\u0001\u0000\u0000\u0000\u18ca\u18d0"+ + "\u0005\"\u0000\u0000\u18cb\u18cc\u0005\"\u0000\u0000\u18cc\u18cf\u0005"+ + "\"\u0000\u0000\u18cd\u18cf\b#\u0000\u0000\u18ce\u18cb\u0001\u0000\u0000"+ + "\u0000\u18ce\u18cd\u0001\u0000\u0000\u0000\u18cf\u18d2\u0001\u0000\u0000"+ + "\u0000\u18d0\u18ce\u0001\u0000\u0000\u0000\u18d0\u18d1\u0001\u0000\u0000"+ + "\u0000\u18d1\u050e\u0001\u0000\u0000\u0000\u18d2\u18d0\u0001\u0000\u0000"+ + "\u0000\u18d3\u18d4\u0003\u0511\u0286\u0000\u18d4\u18d5\u0005\"\u0000\u0000"+ + "\u18d5\u0510\u0001\u0000\u0000\u0000\u18d6\u18dc\u0005\"\u0000\u0000\u18d7"+ + "\u18d8\u0005\"\u0000\u0000\u18d8\u18db\u0005\"\u0000\u0000\u18d9\u18db"+ + "\b$\u0000\u0000\u18da\u18d7\u0001\u0000\u0000\u0000\u18da\u18d9\u0001"+ + "\u0000\u0000\u0000\u18db\u18de\u0001\u0000\u0000\u0000\u18dc\u18da\u0001"+ + "\u0000\u0000\u0000\u18dc\u18dd\u0001\u0000\u0000\u0000\u18dd\u0512\u0001"+ + "\u0000\u0000\u0000\u18de\u18dc\u0001\u0000\u0000\u0000\u18df\u18e0\u0007"+ + "\u0016\u0000\u0000\u18e0\u18e1\u0005&\u0000\u0000\u18e1\u18e2\u0003\u050b"+ + "\u0283\u0000\u18e2\u0514\u0001\u0000\u0000\u0000\u18e3\u18e4\u0007\u0016"+ + "\u0000\u0000\u18e4\u18e5\u0005&\u0000\u0000\u18e5\u18e6\u0003\u050d\u0284"+ + "\u0000\u18e6\u0516\u0001\u0000\u0000\u0000\u18e7\u18e8\u0007\u0016\u0000"+ + "\u0000\u18e8\u18e9\u0005&\u0000\u0000\u18e9\u18ea\u0003\u050f\u0285\u0000"+ + "\u18ea\u0518\u0001\u0000\u0000\u0000\u18eb\u18ec\u0007\u0016\u0000\u0000"+ + "\u18ec\u18ed\u0005&\u0000\u0000\u18ed\u18ee\u0003\u0511\u0286\u0000\u18ee"+ + "\u051a\u0001\u0000\u0000\u0000\u18ef\u18f0\u0003\u051d\u028c\u0000\u18f0"+ + "\u18f1\u0005\'\u0000\u0000\u18f1\u051c\u0001\u0000\u0000\u0000\u18f2\u18f8"+ + "\u0005\'\u0000\u0000\u18f3\u18f4\u0005\'\u0000\u0000\u18f4\u18f7\u0005"+ + "\'\u0000\u0000\u18f5\u18f7\b%\u0000\u0000\u18f6\u18f3\u0001\u0000\u0000"+ + "\u0000\u18f6\u18f5\u0001\u0000\u0000\u0000\u18f7\u18fa\u0001\u0000\u0000"+ + "\u0000\u18f8\u18f6\u0001\u0000\u0000\u0000\u18f8\u18f9\u0001\u0000\u0000"+ + "\u0000\u18f9\u051e\u0001\u0000\u0000\u0000\u18fa\u18f8\u0001\u0000\u0000"+ + "\u0000\u18fb\u18fc\u0007\n\u0000\u0000\u18fc\u18fd\u0005\'\u0000\u0000"+ + "\u18fd\u18fe\u0001\u0000\u0000\u0000\u18fe\u18ff\u0006\u028d\u0002\u0000"+ + "\u18ff\u1900\u0006\u028d\u0003\u0000\u1900\u0520\u0001\u0000\u0000\u0000"+ + "\u1901\u1902\u0003\u0523\u028f\u0000\u1902\u1903\u0005\'\u0000\u0000\u1903"+ + "\u0522\u0001\u0000\u0000\u0000\u1904\u1905\u0007\u0016\u0000\u0000\u1905"+ + "\u1906\u0005&\u0000\u0000\u1906\u1907\u0003\u051d\u028c\u0000\u1907\u0524"+ + "\u0001\u0000\u0000\u0000\u1908\u190a\u0005$\u0000\u0000\u1909\u190b\u0003"+ + "\u0527\u0291\u0000\u190a\u1909\u0001\u0000\u0000\u0000\u190a\u190b\u0001"+ + "\u0000\u0000\u0000\u190b\u190c\u0001\u0000\u0000\u0000\u190c\u190d\u0005"+ + "$\u0000\u0000\u190d\u190e\u0006\u0290\u0004\u0000\u190e\u190f\u0001\u0000"+ + "\u0000\u0000\u190f\u1910\u0006\u0290\u0005\u0000\u1910\u0526\u0001\u0000"+ + "\u0000\u0000\u1911\u1915\u0003\u0505\u0280\u0000\u1912\u1914\u0003\u0509"+ + "\u0282\u0000\u1913\u1912\u0001\u0000\u0000\u0000\u1914\u1917\u0001\u0000"+ + "\u0000\u0000\u1915\u1913\u0001\u0000\u0000\u0000\u1915\u1916\u0001\u0000"+ + "\u0000\u0000\u1916\u0528\u0001\u0000\u0000\u0000\u1917\u1915\u0001\u0000"+ + "\u0000\u0000\u1918\u1919\u0003\u052b\u0293\u0000\u1919\u191a\u0005\'\u0000"+ + "\u0000\u191a\u052a\u0001\u0000\u0000\u0000\u191b\u191c\u0007\u0012\u0000"+ + "\u0000\u191c\u1920\u0005\'\u0000\u0000\u191d\u191f\u0007&\u0000\u0000"+ + "\u191e\u191d\u0001\u0000\u0000\u0000\u191f\u1922\u0001\u0000\u0000\u0000"+ + "\u1920\u191e\u0001\u0000\u0000\u0000\u1920\u1921\u0001\u0000\u0000\u0000"+ + "\u1921\u052c\u0001\u0000\u0000\u0000\u1922\u1920\u0001\u0000\u0000\u0000"+ + "\u1923\u1924\u0003\u052f\u0295\u0000\u1924\u1925\u0005\'\u0000\u0000\u1925"+ + "\u052e\u0001\u0000\u0000\u0000\u1926\u1927\u0007\u0012\u0000\u0000\u1927"+ + "\u1928\u0003\u051d\u028c\u0000\u1928\u0530\u0001\u0000\u0000\u0000\u1929"+ + "\u192a\u0003\u0533\u0297\u0000\u192a\u192b\u0005\'\u0000\u0000\u192b\u0532"+ + "\u0001\u0000\u0000\u0000\u192c\u192d\u0007\u001a\u0000\u0000\u192d\u1931"+ + "\u0005\'\u0000\u0000\u192e\u1930\u0007\'\u0000\u0000\u192f\u192e\u0001"+ + "\u0000\u0000\u0000\u1930\u1933\u0001\u0000\u0000\u0000\u1931\u192f\u0001"+ + "\u0000\u0000\u0000\u1931\u1932\u0001\u0000\u0000\u0000\u1932\u0534\u0001"+ + "\u0000\u0000\u0000\u1933\u1931\u0001\u0000\u0000\u0000\u1934\u1935\u0003"+ + "\u0537\u0299\u0000\u1935\u1936\u0005\'\u0000\u0000\u1936\u0536\u0001\u0000"+ + "\u0000\u0000\u1937\u1938\u0007\u001a\u0000\u0000\u1938\u1939\u0003\u051d"+ + "\u028c\u0000\u1939\u0538\u0001\u0000\u0000\u0000\u193a\u193b\u0003\u053f"+ + "\u029d\u0000\u193b\u053a\u0001\u0000\u0000\u0000\u193c\u193d\u0003\u053f"+ + "\u029d\u0000\u193d\u193e\u0005.\u0000\u0000\u193e\u193f\u0005.\u0000\u0000"+ + "\u193f\u1940\u0001\u0000\u0000\u0000\u1940\u1941\u0006\u029b\u0006\u0000"+ + "\u1941\u053c\u0001\u0000\u0000\u0000\u1942\u1943\u0003\u053f\u029d\u0000"+ + "\u1943\u1945\u0005.\u0000\u0000\u1944\u1946\u0003\u053f\u029d\u0000\u1945"+ + "\u1944\u0001\u0000\u0000\u0000\u1945\u1946\u0001\u0000\u0000\u0000\u1946"+ + "\u194c\u0001\u0000\u0000\u0000\u1947\u1949\u0007\n\u0000\u0000\u1948\u194a"+ + "\u0007\u0001\u0000\u0000\u1949\u1948\u0001\u0000\u0000\u0000\u1949\u194a"+ + "\u0001\u0000\u0000\u0000\u194a\u194b\u0001\u0000\u0000\u0000\u194b\u194d"+ + "\u0003\u053f\u029d\u0000\u194c\u1947\u0001\u0000\u0000\u0000\u194c\u194d"+ + "\u0001\u0000\u0000\u0000\u194d\u195f\u0001\u0000\u0000\u0000\u194e\u194f"+ + "\u0005.\u0000\u0000\u194f\u1955\u0003\u053f\u029d\u0000\u1950\u1952\u0007"+ + "\n\u0000\u0000\u1951\u1953\u0007\u0001\u0000\u0000\u1952\u1951\u0001\u0000"+ + "\u0000\u0000\u1952\u1953\u0001\u0000\u0000\u0000\u1953\u1954\u0001\u0000"+ + "\u0000\u0000\u1954\u1956\u0003\u053f\u029d\u0000\u1955\u1950\u0001\u0000"+ + "\u0000\u0000\u1955\u1956\u0001\u0000\u0000\u0000\u1956\u195f\u0001\u0000"+ + "\u0000\u0000\u1957\u1958\u0003\u053f\u029d\u0000\u1958\u195a\u0007\n\u0000"+ + "\u0000\u1959\u195b\u0007\u0001\u0000\u0000\u195a\u1959\u0001\u0000\u0000"+ + "\u0000\u195a\u195b\u0001\u0000\u0000\u0000\u195b\u195c\u0001\u0000\u0000"+ + "\u0000\u195c\u195d\u0003\u053f\u029d\u0000\u195d\u195f\u0001\u0000\u0000"+ + "\u0000\u195e\u1942\u0001\u0000\u0000\u0000\u195e\u194e\u0001\u0000\u0000"+ + "\u0000\u195e\u1957\u0001\u0000\u0000\u0000\u195f\u053e\u0001\u0000\u0000"+ + "\u0000\u1960\u1962\u0007\u0000\u0000\u0000\u1961\u1960\u0001\u0000\u0000"+ + "\u0000\u1962\u1963\u0001\u0000\u0000\u0000\u1963\u1961\u0001\u0000\u0000"+ + "\u0000\u1963\u1964\u0001\u0000\u0000\u0000\u1964\u0540\u0001\u0000\u0000"+ + "\u0000\u1965\u1966\u0005:\u0000\u0000\u1966\u196a\u0007(\u0000\u0000\u1967"+ + "\u1969\u0007)\u0000\u0000\u1968\u1967\u0001\u0000\u0000\u0000\u1969\u196c"+ + "\u0001\u0000\u0000\u0000\u196a\u1968\u0001\u0000\u0000\u0000\u196a\u196b"+ + "\u0001\u0000\u0000\u0000\u196b\u0542\u0001\u0000\u0000\u0000\u196c\u196a"+ + "\u0001\u0000\u0000\u0000\u196d\u196e\u0005:\u0000\u0000\u196e\u196f\u0005"+ + "\"\u0000\u0000\u196f\u1977\u0001\u0000\u0000\u0000\u1970\u1971\u0005\\"+ + "\u0000\u0000\u1971\u1976\t\u0000\u0000\u0000\u1972\u1973\u0005\"\u0000"+ + "\u0000\u1973\u1976\u0005\"\u0000\u0000\u1974\u1976\b*\u0000\u0000\u1975"+ + "\u1970\u0001\u0000\u0000\u0000\u1975\u1972\u0001\u0000\u0000\u0000\u1975"+ + "\u1974\u0001\u0000\u0000\u0000\u1976\u1979\u0001\u0000\u0000\u0000\u1977"+ + "\u1975\u0001\u0000\u0000\u0000\u1977\u1978\u0001\u0000\u0000\u0000\u1978"+ + "\u197a\u0001\u0000\u0000\u0000\u1979\u1977\u0001\u0000\u0000\u0000\u197a"+ + "\u197b\u0005\"\u0000\u0000\u197b\u0544\u0001\u0000\u0000\u0000\u197c\u197e"+ + "\u0007+\u0000\u0000\u197d\u197c\u0001\u0000\u0000\u0000\u197e\u197f\u0001"+ + "\u0000\u0000\u0000\u197f\u197d\u0001\u0000\u0000\u0000\u197f\u1980\u0001"+ + "\u0000\u0000\u0000\u1980\u1981\u0001\u0000\u0000\u0000\u1981\u1982\u0006"+ + "\u02a0\u0007\u0000\u1982\u0546\u0001\u0000\u0000\u0000\u1983\u1985\u0005"+ + "\r\u0000\u0000\u1984\u1986\u0005\n\u0000\u0000\u1985\u1984\u0001\u0000"+ + "\u0000\u0000\u1985\u1986\u0001\u0000\u0000\u0000\u1986\u1989\u0001\u0000"+ + "\u0000\u0000\u1987\u1989\u0005\n\u0000\u0000\u1988\u1983\u0001\u0000\u0000"+ + "\u0000\u1988\u1987\u0001\u0000\u0000\u0000\u1989\u198a\u0001\u0000\u0000"+ + "\u0000\u198a\u198b\u0006\u02a1\u0007\u0000\u198b\u0548\u0001\u0000\u0000"+ + "\u0000\u198c\u198d\u0005-\u0000\u0000\u198d\u198e\u0005-\u0000\u0000\u198e"+ + "\u1992\u0001\u0000\u0000\u0000\u198f\u1991\b,\u0000\u0000\u1990\u198f"+ + "\u0001\u0000\u0000\u0000\u1991\u1994\u0001\u0000\u0000\u0000\u1992\u1990"+ + "\u0001\u0000\u0000\u0000\u1992\u1993\u0001\u0000\u0000\u0000\u1993\u1995"+ + "\u0001\u0000\u0000\u0000\u1994\u1992\u0001\u0000\u0000\u0000\u1995\u1996"+ + "\u0006\u02a2\u0007\u0000\u1996\u054a\u0001\u0000\u0000\u0000\u1997\u1998"+ + "\u0005/\u0000\u0000\u1998\u1999\u0005*\u0000\u0000\u1999\u19b0\u0001\u0000"+ + "\u0000\u0000\u199a\u199c\u0005/\u0000\u0000\u199b\u199a\u0001\u0000\u0000"+ + "\u0000\u199c\u199f\u0001\u0000\u0000\u0000\u199d\u199b\u0001\u0000\u0000"+ + "\u0000\u199d\u199e\u0001\u0000\u0000\u0000\u199e\u19a0\u0001\u0000\u0000"+ + "\u0000\u199f\u199d\u0001\u0000\u0000\u0000\u19a0\u19af\u0003\u054b\u02a3"+ + "\u0000\u19a1\u19af\b-\u0000\u0000\u19a2\u19a4\u0005/\u0000\u0000\u19a3"+ + "\u19a2\u0001\u0000\u0000\u0000\u19a4\u19a5\u0001\u0000\u0000\u0000\u19a5"+ + "\u19a3\u0001\u0000\u0000\u0000\u19a5\u19a6\u0001\u0000\u0000\u0000\u19a6"+ + "\u19a7\u0001\u0000\u0000\u0000\u19a7\u19af\b-\u0000\u0000\u19a8\u19aa"+ + "\u0005*\u0000\u0000\u19a9\u19a8\u0001\u0000\u0000\u0000\u19aa\u19ab\u0001"+ + "\u0000\u0000\u0000\u19ab\u19a9\u0001\u0000\u0000\u0000\u19ab\u19ac\u0001"+ + "\u0000\u0000\u0000\u19ac\u19ad\u0001\u0000\u0000\u0000\u19ad\u19af\b-"+ + "\u0000\u0000\u19ae\u199d\u0001\u0000\u0000\u0000\u19ae\u19a1\u0001\u0000"+ + "\u0000\u0000\u19ae\u19a3\u0001\u0000\u0000\u0000\u19ae\u19a9\u0001\u0000"+ + "\u0000\u0000\u19af\u19b2\u0001\u0000\u0000\u0000\u19b0\u19ae\u0001\u0000"+ + "\u0000\u0000\u19b0\u19b1\u0001\u0000\u0000\u0000\u19b1\u19b6\u0001\u0000"+ + "\u0000\u0000\u19b2\u19b0\u0001\u0000\u0000\u0000\u19b3\u19b5\u0005*\u0000"+ + "\u0000\u19b4\u19b3\u0001\u0000\u0000\u0000\u19b5\u19b8\u0001\u0000\u0000"+ + "\u0000\u19b6\u19b4\u0001\u0000\u0000\u0000\u19b6\u19b7\u0001\u0000\u0000"+ + "\u0000\u19b7\u19b9\u0001\u0000\u0000\u0000\u19b8\u19b6\u0001\u0000\u0000"+ + "\u0000\u19b9\u19ba\u0005*\u0000\u0000\u19ba\u19bb\u0005/\u0000\u0000\u19bb"+ + "\u19bc\u0001\u0000\u0000\u0000\u19bc\u19bd\u0006\u02a3\u0007\u0000\u19bd"+ + "\u054c\u0001\u0000\u0000\u0000\u19be\u19bf\u0005/\u0000\u0000\u19bf\u19c0"+ + "\u0005*\u0000\u0000\u19c0\u19d9\u0001\u0000\u0000\u0000\u19c1\u19c3\u0005"+ + "/\u0000\u0000\u19c2\u19c1\u0001\u0000\u0000\u0000\u19c3\u19c6\u0001\u0000"+ + "\u0000\u0000\u19c4\u19c2\u0001\u0000\u0000\u0000\u19c4\u19c5\u0001\u0000"+ + "\u0000\u0000\u19c5\u19c7\u0001\u0000\u0000\u0000\u19c6\u19c4\u0001\u0000"+ + "\u0000\u0000\u19c7\u19d8\u0003\u054b\u02a3\u0000\u19c8\u19d8\b-\u0000"+ + "\u0000\u19c9\u19cb\u0005/\u0000\u0000\u19ca\u19c9\u0001\u0000\u0000\u0000"+ + "\u19cb\u19cc\u0001\u0000\u0000\u0000\u19cc\u19ca\u0001\u0000\u0000\u0000"+ + "\u19cc\u19cd\u0001\u0000\u0000\u0000\u19cd\u19ce\u0001\u0000\u0000\u0000"+ + "\u19ce\u19d6\b-\u0000\u0000\u19cf\u19d1\u0005*\u0000\u0000\u19d0\u19cf"+ + "\u0001\u0000\u0000\u0000\u19d1\u19d2\u0001\u0000\u0000\u0000\u19d2\u19d0"+ + "\u0001\u0000\u0000\u0000\u19d2\u19d3\u0001\u0000\u0000\u0000\u19d3\u19d4"+ + "\u0001\u0000\u0000\u0000\u19d4\u19d6\b-\u0000\u0000\u19d5\u19ca\u0001"+ + "\u0000\u0000\u0000\u19d5\u19d0\u0001\u0000\u0000\u0000\u19d6\u19d8\u0001"+ + "\u0000\u0000\u0000\u19d7\u19c4\u0001\u0000\u0000\u0000\u19d7\u19c8\u0001"+ + "\u0000\u0000\u0000\u19d7\u19d5\u0001\u0000\u0000\u0000\u19d8\u19db\u0001"+ + "\u0000\u0000\u0000\u19d9\u19d7\u0001\u0000\u0000\u0000\u19d9\u19da\u0001"+ + "\u0000\u0000\u0000\u19da\u19ed\u0001\u0000\u0000\u0000\u19db\u19d9\u0001"+ + "\u0000\u0000\u0000\u19dc\u19de\u0005/\u0000\u0000\u19dd\u19dc\u0001\u0000"+ + "\u0000\u0000\u19de\u19df\u0001\u0000\u0000\u0000\u19df\u19dd\u0001\u0000"+ + "\u0000\u0000\u19df\u19e0\u0001\u0000\u0000\u0000\u19e0\u19ee\u0001\u0000"+ + "\u0000\u0000\u19e1\u19e3\u0005*\u0000\u0000\u19e2\u19e1\u0001\u0000\u0000"+ + "\u0000\u19e3\u19e4\u0001\u0000\u0000\u0000\u19e4\u19e2\u0001\u0000\u0000"+ + "\u0000\u19e4\u19e5\u0001\u0000\u0000\u0000\u19e5\u19ee\u0001\u0000\u0000"+ + "\u0000\u19e6\u19e8\u0005/\u0000\u0000\u19e7\u19e6\u0001\u0000\u0000\u0000"+ + "\u19e8\u19eb\u0001\u0000\u0000\u0000\u19e9\u19e7\u0001\u0000\u0000\u0000"+ + "\u19e9\u19ea\u0001\u0000\u0000\u0000\u19ea\u19ec\u0001\u0000\u0000\u0000"+ + "\u19eb\u19e9\u0001\u0000\u0000\u0000\u19ec\u19ee\u0003\u054d\u02a4\u0000"+ + "\u19ed\u19dd\u0001\u0000\u0000\u0000\u19ed\u19e2\u0001\u0000\u0000\u0000"+ + "\u19ed\u19e9\u0001\u0000\u0000\u0000\u19ed\u19ee\u0001\u0000\u0000\u0000"+ + "\u19ee\u19ef\u0001\u0000\u0000\u0000\u19ef\u19f0\u0006\u02a4\b\u0000\u19f0"+ + "\u054e\u0001\u0000\u0000\u0000\u19f1\u19fd\u0005\\\u0000\u0000\u19f2\u19fc"+ + "\b.\u0000\u0000\u19f3\u19f7\u0005\"\u0000\u0000\u19f4\u19f6\b/\u0000\u0000"+ + "\u19f5\u19f4\u0001\u0000\u0000\u0000\u19f6\u19f9\u0001\u0000\u0000\u0000"+ + "\u19f7\u19f5\u0001\u0000\u0000\u0000\u19f7\u19f8\u0001\u0000\u0000\u0000"+ + "\u19f8\u19fa\u0001\u0000\u0000\u0000\u19f9\u19f7\u0001\u0000\u0000\u0000"+ + "\u19fa\u19fc\u0005\"\u0000\u0000\u19fb\u19f2\u0001\u0000\u0000\u0000\u19fb"+ + "\u19f3\u0001\u0000\u0000\u0000\u19fc\u19ff\u0001\u0000\u0000\u0000\u19fd"+ + "\u19fb\u0001\u0000\u0000\u0000\u19fd\u19fe\u0001\u0000\u0000\u0000\u19fe"+ + "\u1a07\u0001\u0000\u0000\u0000\u19ff\u19fd\u0001\u0000\u0000\u0000\u1a00"+ + "\u1a04\u0005\"\u0000\u0000\u1a01\u1a03\b/\u0000\u0000\u1a02\u1a01\u0001"+ + "\u0000\u0000\u0000\u1a03\u1a06\u0001\u0000\u0000\u0000\u1a04\u1a02\u0001"+ + "\u0000\u0000\u0000\u1a04\u1a05\u0001\u0000\u0000\u0000\u1a05\u1a08\u0001"+ + "\u0000\u0000\u0000\u1a06\u1a04\u0001\u0000\u0000\u0000\u1a07\u1a00\u0001"+ + "\u0000\u0000\u0000\u1a07\u1a08\u0001\u0000\u0000\u0000\u1a08\u0550\u0001"+ + "\u0000\u0000\u0000\u1a09\u1a0a\u0005\\\u0000\u0000\u1a0a\u1a0b\u0005\\"+ + "\u0000\u0000\u1a0b\u0552\u0001\u0000\u0000\u0000\u1a0c\u1a0d\t\u0000\u0000"+ + "\u0000\u1a0d\u0554\u0001\u0000\u0000\u0000\u1a0e\u1a0f\u0003\u0559\u02aa"+ + "\u0000\u1a0f\u1a10\u0005\'\u0000\u0000\u1a10\u1a11\u0001\u0000\u0000\u0000"+ + "\u1a11\u1a12\u0006\u02a8\t\u0000\u1a12\u0556\u0001\u0000\u0000\u0000\u1a13"+ + "\u1a15\u0003\u0559\u02aa\u0000\u1a14\u1a16\u0005\\\u0000\u0000\u1a15\u1a14"+ + "\u0001\u0000\u0000\u0000\u1a15\u1a16\u0001\u0000\u0000\u0000\u1a16\u1a17"+ + "\u0001\u0000\u0000\u0000\u1a17\u1a18\u0005\u0000\u0000\u0001\u1a18\u0558"+ + "\u0001\u0000\u0000\u0000\u1a19\u1a1a\u0005\'\u0000\u0000\u1a1a\u1a31\u0005"+ + "\'\u0000\u0000\u1a1b\u1a2d\u0005\\\u0000\u0000\u1a1c\u1a1d\u0005x\u0000"+ + "\u0000\u1a1d\u1a2e\u0007\'\u0000\u0000\u1a1e\u1a1f\u0005u\u0000\u0000"+ + "\u1a1f\u1a20\u0007\'\u0000\u0000\u1a20\u1a21\u0007\'\u0000\u0000\u1a21"+ + "\u1a22\u0007\'\u0000\u0000\u1a22\u1a2e\u0007\'\u0000\u0000\u1a23\u1a24"+ + "\u0005U\u0000\u0000\u1a24\u1a25\u0007\'\u0000\u0000\u1a25\u1a26\u0007"+ + "\'\u0000\u0000\u1a26\u1a27\u0007\'\u0000\u0000\u1a27\u1a28\u0007\'\u0000"+ + "\u0000\u1a28\u1a29\u0007\'\u0000\u0000\u1a29\u1a2a\u0007\'\u0000\u0000"+ + "\u1a2a\u1a2b\u0007\'\u0000\u0000\u1a2b\u1a2e\u0007\'\u0000\u0000\u1a2c"+ + "\u1a2e\b0\u0000\u0000\u1a2d\u1a1c\u0001\u0000\u0000\u0000\u1a2d\u1a1e"+ + "\u0001\u0000\u0000\u0000\u1a2d\u1a23\u0001\u0000\u0000\u0000\u1a2d\u1a2c"+ + "\u0001\u0000\u0000\u0000\u1a2e\u1a31\u0001\u0000\u0000\u0000\u1a2f\u1a31"+ + "\b1\u0000\u0000\u1a30\u1a19\u0001\u0000\u0000\u0000\u1a30\u1a1b\u0001"+ + "\u0000\u0000\u0000\u1a30\u1a2f\u0001\u0000\u0000\u0000\u1a31\u1a34\u0001"+ + "\u0000\u0000\u0000\u1a32\u1a30\u0001\u0000\u0000\u0000\u1a32\u1a33\u0001"+ + "\u0000\u0000\u0000\u1a33\u055a\u0001\u0000\u0000\u0000\u1a34\u1a32\u0001"+ + "\u0000\u0000\u0000\u1a35\u1a36\u0003\u055f\u02ad\u0000\u1a36\u1a37\u0005"+ + "\'\u0000\u0000\u1a37\u1a38\u0001\u0000\u0000\u0000\u1a38\u1a39\u0006\u02ab"+ + "\t\u0000\u1a39\u055c\u0001\u0000\u0000\u0000\u1a3a\u1a3c\u0003\u055f\u02ad"+ + "\u0000\u1a3b\u1a3d\u0005\\\u0000\u0000\u1a3c\u1a3b\u0001\u0000\u0000\u0000"+ + "\u1a3c\u1a3d\u0001\u0000\u0000\u0000\u1a3d\u1a3e\u0001\u0000\u0000\u0000"+ + "\u1a3e\u1a3f\u0005\u0000\u0000\u0001\u1a3f\u055e\u0001\u0000\u0000\u0000"+ + "\u1a40\u1a41\u0005\'\u0000\u0000\u1a41\u1a46\u0005\'\u0000\u0000\u1a42"+ + "\u1a43\u0005\\\u0000\u0000\u1a43\u1a46\t\u0000\u0000\u0000\u1a44\u1a46"+ + "\b1\u0000\u0000\u1a45\u1a40\u0001\u0000\u0000\u0000\u1a45\u1a42\u0001"+ + "\u0000\u0000\u0000\u1a45\u1a44\u0001\u0000\u0000\u0000\u1a46\u1a49\u0001"+ + "\u0000\u0000\u0000\u1a47\u1a45\u0001\u0000\u0000\u0000\u1a47\u1a48\u0001"+ + "\u0000\u0000\u0000\u1a48\u0560\u0001\u0000\u0000\u0000\u1a49\u1a47\u0001"+ + "\u0000\u0000\u0000\u1a4a\u1a4b\u0003\u0545\u02a0\u0000\u1a4b\u1a4c\u0001"+ + "\u0000\u0000\u0000\u1a4c\u1a4d\u0006\u02ae\n\u0000\u1a4d\u1a4e\u0006\u02ae"+ + "\u0007\u0000\u1a4e\u0562\u0001\u0000\u0000\u0000\u1a4f\u1a50\u0003\u0547"+ + "\u02a1\u0000\u1a50\u1a51\u0001\u0000\u0000\u0000\u1a51\u1a52\u0006\u02af"+ + "\u000b\u0000\u1a52\u1a53\u0006\u02af\u0007\u0000\u1a53\u1a54\u0006\u02af"+ + "\f\u0000\u1a54\u0564\u0001\u0000\u0000\u0000\u1a55\u1a56\u0006\u02b0\r"+ + "\u0000\u1a56\u1a57\u0001\u0000\u0000\u0000\u1a57\u1a58\u0006\u02b0\u000e"+ + "\u0000\u1a58\u1a59\u0006\u02b0\u000f\u0000\u1a59\u0566\u0001\u0000\u0000"+ + "\u0000\u1a5a\u1a5b\u0003\u0545\u02a0\u0000\u1a5b\u1a5c\u0001\u0000\u0000"+ + "\u0000\u1a5c\u1a5d\u0006\u02b1\n\u0000\u1a5d\u1a5e\u0006\u02b1\u0007\u0000"+ + "\u1a5e\u0568\u0001\u0000\u0000\u0000\u1a5f\u1a60\u0003\u0547\u02a1\u0000"+ + "\u1a60\u1a61\u0001\u0000\u0000\u0000\u1a61\u1a62\u0006\u02b2\u000b\u0000"+ + "\u1a62\u1a63\u0006\u02b2\u0007\u0000\u1a63\u056a\u0001\u0000\u0000\u0000"+ + "\u1a64\u1a65\u0005\'\u0000\u0000\u1a65\u1a66\u0001\u0000\u0000\u0000\u1a66"+ + "\u1a67\u0006\u02b3\u0002\u0000\u1a67\u1a68\u0006\u02b3\u0010\u0000\u1a68"+ + "\u056c\u0001\u0000\u0000\u0000\u1a69\u1a6a\u0006\u02b4\u0011\u0000\u1a6a"+ + "\u1a6b\u0001\u0000\u0000\u0000\u1a6b\u1a6c\u0006\u02b4\u000e\u0000\u1a6c"+ + "\u1a6d\u0006\u02b4\u000f\u0000\u1a6d\u056e\u0001\u0000\u0000\u0000\u1a6e"+ + "\u1a70\b2\u0000\u0000\u1a6f\u1a6e\u0001\u0000\u0000\u0000\u1a70\u1a71"+ + "\u0001\u0000\u0000\u0000\u1a71\u1a6f\u0001\u0000\u0000\u0000\u1a71\u1a72"+ + "\u0001\u0000\u0000\u0000\u1a72\u1a7b\u0001\u0000\u0000\u0000\u1a73\u1a77"+ + "\u0005$\u0000\u0000\u1a74\u1a76\b2\u0000\u0000\u1a75\u1a74\u0001\u0000"+ + "\u0000\u0000\u1a76\u1a79\u0001\u0000\u0000\u0000\u1a77\u1a75\u0001\u0000"+ + "\u0000\u0000\u1a77\u1a78\u0001\u0000\u0000\u0000\u1a78\u1a7b\u0001\u0000"+ + "\u0000\u0000\u1a79\u1a77\u0001\u0000\u0000\u0000\u1a7a\u1a6f\u0001\u0000"+ + "\u0000\u0000\u1a7a\u1a73\u0001\u0000\u0000\u0000\u1a7b\u0570\u0001\u0000"+ + "\u0000\u0000\u1a7c\u1a7e\u0005$\u0000\u0000\u1a7d\u1a7f\u0003\u0527\u0291"+ + "\u0000\u1a7e\u1a7d\u0001\u0000\u0000\u0000\u1a7e\u1a7f\u0001\u0000\u0000"+ + "\u0000\u1a7f\u1a80\u0001\u0000\u0000\u0000\u1a80\u1a81\u0005$\u0000\u0000"+ + "\u1a81\u1a82\u0001\u0000\u0000\u0000\u1a82\u1a83\u0004\u02b6\b\u0000\u1a83"+ + "\u1a84\u0006\u02b6\u0012\u0000\u1a84\u1a85\u0001\u0000\u0000\u0000\u1a85"+ + "\u1a86\u0006\u02b6\u000f\u0000\u1a86\u0572\u0001\u0000\u0000\u0000N\u0000"+ + "\u0001\u0002\u0003\u0004\u05b6\u05bc\u05be\u05c3\u05c7\u05c9\u05cc\u05d5"+ + "\u05d7\u05dc\u05e1\u05e3\u18b4\u18bd\u18c1\u18c5\u18ce\u18d0\u18da\u18dc"+ + "\u18f6\u18f8\u190a\u1915\u1920\u1931\u1945\u1949\u194c\u1952\u1955\u195a"+ + "\u195e\u1963\u196a\u1975\u1977\u197f\u1985\u1988\u1992\u199d\u19a5\u19ab"+ + "\u19ae\u19b0\u19b6\u19c4\u19cc\u19d2\u19d5\u19d7\u19d9\u19df\u19e4\u19e9"+ + "\u19ed\u19f7\u19fb\u19fd\u1a04\u1a07\u1a15\u1a2d\u1a30\u1a32\u1a3c\u1a45"+ + "\u1a47\u1a71\u1a77\u1a7a\u1a7e\u0013\u0001\u001c\u0000\u0007\u001d\u0000"+ + "\u0003\u0000\u0000\u0005\u0001\u0000\u0001\u0290\u0001\u0005\u0004\u0000"+ + "\u0001\u029b\u0002\u0000\u0001\u0000\u0001\u02a4\u0003\u0002\u0002\u0000"+ + "\u0007\u0297\u0000\u0007\u0298\u0000\u0002\u0003\u0000\u0001\u02b0\u0004"+ + "\u0006\u0000\u0000\u0004\u0000\u0000\u0002\u0001\u0000\u0001\u02b4\u0005"+ + "\u0001\u02b6\u0006"; + public static final String _serializedATN = Utils.join( + new String[] { + _serializedATNSegment0, + _serializedATNSegment1, + _serializedATNSegment2 + }, + "" + ); + public static final ATN _ATN = + new ATNDeserializer().deserialize(_serializedATN.toCharArray()); + static { + _decisionToDFA = new DFA[_ATN.getNumberOfDecisions()]; + for (int i = 0; i < _ATN.getNumberOfDecisions(); i++) { + _decisionToDFA[i] = new DFA(_ATN.getDecisionState(i), i); + } + } +} \ No newline at end of file diff --git a/incubator/binding-pgsql/gen/PostgreSqlLexer.tokens b/incubator/binding-pgsql/gen/PostgreSqlLexer.tokens new file mode 100644 index 0000000000..1d45608bf4 --- /dev/null +++ b/incubator/binding-pgsql/gen/PostgreSqlLexer.tokens @@ -0,0 +1,1314 @@ +Dollar=1 +OPEN_PAREN=2 +CLOSE_PAREN=3 +OPEN_BRACKET=4 +CLOSE_BRACKET=5 +COMMA=6 +SEMI=7 +COLON=8 +STAR=9 +EQUAL=10 +DOT=11 +PLUS=12 +MINUS=13 +SLASH=14 +CARET=15 +LT=16 +GT=17 +LESS_LESS=18 +GREATER_GREATER=19 +COLON_EQUALS=20 +LESS_EQUALS=21 +EQUALS_GREATER=22 +GREATER_EQUALS=23 +DOT_DOT=24 +NOT_EQUALS=25 +TYPECAST=26 +PERCENT=27 +PARAM=28 +Operator=29 +ALL=30 +ANALYSE=31 +ANALYZE=32 +AND=33 +ANY=34 +ARRAY=35 +AS=36 +ASC=37 +ASYMMETRIC=38 +BOTH=39 +CASE=40 +CAST=41 +CHECK=42 +COLLATE=43 +COLUMN=44 +CONSTRAINT=45 +CREATE=46 +CURRENT_CATALOG=47 +CURRENT_DATE=48 +CURRENT_ROLE=49 +CURRENT_TIME=50 +CURRENT_TIMESTAMP=51 +CURRENT_USER=52 +DEFAULT=53 +DEFERRABLE=54 +DESC=55 +DISTINCT=56 +DO=57 +ELSE=58 +EXCEPT=59 +FALSE_P=60 +FETCH=61 +FOR=62 +FOREIGN=63 +FROM=64 +GRANT=65 +GROUP_P=66 +HAVING=67 +IN_P=68 +INITIALLY=69 +INTERSECT=70 +INTO=71 +LATERAL_P=72 +LEADING=73 +LIMIT=74 +LOCALTIME=75 +LOCALTIMESTAMP=76 +NOT=77 +NULL_P=78 +OFFSET=79 +ON=80 +ONLY=81 +OR=82 +ORDER=83 +PLACING=84 +PRIMARY=85 +REFERENCES=86 +RETURNING=87 +SELECT=88 +SESSION_USER=89 +SOME=90 +SYMMETRIC=91 +TABLE=92 +THEN=93 +TO=94 +TRAILING=95 +TRUE_P=96 +UNION=97 +UNIQUE=98 +USER=99 +USING=100 +VARIADIC=101 +WHEN=102 +WHERE=103 +WINDOW=104 +WITH=105 +AUTHORIZATION=106 +BINARY=107 +COLLATION=108 +CONCURRENTLY=109 +CROSS=110 +CURRENT_SCHEMA=111 +FREEZE=112 +FULL=113 +ILIKE=114 +INNER_P=115 +IS=116 +ISNULL=117 +JOIN=118 +LEFT=119 +LIKE=120 +NATURAL=121 +NOTNULL=122 +OUTER_P=123 +OVER=124 +OVERLAPS=125 +RIGHT=126 +SIMILAR=127 +VERBOSE=128 +ABORT_P=129 +ABSOLUTE_P=130 +ACCESS=131 +ACTION=132 +ADD_P=133 +ADMIN=134 +AFTER=135 +AGGREGATE=136 +ALSO=137 +ALTER=138 +ALWAYS=139 +ASSERTION=140 +ASSIGNMENT=141 +AT=142 +ATTRIBUTE=143 +BACKWARD=144 +BEFORE=145 +BEGIN_P=146 +BY=147 +CACHE=148 +CALLED=149 +CASCADE=150 +CASCADED=151 +CATALOG=152 +CHAIN=153 +CHARACTERISTICS=154 +CHECKPOINT=155 +CLASS=156 +CLOSE=157 +CLUSTER=158 +COMMENT=159 +COMMENTS=160 +COMMIT=161 +COMMITTED=162 +CONFIGURATION=163 +CONNECTION=164 +CONSTRAINTS=165 +CONTENT_P=166 +CONTINUE_P=167 +CONVERSION_P=168 +COPY=169 +COST=170 +CSV=171 +CURSOR=172 +CYCLE=173 +DATA_P=174 +DATABASE=175 +DAY_P=176 +DEALLOCATE=177 +DECLARE=178 +DEFAULTS=179 +DEFERRED=180 +DEFINER=181 +DELETE_P=182 +DELIMITER=183 +DELIMITERS=184 +DICTIONARY=185 +DISABLE_P=186 +DISCARD=187 +DOCUMENT_P=188 +DOMAIN_P=189 +DOUBLE_P=190 +DROP=191 +EACH=192 +ENABLE_P=193 +ENCODING=194 +ENCRYPTED=195 +ENUM_P=196 +ESCAPE=197 +EVENT=198 +EXCLUDE=199 +EXCLUDING=200 +EXCLUSIVE=201 +EXECUTE=202 +EXPLAIN=203 +EXTENSION=204 +EXTERNAL=205 +FAMILY=206 +FIRST_P=207 +FOLLOWING=208 +FORCE=209 +FORWARD=210 +FUNCTION=211 +FUNCTIONS=212 +GLOBAL=213 +GRANTED=214 +HANDLER=215 +HEADER_P=216 +HOLD=217 +HOUR_P=218 +IDENTITY_P=219 +IF_P=220 +IMMEDIATE=221 +IMMUTABLE=222 +IMPLICIT_P=223 +INCLUDING=224 +INCREMENT=225 +INDEX=226 +INDEXES=227 +INHERIT=228 +INHERITS=229 +INLINE_P=230 +INSENSITIVE=231 +INSERT=232 +INSTEAD=233 +INVOKER=234 +ISOLATION=235 +KEY=236 +LABEL=237 +LANGUAGE=238 +LARGE_P=239 +LAST_P=240 +LEAKPROOF=241 +LEVEL=242 +LISTEN=243 +LOAD=244 +LOCAL=245 +LOCATION=246 +LOCK_P=247 +MAPPING=248 +MATCH=249 +MATCHED=250 +MATERIALIZED=251 +MAXVALUE=252 +MERGE=253 +MINUTE_P=254 +MINVALUE=255 +MODE=256 +MONTH_P=257 +MOVE=258 +NAME_P=259 +NAMES=260 +NEXT=261 +NO=262 +NOTHING=263 +NOTIFY=264 +NOWAIT=265 +NULLS_P=266 +OBJECT_P=267 +OF=268 +OFF=269 +OIDS=270 +OPERATOR=271 +OPTION=272 +OPTIONS=273 +OWNED=274 +OWNER=275 +PARSER=276 +PARTIAL=277 +PARTITION=278 +PASSING=279 +PASSWORD=280 +PLANS=281 +PRECEDING=282 +PREPARE=283 +PREPARED=284 +PRESERVE=285 +PRIOR=286 +PRIVILEGES=287 +PROCEDURAL=288 +PROCEDURE=289 +PROGRAM=290 +QUOTE=291 +RANGE=292 +READ=293 +REASSIGN=294 +RECHECK=295 +RECURSIVE=296 +REF=297 +REFRESH=298 +REINDEX=299 +RELATIVE_P=300 +RELEASE=301 +RENAME=302 +REPEATABLE=303 +REPLACE=304 +REPLICA=305 +RESET=306 +RESTART=307 +RESTRICT=308 +RETURNS=309 +REVOKE=310 +ROLE=311 +ROLLBACK=312 +ROWS=313 +RULE=314 +SAVEPOINT=315 +SCHEMA=316 +SCROLL=317 +SEARCH=318 +SECOND_P=319 +SECURITY=320 +SEQUENCE=321 +SEQUENCES=322 +SERIALIZABLE=323 +SERVER=324 +SESSION=325 +SET=326 +SHARE=327 +SHOW=328 +SIMPLE=329 +SNAPSHOT=330 +STABLE=331 +STANDALONE_P=332 +START=333 +STATEMENT=334 +STATISTICS=335 +STDIN=336 +STDOUT=337 +STORAGE=338 +STRICT_P=339 +STRIP_P=340 +SYSID=341 +SYSTEM_P=342 +TABLES=343 +TABLESPACE=344 +TEMP=345 +TEMPLATE=346 +TEMPORARY=347 +TEXT_P=348 +TRANSACTION=349 +TRIGGER=350 +TRUNCATE=351 +TRUSTED=352 +TYPE_P=353 +TYPES_P=354 +UNBOUNDED=355 +UNCOMMITTED=356 +UNENCRYPTED=357 +UNKNOWN=358 +UNLISTEN=359 +UNLOGGED=360 +UNTIL=361 +UPDATE=362 +VACUUM=363 +VALID=364 +VALIDATE=365 +VALIDATOR=366 +VARYING=367 +VERSION_P=368 +VIEW=369 +VOLATILE=370 +WHITESPACE_P=371 +WITHOUT=372 +WORK=373 +WRAPPER=374 +WRITE=375 +XML_P=376 +YEAR_P=377 +YES_P=378 +ZONE=379 +BETWEEN=380 +BIGINT=381 +BIT=382 +BOOLEAN_P=383 +CHAR_P=384 +CHARACTER=385 +COALESCE=386 +DEC=387 +DECIMAL_P=388 +EXISTS=389 +EXTRACT=390 +FLOAT_P=391 +GREATEST=392 +INOUT=393 +INT_P=394 +INTEGER=395 +INTERVAL=396 +LEAST=397 +NATIONAL=398 +NCHAR=399 +NONE=400 +NULLIF=401 +NUMERIC=402 +OVERLAY=403 +POSITION=404 +PRECISION=405 +REAL=406 +ROW=407 +SETOF=408 +SMALLINT=409 +SUBSTRING=410 +TIME=411 +TIMESTAMP=412 +TREAT=413 +TRIM=414 +VALUES=415 +VARCHAR=416 +XMLATTRIBUTES=417 +XMLCOMMENT=418 +XMLAGG=419 +XML_IS_WELL_FORMED=420 +XML_IS_WELL_FORMED_DOCUMENT=421 +XML_IS_WELL_FORMED_CONTENT=422 +XPATH=423 +XPATH_EXISTS=424 +XMLCONCAT=425 +XMLELEMENT=426 +XMLEXISTS=427 +XMLFOREST=428 +XMLPARSE=429 +XMLPI=430 +XMLROOT=431 +XMLSERIALIZE=432 +CALL=433 +CURRENT_P=434 +ATTACH=435 +DETACH=436 +EXPRESSION=437 +GENERATED=438 +LOGGED=439 +STORED=440 +INCLUDE=441 +ROUTINE=442 +TRANSFORM=443 +IMPORT_P=444 +POLICY=445 +METHOD=446 +REFERENCING=447 +NEW=448 +OLD=449 +VALUE_P=450 +SUBSCRIPTION=451 +PUBLICATION=452 +OUT_P=453 +END_P=454 +ROUTINES=455 +SCHEMAS=456 +PROCEDURES=457 +INPUT_P=458 +SUPPORT=459 +PARALLEL=460 +SQL_P=461 +DEPENDS=462 +OVERRIDING=463 +CONFLICT=464 +SKIP_P=465 +LOCKED=466 +TIES=467 +ROLLUP=468 +CUBE=469 +GROUPING=470 +SETS=471 +TABLESAMPLE=472 +ORDINALITY=473 +XMLTABLE=474 +COLUMNS=475 +XMLNAMESPACES=476 +ROWTYPE=477 +NORMALIZED=478 +WITHIN=479 +FILTER=480 +GROUPS=481 +OTHERS=482 +NFC=483 +NFD=484 +NFKC=485 +NFKD=486 +UESCAPE=487 +VIEWS=488 +NORMALIZE=489 +DUMP=490 +PRINT_STRICT_PARAMS=491 +VARIABLE_CONFLICT=492 +ERROR=493 +USE_VARIABLE=494 +USE_COLUMN=495 +ALIAS=496 +CONSTANT=497 +PERFORM=498 +GET=499 +DIAGNOSTICS=500 +STACKED=501 +ELSIF=502 +WHILE=503 +REVERSE=504 +FOREACH=505 +SLICE=506 +EXIT=507 +RETURN=508 +QUERY=509 +RAISE=510 +SQLSTATE=511 +DEBUG=512 +LOG=513 +INFO=514 +NOTICE=515 +WARNING=516 +EXCEPTION=517 +ASSERT=518 +LOOP=519 +OPEN=520 +ABS=521 +CBRT=522 +CEIL=523 +CEILING=524 +DEGREES=525 +DIV=526 +EXP=527 +FACTORIAL=528 +FLOOR=529 +GCD=530 +LCM=531 +LN=532 +LOG10=533 +MIN_SCALE=534 +MOD=535 +PI=536 +POWER=537 +RADIANS=538 +ROUND=539 +SCALE=540 +SIGN=541 +SQRT=542 +TRIM_SCALE=543 +TRUNC=544 +WIDTH_BUCKET=545 +RANDOM=546 +SETSEED=547 +ACOS=548 +ACOSD=549 +ASIN=550 +ASIND=551 +ATAN=552 +ATAND=553 +ATAN2=554 +ATAN2D=555 +COS=556 +COSD=557 +COT=558 +COTD=559 +SIN=560 +SIND=561 +TAN=562 +TAND=563 +SINH=564 +COSH=565 +TANH=566 +ASINH=567 +ACOSH=568 +ATANH=569 +BIT_LENGTH=570 +CHAR_LENGTH=571 +CHARACTER_LENGTH=572 +LOWER=573 +OCTET_LENGTH=574 +UPPER=575 +ASCII=576 +BTRIM=577 +CHR=578 +CONCAT=579 +CONCAT_WS=580 +FORMAT=581 +INITCAP=582 +LENGTH=583 +LPAD=584 +LTRIM=585 +MD5=586 +PARSE_IDENT=587 +PG_CLIENT_ENCODING=588 +QUOTE_IDENT=589 +QUOTE_LITERAL=590 +QUOTE_NULLABLE=591 +REGEXP_COUNT=592 +REGEXP_INSTR=593 +REGEXP_LIKE=594 +REGEXP_MATCH=595 +REGEXP_MATCHES=596 +REGEXP_REPLACE=597 +REGEXP_SPLIT_TO_ARRAY=598 +REGEXP_SPLIT_TO_TABLE=599 +REGEXP_SUBSTR=600 +REPEAT=601 +RPAD=602 +RTRIM=603 +SPLIT_PART=604 +STARTS_WITH=605 +STRING_TO_ARRAY=606 +STRING_TO_TABLE=607 +STRPOS=608 +SUBSTR=609 +TO_ASCII=610 +TO_HEX=611 +TRANSLATE=612 +UNISTR=613 +AGE=614 +CLOCK_TIMESTAMP=615 +DATE_BIN=616 +DATE_PART=617 +DATE_TRUNC=618 +ISFINITE=619 +JUSTIFY_DAYS=620 +JUSTIFY_HOURS=621 +JUSTIFY_INTERVAL=622 +MAKE_DATE=623 +MAKE_INTERVAL=624 +MAKE_TIME=625 +MAKE_TIMESTAMP=626 +MAKE_TIMESTAMPTZ=627 +NOW=628 +STATEMENT_TIMESTAMP=629 +TIMEOFDAY=630 +TRANSACTION_TIMESTAMP=631 +TO_TIMESTAMP=632 +TO_CHAR=633 +TO_DATE=634 +TO_NUMBER=635 +Identifier=636 +QuotedIdentifier=637 +UnterminatedQuotedIdentifier=638 +InvalidQuotedIdentifier=639 +InvalidUnterminatedQuotedIdentifier=640 +UnicodeQuotedIdentifier=641 +UnterminatedUnicodeQuotedIdentifier=642 +InvalidUnicodeQuotedIdentifier=643 +InvalidUnterminatedUnicodeQuotedIdentifier=644 +StringConstant=645 +UnterminatedStringConstant=646 +UnicodeEscapeStringConstant=647 +UnterminatedUnicodeEscapeStringConstant=648 +BeginDollarStringConstant=649 +BinaryStringConstant=650 +UnterminatedBinaryStringConstant=651 +InvalidBinaryStringConstant=652 +InvalidUnterminatedBinaryStringConstant=653 +HexadecimalStringConstant=654 +UnterminatedHexadecimalStringConstant=655 +InvalidHexadecimalStringConstant=656 +InvalidUnterminatedHexadecimalStringConstant=657 +Integral=658 +NumericFail=659 +Numeric=660 +PLSQLVARIABLENAME=661 +PLSQLIDENTIFIER=662 +Whitespace=663 +Newline=664 +LineComment=665 +BlockComment=666 +UnterminatedBlockComment=667 +MetaCommand=668 +EndMetaCommand=669 +ErrorCharacter=670 +EscapeStringConstant=671 +UnterminatedEscapeStringConstant=672 +InvalidEscapeStringConstant=673 +InvalidUnterminatedEscapeStringConstant=674 +AfterEscapeStringConstantMode_NotContinued=675 +AfterEscapeStringConstantWithNewlineMode_NotContinued=676 +DollarText=677 +EndDollarStringConstant=678 +AfterEscapeStringConstantWithNewlineMode_Continued=679 +'$'=1 +'('=2 +')'=3 +'['=4 +']'=5 +','=6 +';'=7 +':'=8 +'*'=9 +'='=10 +'.'=11 +'+'=12 +'-'=13 +'/'=14 +'^'=15 +'<'=16 +'>'=17 +'<<'=18 +'>>'=19 +':='=20 +'<='=21 +'=>'=22 +'>='=23 +'..'=24 +'<>'=25 +'::'=26 +'%'=27 +'ALL'=30 +'ANALYSE'=31 +'ANALYZE'=32 +'AND'=33 +'ANY'=34 +'ARRAY'=35 +'AS'=36 +'ASC'=37 +'ASYMMETRIC'=38 +'BOTH'=39 +'CASE'=40 +'CAST'=41 +'CHECK'=42 +'COLLATE'=43 +'COLUMN'=44 +'CONSTRAINT'=45 +'CREATE'=46 +'CURRENT_CATALOG'=47 +'CURRENT_DATE'=48 +'CURRENT_ROLE'=49 +'CURRENT_TIME'=50 +'CURRENT_TIMESTAMP'=51 +'CURRENT_USER'=52 +'DEFAULT'=53 +'DEFERRABLE'=54 +'DESC'=55 +'DISTINCT'=56 +'DO'=57 +'ELSE'=58 +'EXCEPT'=59 +'FALSE'=60 +'FETCH'=61 +'FOR'=62 +'FOREIGN'=63 +'FROM'=64 +'GRANT'=65 +'GROUP'=66 +'HAVING'=67 +'IN'=68 +'INITIALLY'=69 +'INTERSECT'=70 +'INTO'=71 +'LATERAL'=72 +'LEADING'=73 +'LIMIT'=74 +'LOCALTIME'=75 +'LOCALTIMESTAMP'=76 +'NOT'=77 +'NULL'=78 +'OFFSET'=79 +'ON'=80 +'ONLY'=81 +'OR'=82 +'ORDER'=83 +'PLACING'=84 +'PRIMARY'=85 +'REFERENCES'=86 +'RETURNING'=87 +'SELECT'=88 +'SESSION_USER'=89 +'SOME'=90 +'SYMMETRIC'=91 +'TABLE'=92 +'THEN'=93 +'TO'=94 +'TRAILING'=95 +'TRUE'=96 +'UNION'=97 +'UNIQUE'=98 +'USER'=99 +'USING'=100 +'VARIADIC'=101 +'WHEN'=102 +'WHERE'=103 +'WINDOW'=104 +'WITH'=105 +'AUTHORIZATION'=106 +'BINARY'=107 +'COLLATION'=108 +'CONCURRENTLY'=109 +'CROSS'=110 +'CURRENT_SCHEMA'=111 +'FREEZE'=112 +'FULL'=113 +'ILIKE'=114 +'INNER'=115 +'IS'=116 +'ISNULL'=117 +'JOIN'=118 +'LEFT'=119 +'LIKE'=120 +'NATURAL'=121 +'NOTNULL'=122 +'OUTER'=123 +'OVER'=124 +'OVERLAPS'=125 +'RIGHT'=126 +'SIMILAR'=127 +'VERBOSE'=128 +'ABORT'=129 +'ABSOLUTE'=130 +'ACCESS'=131 +'ACTION'=132 +'ADD'=133 +'ADMIN'=134 +'AFTER'=135 +'AGGREGATE'=136 +'ALSO'=137 +'ALTER'=138 +'ALWAYS'=139 +'ASSERTION'=140 +'ASSIGNMENT'=141 +'AT'=142 +'ATTRIBUTE'=143 +'BACKWARD'=144 +'BEFORE'=145 +'BEGIN'=146 +'BY'=147 +'CACHE'=148 +'CALLED'=149 +'CASCADE'=150 +'CASCADED'=151 +'CATALOG'=152 +'CHAIN'=153 +'CHARACTERISTICS'=154 +'CHECKPOINT'=155 +'CLASS'=156 +'CLOSE'=157 +'CLUSTER'=158 +'COMMENT'=159 +'COMMENTS'=160 +'COMMIT'=161 +'COMMITTED'=162 +'CONFIGURATION'=163 +'CONNECTION'=164 +'CONSTRAINTS'=165 +'CONTENT'=166 +'CONTINUE'=167 +'CONVERSION'=168 +'COPY'=169 +'COST'=170 +'CSV'=171 +'CURSOR'=172 +'CYCLE'=173 +'DATA'=174 +'DATABASE'=175 +'DAY'=176 +'DEALLOCATE'=177 +'DECLARE'=178 +'DEFAULTS'=179 +'DEFERRED'=180 +'DEFINER'=181 +'DELETE'=182 +'DELIMITER'=183 +'DELIMITERS'=184 +'DICTIONARY'=185 +'DISABLE'=186 +'DISCARD'=187 +'DOCUMENT'=188 +'DOMAIN'=189 +'DOUBLE'=190 +'DROP'=191 +'EACH'=192 +'ENABLE'=193 +'ENCODING'=194 +'ENCRYPTED'=195 +'ENUM'=196 +'ESCAPE'=197 +'EVENT'=198 +'EXCLUDE'=199 +'EXCLUDING'=200 +'EXCLUSIVE'=201 +'EXECUTE'=202 +'EXPLAIN'=203 +'EXTENSION'=204 +'EXTERNAL'=205 +'FAMILY'=206 +'FIRST'=207 +'FOLLOWING'=208 +'FORCE'=209 +'FORWARD'=210 +'FUNCTION'=211 +'FUNCTIONS'=212 +'GLOBAL'=213 +'GRANTED'=214 +'HANDLER'=215 +'HEADER'=216 +'HOLD'=217 +'HOUR'=218 +'IDENTITY'=219 +'IF'=220 +'IMMEDIATE'=221 +'IMMUTABLE'=222 +'IMPLICIT'=223 +'INCLUDING'=224 +'INCREMENT'=225 +'INDEX'=226 +'INDEXES'=227 +'INHERIT'=228 +'INHERITS'=229 +'INLINE'=230 +'INSENSITIVE'=231 +'INSERT'=232 +'INSTEAD'=233 +'INVOKER'=234 +'ISOLATION'=235 +'KEY'=236 +'LABEL'=237 +'LANGUAGE'=238 +'LARGE'=239 +'LAST'=240 +'LEAKPROOF'=241 +'LEVEL'=242 +'LISTEN'=243 +'LOAD'=244 +'LOCAL'=245 +'LOCATION'=246 +'LOCK'=247 +'MAPPING'=248 +'MATCH'=249 +'MATCHED'=250 +'MATERIALIZED'=251 +'MAXVALUE'=252 +'MERGE'=253 +'MINUTE'=254 +'MINVALUE'=255 +'MODE'=256 +'MONTH'=257 +'MOVE'=258 +'NAME'=259 +'NAMES'=260 +'NEXT'=261 +'NO'=262 +'NOTHING'=263 +'NOTIFY'=264 +'NOWAIT'=265 +'NULLS'=266 +'OBJECT'=267 +'OF'=268 +'OFF'=269 +'OIDS'=270 +'OPERATOR'=271 +'OPTION'=272 +'OPTIONS'=273 +'OWNED'=274 +'OWNER'=275 +'PARSER'=276 +'PARTIAL'=277 +'PARTITION'=278 +'PASSING'=279 +'PASSWORD'=280 +'PLANS'=281 +'PRECEDING'=282 +'PREPARE'=283 +'PREPARED'=284 +'PRESERVE'=285 +'PRIOR'=286 +'PRIVILEGES'=287 +'PROCEDURAL'=288 +'PROCEDURE'=289 +'PROGRAM'=290 +'QUOTE'=291 +'RANGE'=292 +'READ'=293 +'REASSIGN'=294 +'RECHECK'=295 +'RECURSIVE'=296 +'REF'=297 +'REFRESH'=298 +'REINDEX'=299 +'RELATIVE'=300 +'RELEASE'=301 +'RENAME'=302 +'REPEATABLE'=303 +'REPLACE'=304 +'REPLICA'=305 +'RESET'=306 +'RESTART'=307 +'RESTRICT'=308 +'RETURNS'=309 +'REVOKE'=310 +'ROLE'=311 +'ROLLBACK'=312 +'ROWS'=313 +'RULE'=314 +'SAVEPOINT'=315 +'SCHEMA'=316 +'SCROLL'=317 +'SEARCH'=318 +'SECOND'=319 +'SECURITY'=320 +'SEQUENCE'=321 +'SEQUENCES'=322 +'SERIALIZABLE'=323 +'SERVER'=324 +'SESSION'=325 +'SET'=326 +'SHARE'=327 +'SHOW'=328 +'SIMPLE'=329 +'SNAPSHOT'=330 +'STABLE'=331 +'STANDALONE'=332 +'START'=333 +'STATEMENT'=334 +'STATISTICS'=335 +'STDIN'=336 +'STDOUT'=337 +'STORAGE'=338 +'STRICT'=339 +'STRIP'=340 +'SYSID'=341 +'SYSTEM'=342 +'TABLES'=343 +'TABLESPACE'=344 +'TEMP'=345 +'TEMPLATE'=346 +'TEMPORARY'=347 +'TEXT'=348 +'TRANSACTION'=349 +'TRIGGER'=350 +'TRUNCATE'=351 +'TRUSTED'=352 +'TYPE'=353 +'TYPES'=354 +'UNBOUNDED'=355 +'UNCOMMITTED'=356 +'UNENCRYPTED'=357 +'UNKNOWN'=358 +'UNLISTEN'=359 +'UNLOGGED'=360 +'UNTIL'=361 +'UPDATE'=362 +'VACUUM'=363 +'VALID'=364 +'VALIDATE'=365 +'VALIDATOR'=366 +'VARYING'=367 +'VERSION'=368 +'VIEW'=369 +'VOLATILE'=370 +'WHITESPACE'=371 +'WITHOUT'=372 +'WORK'=373 +'WRAPPER'=374 +'WRITE'=375 +'XML'=376 +'YEAR'=377 +'YES'=378 +'ZONE'=379 +'BETWEEN'=380 +'BIGINT'=381 +'BIT'=382 +'BOOLEAN'=383 +'CHAR'=384 +'CHARACTER'=385 +'COALESCE'=386 +'DEC'=387 +'DECIMAL'=388 +'EXISTS'=389 +'EXTRACT'=390 +'FLOAT'=391 +'GREATEST'=392 +'INOUT'=393 +'INT'=394 +'INTEGER'=395 +'INTERVAL'=396 +'LEAST'=397 +'NATIONAL'=398 +'NCHAR'=399 +'NONE'=400 +'NULLIF'=401 +'NUMERIC'=402 +'OVERLAY'=403 +'POSITION'=404 +'PRECISION'=405 +'REAL'=406 +'ROW'=407 +'SETOF'=408 +'SMALLINT'=409 +'SUBSTRING'=410 +'TIME'=411 +'TIMESTAMP'=412 +'TREAT'=413 +'TRIM'=414 +'VALUES'=415 +'VARCHAR'=416 +'XMLATTRIBUTES'=417 +'XMLCOMMENT'=418 +'XMLAGG'=419 +'XML_IS_WELL_FORMED'=420 +'XML_IS_WELL_FORMED_DOCUMENT'=421 +'XML_IS_WELL_FORMED_CONTENT'=422 +'XPATH'=423 +'XPATH_EXISTS'=424 +'XMLCONCAT'=425 +'XMLELEMENT'=426 +'XMLEXISTS'=427 +'XMLFOREST'=428 +'XMLPARSE'=429 +'XMLPI'=430 +'XMLROOT'=431 +'XMLSERIALIZE'=432 +'CALL'=433 +'CURRENT'=434 +'ATTACH'=435 +'DETACH'=436 +'EXPRESSION'=437 +'GENERATED'=438 +'LOGGED'=439 +'STORED'=440 +'INCLUDE'=441 +'ROUTINE'=442 +'TRANSFORM'=443 +'IMPORT'=444 +'POLICY'=445 +'METHOD'=446 +'REFERENCING'=447 +'NEW'=448 +'OLD'=449 +'VALUE'=450 +'SUBSCRIPTION'=451 +'PUBLICATION'=452 +'OUT'=453 +'END'=454 +'ROUTINES'=455 +'SCHEMAS'=456 +'PROCEDURES'=457 +'INPUT'=458 +'SUPPORT'=459 +'PARALLEL'=460 +'SQL'=461 +'DEPENDS'=462 +'OVERRIDING'=463 +'CONFLICT'=464 +'SKIP'=465 +'LOCKED'=466 +'TIES'=467 +'ROLLUP'=468 +'CUBE'=469 +'GROUPING'=470 +'SETS'=471 +'TABLESAMPLE'=472 +'ORDINALITY'=473 +'XMLTABLE'=474 +'COLUMNS'=475 +'XMLNAMESPACES'=476 +'ROWTYPE'=477 +'NORMALIZED'=478 +'WITHIN'=479 +'FILTER'=480 +'GROUPS'=481 +'OTHERS'=482 +'NFC'=483 +'NFD'=484 +'NFKC'=485 +'NFKD'=486 +'UESCAPE'=487 +'VIEWS'=488 +'NORMALIZE'=489 +'DUMP'=490 +'PRINT_STRICT_PARAMS'=491 +'VARIABLE_CONFLICT'=492 +'ERROR'=493 +'USE_VARIABLE'=494 +'USE_COLUMN'=495 +'ALIAS'=496 +'CONSTANT'=497 +'PERFORM'=498 +'GET'=499 +'DIAGNOSTICS'=500 +'STACKED'=501 +'ELSIF'=502 +'WHILE'=503 +'REVERSE'=504 +'FOREACH'=505 +'SLICE'=506 +'EXIT'=507 +'RETURN'=508 +'QUERY'=509 +'RAISE'=510 +'SQLSTATE'=511 +'DEBUG'=512 +'LOG'=513 +'INFO'=514 +'NOTICE'=515 +'WARNING'=516 +'EXCEPTION'=517 +'ASSERT'=518 +'LOOP'=519 +'OPEN'=520 +'ABS'=521 +'CBRT'=522 +'CEIL'=523 +'CEILING'=524 +'DEGREES'=525 +'DIV'=526 +'EXP'=527 +'FACTORIAL'=528 +'FLOOR'=529 +'GCD'=530 +'LCM'=531 +'LN'=532 +'LOG10'=533 +'MIN_SCALE'=534 +'MOD'=535 +'PI'=536 +'POWER'=537 +'RADIANS'=538 +'ROUND'=539 +'SCALE'=540 +'SIGN'=541 +'SQRT'=542 +'TRIM_SCALE'=543 +'TRUNC'=544 +'WIDTH_BUCKET'=545 +'RANDOM'=546 +'SETSEED'=547 +'ACOS'=548 +'ACOSD'=549 +'ASIN'=550 +'ASIND'=551 +'ATAN'=552 +'ATAND'=553 +'ATAN2'=554 +'ATAN2D'=555 +'COS'=556 +'COSD'=557 +'COT'=558 +'COTD'=559 +'SIN'=560 +'SIND'=561 +'TAN'=562 +'TAND'=563 +'SINH'=564 +'COSH'=565 +'TANH'=566 +'ASINH'=567 +'ACOSH'=568 +'ATANH'=569 +'BIT_LENGTH'=570 +'CHAR_LENGTH'=571 +'CHARACTER_LENGTH'=572 +'LOWER'=573 +'OCTET_LENGTH'=574 +'UPPER'=575 +'ASCII'=576 +'BTRIM'=577 +'CHR'=578 +'CONCAT'=579 +'CONCAT_WS'=580 +'FORMAT'=581 +'INITCAP'=582 +'LENGTH'=583 +'LPAD'=584 +'LTRIM'=585 +'MD5'=586 +'PARSE_IDENT'=587 +'PG_CLIENT_ENCODING'=588 +'QUOTE_IDENT'=589 +'QUOTE_LITERAL'=590 +'QUOTE_NULLABLE'=591 +'REGEXP_COUNT'=592 +'REGEXP_INSTR'=593 +'REGEXP_LIKE'=594 +'REGEXP_MATCH'=595 +'REGEXP_MATCHES'=596 +'REGEXP_REPLACE'=597 +'REGEXP_SPLIT_TO_ARRAY'=598 +'REGEXP_SPLIT_TO_TABLE'=599 +'REGEXP_SUBSTR'=600 +'REPEAT'=601 +'RPAD'=602 +'RTRIM'=603 +'SPLIT_PART'=604 +'STARTS_WITH'=605 +'STRING_TO_ARRAY'=606 +'STRING_TO_TABLE'=607 +'STRPOS'=608 +'SUBSTR'=609 +'TO_ASCII'=610 +'TO_HEX'=611 +'TRANSLATE'=612 +'UNISTR'=613 +'AGE'=614 +'CLOCK_TIMESTAMP'=615 +'DATE_BIN'=616 +'DATE_PART'=617 +'DATE_TRUNC'=618 +'ISFINITE'=619 +'JUSTIFY_DAYS'=620 +'JUSTIFY_HOURS'=621 +'JUSTIFY_INTERVAL'=622 +'MAKE_DATE'=623 +'MAKE_INTERVAL'=624 +'MAKE_TIME'=625 +'MAKE_TIMESTAMP'=626 +'MAKE_TIMESTAMPTZ'=627 +'NOW'=628 +'STATEMENT_TIMESTAMP'=629 +'TIMEOFDAY'=630 +'TRANSACTION_TIMESTAMP'=631 +'TO_TIMESTAMP'=632 +'TO_CHAR'=633 +'TO_DATE'=634 +'TO_NUMBER'=635 +'\\\\'=669 +'\''=679 diff --git a/incubator/binding-pgsql/src/main/antlr4/io/aklivity/zilla/runtime/binding/pgsql/parser/PostgreSQLLexer.g4 b/incubator/binding-pgsql/src/main/antlr4/io/aklivity/zilla/runtime/binding/pgsql/parser/PostgreSqlLexer.g4 similarity index 99% rename from incubator/binding-pgsql/src/main/antlr4/io/aklivity/zilla/runtime/binding/pgsql/parser/PostgreSQLLexer.g4 rename to incubator/binding-pgsql/src/main/antlr4/io/aklivity/zilla/runtime/binding/pgsql/parser/PostgreSqlLexer.g4 index 8f8d04a847..6af18a593b 100644 --- a/incubator/binding-pgsql/src/main/antlr4/io/aklivity/zilla/runtime/binding/pgsql/parser/PostgreSQLLexer.g4 +++ b/incubator/binding-pgsql/src/main/antlr4/io/aklivity/zilla/runtime/binding/pgsql/parser/PostgreSqlLexer.g4 @@ -13,13 +13,13 @@ * specific language governing permissions and limitations under the License. */ -lexer grammar PostgreSQLLexer; +lexer grammar PostgreSqlLexer; /* Reference: * http://www.postgresql.org/docs/9.3/static/sql-syntax-lexical.html */ options { - superClass = PostgreSQLLexerBase; + superClass = PostgreSqlLexerBase; caseInsensitive = true; } @@ -115,7 +115,7 @@ Operator: ) //TODO somehow rewrite this part without using Actions { - HandleLessLessGreaterGreater(); + handleLessLessGreaterGreater(); } ; /* This rule handles operators which end with + or -, and sets the token type to Operator. It is comprised of four @@ -1408,7 +1408,7 @@ fragment IdentifierStartChar options { [\u0100-\uD7FF\uE000-\uFFFF] {charIsLetter()}? | // letters which require multiple UTF-16 code units [\uD800-\uDBFF] [\uDC00-\uDFFF] { - CheckIfUtf32Letter() + checkIfUtf32Letter() }? ; @@ -1509,7 +1509,7 @@ InvalidUnterminatedHexadecimalStringConstant: 'X' UnterminatedStringConstant; Integral: Digits; -NumericFail: Digits '..' {HandleNumericFail();}; +NumericFail: Digits '..' {handleNumericFail();}; Numeric: Digits '.' Digits? /*? replaced with + to solve problem with DOT_DOT .. but this surely must be rewriten */ ( @@ -1557,7 +1557,7 @@ UnterminatedBlockComment: ('/'+ | '*'+ | '/'* UnterminatedBlockComment)? // Optional assertion to make sure this rule is working as intended { - UnterminatedBlockCommentDebugAssert(); + unterminatedBlockCommentDebugAssert(); } ; // diff --git a/incubator/binding-pgsql/src/main/antlr4/io/aklivity/zilla/runtime/binding/pgsql/parser/PostgreSQLParser.g4 b/incubator/binding-pgsql/src/main/antlr4/io/aklivity/zilla/runtime/binding/pgsql/parser/PostgreSqlParser.g4 similarity index 99% rename from incubator/binding-pgsql/src/main/antlr4/io/aklivity/zilla/runtime/binding/pgsql/parser/PostgreSQLParser.g4 rename to incubator/binding-pgsql/src/main/antlr4/io/aklivity/zilla/runtime/binding/pgsql/parser/PostgreSqlParser.g4 index cb8b8b3c2e..760015c6f5 100644 --- a/incubator/binding-pgsql/src/main/antlr4/io/aklivity/zilla/runtime/binding/pgsql/parser/PostgreSQLParser.g4 +++ b/incubator/binding-pgsql/src/main/antlr4/io/aklivity/zilla/runtime/binding/pgsql/parser/PostgreSqlParser.g4 @@ -13,11 +13,11 @@ * specific language governing permissions and limitations under the License. */ -parser grammar PostgreSQLParser; +parser grammar PostgreSqlParser; options { - tokenVocab = PostgreSQLLexer; - superClass = PostgreSQLParserBase; + tokenVocab = PostgreSqlLexer; + superClass = PostgreSqlParserBase; } @header { @@ -2001,7 +2001,7 @@ aggregate_with_argtypes_list createfunc_opt_list : createfunc_opt_item+ { - ParseRoutineBody(_localctx); + parseRoutineBody(_localctx); } // | createfunc_opt_list createfunc_opt_item ; diff --git a/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/LexerDispatchingErrorListener.java b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/LexerDispatchingErrorListener.java index 11ff0b9d3f..b9a7168cd9 100644 --- a/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/LexerDispatchingErrorListener.java +++ b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/LexerDispatchingErrorListener.java @@ -14,7 +14,6 @@ */ package io.aklivity.zilla.runtime.binding.pgsql.parser; - import java.util.BitSet; import org.antlr.v4.runtime.ANTLRErrorListener; @@ -28,12 +27,12 @@ public class LexerDispatchingErrorListener implements ANTLRErrorListener { - @SuppressWarnings("checkstyle:MemberName") - Lexer _parent; + Lexer parent; - public LexerDispatchingErrorListener(Lexer parent) + public LexerDispatchingErrorListener( + Lexer parent) { - _parent = parent; + this.parent = parent; } public void syntaxError( @@ -44,41 +43,44 @@ public void syntaxError( String msg, RecognitionException e) { - ProxyErrorListener foo = new ProxyErrorListener(_parent.getErrorListeners()); + ProxyErrorListener foo = new ProxyErrorListener(parent.getErrorListeners()); foo.syntaxError(recognizer, offendingSymbol, line, charPositionInLine, msg, e); } - public void reportAmbiguity(Parser recognizer, - DFA dfa, - int startIndex, - int stopIndex, - boolean exact, - BitSet ambigAlts, - ATNConfigSet configs) + public void reportAmbiguity( + Parser recognizer, + DFA dfa, + int startIndex, + int stopIndex, + boolean exact, + BitSet ambigAlts, + ATNConfigSet configs) { - ProxyErrorListener foo = new ProxyErrorListener(_parent.getErrorListeners()); - foo.reportAmbiguity(recognizer, dfa, startIndex, stopIndex, exact, ambigAlts, configs); + ProxyErrorListener proxyError = new ProxyErrorListener(parent.getErrorListeners()); + proxyError.reportAmbiguity(recognizer, dfa, startIndex, stopIndex, exact, ambigAlts, configs); } - public void reportAttemptingFullContext(Parser recognizer, - DFA dfa, - int startIndex, - int stopIndex, - BitSet conflictingAlts, - ATNConfigSet configs) + public void reportAttemptingFullContext( + Parser recognizer, + DFA dfa, + int startIndex, + int stopIndex, + BitSet conflictingAlts, + ATNConfigSet configs) { - ProxyErrorListener foo = new ProxyErrorListener(_parent.getErrorListeners()); - foo.reportAttemptingFullContext(recognizer, dfa, startIndex, stopIndex, conflictingAlts, configs); + ProxyErrorListener proxyError = new ProxyErrorListener(parent.getErrorListeners()); + proxyError.reportAttemptingFullContext(recognizer, dfa, startIndex, stopIndex, conflictingAlts, configs); } - public void reportContextSensitivity(Parser recognizer, - DFA dfa, - int startIndex, - int stopIndex, - int prediction, - ATNConfigSet configs) + public void reportContextSensitivity( + Parser recognizer, + DFA dfa, + int startIndex, + int stopIndex, + int prediction, + ATNConfigSet configs) { - ProxyErrorListener foo = new ProxyErrorListener(_parent.getErrorListeners()); - foo.reportContextSensitivity(recognizer, dfa, startIndex, stopIndex, prediction, configs); + ProxyErrorListener proxyError = new ProxyErrorListener(parent.getErrorListeners()); + proxyError.reportContextSensitivity(recognizer, dfa, startIndex, stopIndex, prediction, configs); } } diff --git a/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/ParserDispatchingErrorListener.java b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/ParserDispatchingErrorListener.java index 68116c3de7..3531e2c33f 100644 --- a/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/ParserDispatchingErrorListener.java +++ b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/ParserDispatchingErrorListener.java @@ -28,11 +28,12 @@ public class ParserDispatchingErrorListener implements ANTLRErrorListener { @SuppressWarnings("checkstyle:MemberName") - Parser _parent; + Parser parent; - public ParserDispatchingErrorListener(Parser parent) + public ParserDispatchingErrorListener( + Parser parent) { - _parent = parent; + this.parent = parent; } public void syntaxError( @@ -42,7 +43,7 @@ public void syntaxError( String msg, RecognitionException e) { - var foo = new ProxyErrorListener(_parent.getErrorListeners()); + var foo = new ProxyErrorListener(parent.getErrorListeners()); foo.syntaxError(recognizer, offendingSymbol, line, charPositionInLine, msg, e); } @@ -55,7 +56,7 @@ public void reportAmbiguity( BitSet ambigAlts, ATNConfigSet configs) { - ProxyErrorListener foo = new ProxyErrorListener(_parent.getErrorListeners()); + ProxyErrorListener foo = new ProxyErrorListener(parent.getErrorListeners()); foo.reportAmbiguity(recognizer, dfa, startIndex, stopIndex, exact, ambigAlts, configs); } @@ -67,7 +68,7 @@ public void reportAttemptingFullContext( BitSet conflictingAlts, ATNConfigSet configs) { - ProxyErrorListener foo = new ProxyErrorListener(_parent.getErrorListeners()); + ProxyErrorListener foo = new ProxyErrorListener(parent.getErrorListeners()); foo.reportAttemptingFullContext(recognizer, dfa, startIndex, stopIndex, conflictingAlts, configs); } @@ -79,7 +80,7 @@ public void reportContextSensitivity( int prediction, ATNConfigSet configs) { - ProxyErrorListener foo = new ProxyErrorListener(_parent.getErrorListeners()); + ProxyErrorListener foo = new ProxyErrorListener(parent.getErrorListeners()); foo.reportContextSensitivity(recognizer, dfa, startIndex, stopIndex, prediction, configs); } } diff --git a/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/PgsqlParser.java b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/PgsqlParser.java index f3632c2c1f..cca6014f3a 100644 --- a/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/PgsqlParser.java +++ b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/PgsqlParser.java @@ -20,29 +20,29 @@ import org.antlr.v4.runtime.CommonTokenStream; import org.antlr.v4.runtime.tree.ParseTreeWalker; -import io.aklivity.zilla.runtime.binding.pgsql.parser.listener.SQLTableCommandListener; +import io.aklivity.zilla.runtime.binding.pgsql.parser.listener.SqlTableCommandListener; public final class PgsqlParser { private final ParseTreeWalker walker; private final BailErrorStrategy errorStrategy; - private final PostgreSQLLexer lexer; + private final PostgreSqlLexer lexer; private final CommonTokenStream tokens; - private final PostgreSQLParser parser; - private final SQLTableCommandListener tableCommand; + private final PostgreSqlParser parser; + private final SqlTableCommandListener tableCommand; public PgsqlParser() { this.walker = new ParseTreeWalker(); this.errorStrategy = new BailErrorStrategy(); - this.lexer = new PostgreSQLLexer(null); - this.parser = new PostgreSQLParser(null); + this.lexer = new PostgreSqlLexer(null); + this.parser = new PostgreSqlParser(null); this.tokens = new CommonTokenStream(lexer); - this.tableCommand = new SQLTableCommandListener(); + this.tableCommand = new SqlTableCommandListener(); parser.setErrorHandler(errorStrategy); } - public SQLTableCommandListener.TableInfo parseTable( + public SqlTableCommandListener.TableInfo parseTable( String sql) { CharStream input = CharStreams.fromString(sql); diff --git a/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/PostgreSQLLexerBase.java b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/PostgreSqlLexerBase.java similarity index 76% rename from incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/PostgreSQLLexerBase.java rename to incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/PostgreSqlLexerBase.java index 1fed9bfc51..59295577b9 100644 --- a/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/PostgreSQLLexerBase.java +++ b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/PostgreSqlLexerBase.java @@ -20,15 +20,13 @@ import org.antlr.v4.runtime.CharStream; import org.antlr.v4.runtime.Lexer; -@SuppressWarnings({"all", "warnings", "unchecked", "unused", "cast", "CheckReturnValue"}) -public abstract class PostgreSQLLexerBase extends Lexer +public abstract class PostgreSqlLexerBase extends Lexer { protected final Deque tags = new ArrayDeque<>(); - protected PostgreSQLLexerBase(CharStream input) + protected PostgreSqlLexerBase(CharStream input) { super(input); - } public void pushTag() @@ -56,24 +54,30 @@ public boolean charIsLetter() return Character.isLetter(getInputStream().LA(-1)); } - public void HandleNumericFail() + public void handleNumericFail() { getInputStream().seek(getInputStream().index() - 2); - setType(PostgreSQLLexer.Integral); + setType(PostgreSqlLexer.Integral); } - public void HandleLessLessGreaterGreater() + public void handleLessLessGreaterGreater() { - if (getText() == "<<") setType(PostgreSQLLexer.LESS_LESS); - if (getText() == ">>") setType(PostgreSQLLexer.GREATER_GREATER); + if ("<<".equals(getText())) + { + setType(PostgreSqlLexer.LESS_LESS); + } + if (">>".equals(getText())) + { + setType(PostgreSqlLexer.GREATER_GREATER); + } } - public void UnterminatedBlockCommentDebugAssert() + public void unterminatedBlockCommentDebugAssert() { //Debug.Assert(InputStream.LA(1) == -1 /*EOF*/); } - public boolean CheckIfUtf32Letter() + public boolean checkIfUtf32Letter() { int codePoint = getInputStream().LA(-2) << 8 + getInputStream().LA(-1); char[] c; diff --git a/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/PostgreSQLParserBase.java b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/PostgreSqlParserBase.java similarity index 63% rename from incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/PostgreSQLParserBase.java rename to incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/PostgreSqlParserBase.java index afbb0d9574..71f927759e 100644 --- a/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/PostgreSQLParserBase.java +++ b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/PostgreSqlParserBase.java @@ -24,11 +24,10 @@ import org.antlr.v4.runtime.ParserRuleContext; import org.antlr.v4.runtime.TokenStream; -@SuppressWarnings({"all", "warnings", "unchecked", "unused", "cast", "CheckReturnValue"}) -public abstract class PostgreSQLParserBase extends Parser +public abstract class PostgreSqlParserBase extends Parser { - public PostgreSQLParserBase(TokenStream input) + public PostgreSqlParserBase(TokenStream input) { super(input); } @@ -37,16 +36,16 @@ ParserRuleContext getParsedSqlTree( String script, int line) { - PostgreSQLParser ph = getPostgreSQLParser(script); + PostgreSqlParser ph = getPostgreSqlParser(script); ParserRuleContext result = ph.root(); return result; } - public void ParseRoutineBody( - PostgreSQLParser.Createfunc_opt_listContext _localctx) + public void parseRoutineBody( + PostgreSqlParser.Createfunc_opt_listContext localctx) { String lang = null; - for (PostgreSQLParser.Createfunc_opt_itemContext coi : _localctx.createfunc_opt_item()) + for (PostgreSqlParser.Createfunc_opt_itemContext coi : localctx.createfunc_opt_item()) { if (coi.LANGUAGE() != null) { @@ -75,33 +74,33 @@ public void ParseRoutineBody( { return; } - PostgreSQLParser.Createfunc_opt_itemContext func_as = null; - for (PostgreSQLParser.Createfunc_opt_itemContext a : _localctx.createfunc_opt_item()) + PostgreSqlParser.Createfunc_opt_itemContext funcAs = null; + for (PostgreSqlParser.Createfunc_opt_itemContext a : localctx.createfunc_opt_item()) { if (a.func_as() != null) { - func_as = a; + funcAs = a; break; } } - if (func_as != null) + if (funcAs != null) { - String txt = GetRoutineBodyString(func_as.func_as().sconst(0)); - PostgreSQLParser ph = getPostgreSQLParser(txt); + String txt = getRoutineBodyString(funcAs.func_as().sconst(0)); + PostgreSqlParser ph = getPostgreSqlParser(txt); switch (lang) { case "plpgsql": - func_as.func_as().Definition = ph.plsqlroot(); + funcAs.func_as().Definition = ph.plsqlroot(); break; case "sql": - func_as.func_as().Definition = ph.root(); + funcAs.func_as().Definition = ph.root(); break; } } } - private String TrimQuotes(String s) + private String trimQuotes(String s) { return (s == null || s.isEmpty()) ? s : s.substring(1, s.length() - 1); } @@ -125,24 +124,24 @@ public String unquote( return r.toString(); } - public String GetRoutineBodyString( - PostgreSQLParser.SconstContext rule) + public String getRoutineBodyString( + PostgreSqlParser.SconstContext rule) { - PostgreSQLParser.AnysconstContext anysconst = rule.anysconst(); - org.antlr.v4.runtime.tree.TerminalNode StringConstant = anysconst.StringConstant(); - if (null != StringConstant) + PostgreSqlParser.AnysconstContext anysconst = rule.anysconst(); + org.antlr.v4.runtime.tree.TerminalNode stringConstant = anysconst.StringConstant(); + if (null != stringConstant) { - return TrimQuotes(StringConstant.getText()); + return trimQuotes(stringConstant.getText()); } - org.antlr.v4.runtime.tree.TerminalNode UnicodeEscapeStringConstant = anysconst.UnicodeEscapeStringConstant(); - if (null != UnicodeEscapeStringConstant) + org.antlr.v4.runtime.tree.TerminalNode unicodeEscapeStringConstant = anysconst.UnicodeEscapeStringConstant(); + if (null != unicodeEscapeStringConstant) { - return unquote(UnicodeEscapeStringConstant.getText()); + return unquote(unicodeEscapeStringConstant.getText()); } - org.antlr.v4.runtime.tree.TerminalNode EscapeStringConstant = anysconst.EscapeStringConstant(); - if (null != EscapeStringConstant) + org.antlr.v4.runtime.tree.TerminalNode escapeStringConstant = anysconst.EscapeStringConstant(); + if (null != escapeStringConstant) { - return unquote(EscapeStringConstant.getText()); + return unquote(escapeStringConstant.getText()); } String result = ""; List dollartext = anysconst.DollarText(); @@ -153,21 +152,20 @@ public String GetRoutineBodyString( return result; } - @SuppressWarnings("checkstyle:LocalVariableName") - public PostgreSQLParser getPostgreSQLParser( + public PostgreSqlParser getPostgreSqlParser( String script) { CharStream charStream = CharStreams.fromString(script); - Lexer lexer = new PostgreSQLLexer(charStream); + Lexer lexer = new PostgreSqlLexer(charStream); CommonTokenStream tokens = new CommonTokenStream(lexer); - PostgreSQLParser parser = new PostgreSQLParser(tokens); + PostgreSqlParser parser = new PostgreSqlParser(tokens); lexer.removeErrorListeners(); parser.removeErrorListeners(); - LexerDispatchingErrorListener listener_lexer = - new LexerDispatchingErrorListener((Lexer)(((CommonTokenStream)(this.getInputStream())).getTokenSource())); - ParserDispatchingErrorListener listener_parser = new ParserDispatchingErrorListener(this); - lexer.addErrorListener(listener_lexer); - parser.addErrorListener(listener_parser); + LexerDispatchingErrorListener listenerLexer = + new LexerDispatchingErrorListener((Lexer)(this.getInputStream().getTokenSource())); + ParserDispatchingErrorListener listenerParser = new ParserDispatchingErrorListener(this); + lexer.addErrorListener(listenerLexer); + parser.addErrorListener(listenerParser); return parser; } } diff --git a/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SQLTableCommandListener.java b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlTableCommandListener.java similarity index 66% rename from incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SQLTableCommandListener.java rename to incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlTableCommandListener.java index 6612576526..1b5677721b 100644 --- a/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SQLTableCommandListener.java +++ b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlTableCommandListener.java @@ -1,3 +1,17 @@ +/* + * Copyright 2021-2023 Aklivity Inc + * + * Licensed under the Aklivity Community License (the "License"); you may not use + * this file except in compliance with the License. You may obtain a copy of the + * License at + * + * https://www.aklivity.io/aklivity-community-license/ + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OF ANY KIND, either express or implied. See the License for the + * specific language governing permissions and limitations under the License. + */ package io.aklivity.zilla.runtime.binding.pgsql.parser.listener; import java.util.Map; @@ -6,10 +20,10 @@ import org.agrona.collections.Object2ObjectHashMap; import org.agrona.collections.ObjectHashSet; -import io.aklivity.zilla.runtime.binding.pgsql.parser.PostgreSQLParser; -import io.aklivity.zilla.runtime.binding.pgsql.parser.PostgreSQLParserBaseListener; +import io.aklivity.zilla.runtime.binding.pgsql.parser.PostgreSqlParser; +import io.aklivity.zilla.runtime.binding.pgsql.parser.PostgreSqlParserBaseListener; -public class SQLTableCommandListener extends PostgreSQLParserBaseListener +public class SqlTableCommandListener extends PostgreSqlParserBaseListener { private String tableName; private final Map columns = new Object2ObjectHashMap<>(); @@ -22,19 +36,19 @@ public TableInfo tableInfo() @Override public void enterQualified_name( - PostgreSQLParser.Qualified_nameContext ctx) + PostgreSqlParser.Qualified_nameContext ctx) { tableName = ctx.getText(); } @Override public void enterCreatestmt( - PostgreSQLParser.CreatestmtContext ctx) + PostgreSqlParser.CreatestmtContext ctx) { columns.clear(); primaryKeys.clear(); - for (PostgreSQLParser.TableelementContext tableElement : ctx.opttableelementlist().tableelementlist().tableelement()) + for (PostgreSqlParser.TableelementContext tableElement : ctx.opttableelementlist().tableelementlist().tableelement()) { if (tableElement.columnDef() != null) { @@ -42,7 +56,7 @@ public void enterCreatestmt( String dataType = tableElement.columnDef().typename().getText(); columns.put(columnName, dataType); - for (PostgreSQLParser.ColconstraintContext constraint : tableElement.columnDef().colquallist().colconstraint()) + for (PostgreSqlParser.ColconstraintContext constraint : tableElement.columnDef().colquallist().colconstraint()) { if (constraint.colconstraintelem().PRIMARY() != null && constraint.colconstraintelem().KEY() != null) @@ -66,8 +80,7 @@ else if (tableElement.tableconstraint() != null) public record TableInfo( String tableName, Map columns, - Set primaryKeys - ) + Set primaryKeys) { } } diff --git a/incubator/binding-pgsql/src/test/java/io/aklivity/zilla/runtime/binding/pgsql/parser/PgsqlTableParserTest.java b/incubator/binding-pgsql/src/test/java/io/aklivity/zilla/runtime/binding/pgsql/parser/PgsqlTableParserTest.java index 0d733a07ef..b136132e69 100644 --- a/incubator/binding-pgsql/src/test/java/io/aklivity/zilla/runtime/binding/pgsql/parser/PgsqlTableParserTest.java +++ b/incubator/binding-pgsql/src/test/java/io/aklivity/zilla/runtime/binding/pgsql/parser/PgsqlTableParserTest.java @@ -21,7 +21,7 @@ import org.junit.Before; import org.junit.Test; -import io.aklivity.zilla.runtime.binding.pgsql.parser.listener.SQLTableCommandListener; +import io.aklivity.zilla.runtime.binding.pgsql.parser.listener.SqlTableCommandListener; public class PgsqlTableParserTest { @@ -37,7 +37,7 @@ public void setUp() public void shouldParseWithPrimaryKeySQL() { String sql = "CREATE TABLE test (id INT PRIMARY KEY, name VARCHAR(100));"; - SQLTableCommandListener.TableInfo tableInfo = parser.parseTable(sql); + SqlTableCommandListener.TableInfo tableInfo = parser.parseTable(sql); assertNotNull(tableInfo); assertTrue(tableInfo.primaryKeys().contains("id")); } @@ -52,7 +52,7 @@ name VARCHAR(100), age INT, PRIMARY KEY (id, name) );"""; - SQLTableCommandListener.TableInfo command = parser.parseTable(sql); + SqlTableCommandListener.TableInfo command = parser.parseTable(sql); assertNotNull(command); assertEquals(2, command.primaryKeys().size()); assertEquals(3, command.columns().size()); @@ -64,7 +64,7 @@ PRIMARY KEY (id, name) public void shouldHandleEmptySQL() { String sql = ""; - SQLTableCommandListener.TableInfo command = parser.parseTable(sql); + SqlTableCommandListener.TableInfo command = parser.parseTable(sql); assertNotNull(command); } From c1585530641345e8faf493ac7bdffefcb635b7c2 Mon Sep 17 00:00:00 2001 From: Akram Yakubov Date: Wed, 16 Oct 2024 10:02:46 -0700 Subject: [PATCH 05/26] Refactor --- .../runtime/binding/pgsql/parser/PgsqlParser.java | 3 ++- .../parser/listener/SqlTableCommandListener.java | 8 +------- .../binding/pgsql/parser/module/TableInfo.java | 11 +++++++++++ 3 files changed, 14 insertions(+), 8 deletions(-) create mode 100644 incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/module/TableInfo.java diff --git a/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/PgsqlParser.java b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/PgsqlParser.java index cca6014f3a..ac7057b818 100644 --- a/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/PgsqlParser.java +++ b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/PgsqlParser.java @@ -21,6 +21,7 @@ import org.antlr.v4.runtime.tree.ParseTreeWalker; import io.aklivity.zilla.runtime.binding.pgsql.parser.listener.SqlTableCommandListener; +import io.aklivity.zilla.runtime.binding.pgsql.parser.module.TableInfo; public final class PgsqlParser { @@ -42,7 +43,7 @@ public PgsqlParser() parser.setErrorHandler(errorStrategy); } - public SqlTableCommandListener.TableInfo parseTable( + public TableInfo parseTable( String sql) { CharStream input = CharStreams.fromString(sql); diff --git a/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlTableCommandListener.java b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlTableCommandListener.java index 1b5677721b..fa6c33a2fe 100644 --- a/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlTableCommandListener.java +++ b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlTableCommandListener.java @@ -22,6 +22,7 @@ import io.aklivity.zilla.runtime.binding.pgsql.parser.PostgreSqlParser; import io.aklivity.zilla.runtime.binding.pgsql.parser.PostgreSqlParserBaseListener; +import io.aklivity.zilla.runtime.binding.pgsql.parser.module.TableInfo; public class SqlTableCommandListener extends PostgreSqlParserBaseListener { @@ -76,11 +77,4 @@ else if (tableElement.tableconstraint() != null) } } } - - public record TableInfo( - String tableName, - Map columns, - Set primaryKeys) - { - } } diff --git a/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/module/TableInfo.java b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/module/TableInfo.java new file mode 100644 index 0000000000..7a3788cbda --- /dev/null +++ b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/module/TableInfo.java @@ -0,0 +1,11 @@ +package io.aklivity.zilla.runtime.binding.pgsql.parser.module; + +import java.util.Map; +import java.util.Set; + +public record TableInfo( + String tableName, + Map columns, + Set primaryKeys) +{ +} From 5393150a29faa4349668c8dab7e0be72c5bb68db Mon Sep 17 00:00:00 2001 From: Akram Yakubov Date: Wed, 16 Oct 2024 12:54:09 -0700 Subject: [PATCH 06/26] WIP --- .../binding/pgsql/parser/PgsqlParser.java | 43 +++- .../SqlCreateMaterializedViewListener.java | 44 ++++ ...tener.java => SqlCreateTableListener.java} | 46 ++-- .../parser/listener/SqlDropListener.java | 41 ++++ .../pgsql/parser/module/TableInfo.java | 2 +- .../binding/pgsql/parser/module/ViewInfo.java | 7 + .../binding/pgsql/parser/PgsqlParserTest.java | 198 ++++++++++++++++++ .../pgsql/parser/PgsqlTableParserTest.java | 85 -------- 8 files changed, 352 insertions(+), 114 deletions(-) create mode 100644 incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlCreateMaterializedViewListener.java rename incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/{SqlTableCommandListener.java => SqlCreateTableListener.java} (51%) create mode 100644 incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlDropListener.java create mode 100644 incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/module/ViewInfo.java create mode 100644 incubator/binding-pgsql/src/test/java/io/aklivity/zilla/runtime/binding/pgsql/parser/PgsqlParserTest.java delete mode 100644 incubator/binding-pgsql/src/test/java/io/aklivity/zilla/runtime/binding/pgsql/parser/PgsqlTableParserTest.java diff --git a/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/PgsqlParser.java b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/PgsqlParser.java index ac7057b818..e8e4db6d87 100644 --- a/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/PgsqlParser.java +++ b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/PgsqlParser.java @@ -14,14 +14,19 @@ */ package io.aklivity.zilla.runtime.binding.pgsql.parser; +import java.util.Set; + import org.antlr.v4.runtime.BailErrorStrategy; import org.antlr.v4.runtime.CharStream; import org.antlr.v4.runtime.CharStreams; import org.antlr.v4.runtime.CommonTokenStream; import org.antlr.v4.runtime.tree.ParseTreeWalker; -import io.aklivity.zilla.runtime.binding.pgsql.parser.listener.SqlTableCommandListener; +import io.aklivity.zilla.runtime.binding.pgsql.parser.listener.SqlCreateMaterializedViewListener; +import io.aklivity.zilla.runtime.binding.pgsql.parser.listener.SqlCreateTableListener; +import io.aklivity.zilla.runtime.binding.pgsql.parser.listener.SqlDropListener; import io.aklivity.zilla.runtime.binding.pgsql.parser.module.TableInfo; +import io.aklivity.zilla.runtime.binding.pgsql.parser.module.ViewInfo; public final class PgsqlParser { @@ -30,7 +35,9 @@ public final class PgsqlParser private final PostgreSqlLexer lexer; private final CommonTokenStream tokens; private final PostgreSqlParser parser; - private final SqlTableCommandListener tableCommand; + private final SqlCreateTableListener createTableListener; + private final SqlCreateMaterializedViewListener createMaterializedViewListener; + private final SqlDropListener dropListener; public PgsqlParser() { @@ -39,12 +46,36 @@ public PgsqlParser() this.lexer = new PostgreSqlLexer(null); this.parser = new PostgreSqlParser(null); this.tokens = new CommonTokenStream(lexer); - this.tableCommand = new SqlTableCommandListener(); + this.createTableListener = new SqlCreateTableListener(); + this.createMaterializedViewListener = new SqlCreateMaterializedViewListener(); + this.dropListener = new SqlDropListener(); parser.setErrorHandler(errorStrategy); } - public TableInfo parseTable( + public TableInfo parseCreateTable( String sql) + { + parser(sql, createTableListener); + return createTableListener.tableInfo(); + } + + public ViewInfo parseCreateMaterializedView( + String sql) + { + parser(sql, createMaterializedViewListener); + return createMaterializedViewListener.viewInfo(); + } + + public Set parseDrop( + String sql) + { + parser(sql, dropListener); + return dropListener.drops(); + } + + private void parser( + String sql, + PostgreSqlParserBaseListener listener) { CharStream input = CharStreams.fromString(sql); lexer.reset(); @@ -53,8 +84,6 @@ public TableInfo parseTable( tokens.setTokenSource(lexer); parser.setTokenStream(tokens); - walker.walk(tableCommand, parser.root()); - - return tableCommand.tableInfo(); + walker.walk(listener, parser.root()); } } diff --git a/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlCreateMaterializedViewListener.java b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlCreateMaterializedViewListener.java new file mode 100644 index 0000000000..b4ced88842 --- /dev/null +++ b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlCreateMaterializedViewListener.java @@ -0,0 +1,44 @@ +/* + * Copyright 2021-2023 Aklivity Inc + * + * Licensed under the Aklivity Community License (the "License"); you may not use + * this file except in compliance with the License. You may obtain a copy of the + * License at + * + * https://www.aklivity.io/aklivity-community-license/ + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OF ANY KIND, either express or implied. See the License for the + * specific language governing permissions and limitations under the License. + */ +package io.aklivity.zilla.runtime.binding.pgsql.parser.listener; + +import io.aklivity.zilla.runtime.binding.pgsql.parser.PostgreSqlParser; +import io.aklivity.zilla.runtime.binding.pgsql.parser.PostgreSqlParserBaseListener; +import io.aklivity.zilla.runtime.binding.pgsql.parser.module.ViewInfo; + +public class SqlCreateMaterializedViewListener extends PostgreSqlParserBaseListener +{ + private String name; + private String select; + + public ViewInfo viewInfo() + { + return new ViewInfo(name, select); + } + + @Override + public void enterCreatematviewstmt( + PostgreSqlParser.CreatematviewstmtContext ctx) + { + name = ctx.create_mv_target().qualified_name().getText(); + } + + @Override + public void enterSelectstmt( + PostgreSqlParser.SelectstmtContext ctx) + { + select = ctx.getText(); + } +} diff --git a/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlTableCommandListener.java b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlCreateTableListener.java similarity index 51% rename from incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlTableCommandListener.java rename to incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlCreateTableListener.java index fa6c33a2fe..fce37e2a3e 100644 --- a/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlTableCommandListener.java +++ b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlCreateTableListener.java @@ -24,22 +24,22 @@ import io.aklivity.zilla.runtime.binding.pgsql.parser.PostgreSqlParserBaseListener; import io.aklivity.zilla.runtime.binding.pgsql.parser.module.TableInfo; -public class SqlTableCommandListener extends PostgreSqlParserBaseListener +public class SqlCreateTableListener extends PostgreSqlParserBaseListener { - private String tableName; + private String name; private final Map columns = new Object2ObjectHashMap<>(); private final Set primaryKeys = new ObjectHashSet<>(); public TableInfo tableInfo() { - return new TableInfo(tableName, columns, primaryKeys); + return new TableInfo(name, columns, primaryKeys); } @Override public void enterQualified_name( PostgreSqlParser.Qualified_nameContext ctx) { - tableName = ctx.getText(); + name = ctx.getText(); } @Override @@ -49,30 +49,34 @@ public void enterCreatestmt( columns.clear(); primaryKeys.clear(); - for (PostgreSqlParser.TableelementContext tableElement : ctx.opttableelementlist().tableelementlist().tableelement()) + if (ctx.opttableelementlist().tableelementlist() != null) { - if (tableElement.columnDef() != null) + for (PostgreSqlParser.TableelementContext tableElement : ctx.opttableelementlist().tableelementlist().tableelement()) { - String columnName = tableElement.columnDef().colid().getText(); - String dataType = tableElement.columnDef().typename().getText(); - columns.put(columnName, dataType); - - for (PostgreSqlParser.ColconstraintContext constraint : tableElement.columnDef().colquallist().colconstraint()) + if (tableElement.columnDef() != null) { - if (constraint.colconstraintelem().PRIMARY() != null && - constraint.colconstraintelem().KEY() != null) + String columnName = tableElement.columnDef().colid().getText(); + String dataType = tableElement.columnDef().typename().getText(); + columns.put(columnName, dataType); + + for (PostgreSqlParser.ColconstraintContext constraint : + tableElement.columnDef().colquallist().colconstraint()) { - primaryKeys.add(columnName); + if (constraint.colconstraintelem().PRIMARY() != null && + constraint.colconstraintelem().KEY() != null) + { + primaryKeys.add(columnName); + } } } - } - else if (tableElement.tableconstraint() != null) - { - if (tableElement.tableconstraint().constraintelem().PRIMARY() != null && - tableElement.tableconstraint().constraintelem().KEY() != null) + else if (tableElement.tableconstraint() != null) { - tableElement.tableconstraint().constraintelem().columnlist().columnElem().forEach( - column -> primaryKeys.add(column.getText())); + if (tableElement.tableconstraint().constraintelem().PRIMARY() != null && + tableElement.tableconstraint().constraintelem().KEY() != null) + { + tableElement.tableconstraint().constraintelem().columnlist().columnElem().forEach( + column -> primaryKeys.add(column.getText())); + } } } } diff --git a/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlDropListener.java b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlDropListener.java new file mode 100644 index 0000000000..ca079d0323 --- /dev/null +++ b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlDropListener.java @@ -0,0 +1,41 @@ +/* + * Copyright 2021-2023 Aklivity Inc + * + * Licensed under the Aklivity Community License (the "License"); you may not use + * this file except in compliance with the License. You may obtain a copy of the + * License at + * + * https://www.aklivity.io/aklivity-community-license/ + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OF ANY KIND, either express or implied. See the License for the + * specific language governing permissions and limitations under the License. + */ +package io.aklivity.zilla.runtime.binding.pgsql.parser.listener; + +import java.util.Set; + +import org.agrona.collections.ObjectHashSet; + +import io.aklivity.zilla.runtime.binding.pgsql.parser.PostgreSqlParser; +import io.aklivity.zilla.runtime.binding.pgsql.parser.PostgreSqlParserBaseListener; + +public class SqlDropListener extends PostgreSqlParserBaseListener +{ + private final Set drops = new ObjectHashSet<>(); + + public Set drops() + { + return drops; + } + + @Override + public void enterDropstmt( + PostgreSqlParser.DropstmtContext ctx) + { + drops.clear(); + + ctx.any_name_list().any_name().forEach(name -> drops.add(name.getText())); + } +} diff --git a/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/module/TableInfo.java b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/module/TableInfo.java index 7a3788cbda..ddfe51847b 100644 --- a/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/module/TableInfo.java +++ b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/module/TableInfo.java @@ -4,7 +4,7 @@ import java.util.Set; public record TableInfo( - String tableName, + String name, Map columns, Set primaryKeys) { diff --git a/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/module/ViewInfo.java b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/module/ViewInfo.java new file mode 100644 index 0000000000..027a42da00 --- /dev/null +++ b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/module/ViewInfo.java @@ -0,0 +1,7 @@ +package io.aklivity.zilla.runtime.binding.pgsql.parser.module; + +public record ViewInfo( + String name, + String select) +{ +} diff --git a/incubator/binding-pgsql/src/test/java/io/aklivity/zilla/runtime/binding/pgsql/parser/PgsqlParserTest.java b/incubator/binding-pgsql/src/test/java/io/aklivity/zilla/runtime/binding/pgsql/parser/PgsqlParserTest.java new file mode 100644 index 0000000000..d25bea9fb2 --- /dev/null +++ b/incubator/binding-pgsql/src/test/java/io/aklivity/zilla/runtime/binding/pgsql/parser/PgsqlParserTest.java @@ -0,0 +1,198 @@ +/* + * Copyright 2021-2023 Aklivity Inc + * + * Licensed under the Aklivity Community License (the "License"); you may not use + * this file except in compliance with the License. You may obtain a copy of the + * License at + * + * https://www.aklivity.io/aklivity-community-license/ + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OF ANY KIND, either express or implied. See the License for the + * specific language governing permissions and limitations under the License. + */ +package io.aklivity.zilla.runtime.binding.pgsql.parser; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertTrue; + +import java.util.Set; + +import org.antlr.v4.runtime.misc.ParseCancellationException; +import org.junit.Before; +import org.junit.Test; + +import io.aklivity.zilla.runtime.binding.pgsql.parser.module.TableInfo; +import io.aklivity.zilla.runtime.binding.pgsql.parser.module.ViewInfo; + +public class PgsqlParserTest +{ + private PgsqlParser parser; + + @Before + public void setUp() + { + parser = new PgsqlParser(); + } + + @Test + public void shouldParseWithPrimaryKeySql() + { + String sql = "CREATE TABLE test (id INT PRIMARY KEY, name VARCHAR(100));"; + TableInfo tableInfo = parser.parseCreateTable(sql); + assertNotNull(tableInfo); + assertTrue(tableInfo.primaryKeys().contains("id")); + } + + @Test + public void shouldCreateParseWithPrimaryKeysSql() + { + String sql = """ + CREATE TABLE example_table ( + id INT PRIMARY KEY, + name VARCHAR(100), + age INT, + PRIMARY KEY (id, name) + );"""; + TableInfo tableInfo = parser.parseCreateTable(sql); + assertNotNull(tableInfo); + assertEquals(2, tableInfo.primaryKeys().size()); + assertEquals(3, tableInfo.columns().size()); + assertTrue(tableInfo.primaryKeys().contains("id")); + assertTrue(tableInfo.primaryKeys().contains("name")); + } + + @Test + public void shouldParseCreateTableName() + { + String sql = "CREATE TABLE test (id INT);"; + TableInfo tableInfo = parser.parseCreateTable(sql); + assertEquals("test", tableInfo.name()); + } + + @Test + public void shouldParseCreateTableColumns() + { + String sql = "CREATE TABLE test (id INT, name VARCHAR(100));"; + TableInfo tableInfo = parser.parseCreateTable(sql); + assertEquals(2, tableInfo.columns().size()); + assertEquals("INT", tableInfo.columns().get("id")); + assertEquals("VARCHAR(100)", tableInfo.columns().get("name")); + } + + @Test + public void shouldParseCreatreTablePrimaryKey() + { + String sql = "CREATE TABLE test (id INT PRIMARY KEY, name VARCHAR(100));"; + TableInfo tableInfo = parser.parseCreateTable(sql); + assertEquals(1, tableInfo.primaryKeys().size()); + assertTrue(tableInfo.primaryKeys().contains("id")); + } + + @Test + public void shouldParseCreateTableCompositePrimaryKey() + { + String sql = "CREATE TABLE test (id INT, name VARCHAR(100), PRIMARY KEY (id, name));"; + TableInfo tableInfo = parser.parseCreateTable(sql); + assertEquals(2, tableInfo.primaryKeys().size()); + assertTrue(tableInfo.primaryKeys().contains("id")); + assertTrue(tableInfo.primaryKeys().contains("name")); + } + + @Test + public void shouldHandleEmptyCreateTable() + { + String sql = "CREATE TABLE test ();"; + TableInfo tableInfo = parser.parseCreateTable(sql); + assertEquals(0, tableInfo.columns().size()); + assertEquals(0, tableInfo.primaryKeys().size()); + } + + @Test + public void shouldHandleEmptySql() + { + String sql = ""; + TableInfo tableInfo = parser.parseCreateTable(sql); + assertNotNull(tableInfo); + } + + @Test + public void shouldParseCreateMaterializedView() + { + String sql = "CREATE MATERIALIZED VIEW test_view AS SELECT * FROM test_table;"; + ViewInfo viewInfo = parser.parseCreateMaterializedView(sql); + assertNotNull(viewInfo); + assertEquals("test_view", viewInfo.name()); + } + + @Test(expected = ParseCancellationException.class) + public void shouldHandleEmptyCreateMaterializedView() + { + String sql = "CREATE MATERIALIZED VIEW test_view AS ;"; + ViewInfo viewInfo = parser.parseCreateMaterializedView(sql); + assertNotNull(viewInfo); + assertEquals("test_view", viewInfo.name()); + } + + @Test(expected = ParseCancellationException.class) + public void shouldHandleInvalidCreateMaterializedView() + { + String sql = "CREATE MATERIALIZED VIEW test_view"; + parser.parseCreateMaterializedView(sql); + } + + @Test(expected = ParseCancellationException.class) + public void shouldHandleInvalidCreateTable() + { + String sql = "CREATE TABLE test"; + parser.parseCreateTable(sql); + } + + @Test + public void shouldParseDropSingleTable() + { + String sql = "DROP TABLE test_table;"; + Set drops = parser.parseDrop(sql); + assertEquals(1, drops.size()); + assertTrue(drops.contains("test_table")); + } + + @Test + public void shouldParseDropMultipleTables() + { + String sql = "DROP TABLE table1, table2;"; + Set drops = parser.parseDrop(sql); + assertEquals(2, drops.size()); + assertTrue(drops.contains("table1")); + assertTrue(drops.contains("table2")); + } + + @Test(expected = ParseCancellationException.class) + public void shouldHandleEmptyDropStatement() + { + String sql = "DROP TABLE;"; + Set drops = parser.parseDrop(sql); + assertEquals(0, drops.size()); + } + + @Test + public void shouldParseDropView() + { + String sql = "DROP VIEW test_view;"; + Set drops = parser.parseDrop(sql); + assertEquals(1, drops.size()); + assertTrue(drops.contains("test_view")); + } + + @Test + public void shouldParseDropMaterializedView() + { + String sql = "DROP MATERIALIZED VIEW test_materialized_view;"; + Set drops = parser.parseDrop(sql); + assertEquals(1, drops.size()); + assertTrue(drops.contains("test_materialized_view")); + } + +} diff --git a/incubator/binding-pgsql/src/test/java/io/aklivity/zilla/runtime/binding/pgsql/parser/PgsqlTableParserTest.java b/incubator/binding-pgsql/src/test/java/io/aklivity/zilla/runtime/binding/pgsql/parser/PgsqlTableParserTest.java deleted file mode 100644 index b136132e69..0000000000 --- a/incubator/binding-pgsql/src/test/java/io/aklivity/zilla/runtime/binding/pgsql/parser/PgsqlTableParserTest.java +++ /dev/null @@ -1,85 +0,0 @@ -/* - * Copyright 2021-2023 Aklivity Inc - * - * Licensed under the Aklivity Community License (the "License"); you may not use - * this file except in compliance with the License. You may obtain a copy of the - * License at - * - * https://www.aklivity.io/aklivity-community-license/ - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OF ANY KIND, either express or implied. See the License for the - * specific language governing permissions and limitations under the License. - */ -package io.aklivity.zilla.runtime.binding.pgsql.parser; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.assertTrue; - -import org.junit.Before; -import org.junit.Test; - -import io.aklivity.zilla.runtime.binding.pgsql.parser.listener.SqlTableCommandListener; - -public class PgsqlTableParserTest -{ - private PgsqlParser parser; - - @Before - public void setUp() - { - parser = new PgsqlParser(); - } - - @Test - public void shouldParseWithPrimaryKeySQL() - { - String sql = "CREATE TABLE test (id INT PRIMARY KEY, name VARCHAR(100));"; - SqlTableCommandListener.TableInfo tableInfo = parser.parseTable(sql); - assertNotNull(tableInfo); - assertTrue(tableInfo.primaryKeys().contains("id")); - } - - @Test - public void shouldParseWithPrimaryKeysSQL() - { - String sql = """ - CREATE TABLE example_table ( - id INT PRIMARY KEY, - name VARCHAR(100), - age INT, - PRIMARY KEY (id, name) - );"""; - SqlTableCommandListener.TableInfo command = parser.parseTable(sql); - assertNotNull(command); - assertEquals(2, command.primaryKeys().size()); - assertEquals(3, command.columns().size()); - assertTrue(command.primaryKeys().contains("id")); - assertTrue(command.primaryKeys().contains("name")); - } - - @Test - public void shouldHandleEmptySQL() - { - String sql = ""; - SqlTableCommandListener.TableInfo command = parser.parseTable(sql); - assertNotNull(command); - } - - @Test - public void shouldHandleInvalidSQL() - { - String sql = "INVALID SQL"; - try - { - parser.parseTable(sql); - assertTrue("Expected an exception to be thrown", false); - } - catch (Exception e) - { - assertTrue(true); - } - } -} From 5cf9acd03bd807be77cd8c090451a362f9a19fce Mon Sep 17 00:00:00 2001 From: Akram Yakubov Date: Wed, 16 Oct 2024 16:19:21 -0700 Subject: [PATCH 07/26] WIP --- .../kafka/streams/pgsql/drop.topic/client.rpt | 1 - incubator/binding-pgsql-kafka/NOTICE | 1 - incubator/binding-pgsql-kafka/pom.xml | 6 +- .../PgsqlKafkaKeyAvroSchemaTemplate.java | 40 +- .../PgsqlKafkaValueAvroSchemaTemplate.java | 68 +- .../stream/PgsqlKafkaProxyFactory.java | 167 +- .../binding-pgsql/gen/PostgreSqlLexer.interp | 8 +- .../binding-pgsql/gen/PostgreSqlLexer.java | 8744 +++++++++-------- .../binding-pgsql/gen/PostgreSqlLexer.tokens | 2260 ++--- .../binding/pgsql/parser/PostgreSqlLexer.g4 | 4 + .../binding/pgsql/parser/PostgreSqlParser.g4 | 24 + .../binding/pgsql/parser/PgsqlParser.java | 12 + .../parser/listener/SqlCommandListener.java | 49 + .../pgsql/parser/module/TableInfo.java | 14 + .../binding/pgsql/parser/module/ViewInfo.java | 14 + .../src/main/moditect/module-info.java | 2 + 16 files changed, 5691 insertions(+), 5723 deletions(-) create mode 100644 incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlCommandListener.java diff --git a/incubator/binding-pgsql-kafka.spec/src/main/scripts/io/aklivity/zilla/specs/binding/pgsql/kafka/streams/pgsql/drop.topic/client.rpt b/incubator/binding-pgsql-kafka.spec/src/main/scripts/io/aklivity/zilla/specs/binding/pgsql/kafka/streams/pgsql/drop.topic/client.rpt index 8c5c8e65b0..5c4d5dd7af 100644 --- a/incubator/binding-pgsql-kafka.spec/src/main/scripts/io/aklivity/zilla/specs/binding/pgsql/kafka/streams/pgsql/drop.topic/client.rpt +++ b/incubator/binding-pgsql-kafka.spec/src/main/scripts/io/aklivity/zilla/specs/binding/pgsql/kafka/streams/pgsql/drop.topic/client.rpt @@ -34,7 +34,6 @@ write zilla:data.ext ${pgsql:dataEx() .build() .build()} write "DROP TOPIC cities;" - [0x00] write flush read advised zilla:flush ${pgsql:flushEx() diff --git a/incubator/binding-pgsql-kafka/NOTICE b/incubator/binding-pgsql-kafka/NOTICE index c6b7d9c015..9024d8926d 100644 --- a/incubator/binding-pgsql-kafka/NOTICE +++ b/incubator/binding-pgsql-kafka/NOTICE @@ -10,5 +10,4 @@ WARRANTIES OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. This project includes: - JSQLParser library under GNU Library or Lesser General Public License (LGPL) V2.1 or The Apache Software License, Version 2.0 diff --git a/incubator/binding-pgsql-kafka/pom.xml b/incubator/binding-pgsql-kafka/pom.xml index 5779c09cb9..44f768412f 100644 --- a/incubator/binding-pgsql-kafka/pom.xml +++ b/incubator/binding-pgsql-kafka/pom.xml @@ -42,8 +42,9 @@ provided - com.github.jsqlparser - jsqlparser + io.aklivity.zilla + binding-pgsql + provided ${project.groupId} @@ -195,7 +196,6 @@ io/aklivity/zilla/runtime/binding/pgsql/kafka/internal/types/**/*.class - net/sf/jsqlparser/parser/* diff --git a/incubator/binding-pgsql-kafka/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/kafka/internal/schema/PgsqlKafkaKeyAvroSchemaTemplate.java b/incubator/binding-pgsql-kafka/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/kafka/internal/schema/PgsqlKafkaKeyAvroSchemaTemplate.java index cecef1e11f..de9cdbb70f 100644 --- a/incubator/binding-pgsql-kafka/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/kafka/internal/schema/PgsqlKafkaKeyAvroSchemaTemplate.java +++ b/incubator/binding-pgsql-kafka/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/kafka/internal/schema/PgsqlKafkaKeyAvroSchemaTemplate.java @@ -14,11 +14,9 @@ */ package io.aklivity.zilla.runtime.binding.pgsql.kafka.internal.schema; -import java.util.List; +import java.util.Map; -import net.sf.jsqlparser.statement.create.table.ColumnDefinition; -import net.sf.jsqlparser.statement.create.table.CreateTable; -import net.sf.jsqlparser.statement.create.table.Index; +import io.aklivity.zilla.runtime.binding.pgsql.parser.module.TableInfo; public class PgsqlKafkaKeyAvroSchemaTemplate extends PgsqlKafkaAvroSchemaTemplate { @@ -35,12 +33,12 @@ public PgsqlKafkaKeyAvroSchemaTemplate( public String generateSchema( String database, - CreateTable createTable) + TableInfo createTable) { schemaBuilder.setLength(0); final String newNamespace = namespace.replace(DATABASE_PLACEHOLDER, database); - final String recordName = String.format("%s_key", createTable.getTable().getName()); + final String recordName = String.format("%s_key", createTable.name()); schemaBuilder.append("{\n"); schemaBuilder.append("\"schemaType\": \"AVRO\",\n"); @@ -52,10 +50,10 @@ public String generateSchema( schemaBuilder.append(" \\\"namespace\\\": \\\"").append(newNamespace).append("\\\","); schemaBuilder.append(" \\\"fields\\\": ["); - for (ColumnDefinition column : createTable.getColumnDefinitions()) + for (Map.Entry column : createTable.columns().entrySet()) { - String fieldName = column.getColumnName(); - String pgsqlType = column.getColDataType().getDataType(); + String fieldName = column.getKey(); + String pgsqlType = column.getValue(); String avroType = convertPgsqlTypeToAvro(pgsqlType); @@ -72,28 +70,4 @@ public String generateSchema( return schemaBuilder.toString(); } - - public String primaryKey( - CreateTable statement) - { - String primaryKey = null; - - final List indexes = statement.getIndexes(); - - if (indexes != null && !indexes.isEmpty()) - { - match: - for (Index index : indexes) - { - if ("PRIMARY KEY".equalsIgnoreCase(index.getType())) - { - final List primaryKeyColumns = index.getColumns(); - primaryKey = primaryKeyColumns.get(0).columnName; - break match; - } - } - } - - return primaryKey; - } } diff --git a/incubator/binding-pgsql-kafka/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/kafka/internal/schema/PgsqlKafkaValueAvroSchemaTemplate.java b/incubator/binding-pgsql-kafka/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/kafka/internal/schema/PgsqlKafkaValueAvroSchemaTemplate.java index fe53279963..002025222c 100644 --- a/incubator/binding-pgsql-kafka/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/kafka/internal/schema/PgsqlKafkaValueAvroSchemaTemplate.java +++ b/incubator/binding-pgsql-kafka/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/kafka/internal/schema/PgsqlKafkaValueAvroSchemaTemplate.java @@ -14,11 +14,9 @@ */ package io.aklivity.zilla.runtime.binding.pgsql.kafka.internal.schema; -import java.util.List; +import java.util.Map; -import net.sf.jsqlparser.statement.create.table.ColumnDefinition; -import net.sf.jsqlparser.statement.create.table.CreateTable; -import net.sf.jsqlparser.statement.create.table.Index; +import io.aklivity.zilla.runtime.binding.pgsql.parser.module.TableInfo; public class PgsqlKafkaValueAvroSchemaTemplate extends PgsqlKafkaAvroSchemaTemplate { @@ -35,27 +33,26 @@ public PgsqlKafkaValueAvroSchemaTemplate( public String generateSchema( String database, - CreateTable createTable) + TableInfo createTable) { schemaBuilder.setLength(0); final String newNamespace = namespace.replace(DATABASE_PLACEHOLDER, database); - final String recordName = createTable.getTable().getName(); + final String recordName = createTable.name(); schemaBuilder.append("{\n"); schemaBuilder.append("\"schemaType\": \"AVRO\",\n"); - schemaBuilder.append("\"schema\": \""); // Begin the schema field + schemaBuilder.append("\"schema\": \""); - // Building the actual Avro schema schemaBuilder.append("{\\\"type\\\": \\\"record\\\","); schemaBuilder.append(" \\\"name\\\": \\\"").append(recordName).append("\\\","); schemaBuilder.append(" \\\"namespace\\\": \\\"").append(newNamespace).append("\\\","); schemaBuilder.append(" \\\"fields\\\": ["); - for (ColumnDefinition column : createTable.getColumnDefinitions()) + for (Map.Entry column : createTable.columns().entrySet()) { - String fieldName = column.getColumnName(); - String pgsqlType = column.getColDataType().getDataType(); + String fieldName = column.getKey(); + String pgsqlType = column.getValue(); String avroType = convertPgsqlTypeToAvro(pgsqlType); @@ -63,60 +60,11 @@ public String generateSchema( schemaBuilder.append(" \\\"type\\\": ").append(avroType).append("},"); } - // Remove the last comma and close the fields array schemaBuilder.setLength(schemaBuilder.length() - 1); schemaBuilder.append("]"); - // Closing the Avro schema schemaBuilder.append("}\"\n}"); return schemaBuilder.toString(); } - - public String primaryKey( - CreateTable statement) - { - String primaryKey = null; - - final List indexes = statement.getIndexes(); - - if (indexes != null && !indexes.isEmpty()) - { - match: - for (Index index : indexes) - { - if ("PRIMARY KEY".equalsIgnoreCase(index.getType())) - { - final List primaryKeyColumns = index.getColumns(); - primaryKey = primaryKeyColumns.get(0).columnName; - break match; - } - } - } - - return primaryKey; - } - - public int primaryKeyCount( - CreateTable statement) - { - int primaryKeyCount = 0; - - final List indexes = statement.getIndexes(); - - if (indexes != null && !indexes.isEmpty()) - { - match: - for (Index index : indexes) - { - if ("PRIMARY KEY".equalsIgnoreCase(index.getType())) - { - primaryKeyCount = index.getColumns().size(); - break match; - } - } - } - - return primaryKeyCount; - } } diff --git a/incubator/binding-pgsql-kafka/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/kafka/internal/stream/PgsqlKafkaProxyFactory.java b/incubator/binding-pgsql-kafka/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/kafka/internal/stream/PgsqlKafkaProxyFactory.java index 6461b89336..f01fdf3530 100644 --- a/incubator/binding-pgsql-kafka/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/kafka/internal/stream/PgsqlKafkaProxyFactory.java +++ b/incubator/binding-pgsql-kafka/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/kafka/internal/stream/PgsqlKafkaProxyFactory.java @@ -19,13 +19,11 @@ import static java.nio.charset.StandardCharsets.UTF_8; import static java.util.Objects.requireNonNull; -import java.io.InputStreamReader; -import java.io.Reader; -import java.io.StringReader; import java.util.ArrayList; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; +import java.util.Set; import java.util.function.Consumer; import java.util.function.LongFunction; import java.util.function.LongUnaryOperator; @@ -36,7 +34,6 @@ import org.agrona.collections.Long2ObjectHashMap; import org.agrona.collections.Object2ObjectHashMap; import org.agrona.concurrent.UnsafeBuffer; -import org.agrona.io.DirectBufferInputStream; import io.aklivity.zilla.runtime.binding.pgsql.kafka.internal.PgsqlKafkaConfiguration; import io.aklivity.zilla.runtime.binding.pgsql.kafka.internal.config.PgsqlKafkaBindingConfig; @@ -56,16 +53,14 @@ import io.aklivity.zilla.runtime.binding.pgsql.kafka.internal.types.stream.ResetFW; import io.aklivity.zilla.runtime.binding.pgsql.kafka.internal.types.stream.SignalFW; import io.aklivity.zilla.runtime.binding.pgsql.kafka.internal.types.stream.WindowFW; +import io.aklivity.zilla.runtime.binding.pgsql.parser.PgsqlParser; +import io.aklivity.zilla.runtime.binding.pgsql.parser.module.TableInfo; import io.aklivity.zilla.runtime.engine.EngineContext; import io.aklivity.zilla.runtime.engine.binding.BindingHandler; import io.aklivity.zilla.runtime.engine.binding.function.MessageConsumer; import io.aklivity.zilla.runtime.engine.buffer.BufferPool; import io.aklivity.zilla.runtime.engine.catalog.CatalogHandler; import io.aklivity.zilla.runtime.engine.config.BindingConfig; -import net.sf.jsqlparser.parser.CCJSqlParserManager; -import net.sf.jsqlparser.statement.Statement; -import net.sf.jsqlparser.statement.create.table.CreateTable; -import net.sf.jsqlparser.statement.drop.Drop; public final class PgsqlKafkaProxyFactory implements PgsqlKafkaStreamFactory { @@ -75,8 +70,7 @@ public final class PgsqlKafkaProxyFactory implements PgsqlKafkaStreamFactory "schema": "{\\"type\\": \\"string\\"}" }"""; - - private static final Byte STATEMENT_SEMICOLON = ';'; + private static final String SPLIT_STATEMENTS = "\"(?<=;)(?!\\x00)\""; private static final int END_OF_FIELD = 0x00; private static final int NO_ERROR_SCHEMA_VERSION_ID = -1; @@ -87,11 +81,8 @@ public final class PgsqlKafkaProxyFactory implements PgsqlKafkaStreamFactory private static final DirectBuffer EMPTY_BUFFER = new UnsafeBuffer(new byte[0]); private static final OctetsFW EMPTY_OCTETS = new OctetsFW().wrap(EMPTY_BUFFER, 0, 0); - private static final Consumer EMPTY_EXTENSION = ex -> {}; - private final CCJSqlParserManager parserManager = new CCJSqlParserManager(); - private final DirectBufferInputStream inputStream = new DirectBufferInputStream(EMPTY_BUFFER); - private final Reader reader = new InputStreamReader(inputStream); + private final PgsqlParser parser = new PgsqlParser(); private final BeginFW beginRO = new BeginFW(); private final DataFW dataRO = new DataFW(); @@ -657,26 +648,16 @@ private void doParseQuery( { final MutableDirectBuffer parserBuffer = bufferPool.buffer(parserSlot); - int statementOffset = 0; - int progress = 0; + String sql = parserBuffer.getStringWithoutLengthAscii(0, parserSlotOffset); + String[] statements = sql.split(SPLIT_STATEMENTS); - parse: - while (progress <= parserSlotOffset) + int length = statements.length; + if (length > 0) { - if (parserBuffer.getByte(progress) == STATEMENT_SEMICOLON) - { - int length = progress - statementOffset + Byte.BYTES; - if (parserBuffer.getByte(progress + Byte.BYTES) == END_OF_FIELD) - { - length += Byte.BYTES; - } - final PgsqlKafkaCommandType command = decodeCommandType(parserBuffer, statementOffset, length); - final PgsqlDecoder decoder = pgsqlDecoder.get(command); - decoder.decode(this, traceId, authorizationId, parserBuffer, statementOffset, length); - break parse; - } - - progress++; + String statement = statements[0]; + String command = parser.parseCommand(statement); + final PgsqlDecoder decoder = pgsqlDecoder.get(PgsqlKafkaCommandType.valueOf(command.getBytes())); + decoder.decode(this, traceId, authorizationId, statement); } } } @@ -1317,33 +1298,32 @@ private void decodeCreateTopicCommand( PgsqlProxy server, long traceId, long authorization, - DirectBuffer buffer, - int offset, - int length) + String statement) { if (server.commandsProcessed == 1) { + final int length = statement.length(); server.onCommandCompleted(traceId, authorization, length, PgsqlKafkaCompletionCommand.CREATE_TOPIC_COMMAND); } else if (server.commandsProcessed == 0) { - final CreateTable createTable = (CreateTable) parseStatement(buffer, offset, length); - final String topic = createTable.getTable().getName(); + final TableInfo createTable = parser.parseCreateTable(statement); + final String topic = createTable.name(); topics.clear(); topics.add(String.format("%s.%s", server.database, topic)); final PgsqlKafkaBindingConfig binding = server.binding; - final String primaryKey = binding.avroValueSchema.primaryKey(createTable); - final int primaryKeyCount = binding.avroValueSchema.primaryKeyCount(createTable); + int versionId = NO_ERROR_SCHEMA_VERSION_ID; - if (primaryKey != null) + Set primaryKeys = createTable.primaryKeys(); + if (!primaryKeys.isEmpty()) { //TODO: assign versionId to avoid test failure final String subjectKey = String.format("%s.%s-key", server.database, topic); - String keySchema = primaryKeyCount > 1 + String keySchema = primaryKeys.size() > 1 ? binding.avroKeySchema.generateSchema(server.database, createTable) : AVRO_KEY_SCHEMA; binding.catalog.register(subjectKey, keySchema); @@ -1357,7 +1337,7 @@ else if (server.commandsProcessed == 0) if (versionId != NO_VERSION_ID) { - final String policy = primaryKey != null && primaryKeyCount == 1 + final String policy = primaryKeys.size() == 1 ? "compact" : "delete"; @@ -1375,28 +1355,28 @@ private void decodeDropTopicCommand( PgsqlProxy server, long traceId, long authorization, - DirectBuffer buffer, - int offset, - int length) + String statement) { if (server.commandsProcessed == 1) { + final int length = statement.length(); server.onCommandCompleted(traceId, authorization, length, PgsqlKafkaCompletionCommand.DROP_TOPIC_COMMAND); } else if (server.commandsProcessed == 0) { - final Drop drop = (Drop) parseStatement(buffer, offset, length); - final String topic = drop.getName().getName(); - - final PgsqlKafkaBindingConfig binding = server.binding; - final String subjectKey = String.format("%s.%s-key", server.database, topic); - final String subjectValue = String.format("%s.%s-value", server.database, topic); + Set drops = parser.parseDrop(statement); + drops.stream().findFirst().ifPresent(d -> + { + final PgsqlKafkaBindingConfig binding = server.binding; + final String subjectKey = String.format("%s.%s-key", server.database, d); + final String subjectValue = String.format("%s.%s-value", server.database, d); - binding.catalog.unregister(subjectKey); - binding.catalog.unregister(subjectValue); + binding.catalog.unregister(subjectKey); + binding.catalog.unregister(subjectValue); - final KafkaDeleteTopicsProxy deleteTopicsProxy = server.deleteTopicsProxy; - deleteTopicsProxy.doKafkaBegin(traceId, authorization, List.of("%s.%s".formatted(server.database, topic))); + final KafkaDeleteTopicsProxy deleteTopicsProxy = server.deleteTopicsProxy; + deleteTopicsProxy.doKafkaBegin(traceId, authorization, List.of("%s.%s".formatted(server.database, d))); + }); } } @@ -1404,82 +1384,11 @@ private void decodeUnknownCommand( PgsqlProxy server, long traceId, long authorization, - DirectBuffer buffer, - int offset, - int length) + String statement) { server.cleanup(traceId, authorization); } - private PgsqlKafkaCommandType decodeCommandType( - DirectBuffer buffer, - int offset, - int length) - { - PgsqlKafkaCommandType matchingCommand = PgsqlKafkaCommandType.UNKNOWN_COMMAND; - - command: - for (PgsqlKafkaCommandType command : PgsqlKafkaCommandType.values()) - { - int progressOffset = offset; - - boolean match = true; - for (byte b : command.value()) - { - if (buffer.getByte(progressOffset) != b) - { - match = false; - break; - } - progressOffset++; - } - - if (match) - { - matchingCommand = command; - break command; - } - } - - return matchingCommand; - } - - private Statement parseStatement( - DirectBuffer buffer, - int offset, - int length) - { - Statement statement = null; - try - { - if (decodeCommandType(buffer, offset, length). - equals(PgsqlKafkaCommandType.CREATE_TOPIC_COMMAND)) - { - String sql = buffer.getStringWithoutLengthUtf8(offset, length); - sql = sql.replace("CREATE TOPIC", "CREATE TABLE"); - statement = parserManager.parse(new StringReader(sql)); - } - if (decodeCommandType(buffer, offset, length). - equals(PgsqlKafkaCommandType.DROP_TOPIC_COMMAND)) - { - String sql = buffer.getStringWithoutLengthUtf8(offset, length); - sql = sql.replace("DROP TOPIC", "DROP TABLE"); - statement = parserManager.parse(new StringReader(sql)); - } - else - { - inputStream.wrap(buffer, offset, length); - statement = parserManager.parse(reader); - } - } - catch (Exception ignored) - { - //NOOP - } - - return statement; - } - @FunctionalInterface private interface PgsqlDecoder { @@ -1487,8 +1396,6 @@ void decode( PgsqlProxy server, long traceId, long authorization, - DirectBuffer writeBuffer, - int offset, - int length); + String statement); } } diff --git a/incubator/binding-pgsql/gen/PostgreSqlLexer.interp b/incubator/binding-pgsql/gen/PostgreSqlLexer.interp index 328130ee21..6dca9f3ec2 100644 --- a/incubator/binding-pgsql/gen/PostgreSqlLexer.interp +++ b/incubator/binding-pgsql/gen/PostgreSqlLexer.interp @@ -94,6 +94,8 @@ null 'TABLE' 'THEN' 'TO' +'TOPIC' +'STREAM' 'TRAILING' 'TRUE' 'UNION' @@ -776,6 +778,8 @@ SYMMETRIC TABLE THEN TO +TOPIC +STREAM TRAILING TRUE_P UNION @@ -1461,6 +1465,8 @@ SYMMETRIC TABLE THEN TO +TOPIC +STREAM TRAILING TRUE_P UNION @@ -2071,4 +2077,4 @@ AfterEscapeStringConstantWithNewlineMode DollarQuotedStringMode atn: -[4, 0, 679, 6791, 6, -1, 6, -1, 6, -1, 6, -1, 6, -1, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7, 13, 2, 14, 7, 14, 2, 15, 7, 15, 2, 16, 7, 16, 2, 17, 7, 17, 2, 18, 7, 18, 2, 19, 7, 19, 2, 20, 7, 20, 2, 21, 7, 21, 2, 22, 7, 22, 2, 23, 7, 23, 2, 24, 7, 24, 2, 25, 7, 25, 2, 26, 7, 26, 2, 27, 7, 27, 2, 28, 7, 28, 2, 29, 7, 29, 2, 30, 7, 30, 2, 31, 7, 31, 2, 32, 7, 32, 2, 33, 7, 33, 2, 34, 7, 34, 2, 35, 7, 35, 2, 36, 7, 36, 2, 37, 7, 37, 2, 38, 7, 38, 2, 39, 7, 39, 2, 40, 7, 40, 2, 41, 7, 41, 2, 42, 7, 42, 2, 43, 7, 43, 2, 44, 7, 44, 2, 45, 7, 45, 2, 46, 7, 46, 2, 47, 7, 47, 2, 48, 7, 48, 2, 49, 7, 49, 2, 50, 7, 50, 2, 51, 7, 51, 2, 52, 7, 52, 2, 53, 7, 53, 2, 54, 7, 54, 2, 55, 7, 55, 2, 56, 7, 56, 2, 57, 7, 57, 2, 58, 7, 58, 2, 59, 7, 59, 2, 60, 7, 60, 2, 61, 7, 61, 2, 62, 7, 62, 2, 63, 7, 63, 2, 64, 7, 64, 2, 65, 7, 65, 2, 66, 7, 66, 2, 67, 7, 67, 2, 68, 7, 68, 2, 69, 7, 69, 2, 70, 7, 70, 2, 71, 7, 71, 2, 72, 7, 72, 2, 73, 7, 73, 2, 74, 7, 74, 2, 75, 7, 75, 2, 76, 7, 76, 2, 77, 7, 77, 2, 78, 7, 78, 2, 79, 7, 79, 2, 80, 7, 80, 2, 81, 7, 81, 2, 82, 7, 82, 2, 83, 7, 83, 2, 84, 7, 84, 2, 85, 7, 85, 2, 86, 7, 86, 2, 87, 7, 87, 2, 88, 7, 88, 2, 89, 7, 89, 2, 90, 7, 90, 2, 91, 7, 91, 2, 92, 7, 92, 2, 93, 7, 93, 2, 94, 7, 94, 2, 95, 7, 95, 2, 96, 7, 96, 2, 97, 7, 97, 2, 98, 7, 98, 2, 99, 7, 99, 2, 100, 7, 100, 2, 101, 7, 101, 2, 102, 7, 102, 2, 103, 7, 103, 2, 104, 7, 104, 2, 105, 7, 105, 2, 106, 7, 106, 2, 107, 7, 107, 2, 108, 7, 108, 2, 109, 7, 109, 2, 110, 7, 110, 2, 111, 7, 111, 2, 112, 7, 112, 2, 113, 7, 113, 2, 114, 7, 114, 2, 115, 7, 115, 2, 116, 7, 116, 2, 117, 7, 117, 2, 118, 7, 118, 2, 119, 7, 119, 2, 120, 7, 120, 2, 121, 7, 121, 2, 122, 7, 122, 2, 123, 7, 123, 2, 124, 7, 124, 2, 125, 7, 125, 2, 126, 7, 126, 2, 127, 7, 127, 2, 128, 7, 128, 2, 129, 7, 129, 2, 130, 7, 130, 2, 131, 7, 131, 2, 132, 7, 132, 2, 133, 7, 133, 2, 134, 7, 134, 2, 135, 7, 135, 2, 136, 7, 136, 2, 137, 7, 137, 2, 138, 7, 138, 2, 139, 7, 139, 2, 140, 7, 140, 2, 141, 7, 141, 2, 142, 7, 142, 2, 143, 7, 143, 2, 144, 7, 144, 2, 145, 7, 145, 2, 146, 7, 146, 2, 147, 7, 147, 2, 148, 7, 148, 2, 149, 7, 149, 2, 150, 7, 150, 2, 151, 7, 151, 2, 152, 7, 152, 2, 153, 7, 153, 2, 154, 7, 154, 2, 155, 7, 155, 2, 156, 7, 156, 2, 157, 7, 157, 2, 158, 7, 158, 2, 159, 7, 159, 2, 160, 7, 160, 2, 161, 7, 161, 2, 162, 7, 162, 2, 163, 7, 163, 2, 164, 7, 164, 2, 165, 7, 165, 2, 166, 7, 166, 2, 167, 7, 167, 2, 168, 7, 168, 2, 169, 7, 169, 2, 170, 7, 170, 2, 171, 7, 171, 2, 172, 7, 172, 2, 173, 7, 173, 2, 174, 7, 174, 2, 175, 7, 175, 2, 176, 7, 176, 2, 177, 7, 177, 2, 178, 7, 178, 2, 179, 7, 179, 2, 180, 7, 180, 2, 181, 7, 181, 2, 182, 7, 182, 2, 183, 7, 183, 2, 184, 7, 184, 2, 185, 7, 185, 2, 186, 7, 186, 2, 187, 7, 187, 2, 188, 7, 188, 2, 189, 7, 189, 2, 190, 7, 190, 2, 191, 7, 191, 2, 192, 7, 192, 2, 193, 7, 193, 2, 194, 7, 194, 2, 195, 7, 195, 2, 196, 7, 196, 2, 197, 7, 197, 2, 198, 7, 198, 2, 199, 7, 199, 2, 200, 7, 200, 2, 201, 7, 201, 2, 202, 7, 202, 2, 203, 7, 203, 2, 204, 7, 204, 2, 205, 7, 205, 2, 206, 7, 206, 2, 207, 7, 207, 2, 208, 7, 208, 2, 209, 7, 209, 2, 210, 7, 210, 2, 211, 7, 211, 2, 212, 7, 212, 2, 213, 7, 213, 2, 214, 7, 214, 2, 215, 7, 215, 2, 216, 7, 216, 2, 217, 7, 217, 2, 218, 7, 218, 2, 219, 7, 219, 2, 220, 7, 220, 2, 221, 7, 221, 2, 222, 7, 222, 2, 223, 7, 223, 2, 224, 7, 224, 2, 225, 7, 225, 2, 226, 7, 226, 2, 227, 7, 227, 2, 228, 7, 228, 2, 229, 7, 229, 2, 230, 7, 230, 2, 231, 7, 231, 2, 232, 7, 232, 2, 233, 7, 233, 2, 234, 7, 234, 2, 235, 7, 235, 2, 236, 7, 236, 2, 237, 7, 237, 2, 238, 7, 238, 2, 239, 7, 239, 2, 240, 7, 240, 2, 241, 7, 241, 2, 242, 7, 242, 2, 243, 7, 243, 2, 244, 7, 244, 2, 245, 7, 245, 2, 246, 7, 246, 2, 247, 7, 247, 2, 248, 7, 248, 2, 249, 7, 249, 2, 250, 7, 250, 2, 251, 7, 251, 2, 252, 7, 252, 2, 253, 7, 253, 2, 254, 7, 254, 2, 255, 7, 255, 2, 256, 7, 256, 2, 257, 7, 257, 2, 258, 7, 258, 2, 259, 7, 259, 2, 260, 7, 260, 2, 261, 7, 261, 2, 262, 7, 262, 2, 263, 7, 263, 2, 264, 7, 264, 2, 265, 7, 265, 2, 266, 7, 266, 2, 267, 7, 267, 2, 268, 7, 268, 2, 269, 7, 269, 2, 270, 7, 270, 2, 271, 7, 271, 2, 272, 7, 272, 2, 273, 7, 273, 2, 274, 7, 274, 2, 275, 7, 275, 2, 276, 7, 276, 2, 277, 7, 277, 2, 278, 7, 278, 2, 279, 7, 279, 2, 280, 7, 280, 2, 281, 7, 281, 2, 282, 7, 282, 2, 283, 7, 283, 2, 284, 7, 284, 2, 285, 7, 285, 2, 286, 7, 286, 2, 287, 7, 287, 2, 288, 7, 288, 2, 289, 7, 289, 2, 290, 7, 290, 2, 291, 7, 291, 2, 292, 7, 292, 2, 293, 7, 293, 2, 294, 7, 294, 2, 295, 7, 295, 2, 296, 7, 296, 2, 297, 7, 297, 2, 298, 7, 298, 2, 299, 7, 299, 2, 300, 7, 300, 2, 301, 7, 301, 2, 302, 7, 302, 2, 303, 7, 303, 2, 304, 7, 304, 2, 305, 7, 305, 2, 306, 7, 306, 2, 307, 7, 307, 2, 308, 7, 308, 2, 309, 7, 309, 2, 310, 7, 310, 2, 311, 7, 311, 2, 312, 7, 312, 2, 313, 7, 313, 2, 314, 7, 314, 2, 315, 7, 315, 2, 316, 7, 316, 2, 317, 7, 317, 2, 318, 7, 318, 2, 319, 7, 319, 2, 320, 7, 320, 2, 321, 7, 321, 2, 322, 7, 322, 2, 323, 7, 323, 2, 324, 7, 324, 2, 325, 7, 325, 2, 326, 7, 326, 2, 327, 7, 327, 2, 328, 7, 328, 2, 329, 7, 329, 2, 330, 7, 330, 2, 331, 7, 331, 2, 332, 7, 332, 2, 333, 7, 333, 2, 334, 7, 334, 2, 335, 7, 335, 2, 336, 7, 336, 2, 337, 7, 337, 2, 338, 7, 338, 2, 339, 7, 339, 2, 340, 7, 340, 2, 341, 7, 341, 2, 342, 7, 342, 2, 343, 7, 343, 2, 344, 7, 344, 2, 345, 7, 345, 2, 346, 7, 346, 2, 347, 7, 347, 2, 348, 7, 348, 2, 349, 7, 349, 2, 350, 7, 350, 2, 351, 7, 351, 2, 352, 7, 352, 2, 353, 7, 353, 2, 354, 7, 354, 2, 355, 7, 355, 2, 356, 7, 356, 2, 357, 7, 357, 2, 358, 7, 358, 2, 359, 7, 359, 2, 360, 7, 360, 2, 361, 7, 361, 2, 362, 7, 362, 2, 363, 7, 363, 2, 364, 7, 364, 2, 365, 7, 365, 2, 366, 7, 366, 2, 367, 7, 367, 2, 368, 7, 368, 2, 369, 7, 369, 2, 370, 7, 370, 2, 371, 7, 371, 2, 372, 7, 372, 2, 373, 7, 373, 2, 374, 7, 374, 2, 375, 7, 375, 2, 376, 7, 376, 2, 377, 7, 377, 2, 378, 7, 378, 2, 379, 7, 379, 2, 380, 7, 380, 2, 381, 7, 381, 2, 382, 7, 382, 2, 383, 7, 383, 2, 384, 7, 384, 2, 385, 7, 385, 2, 386, 7, 386, 2, 387, 7, 387, 2, 388, 7, 388, 2, 389, 7, 389, 2, 390, 7, 390, 2, 391, 7, 391, 2, 392, 7, 392, 2, 393, 7, 393, 2, 394, 7, 394, 2, 395, 7, 395, 2, 396, 7, 396, 2, 397, 7, 397, 2, 398, 7, 398, 2, 399, 7, 399, 2, 400, 7, 400, 2, 401, 7, 401, 2, 402, 7, 402, 2, 403, 7, 403, 2, 404, 7, 404, 2, 405, 7, 405, 2, 406, 7, 406, 2, 407, 7, 407, 2, 408, 7, 408, 2, 409, 7, 409, 2, 410, 7, 410, 2, 411, 7, 411, 2, 412, 7, 412, 2, 413, 7, 413, 2, 414, 7, 414, 2, 415, 7, 415, 2, 416, 7, 416, 2, 417, 7, 417, 2, 418, 7, 418, 2, 419, 7, 419, 2, 420, 7, 420, 2, 421, 7, 421, 2, 422, 7, 422, 2, 423, 7, 423, 2, 424, 7, 424, 2, 425, 7, 425, 2, 426, 7, 426, 2, 427, 7, 427, 2, 428, 7, 428, 2, 429, 7, 429, 2, 430, 7, 430, 2, 431, 7, 431, 2, 432, 7, 432, 2, 433, 7, 433, 2, 434, 7, 434, 2, 435, 7, 435, 2, 436, 7, 436, 2, 437, 7, 437, 2, 438, 7, 438, 2, 439, 7, 439, 2, 440, 7, 440, 2, 441, 7, 441, 2, 442, 7, 442, 2, 443, 7, 443, 2, 444, 7, 444, 2, 445, 7, 445, 2, 446, 7, 446, 2, 447, 7, 447, 2, 448, 7, 448, 2, 449, 7, 449, 2, 450, 7, 450, 2, 451, 7, 451, 2, 452, 7, 452, 2, 453, 7, 453, 2, 454, 7, 454, 2, 455, 7, 455, 2, 456, 7, 456, 2, 457, 7, 457, 2, 458, 7, 458, 2, 459, 7, 459, 2, 460, 7, 460, 2, 461, 7, 461, 2, 462, 7, 462, 2, 463, 7, 463, 2, 464, 7, 464, 2, 465, 7, 465, 2, 466, 7, 466, 2, 467, 7, 467, 2, 468, 7, 468, 2, 469, 7, 469, 2, 470, 7, 470, 2, 471, 7, 471, 2, 472, 7, 472, 2, 473, 7, 473, 2, 474, 7, 474, 2, 475, 7, 475, 2, 476, 7, 476, 2, 477, 7, 477, 2, 478, 7, 478, 2, 479, 7, 479, 2, 480, 7, 480, 2, 481, 7, 481, 2, 482, 7, 482, 2, 483, 7, 483, 2, 484, 7, 484, 2, 485, 7, 485, 2, 486, 7, 486, 2, 487, 7, 487, 2, 488, 7, 488, 2, 489, 7, 489, 2, 490, 7, 490, 2, 491, 7, 491, 2, 492, 7, 492, 2, 493, 7, 493, 2, 494, 7, 494, 2, 495, 7, 495, 2, 496, 7, 496, 2, 497, 7, 497, 2, 498, 7, 498, 2, 499, 7, 499, 2, 500, 7, 500, 2, 501, 7, 501, 2, 502, 7, 502, 2, 503, 7, 503, 2, 504, 7, 504, 2, 505, 7, 505, 2, 506, 7, 506, 2, 507, 7, 507, 2, 508, 7, 508, 2, 509, 7, 509, 2, 510, 7, 510, 2, 511, 7, 511, 2, 512, 7, 512, 2, 513, 7, 513, 2, 514, 7, 514, 2, 515, 7, 515, 2, 516, 7, 516, 2, 517, 7, 517, 2, 518, 7, 518, 2, 519, 7, 519, 2, 520, 7, 520, 2, 521, 7, 521, 2, 522, 7, 522, 2, 523, 7, 523, 2, 524, 7, 524, 2, 525, 7, 525, 2, 526, 7, 526, 2, 527, 7, 527, 2, 528, 7, 528, 2, 529, 7, 529, 2, 530, 7, 530, 2, 531, 7, 531, 2, 532, 7, 532, 2, 533, 7, 533, 2, 534, 7, 534, 2, 535, 7, 535, 2, 536, 7, 536, 2, 537, 7, 537, 2, 538, 7, 538, 2, 539, 7, 539, 2, 540, 7, 540, 2, 541, 7, 541, 2, 542, 7, 542, 2, 543, 7, 543, 2, 544, 7, 544, 2, 545, 7, 545, 2, 546, 7, 546, 2, 547, 7, 547, 2, 548, 7, 548, 2, 549, 7, 549, 2, 550, 7, 550, 2, 551, 7, 551, 2, 552, 7, 552, 2, 553, 7, 553, 2, 554, 7, 554, 2, 555, 7, 555, 2, 556, 7, 556, 2, 557, 7, 557, 2, 558, 7, 558, 2, 559, 7, 559, 2, 560, 7, 560, 2, 561, 7, 561, 2, 562, 7, 562, 2, 563, 7, 563, 2, 564, 7, 564, 2, 565, 7, 565, 2, 566, 7, 566, 2, 567, 7, 567, 2, 568, 7, 568, 2, 569, 7, 569, 2, 570, 7, 570, 2, 571, 7, 571, 2, 572, 7, 572, 2, 573, 7, 573, 2, 574, 7, 574, 2, 575, 7, 575, 2, 576, 7, 576, 2, 577, 7, 577, 2, 578, 7, 578, 2, 579, 7, 579, 2, 580, 7, 580, 2, 581, 7, 581, 2, 582, 7, 582, 2, 583, 7, 583, 2, 584, 7, 584, 2, 585, 7, 585, 2, 586, 7, 586, 2, 587, 7, 587, 2, 588, 7, 588, 2, 589, 7, 589, 2, 590, 7, 590, 2, 591, 7, 591, 2, 592, 7, 592, 2, 593, 7, 593, 2, 594, 7, 594, 2, 595, 7, 595, 2, 596, 7, 596, 2, 597, 7, 597, 2, 598, 7, 598, 2, 599, 7, 599, 2, 600, 7, 600, 2, 601, 7, 601, 2, 602, 7, 602, 2, 603, 7, 603, 2, 604, 7, 604, 2, 605, 7, 605, 2, 606, 7, 606, 2, 607, 7, 607, 2, 608, 7, 608, 2, 609, 7, 609, 2, 610, 7, 610, 2, 611, 7, 611, 2, 612, 7, 612, 2, 613, 7, 613, 2, 614, 7, 614, 2, 615, 7, 615, 2, 616, 7, 616, 2, 617, 7, 617, 2, 618, 7, 618, 2, 619, 7, 619, 2, 620, 7, 620, 2, 621, 7, 621, 2, 622, 7, 622, 2, 623, 7, 623, 2, 624, 7, 624, 2, 625, 7, 625, 2, 626, 7, 626, 2, 627, 7, 627, 2, 628, 7, 628, 2, 629, 7, 629, 2, 630, 7, 630, 2, 631, 7, 631, 2, 632, 7, 632, 2, 633, 7, 633, 2, 634, 7, 634, 2, 635, 7, 635, 2, 636, 7, 636, 2, 637, 7, 637, 2, 638, 7, 638, 2, 639, 7, 639, 2, 640, 7, 640, 2, 641, 7, 641, 2, 642, 7, 642, 2, 643, 7, 643, 2, 644, 7, 644, 2, 645, 7, 645, 2, 646, 7, 646, 2, 647, 7, 647, 2, 648, 7, 648, 2, 649, 7, 649, 2, 650, 7, 650, 2, 651, 7, 651, 2, 652, 7, 652, 2, 653, 7, 653, 2, 654, 7, 654, 2, 655, 7, 655, 2, 656, 7, 656, 2, 657, 7, 657, 2, 658, 7, 658, 2, 659, 7, 659, 2, 660, 7, 660, 2, 661, 7, 661, 2, 662, 7, 662, 2, 663, 7, 663, 2, 664, 7, 664, 2, 665, 7, 665, 2, 666, 7, 666, 2, 667, 7, 667, 2, 668, 7, 668, 2, 669, 7, 669, 2, 670, 7, 670, 2, 671, 7, 671, 2, 672, 7, 672, 2, 673, 7, 673, 2, 674, 7, 674, 2, 675, 7, 675, 2, 676, 7, 676, 2, 677, 7, 677, 2, 678, 7, 678, 2, 679, 7, 679, 2, 680, 7, 680, 2, 681, 7, 681, 2, 682, 7, 682, 2, 683, 7, 683, 2, 684, 7, 684, 2, 685, 7, 685, 2, 686, 7, 686, 2, 687, 7, 687, 2, 688, 7, 688, 2, 689, 7, 689, 2, 690, 7, 690, 2, 691, 7, 691, 2, 692, 7, 692, 2, 693, 7, 693, 2, 694, 7, 694, 1, 0, 1, 0, 1, 1, 1, 1, 1, 2, 1, 2, 1, 3, 1, 3, 1, 4, 1, 4, 1, 5, 1, 5, 1, 6, 1, 6, 1, 7, 1, 7, 1, 8, 1, 8, 1, 9, 1, 9, 1, 10, 1, 10, 1, 11, 1, 11, 1, 12, 1, 12, 1, 13, 1, 13, 1, 14, 1, 14, 1, 15, 1, 15, 1, 16, 1, 16, 1, 17, 1, 17, 1, 17, 1, 18, 1, 18, 1, 18, 1, 19, 1, 19, 1, 19, 1, 20, 1, 20, 1, 20, 1, 21, 1, 21, 1, 21, 1, 22, 1, 22, 1, 22, 1, 23, 1, 23, 1, 23, 1, 24, 1, 24, 1, 24, 1, 25, 1, 25, 1, 25, 1, 26, 1, 26, 1, 27, 1, 27, 4, 27, 1461, 8, 27, 11, 27, 12, 27, 1462, 1, 28, 1, 28, 1, 28, 1, 28, 4, 28, 1469, 8, 28, 11, 28, 12, 28, 1470, 1, 28, 1, 28, 1, 28, 3, 28, 1476, 8, 28, 1, 28, 1, 28, 4, 28, 1480, 8, 28, 11, 28, 12, 28, 1481, 1, 28, 3, 28, 1485, 8, 28, 1, 28, 1, 28, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 5, 29, 1494, 8, 29, 10, 29, 12, 29, 1497, 9, 29, 1, 29, 1, 29, 3, 29, 1501, 8, 29, 1, 29, 1, 29, 1, 29, 4, 29, 1506, 8, 29, 11, 29, 12, 29, 1507, 1, 29, 1, 29, 1, 30, 1, 30, 1, 31, 1, 31, 1, 32, 1, 32, 1, 33, 1, 33, 1, 33, 1, 33, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 36, 1, 36, 1, 36, 1, 36, 1, 37, 1, 37, 1, 37, 1, 37, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 39, 1, 39, 1, 39, 1, 40, 1, 40, 1, 40, 1, 40, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 60, 1, 60, 1, 60, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 65, 1, 65, 1, 65, 1, 65, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 71, 1, 71, 1, 71, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 80, 1, 80, 1, 80, 1, 80, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 83, 1, 83, 1, 83, 1, 84, 1, 84, 1, 84, 1, 84, 1, 84, 1, 85, 1, 85, 1, 85, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 88, 1, 88, 1, 88, 1, 88, 1, 88, 1, 88, 1, 88, 1, 88, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 93, 1, 93, 1, 93, 1, 93, 1, 93, 1, 94, 1, 94, 1, 94, 1, 94, 1, 94, 1, 94, 1, 94, 1, 94, 1, 94, 1, 94, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 97, 1, 97, 1, 97, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 102, 1, 102, 1, 102, 1, 102, 1, 102, 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 107, 1, 107, 1, 107, 1, 107, 1, 107, 1, 107, 1, 107, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 110, 1, 110, 1, 110, 1, 110, 1, 110, 1, 110, 1, 110, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 1, 113, 1, 113, 1, 113, 1, 113, 1, 113, 1, 113, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 115, 1, 115, 1, 115, 1, 115, 1, 115, 1, 115, 1, 115, 1, 116, 1, 116, 1, 116, 1, 116, 1, 116, 1, 117, 1, 117, 1, 117, 1, 117, 1, 117, 1, 117, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 119, 1, 119, 1, 119, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 122, 1, 122, 1, 122, 1, 122, 1, 122, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 126, 1, 126, 1, 126, 1, 126, 1, 126, 1, 126, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 129, 1, 129, 1, 129, 1, 129, 1, 129, 1, 129, 1, 130, 1, 130, 1, 130, 1, 130, 1, 130, 1, 130, 1, 130, 1, 130, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 132, 1, 132, 1, 132, 1, 132, 1, 132, 1, 132, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 1, 136, 1, 136, 1, 136, 1, 136, 1, 137, 1, 137, 1, 137, 1, 137, 1, 137, 1, 137, 1, 138, 1, 138, 1, 138, 1, 138, 1, 138, 1, 138, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 140, 1, 140, 1, 140, 1, 140, 1, 140, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 142, 1, 142, 1, 142, 1, 142, 1, 142, 1, 142, 1, 142, 1, 143, 1, 143, 1, 143, 1, 143, 1, 143, 1, 143, 1, 143, 1, 143, 1, 143, 1, 143, 1, 144, 1, 144, 1, 144, 1, 144, 1, 144, 1, 144, 1, 144, 1, 144, 1, 144, 1, 144, 1, 144, 1, 145, 1, 145, 1, 145, 1, 146, 1, 146, 1, 146, 1, 146, 1, 146, 1, 146, 1, 146, 1, 146, 1, 146, 1, 146, 1, 147, 1, 147, 1, 147, 1, 147, 1, 147, 1, 147, 1, 147, 1, 147, 1, 147, 1, 148, 1, 148, 1, 148, 1, 148, 1, 148, 1, 148, 1, 148, 1, 149, 1, 149, 1, 149, 1, 149, 1, 149, 1, 149, 1, 150, 1, 150, 1, 150, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 152, 1, 152, 1, 152, 1, 152, 1, 152, 1, 152, 1, 152, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 157, 1, 157, 1, 157, 1, 157, 1, 157, 1, 157, 1, 157, 1, 157, 1, 157, 1, 157, 1, 157, 1, 157, 1, 157, 1, 157, 1, 157, 1, 157, 1, 158, 1, 158, 1, 158, 1, 158, 1, 158, 1, 158, 1, 158, 1, 158, 1, 158, 1, 158, 1, 158, 1, 159, 1, 159, 1, 159, 1, 159, 1, 159, 1, 159, 1, 160, 1, 160, 1, 160, 1, 160, 1, 160, 1, 160, 1, 161, 1, 161, 1, 161, 1, 161, 1, 161, 1, 161, 1, 161, 1, 161, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 163, 1, 163, 1, 163, 1, 163, 1, 163, 1, 163, 1, 163, 1, 163, 1, 163, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 165, 1, 165, 1, 165, 1, 165, 1, 165, 1, 165, 1, 165, 1, 165, 1, 165, 1, 165, 1, 166, 1, 166, 1, 166, 1, 166, 1, 166, 1, 166, 1, 166, 1, 166, 1, 166, 1, 166, 1, 166, 1, 166, 1, 166, 1, 166, 1, 167, 1, 167, 1, 167, 1, 167, 1, 167, 1, 167, 1, 167, 1, 167, 1, 167, 1, 167, 1, 167, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 169, 1, 169, 1, 169, 1, 169, 1, 169, 1, 169, 1, 169, 1, 169, 1, 170, 1, 170, 1, 170, 1, 170, 1, 170, 1, 170, 1, 170, 1, 170, 1, 170, 1, 171, 1, 171, 1, 171, 1, 171, 1, 171, 1, 171, 1, 171, 1, 171, 1, 171, 1, 171, 1, 171, 1, 172, 1, 172, 1, 172, 1, 172, 1, 172, 1, 173, 1, 173, 1, 173, 1, 173, 1, 173, 1, 174, 1, 174, 1, 174, 1, 174, 1, 175, 1, 175, 1, 175, 1, 175, 1, 175, 1, 175, 1, 175, 1, 176, 1, 176, 1, 176, 1, 176, 1, 176, 1, 176, 1, 177, 1, 177, 1, 177, 1, 177, 1, 177, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 1, 179, 1, 179, 1, 179, 1, 179, 1, 180, 1, 180, 1, 180, 1, 180, 1, 180, 1, 180, 1, 180, 1, 180, 1, 180, 1, 180, 1, 180, 1, 181, 1, 181, 1, 181, 1, 181, 1, 181, 1, 181, 1, 181, 1, 181, 1, 182, 1, 182, 1, 182, 1, 182, 1, 182, 1, 182, 1, 182, 1, 182, 1, 182, 1, 183, 1, 183, 1, 183, 1, 183, 1, 183, 1, 183, 1, 183, 1, 183, 1, 183, 1, 184, 1, 184, 1, 184, 1, 184, 1, 184, 1, 184, 1, 184, 1, 184, 1, 185, 1, 185, 1, 185, 1, 185, 1, 185, 1, 185, 1, 185, 1, 186, 1, 186, 1, 186, 1, 186, 1, 186, 1, 186, 1, 186, 1, 186, 1, 186, 1, 186, 1, 187, 1, 187, 1, 187, 1, 187, 1, 187, 1, 187, 1, 187, 1, 187, 1, 187, 1, 187, 1, 187, 1, 188, 1, 188, 1, 188, 1, 188, 1, 188, 1, 188, 1, 188, 1, 188, 1, 188, 1, 188, 1, 188, 1, 189, 1, 189, 1, 189, 1, 189, 1, 189, 1, 189, 1, 189, 1, 189, 1, 190, 1, 190, 1, 190, 1, 190, 1, 190, 1, 190, 1, 190, 1, 190, 1, 191, 1, 191, 1, 191, 1, 191, 1, 191, 1, 191, 1, 191, 1, 191, 1, 191, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 193, 1, 193, 1, 193, 1, 193, 1, 193, 1, 193, 1, 193, 1, 194, 1, 194, 1, 194, 1, 194, 1, 194, 1, 195, 1, 195, 1, 195, 1, 195, 1, 195, 1, 196, 1, 196, 1, 196, 1, 196, 1, 196, 1, 196, 1, 196, 1, 197, 1, 197, 1, 197, 1, 197, 1, 197, 1, 197, 1, 197, 1, 197, 1, 197, 1, 198, 1, 198, 1, 198, 1, 198, 1, 198, 1, 198, 1, 198, 1, 198, 1, 198, 1, 198, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 201, 1, 201, 1, 201, 1, 201, 1, 201, 1, 201, 1, 202, 1, 202, 1, 202, 1, 202, 1, 202, 1, 202, 1, 202, 1, 202, 1, 203, 1, 203, 1, 203, 1, 203, 1, 203, 1, 203, 1, 203, 1, 203, 1, 203, 1, 203, 1, 204, 1, 204, 1, 204, 1, 204, 1, 204, 1, 204, 1, 204, 1, 204, 1, 204, 1, 204, 1, 205, 1, 205, 1, 205, 1, 205, 1, 205, 1, 205, 1, 205, 1, 205, 1, 206, 1, 206, 1, 206, 1, 206, 1, 206, 1, 206, 1, 206, 1, 206, 1, 207, 1, 207, 1, 207, 1, 207, 1, 207, 1, 207, 1, 207, 1, 207, 1, 207, 1, 207, 1, 208, 1, 208, 1, 208, 1, 208, 1, 208, 1, 208, 1, 208, 1, 208, 1, 208, 1, 209, 1, 209, 1, 209, 1, 209, 1, 209, 1, 209, 1, 209, 1, 210, 1, 210, 1, 210, 1, 210, 1, 210, 1, 210, 1, 211, 1, 211, 1, 211, 1, 211, 1, 211, 1, 211, 1, 211, 1, 211, 1, 211, 1, 211, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 213, 1, 213, 1, 213, 1, 213, 1, 213, 1, 213, 1, 213, 1, 213, 1, 214, 1, 214, 1, 214, 1, 214, 1, 214, 1, 214, 1, 214, 1, 214, 1, 214, 1, 215, 1, 215, 1, 215, 1, 215, 1, 215, 1, 215, 1, 215, 1, 215, 1, 215, 1, 215, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 217, 1, 217, 1, 217, 1, 217, 1, 217, 1, 217, 1, 217, 1, 217, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 219, 1, 219, 1, 219, 1, 219, 1, 219, 1, 219, 1, 219, 1, 220, 1, 220, 1, 220, 1, 220, 1, 220, 1, 221, 1, 221, 1, 221, 1, 221, 1, 221, 1, 222, 1, 222, 1, 222, 1, 222, 1, 222, 1, 222, 1, 222, 1, 222, 1, 222, 1, 223, 1, 223, 1, 223, 1, 224, 1, 224, 1, 224, 1, 224, 1, 224, 1, 224, 1, 224, 1, 224, 1, 224, 1, 224, 1, 225, 1, 225, 1, 225, 1, 225, 1, 225, 1, 225, 1, 225, 1, 225, 1, 225, 1, 225, 1, 226, 1, 226, 1, 226, 1, 226, 1, 226, 1, 226, 1, 226, 1, 226, 1, 226, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 228, 1, 228, 1, 228, 1, 228, 1, 228, 1, 228, 1, 228, 1, 228, 1, 228, 1, 228, 1, 229, 1, 229, 1, 229, 1, 229, 1, 229, 1, 229, 1, 230, 1, 230, 1, 230, 1, 230, 1, 230, 1, 230, 1, 230, 1, 230, 1, 231, 1, 231, 1, 231, 1, 231, 1, 231, 1, 231, 1, 231, 1, 231, 1, 232, 1, 232, 1, 232, 1, 232, 1, 232, 1, 232, 1, 232, 1, 232, 1, 232, 1, 233, 1, 233, 1, 233, 1, 233, 1, 233, 1, 233, 1, 233, 1, 234, 1, 234, 1, 234, 1, 234, 1, 234, 1, 234, 1, 234, 1, 234, 1, 234, 1, 234, 1, 234, 1, 234, 1, 235, 1, 235, 1, 235, 1, 235, 1, 235, 1, 235, 1, 235, 1, 236, 1, 236, 1, 236, 1, 236, 1, 236, 1, 236, 1, 236, 1, 236, 1, 237, 1, 237, 1, 237, 1, 237, 1, 237, 1, 237, 1, 237, 1, 237, 1, 238, 1, 238, 1, 238, 1, 238, 1, 238, 1, 238, 1, 238, 1, 238, 1, 238, 1, 238, 1, 239, 1, 239, 1, 239, 1, 239, 1, 240, 1, 240, 1, 240, 1, 240, 1, 240, 1, 240, 1, 241, 1, 241, 1, 241, 1, 241, 1, 241, 1, 241, 1, 241, 1, 241, 1, 241, 1, 242, 1, 242, 1, 242, 1, 242, 1, 242, 1, 242, 1, 243, 1, 243, 1, 243, 1, 243, 1, 243, 1, 244, 1, 244, 1, 244, 1, 244, 1, 244, 1, 244, 1, 244, 1, 244, 1, 244, 1, 244, 1, 245, 1, 245, 1, 245, 1, 245, 1, 245, 1, 245, 1, 246, 1, 246, 1, 246, 1, 246, 1, 246, 1, 246, 1, 246, 1, 247, 1, 247, 1, 247, 1, 247, 1, 247, 1, 248, 1, 248, 1, 248, 1, 248, 1, 248, 1, 248, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 1, 250, 1, 250, 1, 250, 1, 250, 1, 250, 1, 251, 1, 251, 1, 251, 1, 251, 1, 251, 1, 251, 1, 251, 1, 251, 1, 252, 1, 252, 1, 252, 1, 252, 1, 252, 1, 252, 1, 253, 1, 253, 1, 253, 1, 253, 1, 253, 1, 253, 1, 253, 1, 253, 1, 254, 1, 254, 1, 254, 1, 254, 1, 254, 1, 254, 1, 254, 1, 254, 1, 254, 1, 254, 1, 254, 1, 254, 1, 254, 1, 255, 1, 255, 1, 255, 1, 255, 1, 255, 1, 255, 1, 255, 1, 255, 1, 255, 1, 256, 1, 256, 1, 256, 1, 256, 1, 256, 1, 256, 1, 257, 1, 257, 1, 257, 1, 257, 1, 257, 1, 257, 1, 257, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 259, 1, 259, 1, 259, 1, 259, 1, 259, 1, 260, 1, 260, 1, 260, 1, 260, 1, 260, 1, 260, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 262, 1, 262, 1, 262, 1, 262, 1, 262, 1, 263, 1, 263, 1, 263, 1, 263, 1, 263, 1, 263, 1, 264, 1, 264, 1, 264, 1, 264, 1, 264, 1, 265, 1, 265, 1, 265, 1, 266, 1, 266, 1, 266, 1, 266, 1, 266, 1, 266, 1, 266, 1, 266, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, 268, 1, 268, 1, 268, 1, 268, 1, 268, 1, 268, 1, 268, 1, 269, 1, 269, 1, 269, 1, 269, 1, 269, 1, 269, 1, 270, 1, 270, 1, 270, 1, 270, 1, 270, 1, 270, 1, 270, 1, 271, 1, 271, 1, 271, 1, 272, 1, 272, 1, 272, 1, 272, 1, 273, 1, 273, 1, 273, 1, 273, 1, 273, 1, 274, 1, 274, 1, 274, 1, 274, 1, 274, 1, 274, 1, 274, 1, 274, 1, 274, 1, 275, 1, 275, 1, 275, 1, 275, 1, 275, 1, 275, 1, 275, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 279, 1, 279, 1, 279, 1, 279, 1, 279, 1, 279, 1, 279, 1, 280, 1, 280, 1, 280, 1, 280, 1, 280, 1, 280, 1, 280, 1, 280, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 282, 1, 282, 1, 282, 1, 282, 1, 282, 1, 282, 1, 282, 1, 282, 1, 283, 1, 283, 1, 283, 1, 283, 1, 283, 1, 283, 1, 283, 1, 283, 1, 283, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 285, 1, 285, 1, 285, 1, 285, 1, 285, 1, 285, 1, 285, 1, 285, 1, 285, 1, 285, 1, 286, 1, 286, 1, 286, 1, 286, 1, 286, 1, 286, 1, 286, 1, 286, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 288, 1, 288, 1, 288, 1, 288, 1, 288, 1, 288, 1, 288, 1, 288, 1, 288, 1, 289, 1, 289, 1, 289, 1, 289, 1, 289, 1, 289, 1, 290, 1, 290, 1, 290, 1, 290, 1, 290, 1, 290, 1, 290, 1, 290, 1, 290, 1, 290, 1, 290, 1, 291, 1, 291, 1, 291, 1, 291, 1, 291, 1, 291, 1, 291, 1, 291, 1, 291, 1, 291, 1, 291, 1, 292, 1, 292, 1, 292, 1, 292, 1, 292, 1, 292, 1, 292, 1, 292, 1, 292, 1, 292, 1, 293, 1, 293, 1, 293, 1, 293, 1, 293, 1, 293, 1, 293, 1, 293, 1, 294, 1, 294, 1, 294, 1, 294, 1, 294, 1, 294, 1, 295, 1, 295, 1, 295, 1, 295, 1, 295, 1, 295, 1, 296, 1, 296, 1, 296, 1, 296, 1, 296, 1, 297, 1, 297, 1, 297, 1, 297, 1, 297, 1, 297, 1, 297, 1, 297, 1, 297, 1, 298, 1, 298, 1, 298, 1, 298, 1, 298, 1, 298, 1, 298, 1, 298, 1, 299, 1, 299, 1, 299, 1, 299, 1, 299, 1, 299, 1, 299, 1, 299, 1, 299, 1, 299, 1, 300, 1, 300, 1, 300, 1, 300, 1, 301, 1, 301, 1, 301, 1, 301, 1, 301, 1, 301, 1, 301, 1, 301, 1, 302, 1, 302, 1, 302, 1, 302, 1, 302, 1, 302, 1, 302, 1, 302, 1, 303, 1, 303, 1, 303, 1, 303, 1, 303, 1, 303, 1, 303, 1, 303, 1, 303, 1, 304, 1, 304, 1, 304, 1, 304, 1, 304, 1, 304, 1, 304, 1, 304, 1, 305, 1, 305, 1, 305, 1, 305, 1, 305, 1, 305, 1, 305, 1, 306, 1, 306, 1, 306, 1, 306, 1, 306, 1, 306, 1, 306, 1, 306, 1, 306, 1, 306, 1, 306, 1, 307, 1, 307, 1, 307, 1, 307, 1, 307, 1, 307, 1, 307, 1, 307, 1, 308, 1, 308, 1, 308, 1, 308, 1, 308, 1, 308, 1, 308, 1, 308, 1, 309, 1, 309, 1, 309, 1, 309, 1, 309, 1, 309, 1, 310, 1, 310, 1, 310, 1, 310, 1, 310, 1, 310, 1, 310, 1, 310, 1, 311, 1, 311, 1, 311, 1, 311, 1, 311, 1, 311, 1, 311, 1, 311, 1, 311, 1, 312, 1, 312, 1, 312, 1, 312, 1, 312, 1, 312, 1, 312, 1, 312, 1, 313, 1, 313, 1, 313, 1, 313, 1, 313, 1, 313, 1, 313, 1, 314, 1, 314, 1, 314, 1, 314, 1, 314, 1, 315, 1, 315, 1, 315, 1, 315, 1, 315, 1, 315, 1, 315, 1, 315, 1, 315, 1, 316, 1, 316, 1, 316, 1, 316, 1, 316, 1, 317, 1, 317, 1, 317, 1, 317, 1, 317, 1, 318, 1, 318, 1, 318, 1, 318, 1, 318, 1, 318, 1, 318, 1, 318, 1, 318, 1, 318, 1, 319, 1, 319, 1, 319, 1, 319, 1, 319, 1, 319, 1, 319, 1, 320, 1, 320, 1, 320, 1, 320, 1, 320, 1, 320, 1, 320, 1, 321, 1, 321, 1, 321, 1, 321, 1, 321, 1, 321, 1, 321, 1, 322, 1, 322, 1, 322, 1, 322, 1, 322, 1, 322, 1, 322, 1, 323, 1, 323, 1, 323, 1, 323, 1, 323, 1, 323, 1, 323, 1, 323, 1, 323, 1, 324, 1, 324, 1, 324, 1, 324, 1, 324, 1, 324, 1, 324, 1, 324, 1, 324, 1, 325, 1, 325, 1, 325, 1, 325, 1, 325, 1, 325, 1, 325, 1, 325, 1, 325, 1, 325, 1, 326, 1, 326, 1, 326, 1, 326, 1, 326, 1, 326, 1, 326, 1, 326, 1, 326, 1, 326, 1, 326, 1, 326, 1, 326, 1, 327, 1, 327, 1, 327, 1, 327, 1, 327, 1, 327, 1, 327, 1, 328, 1, 328, 1, 328, 1, 328, 1, 328, 1, 328, 1, 328, 1, 328, 1, 329, 1, 329, 1, 329, 1, 329, 1, 330, 1, 330, 1, 330, 1, 330, 1, 330, 1, 330, 1, 331, 1, 331, 1, 331, 1, 331, 1, 331, 1, 332, 1, 332, 1, 332, 1, 332, 1, 332, 1, 332, 1, 332, 1, 333, 1, 333, 1, 333, 1, 333, 1, 333, 1, 333, 1, 333, 1, 333, 1, 333, 1, 334, 1, 334, 1, 334, 1, 334, 1, 334, 1, 334, 1, 334, 1, 335, 1, 335, 1, 335, 1, 335, 1, 335, 1, 335, 1, 335, 1, 335, 1, 335, 1, 335, 1, 335, 1, 336, 1, 336, 1, 336, 1, 336, 1, 336, 1, 336, 1, 337, 1, 337, 1, 337, 1, 337, 1, 337, 1, 337, 1, 337, 1, 337, 1, 337, 1, 337, 1, 338, 1, 338, 1, 338, 1, 338, 1, 338, 1, 338, 1, 338, 1, 338, 1, 338, 1, 338, 1, 338, 1, 339, 1, 339, 1, 339, 1, 339, 1, 339, 1, 339, 1, 340, 1, 340, 1, 340, 1, 340, 1, 340, 1, 340, 1, 340, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 342, 1, 342, 1, 342, 1, 342, 1, 342, 1, 342, 1, 342, 1, 343, 1, 343, 1, 343, 1, 343, 1, 343, 1, 343, 1, 344, 1, 344, 1, 344, 1, 344, 1, 344, 1, 344, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 346, 1, 346, 1, 346, 1, 346, 1, 346, 1, 346, 1, 346, 1, 347, 1, 347, 1, 347, 1, 347, 1, 347, 1, 347, 1, 347, 1, 347, 1, 347, 1, 347, 1, 347, 1, 348, 1, 348, 1, 348, 1, 348, 1, 348, 1, 349, 1, 349, 1, 349, 1, 349, 1, 349, 1, 349, 1, 349, 1, 349, 1, 349, 1, 350, 1, 350, 1, 350, 1, 350, 1, 350, 1, 350, 1, 350, 1, 350, 1, 350, 1, 350, 1, 351, 1, 351, 1, 351, 1, 351, 1, 351, 1, 352, 1, 352, 1, 352, 1, 352, 1, 352, 1, 352, 1, 352, 1, 352, 1, 352, 1, 352, 1, 352, 1, 352, 1, 353, 1, 353, 1, 353, 1, 353, 1, 353, 1, 353, 1, 353, 1, 353, 1, 354, 1, 354, 1, 354, 1, 354, 1, 354, 1, 354, 1, 354, 1, 354, 1, 354, 1, 355, 1, 355, 1, 355, 1, 355, 1, 355, 1, 355, 1, 355, 1, 355, 1, 356, 1, 356, 1, 356, 1, 356, 1, 356, 1, 357, 1, 357, 1, 357, 1, 357, 1, 357, 1, 357, 1, 358, 1, 358, 1, 358, 1, 358, 1, 358, 1, 358, 1, 358, 1, 358, 1, 358, 1, 358, 1, 359, 1, 359, 1, 359, 1, 359, 1, 359, 1, 359, 1, 359, 1, 359, 1, 359, 1, 359, 1, 359, 1, 359, 1, 360, 1, 360, 1, 360, 1, 360, 1, 360, 1, 360, 1, 360, 1, 360, 1, 360, 1, 360, 1, 360, 1, 360, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 362, 1, 362, 1, 362, 1, 362, 1, 362, 1, 362, 1, 362, 1, 362, 1, 362, 1, 363, 1, 363, 1, 363, 1, 363, 1, 363, 1, 363, 1, 363, 1, 363, 1, 363, 1, 364, 1, 364, 1, 364, 1, 364, 1, 364, 1, 364, 1, 365, 1, 365, 1, 365, 1, 365, 1, 365, 1, 365, 1, 365, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 367, 1, 367, 1, 367, 1, 367, 1, 367, 1, 367, 1, 368, 1, 368, 1, 368, 1, 368, 1, 368, 1, 368, 1, 368, 1, 368, 1, 368, 1, 369, 1, 369, 1, 369, 1, 369, 1, 369, 1, 369, 1, 369, 1, 369, 1, 369, 1, 369, 1, 370, 1, 370, 1, 370, 1, 370, 1, 370, 1, 370, 1, 370, 1, 370, 1, 371, 1, 371, 1, 371, 1, 371, 1, 371, 1, 371, 1, 371, 1, 371, 1, 372, 1, 372, 1, 372, 1, 372, 1, 372, 1, 373, 1, 373, 1, 373, 1, 373, 1, 373, 1, 373, 1, 373, 1, 373, 1, 373, 1, 374, 1, 374, 1, 374, 1, 374, 1, 374, 1, 374, 1, 374, 1, 374, 1, 374, 1, 374, 1, 374, 1, 375, 1, 375, 1, 375, 1, 375, 1, 375, 1, 375, 1, 375, 1, 375, 1, 376, 1, 376, 1, 376, 1, 376, 1, 376, 1, 377, 1, 377, 1, 377, 1, 377, 1, 377, 1, 377, 1, 377, 1, 377, 1, 378, 1, 378, 1, 378, 1, 378, 1, 378, 1, 378, 1, 379, 1, 379, 1, 379, 1, 379, 1, 380, 1, 380, 1, 380, 1, 380, 1, 380, 1, 381, 1, 381, 1, 381, 1, 381, 1, 382, 1, 382, 1, 382, 1, 382, 1, 382, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 384, 1, 384, 1, 384, 1, 384, 1, 384, 1, 384, 1, 384, 1, 385, 1, 385, 1, 385, 1, 385, 1, 386, 1, 386, 1, 386, 1, 386, 1, 386, 1, 386, 1, 386, 1, 386, 1, 387, 1, 387, 1, 387, 1, 387, 1, 387, 1, 388, 1, 388, 1, 388, 1, 388, 1, 388, 1, 388, 1, 388, 1, 388, 1, 388, 1, 388, 1, 389, 1, 389, 1, 389, 1, 389, 1, 389, 1, 389, 1, 389, 1, 389, 1, 389, 1, 390, 1, 390, 1, 390, 1, 390, 1, 391, 1, 391, 1, 391, 1, 391, 1, 391, 1, 391, 1, 391, 1, 391, 1, 392, 1, 392, 1, 392, 1, 392, 1, 392, 1, 392, 1, 392, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 394, 1, 394, 1, 394, 1, 394, 1, 394, 1, 394, 1, 395, 1, 395, 1, 395, 1, 395, 1, 395, 1, 395, 1, 395, 1, 395, 1, 395, 1, 396, 1, 396, 1, 396, 1, 396, 1, 396, 1, 396, 1, 397, 1, 397, 1, 397, 1, 397, 1, 398, 1, 398, 1, 398, 1, 398, 1, 398, 1, 398, 1, 398, 1, 398, 1, 399, 1, 399, 1, 399, 1, 399, 1, 399, 1, 399, 1, 399, 1, 399, 1, 399, 1, 400, 1, 400, 1, 400, 1, 400, 1, 400, 1, 400, 1, 401, 1, 401, 1, 401, 1, 401, 1, 401, 1, 401, 1, 401, 1, 401, 1, 401, 1, 402, 1, 402, 1, 402, 1, 402, 1, 402, 1, 402, 1, 403, 1, 403, 1, 403, 1, 403, 1, 403, 1, 404, 1, 404, 1, 404, 1, 404, 1, 404, 1, 404, 1, 404, 1, 405, 1, 405, 1, 405, 1, 405, 1, 405, 1, 405, 1, 405, 1, 405, 1, 406, 1, 406, 1, 406, 1, 406, 1, 406, 1, 406, 1, 406, 1, 406, 1, 407, 1, 407, 1, 407, 1, 407, 1, 407, 1, 407, 1, 407, 1, 407, 1, 407, 1, 408, 1, 408, 1, 408, 1, 408, 1, 408, 1, 408, 1, 408, 1, 408, 1, 408, 1, 408, 1, 409, 1, 409, 1, 409, 1, 409, 1, 409, 1, 410, 1, 410, 1, 410, 1, 410, 1, 411, 1, 411, 1, 411, 1, 411, 1, 411, 1, 411, 1, 412, 1, 412, 1, 412, 1, 412, 1, 412, 1, 412, 1, 412, 1, 412, 1, 412, 1, 413, 1, 413, 1, 413, 1, 413, 1, 413, 1, 413, 1, 413, 1, 413, 1, 413, 1, 413, 1, 414, 1, 414, 1, 414, 1, 414, 1, 414, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 416, 1, 416, 1, 416, 1, 416, 1, 416, 1, 416, 1, 417, 1, 417, 1, 417, 1, 417, 1, 417, 1, 418, 1, 418, 1, 418, 1, 418, 1, 418, 1, 418, 1, 418, 1, 419, 1, 419, 1, 419, 1, 419, 1, 419, 1, 419, 1, 419, 1, 419, 1, 420, 1, 420, 1, 420, 1, 420, 1, 420, 1, 420, 1, 420, 1, 420, 1, 420, 1, 420, 1, 420, 1, 420, 1, 420, 1, 420, 1, 421, 1, 421, 1, 421, 1, 421, 1, 421, 1, 421, 1, 421, 1, 421, 1, 421, 1, 421, 1, 421, 1, 422, 1, 422, 1, 422, 1, 422, 1, 422, 1, 422, 1, 422, 1, 423, 1, 423, 1, 423, 1, 423, 1, 423, 1, 423, 1, 423, 1, 423, 1, 423, 1, 423, 1, 423, 1, 423, 1, 423, 1, 423, 1, 423, 1, 423, 1, 423, 1, 423, 1, 423, 1, 424, 1, 424, 1, 424, 1, 424, 1, 424, 1, 424, 1, 424, 1, 424, 1, 424, 1, 424, 1, 424, 1, 424, 1, 424, 1, 424, 1, 424, 1, 424, 1, 424, 1, 424, 1, 424, 1, 424, 1, 424, 1, 424, 1, 424, 1, 424, 1, 424, 1, 424, 1, 424, 1, 424, 1, 425, 1, 425, 1, 425, 1, 425, 1, 425, 1, 425, 1, 425, 1, 425, 1, 425, 1, 425, 1, 425, 1, 425, 1, 425, 1, 425, 1, 425, 1, 425, 1, 425, 1, 425, 1, 425, 1, 425, 1, 425, 1, 425, 1, 425, 1, 425, 1, 425, 1, 425, 1, 425, 1, 426, 1, 426, 1, 426, 1, 426, 1, 426, 1, 426, 1, 427, 1, 427, 1, 427, 1, 427, 1, 427, 1, 427, 1, 427, 1, 427, 1, 427, 1, 427, 1, 427, 1, 427, 1, 427, 1, 428, 1, 428, 1, 428, 1, 428, 1, 428, 1, 428, 1, 428, 1, 428, 1, 428, 1, 428, 1, 429, 1, 429, 1, 429, 1, 429, 1, 429, 1, 429, 1, 429, 1, 429, 1, 429, 1, 429, 1, 429, 1, 430, 1, 430, 1, 430, 1, 430, 1, 430, 1, 430, 1, 430, 1, 430, 1, 430, 1, 430, 1, 431, 1, 431, 1, 431, 1, 431, 1, 431, 1, 431, 1, 431, 1, 431, 1, 431, 1, 431, 1, 432, 1, 432, 1, 432, 1, 432, 1, 432, 1, 432, 1, 432, 1, 432, 1, 432, 1, 433, 1, 433, 1, 433, 1, 433, 1, 433, 1, 433, 1, 434, 1, 434, 1, 434, 1, 434, 1, 434, 1, 434, 1, 434, 1, 434, 1, 435, 1, 435, 1, 435, 1, 435, 1, 435, 1, 435, 1, 435, 1, 435, 1, 435, 1, 435, 1, 435, 1, 435, 1, 435, 1, 436, 1, 436, 1, 436, 1, 436, 1, 436, 1, 437, 1, 437, 1, 437, 1, 437, 1, 437, 1, 437, 1, 437, 1, 437, 1, 438, 1, 438, 1, 438, 1, 438, 1, 438, 1, 438, 1, 438, 1, 439, 1, 439, 1, 439, 1, 439, 1, 439, 1, 439, 1, 439, 1, 440, 1, 440, 1, 440, 1, 440, 1, 440, 1, 440, 1, 440, 1, 440, 1, 440, 1, 440, 1, 440, 1, 441, 1, 441, 1, 441, 1, 441, 1, 441, 1, 441, 1, 441, 1, 441, 1, 441, 1, 441, 1, 442, 1, 442, 1, 442, 1, 442, 1, 442, 1, 442, 1, 442, 1, 443, 1, 443, 1, 443, 1, 443, 1, 443, 1, 443, 1, 443, 1, 444, 1, 444, 1, 444, 1, 444, 1, 444, 1, 444, 1, 444, 1, 444, 1, 445, 1, 445, 1, 445, 1, 445, 1, 445, 1, 445, 1, 445, 1, 445, 1, 446, 1, 446, 1, 446, 1, 446, 1, 446, 1, 446, 1, 446, 1, 446, 1, 446, 1, 446, 1, 447, 1, 447, 1, 447, 1, 447, 1, 447, 1, 447, 1, 447, 1, 448, 1, 448, 1, 448, 1, 448, 1, 448, 1, 448, 1, 448, 1, 449, 1, 449, 1, 449, 1, 449, 1, 449, 1, 449, 1, 449, 1, 450, 1, 450, 1, 450, 1, 450, 1, 450, 1, 450, 1, 450, 1, 450, 1, 450, 1, 450, 1, 450, 1, 450, 1, 451, 1, 451, 1, 451, 1, 451, 1, 452, 1, 452, 1, 452, 1, 452, 1, 453, 1, 453, 1, 453, 1, 453, 1, 453, 1, 453, 1, 454, 1, 454, 1, 454, 1, 454, 1, 454, 1, 454, 1, 454, 1, 454, 1, 454, 1, 454, 1, 454, 1, 454, 1, 454, 1, 455, 1, 455, 1, 455, 1, 455, 1, 455, 1, 455, 1, 455, 1, 455, 1, 455, 1, 455, 1, 455, 1, 455, 1, 456, 1, 456, 1, 456, 1, 456, 1, 457, 1, 457, 1, 457, 1, 457, 1, 458, 1, 458, 1, 458, 1, 458, 1, 458, 1, 458, 1, 458, 1, 458, 1, 458, 1, 459, 1, 459, 1, 459, 1, 459, 1, 459, 1, 459, 1, 459, 1, 459, 1, 460, 1, 460, 1, 460, 1, 460, 1, 460, 1, 460, 1, 460, 1, 460, 1, 460, 1, 460, 1, 460, 1, 461, 1, 461, 1, 461, 1, 461, 1, 461, 1, 461, 1, 462, 1, 462, 1, 462, 1, 462, 1, 462, 1, 462, 1, 462, 1, 462, 1, 463, 1, 463, 1, 463, 1, 463, 1, 463, 1, 463, 1, 463, 1, 463, 1, 463, 1, 464, 1, 464, 1, 464, 1, 464, 1, 465, 1, 465, 1, 465, 1, 465, 1, 465, 1, 465, 1, 465, 1, 465, 1, 466, 1, 466, 1, 466, 1, 466, 1, 466, 1, 466, 1, 466, 1, 466, 1, 466, 1, 466, 1, 466, 1, 467, 1, 467, 1, 467, 1, 467, 1, 467, 1, 467, 1, 467, 1, 467, 1, 467, 1, 468, 1, 468, 1, 468, 1, 468, 1, 468, 1, 469, 1, 469, 1, 469, 1, 469, 1, 469, 1, 469, 1, 469, 1, 470, 1, 470, 1, 470, 1, 470, 1, 470, 1, 471, 1, 471, 1, 471, 1, 471, 1, 471, 1, 471, 1, 471, 1, 472, 1, 472, 1, 472, 1, 472, 1, 472, 1, 473, 1, 473, 1, 473, 1, 473, 1, 473, 1, 473, 1, 473, 1, 473, 1, 473, 1, 474, 1, 474, 1, 474, 1, 474, 1, 474, 1, 475, 1, 475, 1, 475, 1, 475, 1, 475, 1, 475, 1, 475, 1, 475, 1, 475, 1, 475, 1, 475, 1, 475, 1, 476, 1, 476, 1, 476, 1, 476, 1, 476, 1, 476, 1, 476, 1, 476, 1, 476, 1, 476, 1, 476, 1, 477, 1, 477, 1, 477, 1, 477, 1, 477, 1, 477, 1, 477, 1, 477, 1, 477, 1, 478, 1, 478, 1, 478, 1, 478, 1, 478, 1, 478, 1, 478, 1, 478, 1, 479, 1, 479, 1, 479, 1, 479, 1, 479, 1, 479, 1, 479, 1, 479, 1, 479, 1, 479, 1, 479, 1, 479, 1, 479, 1, 479, 1, 480, 1, 480, 1, 480, 1, 480, 1, 480, 1, 480, 1, 480, 1, 480, 1, 481, 1, 481, 1, 481, 1, 481, 1, 481, 1, 481, 1, 481, 1, 481, 1, 481, 1, 481, 1, 481, 1, 482, 1, 482, 1, 482, 1, 482, 1, 482, 1, 482, 1, 482, 1, 483, 1, 483, 1, 483, 1, 483, 1, 483, 1, 483, 1, 483, 1, 484, 1, 484, 1, 484, 1, 484, 1, 484, 1, 484, 1, 484, 1, 485, 1, 485, 1, 485, 1, 485, 1, 485, 1, 485, 1, 485, 1, 486, 1, 486, 1, 486, 1, 486, 1, 487, 1, 487, 1, 487, 1, 487, 1, 488, 1, 488, 1, 488, 1, 488, 1, 488, 1, 489, 1, 489, 1, 489, 1, 489, 1, 489, 1, 490, 1, 490, 1, 490, 1, 490, 1, 490, 1, 490, 1, 490, 1, 490, 1, 491, 1, 491, 1, 491, 1, 491, 1, 491, 1, 491, 1, 492, 1, 492, 1, 492, 1, 492, 1, 492, 1, 492, 1, 492, 1, 492, 1, 492, 1, 492, 1, 493, 1, 493, 1, 493, 1, 493, 1, 493, 1, 494, 1, 494, 1, 494, 1, 494, 1, 494, 1, 494, 1, 494, 1, 494, 1, 494, 1, 494, 1, 494, 1, 494, 1, 494, 1, 494, 1, 494, 1, 494, 1, 494, 1, 494, 1, 494, 1, 494, 1, 495, 1, 495, 1, 495, 1, 495, 1, 495, 1, 495, 1, 495, 1, 495, 1, 495, 1, 495, 1, 495, 1, 495, 1, 495, 1, 495, 1, 495, 1, 495, 1, 495, 1, 495, 1, 496, 1, 496, 1, 496, 1, 496, 1, 496, 1, 496, 1, 497, 1, 497, 1, 497, 1, 497, 1, 497, 1, 497, 1, 497, 1, 497, 1, 497, 1, 497, 1, 497, 1, 497, 1, 497, 1, 498, 1, 498, 1, 498, 1, 498, 1, 498, 1, 498, 1, 498, 1, 498, 1, 498, 1, 498, 1, 498, 1, 499, 1, 499, 1, 499, 1, 499, 1, 499, 1, 499, 1, 500, 1, 500, 1, 500, 1, 500, 1, 500, 1, 500, 1, 500, 1, 500, 1, 500, 1, 501, 1, 501, 1, 501, 1, 501, 1, 501, 1, 501, 1, 501, 1, 501, 1, 502, 1, 502, 1, 502, 1, 502, 1, 503, 1, 503, 1, 503, 1, 503, 1, 503, 1, 503, 1, 503, 1, 503, 1, 503, 1, 503, 1, 503, 1, 503, 1, 504, 1, 504, 1, 504, 1, 504, 1, 504, 1, 504, 1, 504, 1, 504, 1, 505, 1, 505, 1, 505, 1, 505, 1, 505, 1, 505, 1, 506, 1, 506, 1, 506, 1, 506, 1, 506, 1, 506, 1, 507, 1, 507, 1, 507, 1, 507, 1, 507, 1, 507, 1, 507, 1, 507, 1, 508, 1, 508, 1, 508, 1, 508, 1, 508, 1, 508, 1, 508, 1, 508, 1, 509, 1, 509, 1, 509, 1, 509, 1, 509, 1, 509, 1, 510, 1, 510, 1, 510, 1, 510, 1, 510, 1, 511, 1, 511, 1, 511, 1, 511, 1, 511, 1, 511, 1, 511, 1, 512, 1, 512, 1, 512, 1, 512, 1, 512, 1, 512, 1, 513, 1, 513, 1, 513, 1, 513, 1, 513, 1, 513, 1, 514, 1, 514, 1, 514, 1, 514, 1, 514, 1, 514, 1, 514, 1, 514, 1, 514, 1, 515, 1, 515, 1, 515, 1, 515, 1, 515, 1, 515, 1, 516, 1, 516, 1, 516, 1, 516, 1, 517, 1, 517, 1, 517, 1, 517, 1, 517, 1, 518, 1, 518, 1, 518, 1, 518, 1, 518, 1, 518, 1, 518, 1, 519, 1, 519, 1, 519, 1, 519, 1, 519, 1, 519, 1, 519, 1, 519, 1, 520, 1, 520, 1, 520, 1, 520, 1, 520, 1, 520, 1, 520, 1, 520, 1, 520, 1, 520, 1, 521, 1, 521, 1, 521, 1, 521, 1, 521, 1, 521, 1, 521, 1, 522, 1, 522, 1, 522, 1, 522, 1, 522, 1, 523, 1, 523, 1, 523, 1, 523, 1, 523, 1, 524, 1, 524, 1, 524, 1, 524, 1, 525, 1, 525, 1, 525, 1, 525, 1, 525, 1, 526, 1, 526, 1, 526, 1, 526, 1, 526, 1, 527, 1, 527, 1, 527, 1, 527, 1, 527, 1, 527, 1, 527, 1, 527, 1, 528, 1, 528, 1, 528, 1, 528, 1, 528, 1, 528, 1, 528, 1, 528, 1, 529, 1, 529, 1, 529, 1, 529, 1, 530, 1, 530, 1, 530, 1, 530, 1, 531, 1, 531, 1, 531, 1, 531, 1, 531, 1, 531, 1, 531, 1, 531, 1, 531, 1, 531, 1, 532, 1, 532, 1, 532, 1, 532, 1, 532, 1, 532, 1, 533, 1, 533, 1, 533, 1, 533, 1, 534, 1, 534, 1, 534, 1, 534, 1, 535, 1, 535, 1, 535, 1, 536, 1, 536, 1, 536, 1, 536, 1, 536, 1, 536, 1, 537, 1, 537, 1, 537, 1, 537, 1, 537, 1, 537, 1, 537, 1, 537, 1, 537, 1, 537, 1, 538, 1, 538, 1, 538, 1, 538, 1, 539, 1, 539, 1, 539, 1, 540, 1, 540, 1, 540, 1, 540, 1, 540, 1, 540, 1, 541, 1, 541, 1, 541, 1, 541, 1, 541, 1, 541, 1, 541, 1, 541, 1, 542, 1, 542, 1, 542, 1, 542, 1, 542, 1, 542, 1, 543, 1, 543, 1, 543, 1, 543, 1, 543, 1, 543, 1, 544, 1, 544, 1, 544, 1, 544, 1, 544, 1, 545, 1, 545, 1, 545, 1, 545, 1, 545, 1, 546, 1, 546, 1, 546, 1, 546, 1, 546, 1, 546, 1, 546, 1, 546, 1, 546, 1, 546, 1, 546, 1, 547, 1, 547, 1, 547, 1, 547, 1, 547, 1, 547, 1, 548, 1, 548, 1, 548, 1, 548, 1, 548, 1, 548, 1, 548, 1, 548, 1, 548, 1, 548, 1, 548, 1, 548, 1, 548, 1, 549, 1, 549, 1, 549, 1, 549, 1, 549, 1, 549, 1, 549, 1, 550, 1, 550, 1, 550, 1, 550, 1, 550, 1, 550, 1, 550, 1, 550, 1, 551, 1, 551, 1, 551, 1, 551, 1, 551, 1, 552, 1, 552, 1, 552, 1, 552, 1, 552, 1, 552, 1, 553, 1, 553, 1, 553, 1, 553, 1, 553, 1, 554, 1, 554, 1, 554, 1, 554, 1, 554, 1, 554, 1, 555, 1, 555, 1, 555, 1, 555, 1, 555, 1, 556, 1, 556, 1, 556, 1, 556, 1, 556, 1, 556, 1, 557, 1, 557, 1, 557, 1, 557, 1, 557, 1, 557, 1, 558, 1, 558, 1, 558, 1, 558, 1, 558, 1, 558, 1, 558, 1, 559, 1, 559, 1, 559, 1, 559, 1, 560, 1, 560, 1, 560, 1, 560, 1, 560, 1, 561, 1, 561, 1, 561, 1, 561, 1, 562, 1, 562, 1, 562, 1, 562, 1, 562, 1, 563, 1, 563, 1, 563, 1, 563, 1, 564, 1, 564, 1, 564, 1, 564, 1, 564, 1, 565, 1, 565, 1, 565, 1, 565, 1, 566, 1, 566, 1, 566, 1, 566, 1, 566, 1, 567, 1, 567, 1, 567, 1, 567, 1, 567, 1, 568, 1, 568, 1, 568, 1, 568, 1, 568, 1, 569, 1, 569, 1, 569, 1, 569, 1, 569, 1, 570, 1, 570, 1, 570, 1, 570, 1, 570, 1, 570, 1, 571, 1, 571, 1, 571, 1, 571, 1, 571, 1, 571, 1, 572, 1, 572, 1, 572, 1, 572, 1, 572, 1, 572, 1, 573, 1, 573, 1, 573, 1, 573, 1, 573, 1, 573, 1, 573, 1, 573, 1, 573, 1, 573, 1, 573, 1, 574, 1, 574, 1, 574, 1, 574, 1, 574, 1, 574, 1, 574, 1, 574, 1, 574, 1, 574, 1, 574, 1, 574, 1, 575, 1, 575, 1, 575, 1, 575, 1, 575, 1, 575, 1, 575, 1, 575, 1, 575, 1, 575, 1, 575, 1, 575, 1, 575, 1, 575, 1, 575, 1, 575, 1, 575, 1, 576, 1, 576, 1, 576, 1, 576, 1, 576, 1, 576, 1, 577, 1, 577, 1, 577, 1, 577, 1, 577, 1, 577, 1, 577, 1, 577, 1, 577, 1, 577, 1, 577, 1, 577, 1, 577, 1, 578, 1, 578, 1, 578, 1, 578, 1, 578, 1, 578, 1, 579, 1, 579, 1, 579, 1, 579, 1, 579, 1, 579, 1, 580, 1, 580, 1, 580, 1, 580, 1, 580, 1, 580, 1, 581, 1, 581, 1, 581, 1, 581, 1, 582, 1, 582, 1, 582, 1, 582, 1, 582, 1, 582, 1, 582, 1, 583, 1, 583, 1, 583, 1, 583, 1, 583, 1, 583, 1, 583, 1, 583, 1, 583, 1, 583, 1, 584, 1, 584, 1, 584, 1, 584, 1, 584, 1, 584, 1, 584, 1, 585, 1, 585, 1, 585, 1, 585, 1, 585, 1, 585, 1, 585, 1, 585, 1, 586, 1, 586, 1, 586, 1, 586, 1, 586, 1, 586, 1, 586, 1, 587, 1, 587, 1, 587, 1, 587, 1, 587, 1, 588, 1, 588, 1, 588, 1, 588, 1, 588, 1, 588, 1, 589, 1, 589, 1, 589, 1, 589, 1, 590, 1, 590, 1, 590, 1, 590, 1, 590, 1, 590, 1, 590, 1, 590, 1, 590, 1, 590, 1, 590, 1, 590, 1, 591, 1, 591, 1, 591, 1, 591, 1, 591, 1, 591, 1, 591, 1, 591, 1, 591, 1, 591, 1, 591, 1, 591, 1, 591, 1, 591, 1, 591, 1, 591, 1, 591, 1, 591, 1, 591, 1, 592, 1, 592, 1, 592, 1, 592, 1, 592, 1, 592, 1, 592, 1, 592, 1, 592, 1, 592, 1, 592, 1, 592, 1, 593, 1, 593, 1, 593, 1, 593, 1, 593, 1, 593, 1, 593, 1, 593, 1, 593, 1, 593, 1, 593, 1, 593, 1, 593, 1, 593, 1, 594, 1, 594, 1, 594, 1, 594, 1, 594, 1, 594, 1, 594, 1, 594, 1, 594, 1, 594, 1, 594, 1, 594, 1, 594, 1, 594, 1, 594, 1, 595, 1, 595, 1, 595, 1, 595, 1, 595, 1, 595, 1, 595, 1, 595, 1, 595, 1, 595, 1, 595, 1, 595, 1, 595, 1, 596, 1, 596, 1, 596, 1, 596, 1, 596, 1, 596, 1, 596, 1, 596, 1, 596, 1, 596, 1, 596, 1, 596, 1, 596, 1, 597, 1, 597, 1, 597, 1, 597, 1, 597, 1, 597, 1, 597, 1, 597, 1, 597, 1, 597, 1, 597, 1, 597, 1, 598, 1, 598, 1, 598, 1, 598, 1, 598, 1, 598, 1, 598, 1, 598, 1, 598, 1, 598, 1, 598, 1, 598, 1, 598, 1, 599, 1, 599, 1, 599, 1, 599, 1, 599, 1, 599, 1, 599, 1, 599, 1, 599, 1, 599, 1, 599, 1, 599, 1, 599, 1, 599, 1, 599, 1, 600, 1, 600, 1, 600, 1, 600, 1, 600, 1, 600, 1, 600, 1, 600, 1, 600, 1, 600, 1, 600, 1, 600, 1, 600, 1, 600, 1, 600, 1, 601, 1, 601, 1, 601, 1, 601, 1, 601, 1, 601, 1, 601, 1, 601, 1, 601, 1, 601, 1, 601, 1, 601, 1, 601, 1, 601, 1, 601, 1, 601, 1, 601, 1, 601, 1, 601, 1, 601, 1, 601, 1, 601, 1, 602, 1, 602, 1, 602, 1, 602, 1, 602, 1, 602, 1, 602, 1, 602, 1, 602, 1, 602, 1, 602, 1, 602, 1, 602, 1, 602, 1, 602, 1, 602, 1, 602, 1, 602, 1, 602, 1, 602, 1, 602, 1, 602, 1, 603, 1, 603, 1, 603, 1, 603, 1, 603, 1, 603, 1, 603, 1, 603, 1, 603, 1, 603, 1, 603, 1, 603, 1, 603, 1, 603, 1, 604, 1, 604, 1, 604, 1, 604, 1, 604, 1, 604, 1, 604, 1, 605, 1, 605, 1, 605, 1, 605, 1, 605, 1, 606, 1, 606, 1, 606, 1, 606, 1, 606, 1, 606, 1, 607, 1, 607, 1, 607, 1, 607, 1, 607, 1, 607, 1, 607, 1, 607, 1, 607, 1, 607, 1, 607, 1, 608, 1, 608, 1, 608, 1, 608, 1, 608, 1, 608, 1, 608, 1, 608, 1, 608, 1, 608, 1, 608, 1, 608, 1, 609, 1, 609, 1, 609, 1, 609, 1, 609, 1, 609, 1, 609, 1, 609, 1, 609, 1, 609, 1, 609, 1, 609, 1, 609, 1, 609, 1, 609, 1, 609, 1, 610, 1, 610, 1, 610, 1, 610, 1, 610, 1, 610, 1, 610, 1, 610, 1, 610, 1, 610, 1, 610, 1, 610, 1, 610, 1, 610, 1, 610, 1, 610, 1, 611, 1, 611, 1, 611, 1, 611, 1, 611, 1, 611, 1, 611, 1, 612, 1, 612, 1, 612, 1, 612, 1, 612, 1, 612, 1, 612, 1, 613, 1, 613, 1, 613, 1, 613, 1, 613, 1, 613, 1, 613, 1, 613, 1, 613, 1, 614, 1, 614, 1, 614, 1, 614, 1, 614, 1, 614, 1, 614, 1, 615, 1, 615, 1, 615, 1, 615, 1, 615, 1, 615, 1, 615, 1, 615, 1, 615, 1, 615, 1, 616, 1, 616, 1, 616, 1, 616, 1, 616, 1, 616, 1, 616, 1, 617, 1, 617, 1, 617, 1, 617, 1, 618, 1, 618, 1, 618, 1, 618, 1, 618, 1, 618, 1, 618, 1, 618, 1, 618, 1, 618, 1, 618, 1, 618, 1, 618, 1, 618, 1, 618, 1, 618, 1, 619, 1, 619, 1, 619, 1, 619, 1, 619, 1, 619, 1, 619, 1, 619, 1, 619, 1, 620, 1, 620, 1, 620, 1, 620, 1, 620, 1, 620, 1, 620, 1, 620, 1, 620, 1, 620, 1, 621, 1, 621, 1, 621, 1, 621, 1, 621, 1, 621, 1, 621, 1, 621, 1, 621, 1, 621, 1, 621, 1, 622, 1, 622, 1, 622, 1, 622, 1, 622, 1, 622, 1, 622, 1, 622, 1, 622, 1, 623, 1, 623, 1, 623, 1, 623, 1, 623, 1, 623, 1, 623, 1, 623, 1, 623, 1, 623, 1, 623, 1, 623, 1, 623, 1, 624, 1, 624, 1, 624, 1, 624, 1, 624, 1, 624, 1, 624, 1, 624, 1, 624, 1, 624, 1, 624, 1, 624, 1, 624, 1, 624, 1, 625, 1, 625, 1, 625, 1, 625, 1, 625, 1, 625, 1, 625, 1, 625, 1, 625, 1, 625, 1, 625, 1, 625, 1, 625, 1, 625, 1, 625, 1, 625, 1, 625, 1, 626, 1, 626, 1, 626, 1, 626, 1, 626, 1, 626, 1, 626, 1, 626, 1, 626, 1, 626, 1, 627, 1, 627, 1, 627, 1, 627, 1, 627, 1, 627, 1, 627, 1, 627, 1, 627, 1, 627, 1, 627, 1, 627, 1, 627, 1, 627, 1, 628, 1, 628, 1, 628, 1, 628, 1, 628, 1, 628, 1, 628, 1, 628, 1, 628, 1, 628, 1, 629, 1, 629, 1, 629, 1, 629, 1, 629, 1, 629, 1, 629, 1, 629, 1, 629, 1, 629, 1, 629, 1, 629, 1, 629, 1, 629, 1, 629, 1, 630, 1, 630, 1, 630, 1, 630, 1, 630, 1, 630, 1, 630, 1, 630, 1, 630, 1, 630, 1, 630, 1, 630, 1, 630, 1, 630, 1, 630, 1, 630, 1, 630, 1, 631, 1, 631, 1, 631, 1, 631, 1, 632, 1, 632, 1, 632, 1, 632, 1, 632, 1, 632, 1, 632, 1, 632, 1, 632, 1, 632, 1, 632, 1, 632, 1, 632, 1, 632, 1, 632, 1, 632, 1, 632, 1, 632, 1, 632, 1, 632, 1, 633, 1, 633, 1, 633, 1, 633, 1, 633, 1, 633, 1, 633, 1, 633, 1, 633, 1, 633, 1, 634, 1, 634, 1, 634, 1, 634, 1, 634, 1, 634, 1, 634, 1, 634, 1, 634, 1, 634, 1, 634, 1, 634, 1, 634, 1, 634, 1, 634, 1, 634, 1, 634, 1, 634, 1, 634, 1, 634, 1, 634, 1, 634, 1, 635, 1, 635, 1, 635, 1, 635, 1, 635, 1, 635, 1, 635, 1, 635, 1, 635, 1, 635, 1, 635, 1, 635, 1, 635, 1, 636, 1, 636, 1, 636, 1, 636, 1, 636, 1, 636, 1, 636, 1, 636, 1, 637, 1, 637, 1, 637, 1, 637, 1, 637, 1, 637, 1, 637, 1, 637, 1, 638, 1, 638, 1, 638, 1, 638, 1, 638, 1, 638, 1, 638, 1, 638, 1, 638, 1, 638, 1, 639, 1, 639, 5, 639, 6323, 8, 639, 10, 639, 12, 639, 6326, 9, 639, 1, 640, 1, 640, 1, 640, 1, 640, 1, 640, 1, 640, 3, 640, 6334, 8, 640, 1, 641, 1, 641, 3, 641, 6338, 8, 641, 1, 642, 1, 642, 3, 642, 6342, 8, 642, 1, 643, 1, 643, 1, 643, 1, 644, 1, 644, 1, 644, 1, 644, 5, 644, 6351, 8, 644, 10, 644, 12, 644, 6354, 9, 644, 1, 645, 1, 645, 1, 645, 1, 646, 1, 646, 1, 646, 1, 646, 5, 646, 6363, 8, 646, 10, 646, 12, 646, 6366, 9, 646, 1, 647, 1, 647, 1, 647, 1, 647, 1, 648, 1, 648, 1, 648, 1, 648, 1, 649, 1, 649, 1, 649, 1, 649, 1, 650, 1, 650, 1, 650, 1, 650, 1, 651, 1, 651, 1, 651, 1, 652, 1, 652, 1, 652, 1, 652, 5, 652, 6391, 8, 652, 10, 652, 12, 652, 6394, 9, 652, 1, 653, 1, 653, 1, 653, 1, 653, 1, 653, 1, 653, 1, 654, 1, 654, 1, 654, 1, 655, 1, 655, 1, 655, 1, 655, 1, 656, 1, 656, 3, 656, 6411, 8, 656, 1, 656, 1, 656, 1, 656, 1, 656, 1, 656, 1, 657, 1, 657, 5, 657, 6420, 8, 657, 10, 657, 12, 657, 6423, 9, 657, 1, 658, 1, 658, 1, 658, 1, 659, 1, 659, 1, 659, 5, 659, 6431, 8, 659, 10, 659, 12, 659, 6434, 9, 659, 1, 660, 1, 660, 1, 660, 1, 661, 1, 661, 1, 661, 1, 662, 1, 662, 1, 662, 1, 663, 1, 663, 1, 663, 5, 663, 6448, 8, 663, 10, 663, 12, 663, 6451, 9, 663, 1, 664, 1, 664, 1, 664, 1, 665, 1, 665, 1, 665, 1, 666, 1, 666, 1, 667, 1, 667, 1, 667, 1, 667, 1, 667, 1, 667, 1, 668, 1, 668, 1, 668, 3, 668, 6470, 8, 668, 1, 668, 1, 668, 3, 668, 6474, 8, 668, 1, 668, 3, 668, 6477, 8, 668, 1, 668, 1, 668, 1, 668, 1, 668, 3, 668, 6483, 8, 668, 1, 668, 3, 668, 6486, 8, 668, 1, 668, 1, 668, 1, 668, 3, 668, 6491, 8, 668, 1, 668, 1, 668, 3, 668, 6495, 8, 668, 1, 669, 4, 669, 6498, 8, 669, 11, 669, 12, 669, 6499, 1, 670, 1, 670, 1, 670, 5, 670, 6505, 8, 670, 10, 670, 12, 670, 6508, 9, 670, 1, 671, 1, 671, 1, 671, 1, 671, 1, 671, 1, 671, 1, 671, 1, 671, 5, 671, 6518, 8, 671, 10, 671, 12, 671, 6521, 9, 671, 1, 671, 1, 671, 1, 672, 4, 672, 6526, 8, 672, 11, 672, 12, 672, 6527, 1, 672, 1, 672, 1, 673, 1, 673, 3, 673, 6534, 8, 673, 1, 673, 3, 673, 6537, 8, 673, 1, 673, 1, 673, 1, 674, 1, 674, 1, 674, 1, 674, 5, 674, 6545, 8, 674, 10, 674, 12, 674, 6548, 9, 674, 1, 674, 1, 674, 1, 675, 1, 675, 1, 675, 1, 675, 5, 675, 6556, 8, 675, 10, 675, 12, 675, 6559, 9, 675, 1, 675, 1, 675, 1, 675, 4, 675, 6564, 8, 675, 11, 675, 12, 675, 6565, 1, 675, 1, 675, 4, 675, 6570, 8, 675, 11, 675, 12, 675, 6571, 1, 675, 5, 675, 6575, 8, 675, 10, 675, 12, 675, 6578, 9, 675, 1, 675, 5, 675, 6581, 8, 675, 10, 675, 12, 675, 6584, 9, 675, 1, 675, 1, 675, 1, 675, 1, 675, 1, 675, 1, 676, 1, 676, 1, 676, 1, 676, 5, 676, 6595, 8, 676, 10, 676, 12, 676, 6598, 9, 676, 1, 676, 1, 676, 1, 676, 4, 676, 6603, 8, 676, 11, 676, 12, 676, 6604, 1, 676, 1, 676, 4, 676, 6609, 8, 676, 11, 676, 12, 676, 6610, 1, 676, 3, 676, 6614, 8, 676, 5, 676, 6616, 8, 676, 10, 676, 12, 676, 6619, 9, 676, 1, 676, 4, 676, 6622, 8, 676, 11, 676, 12, 676, 6623, 1, 676, 4, 676, 6627, 8, 676, 11, 676, 12, 676, 6628, 1, 676, 5, 676, 6632, 8, 676, 10, 676, 12, 676, 6635, 9, 676, 1, 676, 3, 676, 6638, 8, 676, 1, 676, 1, 676, 1, 677, 1, 677, 1, 677, 1, 677, 5, 677, 6646, 8, 677, 10, 677, 12, 677, 6649, 9, 677, 1, 677, 5, 677, 6652, 8, 677, 10, 677, 12, 677, 6655, 9, 677, 1, 677, 1, 677, 5, 677, 6659, 8, 677, 10, 677, 12, 677, 6662, 9, 677, 3, 677, 6664, 8, 677, 1, 678, 1, 678, 1, 678, 1, 679, 1, 679, 1, 680, 1, 680, 1, 680, 1, 680, 1, 680, 1, 681, 1, 681, 3, 681, 6678, 8, 681, 1, 681, 1, 681, 1, 682, 1, 682, 1, 682, 1, 682, 1, 682, 1, 682, 1, 682, 1, 682, 1, 682, 1, 682, 1, 682, 1, 682, 1, 682, 1, 682, 1, 682, 1, 682, 1, 682, 1, 682, 1, 682, 1, 682, 3, 682, 6702, 8, 682, 1, 682, 5, 682, 6705, 8, 682, 10, 682, 12, 682, 6708, 9, 682, 1, 683, 1, 683, 1, 683, 1, 683, 1, 683, 1, 684, 1, 684, 3, 684, 6717, 8, 684, 1, 684, 1, 684, 1, 685, 1, 685, 1, 685, 1, 685, 1, 685, 5, 685, 6726, 8, 685, 10, 685, 12, 685, 6729, 9, 685, 1, 686, 1, 686, 1, 686, 1, 686, 1, 686, 1, 687, 1, 687, 1, 687, 1, 687, 1, 687, 1, 687, 1, 688, 1, 688, 1, 688, 1, 688, 1, 688, 1, 689, 1, 689, 1, 689, 1, 689, 1, 689, 1, 690, 1, 690, 1, 690, 1, 690, 1, 690, 1, 691, 1, 691, 1, 691, 1, 691, 1, 691, 1, 692, 1, 692, 1, 692, 1, 692, 1, 692, 1, 693, 4, 693, 6768, 8, 693, 11, 693, 12, 693, 6769, 1, 693, 1, 693, 5, 693, 6774, 8, 693, 10, 693, 12, 693, 6777, 9, 693, 3, 693, 6779, 8, 693, 1, 694, 1, 694, 3, 694, 6783, 8, 694, 1, 694, 1, 694, 1, 694, 1, 694, 1, 694, 1, 694, 1, 694, 0, 0, 695, 5, 1, 7, 2, 9, 3, 11, 4, 13, 5, 15, 6, 17, 7, 19, 8, 21, 9, 23, 10, 25, 11, 27, 12, 29, 13, 31, 14, 33, 15, 35, 16, 37, 17, 39, 18, 41, 19, 43, 20, 45, 21, 47, 22, 49, 23, 51, 24, 53, 25, 55, 26, 57, 27, 59, 28, 61, 29, 63, 0, 65, 0, 67, 0, 69, 0, 71, 30, 73, 31, 75, 32, 77, 33, 79, 34, 81, 35, 83, 36, 85, 37, 87, 38, 89, 39, 91, 40, 93, 41, 95, 42, 97, 43, 99, 44, 101, 45, 103, 46, 105, 47, 107, 48, 109, 49, 111, 50, 113, 51, 115, 52, 117, 53, 119, 54, 121, 55, 123, 56, 125, 57, 127, 58, 129, 59, 131, 60, 133, 61, 135, 62, 137, 63, 139, 64, 141, 65, 143, 66, 145, 67, 147, 68, 149, 69, 151, 70, 153, 71, 155, 72, 157, 73, 159, 74, 161, 75, 163, 76, 165, 77, 167, 78, 169, 79, 171, 80, 173, 81, 175, 82, 177, 83, 179, 84, 181, 85, 183, 86, 185, 87, 187, 88, 189, 89, 191, 90, 193, 91, 195, 92, 197, 93, 199, 94, 201, 95, 203, 96, 205, 97, 207, 98, 209, 99, 211, 100, 213, 101, 215, 102, 217, 103, 219, 104, 221, 105, 223, 106, 225, 107, 227, 108, 229, 109, 231, 110, 233, 111, 235, 112, 237, 113, 239, 114, 241, 115, 243, 116, 245, 117, 247, 118, 249, 119, 251, 120, 253, 121, 255, 122, 257, 123, 259, 124, 261, 125, 263, 126, 265, 127, 267, 128, 269, 129, 271, 130, 273, 131, 275, 132, 277, 133, 279, 134, 281, 135, 283, 136, 285, 137, 287, 138, 289, 139, 291, 140, 293, 141, 295, 142, 297, 143, 299, 144, 301, 145, 303, 146, 305, 147, 307, 148, 309, 149, 311, 150, 313, 151, 315, 152, 317, 153, 319, 154, 321, 155, 323, 156, 325, 157, 327, 158, 329, 159, 331, 160, 333, 161, 335, 162, 337, 163, 339, 164, 341, 165, 343, 166, 345, 167, 347, 168, 349, 169, 351, 170, 353, 171, 355, 172, 357, 173, 359, 174, 361, 175, 363, 176, 365, 177, 367, 178, 369, 179, 371, 180, 373, 181, 375, 182, 377, 183, 379, 184, 381, 185, 383, 186, 385, 187, 387, 188, 389, 189, 391, 190, 393, 191, 395, 192, 397, 193, 399, 194, 401, 195, 403, 196, 405, 197, 407, 198, 409, 199, 411, 200, 413, 201, 415, 202, 417, 203, 419, 204, 421, 205, 423, 206, 425, 207, 427, 208, 429, 209, 431, 210, 433, 211, 435, 212, 437, 213, 439, 214, 441, 215, 443, 216, 445, 217, 447, 218, 449, 219, 451, 220, 453, 221, 455, 222, 457, 223, 459, 224, 461, 225, 463, 226, 465, 227, 467, 228, 469, 229, 471, 230, 473, 231, 475, 232, 477, 233, 479, 234, 481, 235, 483, 236, 485, 237, 487, 238, 489, 239, 491, 240, 493, 241, 495, 242, 497, 243, 499, 244, 501, 245, 503, 246, 505, 247, 507, 248, 509, 249, 511, 250, 513, 251, 515, 252, 517, 253, 519, 254, 521, 255, 523, 256, 525, 257, 527, 258, 529, 259, 531, 260, 533, 261, 535, 262, 537, 263, 539, 264, 541, 265, 543, 266, 545, 267, 547, 268, 549, 269, 551, 270, 553, 271, 555, 272, 557, 273, 559, 274, 561, 275, 563, 276, 565, 277, 567, 278, 569, 279, 571, 280, 573, 281, 575, 282, 577, 283, 579, 284, 581, 285, 583, 286, 585, 287, 587, 288, 589, 289, 591, 290, 593, 291, 595, 292, 597, 293, 599, 294, 601, 295, 603, 296, 605, 297, 607, 298, 609, 299, 611, 300, 613, 301, 615, 302, 617, 303, 619, 304, 621, 305, 623, 306, 625, 307, 627, 308, 629, 309, 631, 310, 633, 311, 635, 312, 637, 313, 639, 314, 641, 315, 643, 316, 645, 317, 647, 318, 649, 319, 651, 320, 653, 321, 655, 322, 657, 323, 659, 324, 661, 325, 663, 326, 665, 327, 667, 328, 669, 329, 671, 330, 673, 331, 675, 332, 677, 333, 679, 334, 681, 335, 683, 336, 685, 337, 687, 338, 689, 339, 691, 340, 693, 341, 695, 342, 697, 343, 699, 344, 701, 345, 703, 346, 705, 347, 707, 348, 709, 349, 711, 350, 713, 351, 715, 352, 717, 353, 719, 354, 721, 355, 723, 356, 725, 357, 727, 358, 729, 359, 731, 360, 733, 361, 735, 362, 737, 363, 739, 364, 741, 365, 743, 366, 745, 367, 747, 368, 749, 369, 751, 370, 753, 371, 755, 372, 757, 373, 759, 374, 761, 375, 763, 376, 765, 377, 767, 378, 769, 379, 771, 380, 773, 381, 775, 382, 777, 383, 779, 384, 781, 385, 783, 386, 785, 387, 787, 388, 789, 389, 791, 390, 793, 391, 795, 392, 797, 393, 799, 394, 801, 395, 803, 396, 805, 397, 807, 398, 809, 399, 811, 400, 813, 401, 815, 402, 817, 403, 819, 404, 821, 405, 823, 406, 825, 407, 827, 408, 829, 409, 831, 410, 833, 411, 835, 412, 837, 413, 839, 414, 841, 415, 843, 416, 845, 417, 847, 418, 849, 419, 851, 420, 853, 421, 855, 422, 857, 423, 859, 424, 861, 425, 863, 426, 865, 427, 867, 428, 869, 429, 871, 430, 873, 431, 875, 432, 877, 433, 879, 434, 881, 435, 883, 436, 885, 437, 887, 438, 889, 439, 891, 440, 893, 441, 895, 442, 897, 443, 899, 444, 901, 445, 903, 446, 905, 447, 907, 448, 909, 449, 911, 450, 913, 451, 915, 452, 917, 453, 919, 454, 921, 455, 923, 456, 925, 457, 927, 458, 929, 459, 931, 460, 933, 461, 935, 462, 937, 463, 939, 464, 941, 465, 943, 466, 945, 467, 947, 468, 949, 469, 951, 470, 953, 471, 955, 472, 957, 473, 959, 474, 961, 475, 963, 476, 965, 477, 967, 478, 969, 479, 971, 480, 973, 481, 975, 482, 977, 483, 979, 484, 981, 485, 983, 486, 985, 487, 987, 488, 989, 489, 991, 490, 993, 491, 995, 492, 997, 493, 999, 494, 1001, 495, 1003, 496, 1005, 497, 1007, 498, 1009, 499, 1011, 500, 1013, 501, 1015, 502, 1017, 503, 1019, 504, 1021, 505, 1023, 506, 1025, 507, 1027, 508, 1029, 509, 1031, 510, 1033, 511, 1035, 512, 1037, 513, 1039, 514, 1041, 515, 1043, 516, 1045, 517, 1047, 518, 1049, 519, 1051, 520, 1053, 521, 1055, 522, 1057, 523, 1059, 524, 1061, 525, 1063, 526, 1065, 527, 1067, 528, 1069, 529, 1071, 530, 1073, 531, 1075, 532, 1077, 533, 1079, 534, 1081, 535, 1083, 536, 1085, 537, 1087, 538, 1089, 539, 1091, 540, 1093, 541, 1095, 542, 1097, 543, 1099, 544, 1101, 545, 1103, 546, 1105, 547, 1107, 548, 1109, 549, 1111, 550, 1113, 551, 1115, 552, 1117, 553, 1119, 554, 1121, 555, 1123, 556, 1125, 557, 1127, 558, 1129, 559, 1131, 560, 1133, 561, 1135, 562, 1137, 563, 1139, 564, 1141, 565, 1143, 566, 1145, 567, 1147, 568, 1149, 569, 1151, 570, 1153, 571, 1155, 572, 1157, 573, 1159, 574, 1161, 575, 1163, 576, 1165, 577, 1167, 578, 1169, 579, 1171, 580, 1173, 581, 1175, 582, 1177, 583, 1179, 584, 1181, 585, 1183, 586, 1185, 587, 1187, 588, 1189, 589, 1191, 590, 1193, 591, 1195, 592, 1197, 593, 1199, 594, 1201, 595, 1203, 596, 1205, 597, 1207, 598, 1209, 599, 1211, 600, 1213, 601, 1215, 602, 1217, 603, 1219, 604, 1221, 605, 1223, 606, 1225, 607, 1227, 608, 1229, 609, 1231, 610, 1233, 611, 1235, 612, 1237, 613, 1239, 614, 1241, 615, 1243, 616, 1245, 617, 1247, 618, 1249, 619, 1251, 620, 1253, 621, 1255, 622, 1257, 623, 1259, 624, 1261, 625, 1263, 626, 1265, 627, 1267, 628, 1269, 629, 1271, 630, 1273, 631, 1275, 632, 1277, 633, 1279, 634, 1281, 635, 1283, 636, 1285, 0, 1287, 0, 1289, 0, 1291, 637, 1293, 638, 1295, 639, 1297, 640, 1299, 641, 1301, 642, 1303, 643, 1305, 644, 1307, 645, 1309, 646, 1311, 0, 1313, 647, 1315, 648, 1317, 649, 1319, 0, 1321, 650, 1323, 651, 1325, 652, 1327, 653, 1329, 654, 1331, 655, 1333, 656, 1335, 657, 1337, 658, 1339, 659, 1341, 660, 1343, 0, 1345, 661, 1347, 662, 1349, 663, 1351, 664, 1353, 665, 1355, 666, 1357, 667, 1359, 668, 1361, 669, 1363, 670, 1365, 671, 1367, 672, 1369, 0, 1371, 673, 1373, 674, 1375, 0, 1377, 0, 1379, 0, 1381, 675, 1383, 0, 1385, 0, 1387, 679, 1389, 676, 1391, 677, 1393, 678, 5, 0, 1, 2, 3, 4, 51, 1, 0, 48, 57, 2, 0, 43, 43, 45, 45, 9, 0, 33, 33, 35, 35, 37, 38, 42, 42, 60, 64, 94, 94, 96, 96, 124, 124, 126, 126, 2, 0, 42, 43, 60, 62, 8, 0, 33, 33, 35, 35, 37, 38, 63, 64, 94, 94, 96, 96, 124, 124, 126, 126, 2, 0, 65, 65, 97, 97, 2, 0, 76, 76, 108, 108, 2, 0, 78, 78, 110, 110, 2, 0, 89, 89, 121, 121, 2, 0, 83, 83, 115, 115, 2, 0, 69, 69, 101, 101, 2, 0, 90, 90, 122, 122, 2, 0, 68, 68, 100, 100, 2, 0, 82, 82, 114, 114, 2, 0, 67, 67, 99, 99, 2, 0, 77, 77, 109, 109, 2, 0, 84, 84, 116, 116, 2, 0, 73, 73, 105, 105, 2, 0, 66, 66, 98, 98, 2, 0, 79, 79, 111, 111, 2, 0, 72, 72, 104, 104, 2, 0, 75, 75, 107, 107, 2, 0, 85, 85, 117, 117, 2, 0, 71, 71, 103, 103, 2, 0, 80, 80, 112, 112, 2, 0, 70, 70, 102, 102, 2, 0, 88, 88, 120, 120, 2, 0, 86, 86, 118, 118, 2, 0, 81, 81, 113, 113, 2, 0, 87, 87, 119, 119, 2, 0, 74, 74, 106, 106, 9, 0, 65, 90, 95, 95, 97, 122, 170, 170, 181, 181, 186, 186, 192, 214, 216, 246, 248, 255, 2, 0, 256, 55295, 57344, 65535, 1, 0, 55296, 56319, 1, 0, 56320, 57343, 2, 0, 0, 0, 34, 34, 1, 0, 34, 34, 1, 0, 39, 39, 1, 0, 48, 49, 3, 0, 48, 57, 65, 70, 97, 102, 3, 0, 65, 90, 95, 95, 97, 122, 5, 0, 36, 36, 48, 57, 65, 90, 95, 95, 97, 122, 2, 0, 34, 34, 92, 92, 2, 0, 9, 9, 32, 32, 2, 0, 10, 10, 13, 13, 2, 0, 42, 42, 47, 47, 4, 0, 10, 10, 13, 13, 34, 34, 92, 92, 3, 0, 10, 10, 13, 13, 34, 34, 3, 0, 85, 85, 117, 117, 120, 120, 2, 0, 39, 39, 92, 92, 1, 0, 36, 36, 6863, 0, 5, 1, 0, 0, 0, 0, 7, 1, 0, 0, 0, 0, 9, 1, 0, 0, 0, 0, 11, 1, 0, 0, 0, 0, 13, 1, 0, 0, 0, 0, 15, 1, 0, 0, 0, 0, 17, 1, 0, 0, 0, 0, 19, 1, 0, 0, 0, 0, 21, 1, 0, 0, 0, 0, 23, 1, 0, 0, 0, 0, 25, 1, 0, 0, 0, 0, 27, 1, 0, 0, 0, 0, 29, 1, 0, 0, 0, 0, 31, 1, 0, 0, 0, 0, 33, 1, 0, 0, 0, 0, 35, 1, 0, 0, 0, 0, 37, 1, 0, 0, 0, 0, 39, 1, 0, 0, 0, 0, 41, 1, 0, 0, 0, 0, 43, 1, 0, 0, 0, 0, 45, 1, 0, 0, 0, 0, 47, 1, 0, 0, 0, 0, 49, 1, 0, 0, 0, 0, 51, 1, 0, 0, 0, 0, 53, 1, 0, 0, 0, 0, 55, 1, 0, 0, 0, 0, 57, 1, 0, 0, 0, 0, 59, 1, 0, 0, 0, 0, 61, 1, 0, 0, 0, 0, 63, 1, 0, 0, 0, 0, 71, 1, 0, 0, 0, 0, 73, 1, 0, 0, 0, 0, 75, 1, 0, 0, 0, 0, 77, 1, 0, 0, 0, 0, 79, 1, 0, 0, 0, 0, 81, 1, 0, 0, 0, 0, 83, 1, 0, 0, 0, 0, 85, 1, 0, 0, 0, 0, 87, 1, 0, 0, 0, 0, 89, 1, 0, 0, 0, 0, 91, 1, 0, 0, 0, 0, 93, 1, 0, 0, 0, 0, 95, 1, 0, 0, 0, 0, 97, 1, 0, 0, 0, 0, 99, 1, 0, 0, 0, 0, 101, 1, 0, 0, 0, 0, 103, 1, 0, 0, 0, 0, 105, 1, 0, 0, 0, 0, 107, 1, 0, 0, 0, 0, 109, 1, 0, 0, 0, 0, 111, 1, 0, 0, 0, 0, 113, 1, 0, 0, 0, 0, 115, 1, 0, 0, 0, 0, 117, 1, 0, 0, 0, 0, 119, 1, 0, 0, 0, 0, 121, 1, 0, 0, 0, 0, 123, 1, 0, 0, 0, 0, 125, 1, 0, 0, 0, 0, 127, 1, 0, 0, 0, 0, 129, 1, 0, 0, 0, 0, 131, 1, 0, 0, 0, 0, 133, 1, 0, 0, 0, 0, 135, 1, 0, 0, 0, 0, 137, 1, 0, 0, 0, 0, 139, 1, 0, 0, 0, 0, 141, 1, 0, 0, 0, 0, 143, 1, 0, 0, 0, 0, 145, 1, 0, 0, 0, 0, 147, 1, 0, 0, 0, 0, 149, 1, 0, 0, 0, 0, 151, 1, 0, 0, 0, 0, 153, 1, 0, 0, 0, 0, 155, 1, 0, 0, 0, 0, 157, 1, 0, 0, 0, 0, 159, 1, 0, 0, 0, 0, 161, 1, 0, 0, 0, 0, 163, 1, 0, 0, 0, 0, 165, 1, 0, 0, 0, 0, 167, 1, 0, 0, 0, 0, 169, 1, 0, 0, 0, 0, 171, 1, 0, 0, 0, 0, 173, 1, 0, 0, 0, 0, 175, 1, 0, 0, 0, 0, 177, 1, 0, 0, 0, 0, 179, 1, 0, 0, 0, 0, 181, 1, 0, 0, 0, 0, 183, 1, 0, 0, 0, 0, 185, 1, 0, 0, 0, 0, 187, 1, 0, 0, 0, 0, 189, 1, 0, 0, 0, 0, 191, 1, 0, 0, 0, 0, 193, 1, 0, 0, 0, 0, 195, 1, 0, 0, 0, 0, 197, 1, 0, 0, 0, 0, 199, 1, 0, 0, 0, 0, 201, 1, 0, 0, 0, 0, 203, 1, 0, 0, 0, 0, 205, 1, 0, 0, 0, 0, 207, 1, 0, 0, 0, 0, 209, 1, 0, 0, 0, 0, 211, 1, 0, 0, 0, 0, 213, 1, 0, 0, 0, 0, 215, 1, 0, 0, 0, 0, 217, 1, 0, 0, 0, 0, 219, 1, 0, 0, 0, 0, 221, 1, 0, 0, 0, 0, 223, 1, 0, 0, 0, 0, 225, 1, 0, 0, 0, 0, 227, 1, 0, 0, 0, 0, 229, 1, 0, 0, 0, 0, 231, 1, 0, 0, 0, 0, 233, 1, 0, 0, 0, 0, 235, 1, 0, 0, 0, 0, 237, 1, 0, 0, 0, 0, 239, 1, 0, 0, 0, 0, 241, 1, 0, 0, 0, 0, 243, 1, 0, 0, 0, 0, 245, 1, 0, 0, 0, 0, 247, 1, 0, 0, 0, 0, 249, 1, 0, 0, 0, 0, 251, 1, 0, 0, 0, 0, 253, 1, 0, 0, 0, 0, 255, 1, 0, 0, 0, 0, 257, 1, 0, 0, 0, 0, 259, 1, 0, 0, 0, 0, 261, 1, 0, 0, 0, 0, 263, 1, 0, 0, 0, 0, 265, 1, 0, 0, 0, 0, 267, 1, 0, 0, 0, 0, 269, 1, 0, 0, 0, 0, 271, 1, 0, 0, 0, 0, 273, 1, 0, 0, 0, 0, 275, 1, 0, 0, 0, 0, 277, 1, 0, 0, 0, 0, 279, 1, 0, 0, 0, 0, 281, 1, 0, 0, 0, 0, 283, 1, 0, 0, 0, 0, 285, 1, 0, 0, 0, 0, 287, 1, 0, 0, 0, 0, 289, 1, 0, 0, 0, 0, 291, 1, 0, 0, 0, 0, 293, 1, 0, 0, 0, 0, 295, 1, 0, 0, 0, 0, 297, 1, 0, 0, 0, 0, 299, 1, 0, 0, 0, 0, 301, 1, 0, 0, 0, 0, 303, 1, 0, 0, 0, 0, 305, 1, 0, 0, 0, 0, 307, 1, 0, 0, 0, 0, 309, 1, 0, 0, 0, 0, 311, 1, 0, 0, 0, 0, 313, 1, 0, 0, 0, 0, 315, 1, 0, 0, 0, 0, 317, 1, 0, 0, 0, 0, 319, 1, 0, 0, 0, 0, 321, 1, 0, 0, 0, 0, 323, 1, 0, 0, 0, 0, 325, 1, 0, 0, 0, 0, 327, 1, 0, 0, 0, 0, 329, 1, 0, 0, 0, 0, 331, 1, 0, 0, 0, 0, 333, 1, 0, 0, 0, 0, 335, 1, 0, 0, 0, 0, 337, 1, 0, 0, 0, 0, 339, 1, 0, 0, 0, 0, 341, 1, 0, 0, 0, 0, 343, 1, 0, 0, 0, 0, 345, 1, 0, 0, 0, 0, 347, 1, 0, 0, 0, 0, 349, 1, 0, 0, 0, 0, 351, 1, 0, 0, 0, 0, 353, 1, 0, 0, 0, 0, 355, 1, 0, 0, 0, 0, 357, 1, 0, 0, 0, 0, 359, 1, 0, 0, 0, 0, 361, 1, 0, 0, 0, 0, 363, 1, 0, 0, 0, 0, 365, 1, 0, 0, 0, 0, 367, 1, 0, 0, 0, 0, 369, 1, 0, 0, 0, 0, 371, 1, 0, 0, 0, 0, 373, 1, 0, 0, 0, 0, 375, 1, 0, 0, 0, 0, 377, 1, 0, 0, 0, 0, 379, 1, 0, 0, 0, 0, 381, 1, 0, 0, 0, 0, 383, 1, 0, 0, 0, 0, 385, 1, 0, 0, 0, 0, 387, 1, 0, 0, 0, 0, 389, 1, 0, 0, 0, 0, 391, 1, 0, 0, 0, 0, 393, 1, 0, 0, 0, 0, 395, 1, 0, 0, 0, 0, 397, 1, 0, 0, 0, 0, 399, 1, 0, 0, 0, 0, 401, 1, 0, 0, 0, 0, 403, 1, 0, 0, 0, 0, 405, 1, 0, 0, 0, 0, 407, 1, 0, 0, 0, 0, 409, 1, 0, 0, 0, 0, 411, 1, 0, 0, 0, 0, 413, 1, 0, 0, 0, 0, 415, 1, 0, 0, 0, 0, 417, 1, 0, 0, 0, 0, 419, 1, 0, 0, 0, 0, 421, 1, 0, 0, 0, 0, 423, 1, 0, 0, 0, 0, 425, 1, 0, 0, 0, 0, 427, 1, 0, 0, 0, 0, 429, 1, 0, 0, 0, 0, 431, 1, 0, 0, 0, 0, 433, 1, 0, 0, 0, 0, 435, 1, 0, 0, 0, 0, 437, 1, 0, 0, 0, 0, 439, 1, 0, 0, 0, 0, 441, 1, 0, 0, 0, 0, 443, 1, 0, 0, 0, 0, 445, 1, 0, 0, 0, 0, 447, 1, 0, 0, 0, 0, 449, 1, 0, 0, 0, 0, 451, 1, 0, 0, 0, 0, 453, 1, 0, 0, 0, 0, 455, 1, 0, 0, 0, 0, 457, 1, 0, 0, 0, 0, 459, 1, 0, 0, 0, 0, 461, 1, 0, 0, 0, 0, 463, 1, 0, 0, 0, 0, 465, 1, 0, 0, 0, 0, 467, 1, 0, 0, 0, 0, 469, 1, 0, 0, 0, 0, 471, 1, 0, 0, 0, 0, 473, 1, 0, 0, 0, 0, 475, 1, 0, 0, 0, 0, 477, 1, 0, 0, 0, 0, 479, 1, 0, 0, 0, 0, 481, 1, 0, 0, 0, 0, 483, 1, 0, 0, 0, 0, 485, 1, 0, 0, 0, 0, 487, 1, 0, 0, 0, 0, 489, 1, 0, 0, 0, 0, 491, 1, 0, 0, 0, 0, 493, 1, 0, 0, 0, 0, 495, 1, 0, 0, 0, 0, 497, 1, 0, 0, 0, 0, 499, 1, 0, 0, 0, 0, 501, 1, 0, 0, 0, 0, 503, 1, 0, 0, 0, 0, 505, 1, 0, 0, 0, 0, 507, 1, 0, 0, 0, 0, 509, 1, 0, 0, 0, 0, 511, 1, 0, 0, 0, 0, 513, 1, 0, 0, 0, 0, 515, 1, 0, 0, 0, 0, 517, 1, 0, 0, 0, 0, 519, 1, 0, 0, 0, 0, 521, 1, 0, 0, 0, 0, 523, 1, 0, 0, 0, 0, 525, 1, 0, 0, 0, 0, 527, 1, 0, 0, 0, 0, 529, 1, 0, 0, 0, 0, 531, 1, 0, 0, 0, 0, 533, 1, 0, 0, 0, 0, 535, 1, 0, 0, 0, 0, 537, 1, 0, 0, 0, 0, 539, 1, 0, 0, 0, 0, 541, 1, 0, 0, 0, 0, 543, 1, 0, 0, 0, 0, 545, 1, 0, 0, 0, 0, 547, 1, 0, 0, 0, 0, 549, 1, 0, 0, 0, 0, 551, 1, 0, 0, 0, 0, 553, 1, 0, 0, 0, 0, 555, 1, 0, 0, 0, 0, 557, 1, 0, 0, 0, 0, 559, 1, 0, 0, 0, 0, 561, 1, 0, 0, 0, 0, 563, 1, 0, 0, 0, 0, 565, 1, 0, 0, 0, 0, 567, 1, 0, 0, 0, 0, 569, 1, 0, 0, 0, 0, 571, 1, 0, 0, 0, 0, 573, 1, 0, 0, 0, 0, 575, 1, 0, 0, 0, 0, 577, 1, 0, 0, 0, 0, 579, 1, 0, 0, 0, 0, 581, 1, 0, 0, 0, 0, 583, 1, 0, 0, 0, 0, 585, 1, 0, 0, 0, 0, 587, 1, 0, 0, 0, 0, 589, 1, 0, 0, 0, 0, 591, 1, 0, 0, 0, 0, 593, 1, 0, 0, 0, 0, 595, 1, 0, 0, 0, 0, 597, 1, 0, 0, 0, 0, 599, 1, 0, 0, 0, 0, 601, 1, 0, 0, 0, 0, 603, 1, 0, 0, 0, 0, 605, 1, 0, 0, 0, 0, 607, 1, 0, 0, 0, 0, 609, 1, 0, 0, 0, 0, 611, 1, 0, 0, 0, 0, 613, 1, 0, 0, 0, 0, 615, 1, 0, 0, 0, 0, 617, 1, 0, 0, 0, 0, 619, 1, 0, 0, 0, 0, 621, 1, 0, 0, 0, 0, 623, 1, 0, 0, 0, 0, 625, 1, 0, 0, 0, 0, 627, 1, 0, 0, 0, 0, 629, 1, 0, 0, 0, 0, 631, 1, 0, 0, 0, 0, 633, 1, 0, 0, 0, 0, 635, 1, 0, 0, 0, 0, 637, 1, 0, 0, 0, 0, 639, 1, 0, 0, 0, 0, 641, 1, 0, 0, 0, 0, 643, 1, 0, 0, 0, 0, 645, 1, 0, 0, 0, 0, 647, 1, 0, 0, 0, 0, 649, 1, 0, 0, 0, 0, 651, 1, 0, 0, 0, 0, 653, 1, 0, 0, 0, 0, 655, 1, 0, 0, 0, 0, 657, 1, 0, 0, 0, 0, 659, 1, 0, 0, 0, 0, 661, 1, 0, 0, 0, 0, 663, 1, 0, 0, 0, 0, 665, 1, 0, 0, 0, 0, 667, 1, 0, 0, 0, 0, 669, 1, 0, 0, 0, 0, 671, 1, 0, 0, 0, 0, 673, 1, 0, 0, 0, 0, 675, 1, 0, 0, 0, 0, 677, 1, 0, 0, 0, 0, 679, 1, 0, 0, 0, 0, 681, 1, 0, 0, 0, 0, 683, 1, 0, 0, 0, 0, 685, 1, 0, 0, 0, 0, 687, 1, 0, 0, 0, 0, 689, 1, 0, 0, 0, 0, 691, 1, 0, 0, 0, 0, 693, 1, 0, 0, 0, 0, 695, 1, 0, 0, 0, 0, 697, 1, 0, 0, 0, 0, 699, 1, 0, 0, 0, 0, 701, 1, 0, 0, 0, 0, 703, 1, 0, 0, 0, 0, 705, 1, 0, 0, 0, 0, 707, 1, 0, 0, 0, 0, 709, 1, 0, 0, 0, 0, 711, 1, 0, 0, 0, 0, 713, 1, 0, 0, 0, 0, 715, 1, 0, 0, 0, 0, 717, 1, 0, 0, 0, 0, 719, 1, 0, 0, 0, 0, 721, 1, 0, 0, 0, 0, 723, 1, 0, 0, 0, 0, 725, 1, 0, 0, 0, 0, 727, 1, 0, 0, 0, 0, 729, 1, 0, 0, 0, 0, 731, 1, 0, 0, 0, 0, 733, 1, 0, 0, 0, 0, 735, 1, 0, 0, 0, 0, 737, 1, 0, 0, 0, 0, 739, 1, 0, 0, 0, 0, 741, 1, 0, 0, 0, 0, 743, 1, 0, 0, 0, 0, 745, 1, 0, 0, 0, 0, 747, 1, 0, 0, 0, 0, 749, 1, 0, 0, 0, 0, 751, 1, 0, 0, 0, 0, 753, 1, 0, 0, 0, 0, 755, 1, 0, 0, 0, 0, 757, 1, 0, 0, 0, 0, 759, 1, 0, 0, 0, 0, 761, 1, 0, 0, 0, 0, 763, 1, 0, 0, 0, 0, 765, 1, 0, 0, 0, 0, 767, 1, 0, 0, 0, 0, 769, 1, 0, 0, 0, 0, 771, 1, 0, 0, 0, 0, 773, 1, 0, 0, 0, 0, 775, 1, 0, 0, 0, 0, 777, 1, 0, 0, 0, 0, 779, 1, 0, 0, 0, 0, 781, 1, 0, 0, 0, 0, 783, 1, 0, 0, 0, 0, 785, 1, 0, 0, 0, 0, 787, 1, 0, 0, 0, 0, 789, 1, 0, 0, 0, 0, 791, 1, 0, 0, 0, 0, 793, 1, 0, 0, 0, 0, 795, 1, 0, 0, 0, 0, 797, 1, 0, 0, 0, 0, 799, 1, 0, 0, 0, 0, 801, 1, 0, 0, 0, 0, 803, 1, 0, 0, 0, 0, 805, 1, 0, 0, 0, 0, 807, 1, 0, 0, 0, 0, 809, 1, 0, 0, 0, 0, 811, 1, 0, 0, 0, 0, 813, 1, 0, 0, 0, 0, 815, 1, 0, 0, 0, 0, 817, 1, 0, 0, 0, 0, 819, 1, 0, 0, 0, 0, 821, 1, 0, 0, 0, 0, 823, 1, 0, 0, 0, 0, 825, 1, 0, 0, 0, 0, 827, 1, 0, 0, 0, 0, 829, 1, 0, 0, 0, 0, 831, 1, 0, 0, 0, 0, 833, 1, 0, 0, 0, 0, 835, 1, 0, 0, 0, 0, 837, 1, 0, 0, 0, 0, 839, 1, 0, 0, 0, 0, 841, 1, 0, 0, 0, 0, 843, 1, 0, 0, 0, 0, 845, 1, 0, 0, 0, 0, 847, 1, 0, 0, 0, 0, 849, 1, 0, 0, 0, 0, 851, 1, 0, 0, 0, 0, 853, 1, 0, 0, 0, 0, 855, 1, 0, 0, 0, 0, 857, 1, 0, 0, 0, 0, 859, 1, 0, 0, 0, 0, 861, 1, 0, 0, 0, 0, 863, 1, 0, 0, 0, 0, 865, 1, 0, 0, 0, 0, 867, 1, 0, 0, 0, 0, 869, 1, 0, 0, 0, 0, 871, 1, 0, 0, 0, 0, 873, 1, 0, 0, 0, 0, 875, 1, 0, 0, 0, 0, 877, 1, 0, 0, 0, 0, 879, 1, 0, 0, 0, 0, 881, 1, 0, 0, 0, 0, 883, 1, 0, 0, 0, 0, 885, 1, 0, 0, 0, 0, 887, 1, 0, 0, 0, 0, 889, 1, 0, 0, 0, 0, 891, 1, 0, 0, 0, 0, 893, 1, 0, 0, 0, 0, 895, 1, 0, 0, 0, 0, 897, 1, 0, 0, 0, 0, 899, 1, 0, 0, 0, 0, 901, 1, 0, 0, 0, 0, 903, 1, 0, 0, 0, 0, 905, 1, 0, 0, 0, 0, 907, 1, 0, 0, 0, 0, 909, 1, 0, 0, 0, 0, 911, 1, 0, 0, 0, 0, 913, 1, 0, 0, 0, 0, 915, 1, 0, 0, 0, 0, 917, 1, 0, 0, 0, 0, 919, 1, 0, 0, 0, 0, 921, 1, 0, 0, 0, 0, 923, 1, 0, 0, 0, 0, 925, 1, 0, 0, 0, 0, 927, 1, 0, 0, 0, 0, 929, 1, 0, 0, 0, 0, 931, 1, 0, 0, 0, 0, 933, 1, 0, 0, 0, 0, 935, 1, 0, 0, 0, 0, 937, 1, 0, 0, 0, 0, 939, 1, 0, 0, 0, 0, 941, 1, 0, 0, 0, 0, 943, 1, 0, 0, 0, 0, 945, 1, 0, 0, 0, 0, 947, 1, 0, 0, 0, 0, 949, 1, 0, 0, 0, 0, 951, 1, 0, 0, 0, 0, 953, 1, 0, 0, 0, 0, 955, 1, 0, 0, 0, 0, 957, 1, 0, 0, 0, 0, 959, 1, 0, 0, 0, 0, 961, 1, 0, 0, 0, 0, 963, 1, 0, 0, 0, 0, 965, 1, 0, 0, 0, 0, 967, 1, 0, 0, 0, 0, 969, 1, 0, 0, 0, 0, 971, 1, 0, 0, 0, 0, 973, 1, 0, 0, 0, 0, 975, 1, 0, 0, 0, 0, 977, 1, 0, 0, 0, 0, 979, 1, 0, 0, 0, 0, 981, 1, 0, 0, 0, 0, 983, 1, 0, 0, 0, 0, 985, 1, 0, 0, 0, 0, 987, 1, 0, 0, 0, 0, 989, 1, 0, 0, 0, 0, 991, 1, 0, 0, 0, 0, 993, 1, 0, 0, 0, 0, 995, 1, 0, 0, 0, 0, 997, 1, 0, 0, 0, 0, 999, 1, 0, 0, 0, 0, 1001, 1, 0, 0, 0, 0, 1003, 1, 0, 0, 0, 0, 1005, 1, 0, 0, 0, 0, 1007, 1, 0, 0, 0, 0, 1009, 1, 0, 0, 0, 0, 1011, 1, 0, 0, 0, 0, 1013, 1, 0, 0, 0, 0, 1015, 1, 0, 0, 0, 0, 1017, 1, 0, 0, 0, 0, 1019, 1, 0, 0, 0, 0, 1021, 1, 0, 0, 0, 0, 1023, 1, 0, 0, 0, 0, 1025, 1, 0, 0, 0, 0, 1027, 1, 0, 0, 0, 0, 1029, 1, 0, 0, 0, 0, 1031, 1, 0, 0, 0, 0, 1033, 1, 0, 0, 0, 0, 1035, 1, 0, 0, 0, 0, 1037, 1, 0, 0, 0, 0, 1039, 1, 0, 0, 0, 0, 1041, 1, 0, 0, 0, 0, 1043, 1, 0, 0, 0, 0, 1045, 1, 0, 0, 0, 0, 1047, 1, 0, 0, 0, 0, 1049, 1, 0, 0, 0, 0, 1051, 1, 0, 0, 0, 0, 1053, 1, 0, 0, 0, 0, 1055, 1, 0, 0, 0, 0, 1057, 1, 0, 0, 0, 0, 1059, 1, 0, 0, 0, 0, 1061, 1, 0, 0, 0, 0, 1063, 1, 0, 0, 0, 0, 1065, 1, 0, 0, 0, 0, 1067, 1, 0, 0, 0, 0, 1069, 1, 0, 0, 0, 0, 1071, 1, 0, 0, 0, 0, 1073, 1, 0, 0, 0, 0, 1075, 1, 0, 0, 0, 0, 1077, 1, 0, 0, 0, 0, 1079, 1, 0, 0, 0, 0, 1081, 1, 0, 0, 0, 0, 1083, 1, 0, 0, 0, 0, 1085, 1, 0, 0, 0, 0, 1087, 1, 0, 0, 0, 0, 1089, 1, 0, 0, 0, 0, 1091, 1, 0, 0, 0, 0, 1093, 1, 0, 0, 0, 0, 1095, 1, 0, 0, 0, 0, 1097, 1, 0, 0, 0, 0, 1099, 1, 0, 0, 0, 0, 1101, 1, 0, 0, 0, 0, 1103, 1, 0, 0, 0, 0, 1105, 1, 0, 0, 0, 0, 1107, 1, 0, 0, 0, 0, 1109, 1, 0, 0, 0, 0, 1111, 1, 0, 0, 0, 0, 1113, 1, 0, 0, 0, 0, 1115, 1, 0, 0, 0, 0, 1117, 1, 0, 0, 0, 0, 1119, 1, 0, 0, 0, 0, 1121, 1, 0, 0, 0, 0, 1123, 1, 0, 0, 0, 0, 1125, 1, 0, 0, 0, 0, 1127, 1, 0, 0, 0, 0, 1129, 1, 0, 0, 0, 0, 1131, 1, 0, 0, 0, 0, 1133, 1, 0, 0, 0, 0, 1135, 1, 0, 0, 0, 0, 1137, 1, 0, 0, 0, 0, 1139, 1, 0, 0, 0, 0, 1141, 1, 0, 0, 0, 0, 1143, 1, 0, 0, 0, 0, 1145, 1, 0, 0, 0, 0, 1147, 1, 0, 0, 0, 0, 1149, 1, 0, 0, 0, 0, 1151, 1, 0, 0, 0, 0, 1153, 1, 0, 0, 0, 0, 1155, 1, 0, 0, 0, 0, 1157, 1, 0, 0, 0, 0, 1159, 1, 0, 0, 0, 0, 1161, 1, 0, 0, 0, 0, 1163, 1, 0, 0, 0, 0, 1165, 1, 0, 0, 0, 0, 1167, 1, 0, 0, 0, 0, 1169, 1, 0, 0, 0, 0, 1171, 1, 0, 0, 0, 0, 1173, 1, 0, 0, 0, 0, 1175, 1, 0, 0, 0, 0, 1177, 1, 0, 0, 0, 0, 1179, 1, 0, 0, 0, 0, 1181, 1, 0, 0, 0, 0, 1183, 1, 0, 0, 0, 0, 1185, 1, 0, 0, 0, 0, 1187, 1, 0, 0, 0, 0, 1189, 1, 0, 0, 0, 0, 1191, 1, 0, 0, 0, 0, 1193, 1, 0, 0, 0, 0, 1195, 1, 0, 0, 0, 0, 1197, 1, 0, 0, 0, 0, 1199, 1, 0, 0, 0, 0, 1201, 1, 0, 0, 0, 0, 1203, 1, 0, 0, 0, 0, 1205, 1, 0, 0, 0, 0, 1207, 1, 0, 0, 0, 0, 1209, 1, 0, 0, 0, 0, 1211, 1, 0, 0, 0, 0, 1213, 1, 0, 0, 0, 0, 1215, 1, 0, 0, 0, 0, 1217, 1, 0, 0, 0, 0, 1219, 1, 0, 0, 0, 0, 1221, 1, 0, 0, 0, 0, 1223, 1, 0, 0, 0, 0, 1225, 1, 0, 0, 0, 0, 1227, 1, 0, 0, 0, 0, 1229, 1, 0, 0, 0, 0, 1231, 1, 0, 0, 0, 0, 1233, 1, 0, 0, 0, 0, 1235, 1, 0, 0, 0, 0, 1237, 1, 0, 0, 0, 0, 1239, 1, 0, 0, 0, 0, 1241, 1, 0, 0, 0, 0, 1243, 1, 0, 0, 0, 0, 1245, 1, 0, 0, 0, 0, 1247, 1, 0, 0, 0, 0, 1249, 1, 0, 0, 0, 0, 1251, 1, 0, 0, 0, 0, 1253, 1, 0, 0, 0, 0, 1255, 1, 0, 0, 0, 0, 1257, 1, 0, 0, 0, 0, 1259, 1, 0, 0, 0, 0, 1261, 1, 0, 0, 0, 0, 1263, 1, 0, 0, 0, 0, 1265, 1, 0, 0, 0, 0, 1267, 1, 0, 0, 0, 0, 1269, 1, 0, 0, 0, 0, 1271, 1, 0, 0, 0, 0, 1273, 1, 0, 0, 0, 0, 1275, 1, 0, 0, 0, 0, 1277, 1, 0, 0, 0, 0, 1279, 1, 0, 0, 0, 0, 1281, 1, 0, 0, 0, 0, 1283, 1, 0, 0, 0, 0, 1291, 1, 0, 0, 0, 0, 1293, 1, 0, 0, 0, 0, 1295, 1, 0, 0, 0, 0, 1297, 1, 0, 0, 0, 0, 1299, 1, 0, 0, 0, 0, 1301, 1, 0, 0, 0, 0, 1303, 1, 0, 0, 0, 0, 1305, 1, 0, 0, 0, 0, 1307, 1, 0, 0, 0, 0, 1309, 1, 0, 0, 0, 0, 1311, 1, 0, 0, 0, 0, 1313, 1, 0, 0, 0, 0, 1315, 1, 0, 0, 0, 0, 1317, 1, 0, 0, 0, 0, 1321, 1, 0, 0, 0, 0, 1323, 1, 0, 0, 0, 0, 1325, 1, 0, 0, 0, 0, 1327, 1, 0, 0, 0, 0, 1329, 1, 0, 0, 0, 0, 1331, 1, 0, 0, 0, 0, 1333, 1, 0, 0, 0, 0, 1335, 1, 0, 0, 0, 0, 1337, 1, 0, 0, 0, 0, 1339, 1, 0, 0, 0, 0, 1341, 1, 0, 0, 0, 0, 1345, 1, 0, 0, 0, 0, 1347, 1, 0, 0, 0, 0, 1349, 1, 0, 0, 0, 0, 1351, 1, 0, 0, 0, 0, 1353, 1, 0, 0, 0, 0, 1355, 1, 0, 0, 0, 0, 1357, 1, 0, 0, 0, 0, 1359, 1, 0, 0, 0, 0, 1361, 1, 0, 0, 0, 0, 1363, 1, 0, 0, 0, 1, 1365, 1, 0, 0, 0, 1, 1367, 1, 0, 0, 0, 1, 1371, 1, 0, 0, 0, 1, 1373, 1, 0, 0, 0, 2, 1377, 1, 0, 0, 0, 2, 1379, 1, 0, 0, 0, 2, 1381, 1, 0, 0, 0, 3, 1383, 1, 0, 0, 0, 3, 1385, 1, 0, 0, 0, 3, 1387, 1, 0, 0, 0, 3, 1389, 1, 0, 0, 0, 4, 1391, 1, 0, 0, 0, 4, 1393, 1, 0, 0, 0, 5, 1395, 1, 0, 0, 0, 7, 1397, 1, 0, 0, 0, 9, 1399, 1, 0, 0, 0, 11, 1401, 1, 0, 0, 0, 13, 1403, 1, 0, 0, 0, 15, 1405, 1, 0, 0, 0, 17, 1407, 1, 0, 0, 0, 19, 1409, 1, 0, 0, 0, 21, 1411, 1, 0, 0, 0, 23, 1413, 1, 0, 0, 0, 25, 1415, 1, 0, 0, 0, 27, 1417, 1, 0, 0, 0, 29, 1419, 1, 0, 0, 0, 31, 1421, 1, 0, 0, 0, 33, 1423, 1, 0, 0, 0, 35, 1425, 1, 0, 0, 0, 37, 1427, 1, 0, 0, 0, 39, 1429, 1, 0, 0, 0, 41, 1432, 1, 0, 0, 0, 43, 1435, 1, 0, 0, 0, 45, 1438, 1, 0, 0, 0, 47, 1441, 1, 0, 0, 0, 49, 1444, 1, 0, 0, 0, 51, 1447, 1, 0, 0, 0, 53, 1450, 1, 0, 0, 0, 55, 1453, 1, 0, 0, 0, 57, 1456, 1, 0, 0, 0, 59, 1458, 1, 0, 0, 0, 61, 1484, 1, 0, 0, 0, 63, 1495, 1, 0, 0, 0, 65, 1511, 1, 0, 0, 0, 67, 1513, 1, 0, 0, 0, 69, 1515, 1, 0, 0, 0, 71, 1517, 1, 0, 0, 0, 73, 1521, 1, 0, 0, 0, 75, 1529, 1, 0, 0, 0, 77, 1537, 1, 0, 0, 0, 79, 1541, 1, 0, 0, 0, 81, 1545, 1, 0, 0, 0, 83, 1551, 1, 0, 0, 0, 85, 1554, 1, 0, 0, 0, 87, 1558, 1, 0, 0, 0, 89, 1569, 1, 0, 0, 0, 91, 1574, 1, 0, 0, 0, 93, 1579, 1, 0, 0, 0, 95, 1584, 1, 0, 0, 0, 97, 1590, 1, 0, 0, 0, 99, 1598, 1, 0, 0, 0, 101, 1605, 1, 0, 0, 0, 103, 1616, 1, 0, 0, 0, 105, 1623, 1, 0, 0, 0, 107, 1639, 1, 0, 0, 0, 109, 1652, 1, 0, 0, 0, 111, 1665, 1, 0, 0, 0, 113, 1678, 1, 0, 0, 0, 115, 1696, 1, 0, 0, 0, 117, 1709, 1, 0, 0, 0, 119, 1717, 1, 0, 0, 0, 121, 1728, 1, 0, 0, 0, 123, 1733, 1, 0, 0, 0, 125, 1742, 1, 0, 0, 0, 127, 1745, 1, 0, 0, 0, 129, 1750, 1, 0, 0, 0, 131, 1757, 1, 0, 0, 0, 133, 1763, 1, 0, 0, 0, 135, 1769, 1, 0, 0, 0, 137, 1773, 1, 0, 0, 0, 139, 1781, 1, 0, 0, 0, 141, 1786, 1, 0, 0, 0, 143, 1792, 1, 0, 0, 0, 145, 1798, 1, 0, 0, 0, 147, 1805, 1, 0, 0, 0, 149, 1808, 1, 0, 0, 0, 151, 1818, 1, 0, 0, 0, 153, 1828, 1, 0, 0, 0, 155, 1833, 1, 0, 0, 0, 157, 1841, 1, 0, 0, 0, 159, 1849, 1, 0, 0, 0, 161, 1855, 1, 0, 0, 0, 163, 1865, 1, 0, 0, 0, 165, 1880, 1, 0, 0, 0, 167, 1884, 1, 0, 0, 0, 169, 1889, 1, 0, 0, 0, 171, 1896, 1, 0, 0, 0, 173, 1899, 1, 0, 0, 0, 175, 1904, 1, 0, 0, 0, 177, 1907, 1, 0, 0, 0, 179, 1913, 1, 0, 0, 0, 181, 1921, 1, 0, 0, 0, 183, 1929, 1, 0, 0, 0, 185, 1940, 1, 0, 0, 0, 187, 1950, 1, 0, 0, 0, 189, 1957, 1, 0, 0, 0, 191, 1970, 1, 0, 0, 0, 193, 1975, 1, 0, 0, 0, 195, 1985, 1, 0, 0, 0, 197, 1991, 1, 0, 0, 0, 199, 1996, 1, 0, 0, 0, 201, 1999, 1, 0, 0, 0, 203, 2008, 1, 0, 0, 0, 205, 2013, 1, 0, 0, 0, 207, 2019, 1, 0, 0, 0, 209, 2026, 1, 0, 0, 0, 211, 2031, 1, 0, 0, 0, 213, 2037, 1, 0, 0, 0, 215, 2046, 1, 0, 0, 0, 217, 2051, 1, 0, 0, 0, 219, 2057, 1, 0, 0, 0, 221, 2064, 1, 0, 0, 0, 223, 2069, 1, 0, 0, 0, 225, 2083, 1, 0, 0, 0, 227, 2090, 1, 0, 0, 0, 229, 2100, 1, 0, 0, 0, 231, 2113, 1, 0, 0, 0, 233, 2119, 1, 0, 0, 0, 235, 2134, 1, 0, 0, 0, 237, 2141, 1, 0, 0, 0, 239, 2146, 1, 0, 0, 0, 241, 2152, 1, 0, 0, 0, 243, 2158, 1, 0, 0, 0, 245, 2161, 1, 0, 0, 0, 247, 2168, 1, 0, 0, 0, 249, 2173, 1, 0, 0, 0, 251, 2178, 1, 0, 0, 0, 253, 2183, 1, 0, 0, 0, 255, 2191, 1, 0, 0, 0, 257, 2199, 1, 0, 0, 0, 259, 2205, 1, 0, 0, 0, 261, 2210, 1, 0, 0, 0, 263, 2219, 1, 0, 0, 0, 265, 2225, 1, 0, 0, 0, 267, 2233, 1, 0, 0, 0, 269, 2241, 1, 0, 0, 0, 271, 2247, 1, 0, 0, 0, 273, 2256, 1, 0, 0, 0, 275, 2263, 1, 0, 0, 0, 277, 2270, 1, 0, 0, 0, 279, 2274, 1, 0, 0, 0, 281, 2280, 1, 0, 0, 0, 283, 2286, 1, 0, 0, 0, 285, 2296, 1, 0, 0, 0, 287, 2301, 1, 0, 0, 0, 289, 2307, 1, 0, 0, 0, 291, 2314, 1, 0, 0, 0, 293, 2324, 1, 0, 0, 0, 295, 2335, 1, 0, 0, 0, 297, 2338, 1, 0, 0, 0, 299, 2348, 1, 0, 0, 0, 301, 2357, 1, 0, 0, 0, 303, 2364, 1, 0, 0, 0, 305, 2370, 1, 0, 0, 0, 307, 2373, 1, 0, 0, 0, 309, 2379, 1, 0, 0, 0, 311, 2386, 1, 0, 0, 0, 313, 2394, 1, 0, 0, 0, 315, 2403, 1, 0, 0, 0, 317, 2411, 1, 0, 0, 0, 319, 2417, 1, 0, 0, 0, 321, 2433, 1, 0, 0, 0, 323, 2444, 1, 0, 0, 0, 325, 2450, 1, 0, 0, 0, 327, 2456, 1, 0, 0, 0, 329, 2464, 1, 0, 0, 0, 331, 2472, 1, 0, 0, 0, 333, 2481, 1, 0, 0, 0, 335, 2488, 1, 0, 0, 0, 337, 2498, 1, 0, 0, 0, 339, 2512, 1, 0, 0, 0, 341, 2523, 1, 0, 0, 0, 343, 2535, 1, 0, 0, 0, 345, 2543, 1, 0, 0, 0, 347, 2552, 1, 0, 0, 0, 349, 2563, 1, 0, 0, 0, 351, 2568, 1, 0, 0, 0, 353, 2573, 1, 0, 0, 0, 355, 2577, 1, 0, 0, 0, 357, 2584, 1, 0, 0, 0, 359, 2590, 1, 0, 0, 0, 361, 2595, 1, 0, 0, 0, 363, 2604, 1, 0, 0, 0, 365, 2608, 1, 0, 0, 0, 367, 2619, 1, 0, 0, 0, 369, 2627, 1, 0, 0, 0, 371, 2636, 1, 0, 0, 0, 373, 2645, 1, 0, 0, 0, 375, 2653, 1, 0, 0, 0, 377, 2660, 1, 0, 0, 0, 379, 2670, 1, 0, 0, 0, 381, 2681, 1, 0, 0, 0, 383, 2692, 1, 0, 0, 0, 385, 2700, 1, 0, 0, 0, 387, 2708, 1, 0, 0, 0, 389, 2717, 1, 0, 0, 0, 391, 2724, 1, 0, 0, 0, 393, 2731, 1, 0, 0, 0, 395, 2736, 1, 0, 0, 0, 397, 2741, 1, 0, 0, 0, 399, 2748, 1, 0, 0, 0, 401, 2757, 1, 0, 0, 0, 403, 2767, 1, 0, 0, 0, 405, 2772, 1, 0, 0, 0, 407, 2779, 1, 0, 0, 0, 409, 2785, 1, 0, 0, 0, 411, 2793, 1, 0, 0, 0, 413, 2803, 1, 0, 0, 0, 415, 2813, 1, 0, 0, 0, 417, 2821, 1, 0, 0, 0, 419, 2829, 1, 0, 0, 0, 421, 2839, 1, 0, 0, 0, 423, 2848, 1, 0, 0, 0, 425, 2855, 1, 0, 0, 0, 427, 2861, 1, 0, 0, 0, 429, 2871, 1, 0, 0, 0, 431, 2877, 1, 0, 0, 0, 433, 2885, 1, 0, 0, 0, 435, 2894, 1, 0, 0, 0, 437, 2904, 1, 0, 0, 0, 439, 2911, 1, 0, 0, 0, 441, 2919, 1, 0, 0, 0, 443, 2927, 1, 0, 0, 0, 445, 2934, 1, 0, 0, 0, 447, 2939, 1, 0, 0, 0, 449, 2944, 1, 0, 0, 0, 451, 2953, 1, 0, 0, 0, 453, 2956, 1, 0, 0, 0, 455, 2966, 1, 0, 0, 0, 457, 2976, 1, 0, 0, 0, 459, 2985, 1, 0, 0, 0, 461, 2995, 1, 0, 0, 0, 463, 3005, 1, 0, 0, 0, 465, 3011, 1, 0, 0, 0, 467, 3019, 1, 0, 0, 0, 469, 3027, 1, 0, 0, 0, 471, 3036, 1, 0, 0, 0, 473, 3043, 1, 0, 0, 0, 475, 3055, 1, 0, 0, 0, 477, 3062, 1, 0, 0, 0, 479, 3070, 1, 0, 0, 0, 481, 3078, 1, 0, 0, 0, 483, 3088, 1, 0, 0, 0, 485, 3092, 1, 0, 0, 0, 487, 3098, 1, 0, 0, 0, 489, 3107, 1, 0, 0, 0, 491, 3113, 1, 0, 0, 0, 493, 3118, 1, 0, 0, 0, 495, 3128, 1, 0, 0, 0, 497, 3134, 1, 0, 0, 0, 499, 3141, 1, 0, 0, 0, 501, 3146, 1, 0, 0, 0, 503, 3152, 1, 0, 0, 0, 505, 3161, 1, 0, 0, 0, 507, 3166, 1, 0, 0, 0, 509, 3174, 1, 0, 0, 0, 511, 3180, 1, 0, 0, 0, 513, 3188, 1, 0, 0, 0, 515, 3201, 1, 0, 0, 0, 517, 3210, 1, 0, 0, 0, 519, 3216, 1, 0, 0, 0, 521, 3223, 1, 0, 0, 0, 523, 3232, 1, 0, 0, 0, 525, 3237, 1, 0, 0, 0, 527, 3243, 1, 0, 0, 0, 529, 3248, 1, 0, 0, 0, 531, 3253, 1, 0, 0, 0, 533, 3259, 1, 0, 0, 0, 535, 3264, 1, 0, 0, 0, 537, 3267, 1, 0, 0, 0, 539, 3275, 1, 0, 0, 0, 541, 3282, 1, 0, 0, 0, 543, 3289, 1, 0, 0, 0, 545, 3295, 1, 0, 0, 0, 547, 3302, 1, 0, 0, 0, 549, 3305, 1, 0, 0, 0, 551, 3309, 1, 0, 0, 0, 553, 3314, 1, 0, 0, 0, 555, 3323, 1, 0, 0, 0, 557, 3330, 1, 0, 0, 0, 559, 3338, 1, 0, 0, 0, 561, 3344, 1, 0, 0, 0, 563, 3350, 1, 0, 0, 0, 565, 3357, 1, 0, 0, 0, 567, 3365, 1, 0, 0, 0, 569, 3375, 1, 0, 0, 0, 571, 3383, 1, 0, 0, 0, 573, 3392, 1, 0, 0, 0, 575, 3398, 1, 0, 0, 0, 577, 3408, 1, 0, 0, 0, 579, 3416, 1, 0, 0, 0, 581, 3425, 1, 0, 0, 0, 583, 3434, 1, 0, 0, 0, 585, 3440, 1, 0, 0, 0, 587, 3451, 1, 0, 0, 0, 589, 3462, 1, 0, 0, 0, 591, 3472, 1, 0, 0, 0, 593, 3480, 1, 0, 0, 0, 595, 3486, 1, 0, 0, 0, 597, 3492, 1, 0, 0, 0, 599, 3497, 1, 0, 0, 0, 601, 3506, 1, 0, 0, 0, 603, 3514, 1, 0, 0, 0, 605, 3524, 1, 0, 0, 0, 607, 3528, 1, 0, 0, 0, 609, 3536, 1, 0, 0, 0, 611, 3544, 1, 0, 0, 0, 613, 3553, 1, 0, 0, 0, 615, 3561, 1, 0, 0, 0, 617, 3568, 1, 0, 0, 0, 619, 3579, 1, 0, 0, 0, 621, 3587, 1, 0, 0, 0, 623, 3595, 1, 0, 0, 0, 625, 3601, 1, 0, 0, 0, 627, 3609, 1, 0, 0, 0, 629, 3618, 1, 0, 0, 0, 631, 3626, 1, 0, 0, 0, 633, 3633, 1, 0, 0, 0, 635, 3638, 1, 0, 0, 0, 637, 3647, 1, 0, 0, 0, 639, 3652, 1, 0, 0, 0, 641, 3657, 1, 0, 0, 0, 643, 3667, 1, 0, 0, 0, 645, 3674, 1, 0, 0, 0, 647, 3681, 1, 0, 0, 0, 649, 3688, 1, 0, 0, 0, 651, 3695, 1, 0, 0, 0, 653, 3704, 1, 0, 0, 0, 655, 3713, 1, 0, 0, 0, 657, 3723, 1, 0, 0, 0, 659, 3736, 1, 0, 0, 0, 661, 3743, 1, 0, 0, 0, 663, 3751, 1, 0, 0, 0, 665, 3755, 1, 0, 0, 0, 667, 3761, 1, 0, 0, 0, 669, 3766, 1, 0, 0, 0, 671, 3773, 1, 0, 0, 0, 673, 3782, 1, 0, 0, 0, 675, 3789, 1, 0, 0, 0, 677, 3800, 1, 0, 0, 0, 679, 3806, 1, 0, 0, 0, 681, 3816, 1, 0, 0, 0, 683, 3827, 1, 0, 0, 0, 685, 3833, 1, 0, 0, 0, 687, 3840, 1, 0, 0, 0, 689, 3848, 1, 0, 0, 0, 691, 3855, 1, 0, 0, 0, 693, 3861, 1, 0, 0, 0, 695, 3867, 1, 0, 0, 0, 697, 3874, 1, 0, 0, 0, 699, 3881, 1, 0, 0, 0, 701, 3892, 1, 0, 0, 0, 703, 3897, 1, 0, 0, 0, 705, 3906, 1, 0, 0, 0, 707, 3916, 1, 0, 0, 0, 709, 3921, 1, 0, 0, 0, 711, 3933, 1, 0, 0, 0, 713, 3941, 1, 0, 0, 0, 715, 3950, 1, 0, 0, 0, 717, 3958, 1, 0, 0, 0, 719, 3963, 1, 0, 0, 0, 721, 3969, 1, 0, 0, 0, 723, 3979, 1, 0, 0, 0, 725, 3991, 1, 0, 0, 0, 727, 4003, 1, 0, 0, 0, 729, 4011, 1, 0, 0, 0, 731, 4020, 1, 0, 0, 0, 733, 4029, 1, 0, 0, 0, 735, 4035, 1, 0, 0, 0, 737, 4042, 1, 0, 0, 0, 739, 4049, 1, 0, 0, 0, 741, 4055, 1, 0, 0, 0, 743, 4064, 1, 0, 0, 0, 745, 4074, 1, 0, 0, 0, 747, 4082, 1, 0, 0, 0, 749, 4090, 1, 0, 0, 0, 751, 4095, 1, 0, 0, 0, 753, 4104, 1, 0, 0, 0, 755, 4115, 1, 0, 0, 0, 757, 4123, 1, 0, 0, 0, 759, 4128, 1, 0, 0, 0, 761, 4136, 1, 0, 0, 0, 763, 4142, 1, 0, 0, 0, 765, 4146, 1, 0, 0, 0, 767, 4151, 1, 0, 0, 0, 769, 4155, 1, 0, 0, 0, 771, 4160, 1, 0, 0, 0, 773, 4168, 1, 0, 0, 0, 775, 4175, 1, 0, 0, 0, 777, 4179, 1, 0, 0, 0, 779, 4187, 1, 0, 0, 0, 781, 4192, 1, 0, 0, 0, 783, 4202, 1, 0, 0, 0, 785, 4211, 1, 0, 0, 0, 787, 4215, 1, 0, 0, 0, 789, 4223, 1, 0, 0, 0, 791, 4230, 1, 0, 0, 0, 793, 4238, 1, 0, 0, 0, 795, 4244, 1, 0, 0, 0, 797, 4253, 1, 0, 0, 0, 799, 4259, 1, 0, 0, 0, 801, 4263, 1, 0, 0, 0, 803, 4271, 1, 0, 0, 0, 805, 4280, 1, 0, 0, 0, 807, 4286, 1, 0, 0, 0, 809, 4295, 1, 0, 0, 0, 811, 4301, 1, 0, 0, 0, 813, 4306, 1, 0, 0, 0, 815, 4313, 1, 0, 0, 0, 817, 4321, 1, 0, 0, 0, 819, 4329, 1, 0, 0, 0, 821, 4338, 1, 0, 0, 0, 823, 4348, 1, 0, 0, 0, 825, 4353, 1, 0, 0, 0, 827, 4357, 1, 0, 0, 0, 829, 4363, 1, 0, 0, 0, 831, 4372, 1, 0, 0, 0, 833, 4382, 1, 0, 0, 0, 835, 4387, 1, 0, 0, 0, 837, 4397, 1, 0, 0, 0, 839, 4403, 1, 0, 0, 0, 841, 4408, 1, 0, 0, 0, 843, 4415, 1, 0, 0, 0, 845, 4423, 1, 0, 0, 0, 847, 4437, 1, 0, 0, 0, 849, 4448, 1, 0, 0, 0, 851, 4455, 1, 0, 0, 0, 853, 4474, 1, 0, 0, 0, 855, 4502, 1, 0, 0, 0, 857, 4529, 1, 0, 0, 0, 859, 4535, 1, 0, 0, 0, 861, 4548, 1, 0, 0, 0, 863, 4558, 1, 0, 0, 0, 865, 4569, 1, 0, 0, 0, 867, 4579, 1, 0, 0, 0, 869, 4589, 1, 0, 0, 0, 871, 4598, 1, 0, 0, 0, 873, 4604, 1, 0, 0, 0, 875, 4612, 1, 0, 0, 0, 877, 4625, 1, 0, 0, 0, 879, 4630, 1, 0, 0, 0, 881, 4638, 1, 0, 0, 0, 883, 4645, 1, 0, 0, 0, 885, 4652, 1, 0, 0, 0, 887, 4663, 1, 0, 0, 0, 889, 4673, 1, 0, 0, 0, 891, 4680, 1, 0, 0, 0, 893, 4687, 1, 0, 0, 0, 895, 4695, 1, 0, 0, 0, 897, 4703, 1, 0, 0, 0, 899, 4713, 1, 0, 0, 0, 901, 4720, 1, 0, 0, 0, 903, 4727, 1, 0, 0, 0, 905, 4734, 1, 0, 0, 0, 907, 4746, 1, 0, 0, 0, 909, 4750, 1, 0, 0, 0, 911, 4754, 1, 0, 0, 0, 913, 4760, 1, 0, 0, 0, 915, 4773, 1, 0, 0, 0, 917, 4785, 1, 0, 0, 0, 919, 4789, 1, 0, 0, 0, 921, 4793, 1, 0, 0, 0, 923, 4802, 1, 0, 0, 0, 925, 4810, 1, 0, 0, 0, 927, 4821, 1, 0, 0, 0, 929, 4827, 1, 0, 0, 0, 931, 4835, 1, 0, 0, 0, 933, 4844, 1, 0, 0, 0, 935, 4848, 1, 0, 0, 0, 937, 4856, 1, 0, 0, 0, 939, 4867, 1, 0, 0, 0, 941, 4876, 1, 0, 0, 0, 943, 4881, 1, 0, 0, 0, 945, 4888, 1, 0, 0, 0, 947, 4893, 1, 0, 0, 0, 949, 4900, 1, 0, 0, 0, 951, 4905, 1, 0, 0, 0, 953, 4914, 1, 0, 0, 0, 955, 4919, 1, 0, 0, 0, 957, 4931, 1, 0, 0, 0, 959, 4942, 1, 0, 0, 0, 961, 4951, 1, 0, 0, 0, 963, 4959, 1, 0, 0, 0, 965, 4973, 1, 0, 0, 0, 967, 4981, 1, 0, 0, 0, 969, 4992, 1, 0, 0, 0, 971, 4999, 1, 0, 0, 0, 973, 5006, 1, 0, 0, 0, 975, 5013, 1, 0, 0, 0, 977, 5020, 1, 0, 0, 0, 979, 5024, 1, 0, 0, 0, 981, 5028, 1, 0, 0, 0, 983, 5033, 1, 0, 0, 0, 985, 5038, 1, 0, 0, 0, 987, 5046, 1, 0, 0, 0, 989, 5052, 1, 0, 0, 0, 991, 5062, 1, 0, 0, 0, 993, 5067, 1, 0, 0, 0, 995, 5087, 1, 0, 0, 0, 997, 5105, 1, 0, 0, 0, 999, 5111, 1, 0, 0, 0, 1001, 5124, 1, 0, 0, 0, 1003, 5135, 1, 0, 0, 0, 1005, 5141, 1, 0, 0, 0, 1007, 5150, 1, 0, 0, 0, 1009, 5158, 1, 0, 0, 0, 1011, 5162, 1, 0, 0, 0, 1013, 5174, 1, 0, 0, 0, 1015, 5182, 1, 0, 0, 0, 1017, 5188, 1, 0, 0, 0, 1019, 5194, 1, 0, 0, 0, 1021, 5202, 1, 0, 0, 0, 1023, 5210, 1, 0, 0, 0, 1025, 5216, 1, 0, 0, 0, 1027, 5221, 1, 0, 0, 0, 1029, 5228, 1, 0, 0, 0, 1031, 5234, 1, 0, 0, 0, 1033, 5240, 1, 0, 0, 0, 1035, 5249, 1, 0, 0, 0, 1037, 5255, 1, 0, 0, 0, 1039, 5259, 1, 0, 0, 0, 1041, 5264, 1, 0, 0, 0, 1043, 5271, 1, 0, 0, 0, 1045, 5279, 1, 0, 0, 0, 1047, 5289, 1, 0, 0, 0, 1049, 5296, 1, 0, 0, 0, 1051, 5301, 1, 0, 0, 0, 1053, 5306, 1, 0, 0, 0, 1055, 5310, 1, 0, 0, 0, 1057, 5315, 1, 0, 0, 0, 1059, 5320, 1, 0, 0, 0, 1061, 5328, 1, 0, 0, 0, 1063, 5336, 1, 0, 0, 0, 1065, 5340, 1, 0, 0, 0, 1067, 5344, 1, 0, 0, 0, 1069, 5354, 1, 0, 0, 0, 1071, 5360, 1, 0, 0, 0, 1073, 5364, 1, 0, 0, 0, 1075, 5368, 1, 0, 0, 0, 1077, 5371, 1, 0, 0, 0, 1079, 5377, 1, 0, 0, 0, 1081, 5387, 1, 0, 0, 0, 1083, 5391, 1, 0, 0, 0, 1085, 5394, 1, 0, 0, 0, 1087, 5400, 1, 0, 0, 0, 1089, 5408, 1, 0, 0, 0, 1091, 5414, 1, 0, 0, 0, 1093, 5420, 1, 0, 0, 0, 1095, 5425, 1, 0, 0, 0, 1097, 5430, 1, 0, 0, 0, 1099, 5441, 1, 0, 0, 0, 1101, 5447, 1, 0, 0, 0, 1103, 5460, 1, 0, 0, 0, 1105, 5467, 1, 0, 0, 0, 1107, 5475, 1, 0, 0, 0, 1109, 5480, 1, 0, 0, 0, 1111, 5486, 1, 0, 0, 0, 1113, 5491, 1, 0, 0, 0, 1115, 5497, 1, 0, 0, 0, 1117, 5502, 1, 0, 0, 0, 1119, 5508, 1, 0, 0, 0, 1121, 5514, 1, 0, 0, 0, 1123, 5521, 1, 0, 0, 0, 1125, 5525, 1, 0, 0, 0, 1127, 5530, 1, 0, 0, 0, 1129, 5534, 1, 0, 0, 0, 1131, 5539, 1, 0, 0, 0, 1133, 5543, 1, 0, 0, 0, 1135, 5548, 1, 0, 0, 0, 1137, 5552, 1, 0, 0, 0, 1139, 5557, 1, 0, 0, 0, 1141, 5562, 1, 0, 0, 0, 1143, 5567, 1, 0, 0, 0, 1145, 5572, 1, 0, 0, 0, 1147, 5578, 1, 0, 0, 0, 1149, 5584, 1, 0, 0, 0, 1151, 5590, 1, 0, 0, 0, 1153, 5601, 1, 0, 0, 0, 1155, 5613, 1, 0, 0, 0, 1157, 5630, 1, 0, 0, 0, 1159, 5636, 1, 0, 0, 0, 1161, 5649, 1, 0, 0, 0, 1163, 5655, 1, 0, 0, 0, 1165, 5661, 1, 0, 0, 0, 1167, 5667, 1, 0, 0, 0, 1169, 5671, 1, 0, 0, 0, 1171, 5678, 1, 0, 0, 0, 1173, 5688, 1, 0, 0, 0, 1175, 5695, 1, 0, 0, 0, 1177, 5703, 1, 0, 0, 0, 1179, 5710, 1, 0, 0, 0, 1181, 5715, 1, 0, 0, 0, 1183, 5721, 1, 0, 0, 0, 1185, 5725, 1, 0, 0, 0, 1187, 5737, 1, 0, 0, 0, 1189, 5756, 1, 0, 0, 0, 1191, 5768, 1, 0, 0, 0, 1193, 5782, 1, 0, 0, 0, 1195, 5797, 1, 0, 0, 0, 1197, 5810, 1, 0, 0, 0, 1199, 5823, 1, 0, 0, 0, 1201, 5835, 1, 0, 0, 0, 1203, 5848, 1, 0, 0, 0, 1205, 5863, 1, 0, 0, 0, 1207, 5878, 1, 0, 0, 0, 1209, 5900, 1, 0, 0, 0, 1211, 5922, 1, 0, 0, 0, 1213, 5936, 1, 0, 0, 0, 1215, 5943, 1, 0, 0, 0, 1217, 5948, 1, 0, 0, 0, 1219, 5954, 1, 0, 0, 0, 1221, 5965, 1, 0, 0, 0, 1223, 5977, 1, 0, 0, 0, 1225, 5993, 1, 0, 0, 0, 1227, 6009, 1, 0, 0, 0, 1229, 6016, 1, 0, 0, 0, 1231, 6023, 1, 0, 0, 0, 1233, 6032, 1, 0, 0, 0, 1235, 6039, 1, 0, 0, 0, 1237, 6049, 1, 0, 0, 0, 1239, 6056, 1, 0, 0, 0, 1241, 6060, 1, 0, 0, 0, 1243, 6076, 1, 0, 0, 0, 1245, 6085, 1, 0, 0, 0, 1247, 6095, 1, 0, 0, 0, 1249, 6106, 1, 0, 0, 0, 1251, 6115, 1, 0, 0, 0, 1253, 6128, 1, 0, 0, 0, 1255, 6142, 1, 0, 0, 0, 1257, 6159, 1, 0, 0, 0, 1259, 6169, 1, 0, 0, 0, 1261, 6183, 1, 0, 0, 0, 1263, 6193, 1, 0, 0, 0, 1265, 6208, 1, 0, 0, 0, 1267, 6225, 1, 0, 0, 0, 1269, 6229, 1, 0, 0, 0, 1271, 6249, 1, 0, 0, 0, 1273, 6259, 1, 0, 0, 0, 1275, 6281, 1, 0, 0, 0, 1277, 6294, 1, 0, 0, 0, 1279, 6302, 1, 0, 0, 0, 1281, 6310, 1, 0, 0, 0, 1283, 6320, 1, 0, 0, 0, 1285, 6333, 1, 0, 0, 0, 1287, 6337, 1, 0, 0, 0, 1289, 6341, 1, 0, 0, 0, 1291, 6343, 1, 0, 0, 0, 1293, 6346, 1, 0, 0, 0, 1295, 6355, 1, 0, 0, 0, 1297, 6358, 1, 0, 0, 0, 1299, 6367, 1, 0, 0, 0, 1301, 6371, 1, 0, 0, 0, 1303, 6375, 1, 0, 0, 0, 1305, 6379, 1, 0, 0, 0, 1307, 6383, 1, 0, 0, 0, 1309, 6386, 1, 0, 0, 0, 1311, 6395, 1, 0, 0, 0, 1313, 6401, 1, 0, 0, 0, 1315, 6404, 1, 0, 0, 0, 1317, 6408, 1, 0, 0, 0, 1319, 6417, 1, 0, 0, 0, 1321, 6424, 1, 0, 0, 0, 1323, 6427, 1, 0, 0, 0, 1325, 6435, 1, 0, 0, 0, 1327, 6438, 1, 0, 0, 0, 1329, 6441, 1, 0, 0, 0, 1331, 6444, 1, 0, 0, 0, 1333, 6452, 1, 0, 0, 0, 1335, 6455, 1, 0, 0, 0, 1337, 6458, 1, 0, 0, 0, 1339, 6460, 1, 0, 0, 0, 1341, 6494, 1, 0, 0, 0, 1343, 6497, 1, 0, 0, 0, 1345, 6501, 1, 0, 0, 0, 1347, 6509, 1, 0, 0, 0, 1349, 6525, 1, 0, 0, 0, 1351, 6536, 1, 0, 0, 0, 1353, 6540, 1, 0, 0, 0, 1355, 6551, 1, 0, 0, 0, 1357, 6590, 1, 0, 0, 0, 1359, 6641, 1, 0, 0, 0, 1361, 6665, 1, 0, 0, 0, 1363, 6668, 1, 0, 0, 0, 1365, 6670, 1, 0, 0, 0, 1367, 6675, 1, 0, 0, 0, 1369, 6706, 1, 0, 0, 0, 1371, 6709, 1, 0, 0, 0, 1373, 6714, 1, 0, 0, 0, 1375, 6727, 1, 0, 0, 0, 1377, 6730, 1, 0, 0, 0, 1379, 6735, 1, 0, 0, 0, 1381, 6741, 1, 0, 0, 0, 1383, 6746, 1, 0, 0, 0, 1385, 6751, 1, 0, 0, 0, 1387, 6756, 1, 0, 0, 0, 1389, 6761, 1, 0, 0, 0, 1391, 6778, 1, 0, 0, 0, 1393, 6780, 1, 0, 0, 0, 1395, 1396, 5, 36, 0, 0, 1396, 6, 1, 0, 0, 0, 1397, 1398, 5, 40, 0, 0, 1398, 8, 1, 0, 0, 0, 1399, 1400, 5, 41, 0, 0, 1400, 10, 1, 0, 0, 0, 1401, 1402, 5, 91, 0, 0, 1402, 12, 1, 0, 0, 0, 1403, 1404, 5, 93, 0, 0, 1404, 14, 1, 0, 0, 0, 1405, 1406, 5, 44, 0, 0, 1406, 16, 1, 0, 0, 0, 1407, 1408, 5, 59, 0, 0, 1408, 18, 1, 0, 0, 0, 1409, 1410, 5, 58, 0, 0, 1410, 20, 1, 0, 0, 0, 1411, 1412, 5, 42, 0, 0, 1412, 22, 1, 0, 0, 0, 1413, 1414, 5, 61, 0, 0, 1414, 24, 1, 0, 0, 0, 1415, 1416, 5, 46, 0, 0, 1416, 26, 1, 0, 0, 0, 1417, 1418, 5, 43, 0, 0, 1418, 28, 1, 0, 0, 0, 1419, 1420, 5, 45, 0, 0, 1420, 30, 1, 0, 0, 0, 1421, 1422, 5, 47, 0, 0, 1422, 32, 1, 0, 0, 0, 1423, 1424, 5, 94, 0, 0, 1424, 34, 1, 0, 0, 0, 1425, 1426, 5, 60, 0, 0, 1426, 36, 1, 0, 0, 0, 1427, 1428, 5, 62, 0, 0, 1428, 38, 1, 0, 0, 0, 1429, 1430, 5, 60, 0, 0, 1430, 1431, 5, 60, 0, 0, 1431, 40, 1, 0, 0, 0, 1432, 1433, 5, 62, 0, 0, 1433, 1434, 5, 62, 0, 0, 1434, 42, 1, 0, 0, 0, 1435, 1436, 5, 58, 0, 0, 1436, 1437, 5, 61, 0, 0, 1437, 44, 1, 0, 0, 0, 1438, 1439, 5, 60, 0, 0, 1439, 1440, 5, 61, 0, 0, 1440, 46, 1, 0, 0, 0, 1441, 1442, 5, 61, 0, 0, 1442, 1443, 5, 62, 0, 0, 1443, 48, 1, 0, 0, 0, 1444, 1445, 5, 62, 0, 0, 1445, 1446, 5, 61, 0, 0, 1446, 50, 1, 0, 0, 0, 1447, 1448, 5, 46, 0, 0, 1448, 1449, 5, 46, 0, 0, 1449, 52, 1, 0, 0, 0, 1450, 1451, 5, 60, 0, 0, 1451, 1452, 5, 62, 0, 0, 1452, 54, 1, 0, 0, 0, 1453, 1454, 5, 58, 0, 0, 1454, 1455, 5, 58, 0, 0, 1455, 56, 1, 0, 0, 0, 1456, 1457, 5, 37, 0, 0, 1457, 58, 1, 0, 0, 0, 1458, 1460, 5, 36, 0, 0, 1459, 1461, 7, 0, 0, 0, 1460, 1459, 1, 0, 0, 0, 1461, 1462, 1, 0, 0, 0, 1462, 1460, 1, 0, 0, 0, 1462, 1463, 1, 0, 0, 0, 1463, 60, 1, 0, 0, 0, 1464, 1480, 3, 65, 30, 0, 1465, 1469, 5, 43, 0, 0, 1466, 1467, 5, 45, 0, 0, 1467, 1469, 4, 28, 0, 0, 1468, 1465, 1, 0, 0, 0, 1468, 1466, 1, 0, 0, 0, 1469, 1470, 1, 0, 0, 0, 1470, 1468, 1, 0, 0, 0, 1470, 1471, 1, 0, 0, 0, 1471, 1475, 1, 0, 0, 0, 1472, 1476, 3, 65, 30, 0, 1473, 1474, 5, 47, 0, 0, 1474, 1476, 4, 28, 1, 0, 1475, 1472, 1, 0, 0, 0, 1475, 1473, 1, 0, 0, 0, 1476, 1480, 1, 0, 0, 0, 1477, 1478, 5, 47, 0, 0, 1478, 1480, 4, 28, 2, 0, 1479, 1464, 1, 0, 0, 0, 1479, 1468, 1, 0, 0, 0, 1479, 1477, 1, 0, 0, 0, 1480, 1481, 1, 0, 0, 0, 1481, 1479, 1, 0, 0, 0, 1481, 1482, 1, 0, 0, 0, 1482, 1485, 1, 0, 0, 0, 1483, 1485, 7, 1, 0, 0, 1484, 1479, 1, 0, 0, 0, 1484, 1483, 1, 0, 0, 0, 1485, 1486, 1, 0, 0, 0, 1486, 1487, 6, 28, 0, 0, 1487, 62, 1, 0, 0, 0, 1488, 1494, 3, 67, 31, 0, 1489, 1490, 5, 45, 0, 0, 1490, 1494, 4, 29, 3, 0, 1491, 1492, 5, 47, 0, 0, 1492, 1494, 4, 29, 4, 0, 1493, 1488, 1, 0, 0, 0, 1493, 1489, 1, 0, 0, 0, 1493, 1491, 1, 0, 0, 0, 1494, 1497, 1, 0, 0, 0, 1495, 1493, 1, 0, 0, 0, 1495, 1496, 1, 0, 0, 0, 1496, 1498, 1, 0, 0, 0, 1497, 1495, 1, 0, 0, 0, 1498, 1500, 3, 69, 32, 0, 1499, 1501, 3, 61, 28, 0, 1500, 1499, 1, 0, 0, 0, 1500, 1501, 1, 0, 0, 0, 1501, 1505, 1, 0, 0, 0, 1502, 1506, 5, 43, 0, 0, 1503, 1504, 5, 45, 0, 0, 1504, 1506, 4, 29, 5, 0, 1505, 1502, 1, 0, 0, 0, 1505, 1503, 1, 0, 0, 0, 1506, 1507, 1, 0, 0, 0, 1507, 1505, 1, 0, 0, 0, 1507, 1508, 1, 0, 0, 0, 1508, 1509, 1, 0, 0, 0, 1509, 1510, 6, 29, 1, 0, 1510, 64, 1, 0, 0, 0, 1511, 1512, 7, 2, 0, 0, 1512, 66, 1, 0, 0, 0, 1513, 1514, 7, 3, 0, 0, 1514, 68, 1, 0, 0, 0, 1515, 1516, 7, 4, 0, 0, 1516, 70, 1, 0, 0, 0, 1517, 1518, 7, 5, 0, 0, 1518, 1519, 7, 6, 0, 0, 1519, 1520, 7, 6, 0, 0, 1520, 72, 1, 0, 0, 0, 1521, 1522, 7, 5, 0, 0, 1522, 1523, 7, 7, 0, 0, 1523, 1524, 7, 5, 0, 0, 1524, 1525, 7, 6, 0, 0, 1525, 1526, 7, 8, 0, 0, 1526, 1527, 7, 9, 0, 0, 1527, 1528, 7, 10, 0, 0, 1528, 74, 1, 0, 0, 0, 1529, 1530, 7, 5, 0, 0, 1530, 1531, 7, 7, 0, 0, 1531, 1532, 7, 5, 0, 0, 1532, 1533, 7, 6, 0, 0, 1533, 1534, 7, 8, 0, 0, 1534, 1535, 7, 11, 0, 0, 1535, 1536, 7, 10, 0, 0, 1536, 76, 1, 0, 0, 0, 1537, 1538, 7, 5, 0, 0, 1538, 1539, 7, 7, 0, 0, 1539, 1540, 7, 12, 0, 0, 1540, 78, 1, 0, 0, 0, 1541, 1542, 7, 5, 0, 0, 1542, 1543, 7, 7, 0, 0, 1543, 1544, 7, 8, 0, 0, 1544, 80, 1, 0, 0, 0, 1545, 1546, 7, 5, 0, 0, 1546, 1547, 7, 13, 0, 0, 1547, 1548, 7, 13, 0, 0, 1548, 1549, 7, 5, 0, 0, 1549, 1550, 7, 8, 0, 0, 1550, 82, 1, 0, 0, 0, 1551, 1552, 7, 5, 0, 0, 1552, 1553, 7, 9, 0, 0, 1553, 84, 1, 0, 0, 0, 1554, 1555, 7, 5, 0, 0, 1555, 1556, 7, 9, 0, 0, 1556, 1557, 7, 14, 0, 0, 1557, 86, 1, 0, 0, 0, 1558, 1559, 7, 5, 0, 0, 1559, 1560, 7, 9, 0, 0, 1560, 1561, 7, 8, 0, 0, 1561, 1562, 7, 15, 0, 0, 1562, 1563, 7, 15, 0, 0, 1563, 1564, 7, 10, 0, 0, 1564, 1565, 7, 16, 0, 0, 1565, 1566, 7, 13, 0, 0, 1566, 1567, 7, 17, 0, 0, 1567, 1568, 7, 14, 0, 0, 1568, 88, 1, 0, 0, 0, 1569, 1570, 7, 18, 0, 0, 1570, 1571, 7, 19, 0, 0, 1571, 1572, 7, 16, 0, 0, 1572, 1573, 7, 20, 0, 0, 1573, 90, 1, 0, 0, 0, 1574, 1575, 7, 14, 0, 0, 1575, 1576, 7, 5, 0, 0, 1576, 1577, 7, 9, 0, 0, 1577, 1578, 7, 10, 0, 0, 1578, 92, 1, 0, 0, 0, 1579, 1580, 7, 14, 0, 0, 1580, 1581, 7, 5, 0, 0, 1581, 1582, 7, 9, 0, 0, 1582, 1583, 7, 16, 0, 0, 1583, 94, 1, 0, 0, 0, 1584, 1585, 7, 14, 0, 0, 1585, 1586, 7, 20, 0, 0, 1586, 1587, 7, 10, 0, 0, 1587, 1588, 7, 14, 0, 0, 1588, 1589, 7, 21, 0, 0, 1589, 96, 1, 0, 0, 0, 1590, 1591, 7, 14, 0, 0, 1591, 1592, 7, 19, 0, 0, 1592, 1593, 7, 6, 0, 0, 1593, 1594, 7, 6, 0, 0, 1594, 1595, 7, 5, 0, 0, 1595, 1596, 7, 16, 0, 0, 1596, 1597, 7, 10, 0, 0, 1597, 98, 1, 0, 0, 0, 1598, 1599, 7, 14, 0, 0, 1599, 1600, 7, 19, 0, 0, 1600, 1601, 7, 6, 0, 0, 1601, 1602, 7, 22, 0, 0, 1602, 1603, 7, 15, 0, 0, 1603, 1604, 7, 7, 0, 0, 1604, 100, 1, 0, 0, 0, 1605, 1606, 7, 14, 0, 0, 1606, 1607, 7, 19, 0, 0, 1607, 1608, 7, 7, 0, 0, 1608, 1609, 7, 9, 0, 0, 1609, 1610, 7, 16, 0, 0, 1610, 1611, 7, 13, 0, 0, 1611, 1612, 7, 5, 0, 0, 1612, 1613, 7, 17, 0, 0, 1613, 1614, 7, 7, 0, 0, 1614, 1615, 7, 16, 0, 0, 1615, 102, 1, 0, 0, 0, 1616, 1617, 7, 14, 0, 0, 1617, 1618, 7, 13, 0, 0, 1618, 1619, 7, 10, 0, 0, 1619, 1620, 7, 5, 0, 0, 1620, 1621, 7, 16, 0, 0, 1621, 1622, 7, 10, 0, 0, 1622, 104, 1, 0, 0, 0, 1623, 1624, 7, 14, 0, 0, 1624, 1625, 7, 22, 0, 0, 1625, 1626, 7, 13, 0, 0, 1626, 1627, 7, 13, 0, 0, 1627, 1628, 7, 10, 0, 0, 1628, 1629, 7, 7, 0, 0, 1629, 1630, 7, 16, 0, 0, 1630, 1631, 5, 95, 0, 0, 1631, 1632, 7, 14, 0, 0, 1632, 1633, 7, 5, 0, 0, 1633, 1634, 7, 16, 0, 0, 1634, 1635, 7, 5, 0, 0, 1635, 1636, 7, 6, 0, 0, 1636, 1637, 7, 19, 0, 0, 1637, 1638, 7, 23, 0, 0, 1638, 106, 1, 0, 0, 0, 1639, 1640, 7, 14, 0, 0, 1640, 1641, 7, 22, 0, 0, 1641, 1642, 7, 13, 0, 0, 1642, 1643, 7, 13, 0, 0, 1643, 1644, 7, 10, 0, 0, 1644, 1645, 7, 7, 0, 0, 1645, 1646, 7, 16, 0, 0, 1646, 1647, 5, 95, 0, 0, 1647, 1648, 7, 12, 0, 0, 1648, 1649, 7, 5, 0, 0, 1649, 1650, 7, 16, 0, 0, 1650, 1651, 7, 10, 0, 0, 1651, 108, 1, 0, 0, 0, 1652, 1653, 7, 14, 0, 0, 1653, 1654, 7, 22, 0, 0, 1654, 1655, 7, 13, 0, 0, 1655, 1656, 7, 13, 0, 0, 1656, 1657, 7, 10, 0, 0, 1657, 1658, 7, 7, 0, 0, 1658, 1659, 7, 16, 0, 0, 1659, 1660, 5, 95, 0, 0, 1660, 1661, 7, 13, 0, 0, 1661, 1662, 7, 19, 0, 0, 1662, 1663, 7, 6, 0, 0, 1663, 1664, 7, 10, 0, 0, 1664, 110, 1, 0, 0, 0, 1665, 1666, 7, 14, 0, 0, 1666, 1667, 7, 22, 0, 0, 1667, 1668, 7, 13, 0, 0, 1668, 1669, 7, 13, 0, 0, 1669, 1670, 7, 10, 0, 0, 1670, 1671, 7, 7, 0, 0, 1671, 1672, 7, 16, 0, 0, 1672, 1673, 5, 95, 0, 0, 1673, 1674, 7, 16, 0, 0, 1674, 1675, 7, 17, 0, 0, 1675, 1676, 7, 15, 0, 0, 1676, 1677, 7, 10, 0, 0, 1677, 112, 1, 0, 0, 0, 1678, 1679, 7, 14, 0, 0, 1679, 1680, 7, 22, 0, 0, 1680, 1681, 7, 13, 0, 0, 1681, 1682, 7, 13, 0, 0, 1682, 1683, 7, 10, 0, 0, 1683, 1684, 7, 7, 0, 0, 1684, 1685, 7, 16, 0, 0, 1685, 1686, 5, 95, 0, 0, 1686, 1687, 7, 16, 0, 0, 1687, 1688, 7, 17, 0, 0, 1688, 1689, 7, 15, 0, 0, 1689, 1690, 7, 10, 0, 0, 1690, 1691, 7, 9, 0, 0, 1691, 1692, 7, 16, 0, 0, 1692, 1693, 7, 5, 0, 0, 1693, 1694, 7, 15, 0, 0, 1694, 1695, 7, 24, 0, 0, 1695, 114, 1, 0, 0, 0, 1696, 1697, 7, 14, 0, 0, 1697, 1698, 7, 22, 0, 0, 1698, 1699, 7, 13, 0, 0, 1699, 1700, 7, 13, 0, 0, 1700, 1701, 7, 10, 0, 0, 1701, 1702, 7, 7, 0, 0, 1702, 1703, 7, 16, 0, 0, 1703, 1704, 5, 95, 0, 0, 1704, 1705, 7, 22, 0, 0, 1705, 1706, 7, 9, 0, 0, 1706, 1707, 7, 10, 0, 0, 1707, 1708, 7, 13, 0, 0, 1708, 116, 1, 0, 0, 0, 1709, 1710, 7, 12, 0, 0, 1710, 1711, 7, 10, 0, 0, 1711, 1712, 7, 25, 0, 0, 1712, 1713, 7, 5, 0, 0, 1713, 1714, 7, 22, 0, 0, 1714, 1715, 7, 6, 0, 0, 1715, 1716, 7, 16, 0, 0, 1716, 118, 1, 0, 0, 0, 1717, 1718, 7, 12, 0, 0, 1718, 1719, 7, 10, 0, 0, 1719, 1720, 7, 25, 0, 0, 1720, 1721, 7, 10, 0, 0, 1721, 1722, 7, 13, 0, 0, 1722, 1723, 7, 13, 0, 0, 1723, 1724, 7, 5, 0, 0, 1724, 1725, 7, 18, 0, 0, 1725, 1726, 7, 6, 0, 0, 1726, 1727, 7, 10, 0, 0, 1727, 120, 1, 0, 0, 0, 1728, 1729, 7, 12, 0, 0, 1729, 1730, 7, 10, 0, 0, 1730, 1731, 7, 9, 0, 0, 1731, 1732, 7, 14, 0, 0, 1732, 122, 1, 0, 0, 0, 1733, 1734, 7, 12, 0, 0, 1734, 1735, 7, 17, 0, 0, 1735, 1736, 7, 9, 0, 0, 1736, 1737, 7, 16, 0, 0, 1737, 1738, 7, 17, 0, 0, 1738, 1739, 7, 7, 0, 0, 1739, 1740, 7, 14, 0, 0, 1740, 1741, 7, 16, 0, 0, 1741, 124, 1, 0, 0, 0, 1742, 1743, 7, 12, 0, 0, 1743, 1744, 7, 19, 0, 0, 1744, 126, 1, 0, 0, 0, 1745, 1746, 7, 10, 0, 0, 1746, 1747, 7, 6, 0, 0, 1747, 1748, 7, 9, 0, 0, 1748, 1749, 7, 10, 0, 0, 1749, 128, 1, 0, 0, 0, 1750, 1751, 7, 10, 0, 0, 1751, 1752, 7, 26, 0, 0, 1752, 1753, 7, 14, 0, 0, 1753, 1754, 7, 10, 0, 0, 1754, 1755, 7, 24, 0, 0, 1755, 1756, 7, 16, 0, 0, 1756, 130, 1, 0, 0, 0, 1757, 1758, 7, 25, 0, 0, 1758, 1759, 7, 5, 0, 0, 1759, 1760, 7, 6, 0, 0, 1760, 1761, 7, 9, 0, 0, 1761, 1762, 7, 10, 0, 0, 1762, 132, 1, 0, 0, 0, 1763, 1764, 7, 25, 0, 0, 1764, 1765, 7, 10, 0, 0, 1765, 1766, 7, 16, 0, 0, 1766, 1767, 7, 14, 0, 0, 1767, 1768, 7, 20, 0, 0, 1768, 134, 1, 0, 0, 0, 1769, 1770, 7, 25, 0, 0, 1770, 1771, 7, 19, 0, 0, 1771, 1772, 7, 13, 0, 0, 1772, 136, 1, 0, 0, 0, 1773, 1774, 7, 25, 0, 0, 1774, 1775, 7, 19, 0, 0, 1775, 1776, 7, 13, 0, 0, 1776, 1777, 7, 10, 0, 0, 1777, 1778, 7, 17, 0, 0, 1778, 1779, 7, 23, 0, 0, 1779, 1780, 7, 7, 0, 0, 1780, 138, 1, 0, 0, 0, 1781, 1782, 7, 25, 0, 0, 1782, 1783, 7, 13, 0, 0, 1783, 1784, 7, 19, 0, 0, 1784, 1785, 7, 15, 0, 0, 1785, 140, 1, 0, 0, 0, 1786, 1787, 7, 23, 0, 0, 1787, 1788, 7, 13, 0, 0, 1788, 1789, 7, 5, 0, 0, 1789, 1790, 7, 7, 0, 0, 1790, 1791, 7, 16, 0, 0, 1791, 142, 1, 0, 0, 0, 1792, 1793, 7, 23, 0, 0, 1793, 1794, 7, 13, 0, 0, 1794, 1795, 7, 19, 0, 0, 1795, 1796, 7, 22, 0, 0, 1796, 1797, 7, 24, 0, 0, 1797, 144, 1, 0, 0, 0, 1798, 1799, 7, 20, 0, 0, 1799, 1800, 7, 5, 0, 0, 1800, 1801, 7, 27, 0, 0, 1801, 1802, 7, 17, 0, 0, 1802, 1803, 7, 7, 0, 0, 1803, 1804, 7, 23, 0, 0, 1804, 146, 1, 0, 0, 0, 1805, 1806, 7, 17, 0, 0, 1806, 1807, 7, 7, 0, 0, 1807, 148, 1, 0, 0, 0, 1808, 1809, 7, 17, 0, 0, 1809, 1810, 7, 7, 0, 0, 1810, 1811, 7, 17, 0, 0, 1811, 1812, 7, 16, 0, 0, 1812, 1813, 7, 17, 0, 0, 1813, 1814, 7, 5, 0, 0, 1814, 1815, 7, 6, 0, 0, 1815, 1816, 7, 6, 0, 0, 1816, 1817, 7, 8, 0, 0, 1817, 150, 1, 0, 0, 0, 1818, 1819, 7, 17, 0, 0, 1819, 1820, 7, 7, 0, 0, 1820, 1821, 7, 16, 0, 0, 1821, 1822, 7, 10, 0, 0, 1822, 1823, 7, 13, 0, 0, 1823, 1824, 7, 9, 0, 0, 1824, 1825, 7, 10, 0, 0, 1825, 1826, 7, 14, 0, 0, 1826, 1827, 7, 16, 0, 0, 1827, 152, 1, 0, 0, 0, 1828, 1829, 7, 17, 0, 0, 1829, 1830, 7, 7, 0, 0, 1830, 1831, 7, 16, 0, 0, 1831, 1832, 7, 19, 0, 0, 1832, 154, 1, 0, 0, 0, 1833, 1834, 7, 6, 0, 0, 1834, 1835, 7, 5, 0, 0, 1835, 1836, 7, 16, 0, 0, 1836, 1837, 7, 10, 0, 0, 1837, 1838, 7, 13, 0, 0, 1838, 1839, 7, 5, 0, 0, 1839, 1840, 7, 6, 0, 0, 1840, 156, 1, 0, 0, 0, 1841, 1842, 7, 6, 0, 0, 1842, 1843, 7, 10, 0, 0, 1843, 1844, 7, 5, 0, 0, 1844, 1845, 7, 12, 0, 0, 1845, 1846, 7, 17, 0, 0, 1846, 1847, 7, 7, 0, 0, 1847, 1848, 7, 23, 0, 0, 1848, 158, 1, 0, 0, 0, 1849, 1850, 7, 6, 0, 0, 1850, 1851, 7, 17, 0, 0, 1851, 1852, 7, 15, 0, 0, 1852, 1853, 7, 17, 0, 0, 1853, 1854, 7, 16, 0, 0, 1854, 160, 1, 0, 0, 0, 1855, 1856, 7, 6, 0, 0, 1856, 1857, 7, 19, 0, 0, 1857, 1858, 7, 14, 0, 0, 1858, 1859, 7, 5, 0, 0, 1859, 1860, 7, 6, 0, 0, 1860, 1861, 7, 16, 0, 0, 1861, 1862, 7, 17, 0, 0, 1862, 1863, 7, 15, 0, 0, 1863, 1864, 7, 10, 0, 0, 1864, 162, 1, 0, 0, 0, 1865, 1866, 7, 6, 0, 0, 1866, 1867, 7, 19, 0, 0, 1867, 1868, 7, 14, 0, 0, 1868, 1869, 7, 5, 0, 0, 1869, 1870, 7, 6, 0, 0, 1870, 1871, 7, 16, 0, 0, 1871, 1872, 7, 17, 0, 0, 1872, 1873, 7, 15, 0, 0, 1873, 1874, 7, 10, 0, 0, 1874, 1875, 7, 9, 0, 0, 1875, 1876, 7, 16, 0, 0, 1876, 1877, 7, 5, 0, 0, 1877, 1878, 7, 15, 0, 0, 1878, 1879, 7, 24, 0, 0, 1879, 164, 1, 0, 0, 0, 1880, 1881, 7, 7, 0, 0, 1881, 1882, 7, 19, 0, 0, 1882, 1883, 7, 16, 0, 0, 1883, 166, 1, 0, 0, 0, 1884, 1885, 7, 7, 0, 0, 1885, 1886, 7, 22, 0, 0, 1886, 1887, 7, 6, 0, 0, 1887, 1888, 7, 6, 0, 0, 1888, 168, 1, 0, 0, 0, 1889, 1890, 7, 19, 0, 0, 1890, 1891, 7, 25, 0, 0, 1891, 1892, 7, 25, 0, 0, 1892, 1893, 7, 9, 0, 0, 1893, 1894, 7, 10, 0, 0, 1894, 1895, 7, 16, 0, 0, 1895, 170, 1, 0, 0, 0, 1896, 1897, 7, 19, 0, 0, 1897, 1898, 7, 7, 0, 0, 1898, 172, 1, 0, 0, 0, 1899, 1900, 7, 19, 0, 0, 1900, 1901, 7, 7, 0, 0, 1901, 1902, 7, 6, 0, 0, 1902, 1903, 7, 8, 0, 0, 1903, 174, 1, 0, 0, 0, 1904, 1905, 7, 19, 0, 0, 1905, 1906, 7, 13, 0, 0, 1906, 176, 1, 0, 0, 0, 1907, 1908, 7, 19, 0, 0, 1908, 1909, 7, 13, 0, 0, 1909, 1910, 7, 12, 0, 0, 1910, 1911, 7, 10, 0, 0, 1911, 1912, 7, 13, 0, 0, 1912, 178, 1, 0, 0, 0, 1913, 1914, 7, 24, 0, 0, 1914, 1915, 7, 6, 0, 0, 1915, 1916, 7, 5, 0, 0, 1916, 1917, 7, 14, 0, 0, 1917, 1918, 7, 17, 0, 0, 1918, 1919, 7, 7, 0, 0, 1919, 1920, 7, 23, 0, 0, 1920, 180, 1, 0, 0, 0, 1921, 1922, 7, 24, 0, 0, 1922, 1923, 7, 13, 0, 0, 1923, 1924, 7, 17, 0, 0, 1924, 1925, 7, 15, 0, 0, 1925, 1926, 7, 5, 0, 0, 1926, 1927, 7, 13, 0, 0, 1927, 1928, 7, 8, 0, 0, 1928, 182, 1, 0, 0, 0, 1929, 1930, 7, 13, 0, 0, 1930, 1931, 7, 10, 0, 0, 1931, 1932, 7, 25, 0, 0, 1932, 1933, 7, 10, 0, 0, 1933, 1934, 7, 13, 0, 0, 1934, 1935, 7, 10, 0, 0, 1935, 1936, 7, 7, 0, 0, 1936, 1937, 7, 14, 0, 0, 1937, 1938, 7, 10, 0, 0, 1938, 1939, 7, 9, 0, 0, 1939, 184, 1, 0, 0, 0, 1940, 1941, 7, 13, 0, 0, 1941, 1942, 7, 10, 0, 0, 1942, 1943, 7, 16, 0, 0, 1943, 1944, 7, 22, 0, 0, 1944, 1945, 7, 13, 0, 0, 1945, 1946, 7, 7, 0, 0, 1946, 1947, 7, 17, 0, 0, 1947, 1948, 7, 7, 0, 0, 1948, 1949, 7, 23, 0, 0, 1949, 186, 1, 0, 0, 0, 1950, 1951, 7, 9, 0, 0, 1951, 1952, 7, 10, 0, 0, 1952, 1953, 7, 6, 0, 0, 1953, 1954, 7, 10, 0, 0, 1954, 1955, 7, 14, 0, 0, 1955, 1956, 7, 16, 0, 0, 1956, 188, 1, 0, 0, 0, 1957, 1958, 7, 9, 0, 0, 1958, 1959, 7, 10, 0, 0, 1959, 1960, 7, 9, 0, 0, 1960, 1961, 7, 9, 0, 0, 1961, 1962, 7, 17, 0, 0, 1962, 1963, 7, 19, 0, 0, 1963, 1964, 7, 7, 0, 0, 1964, 1965, 5, 95, 0, 0, 1965, 1966, 7, 22, 0, 0, 1966, 1967, 7, 9, 0, 0, 1967, 1968, 7, 10, 0, 0, 1968, 1969, 7, 13, 0, 0, 1969, 190, 1, 0, 0, 0, 1970, 1971, 7, 9, 0, 0, 1971, 1972, 7, 19, 0, 0, 1972, 1973, 7, 15, 0, 0, 1973, 1974, 7, 10, 0, 0, 1974, 192, 1, 0, 0, 0, 1975, 1976, 7, 9, 0, 0, 1976, 1977, 7, 8, 0, 0, 1977, 1978, 7, 15, 0, 0, 1978, 1979, 7, 15, 0, 0, 1979, 1980, 7, 10, 0, 0, 1980, 1981, 7, 16, 0, 0, 1981, 1982, 7, 13, 0, 0, 1982, 1983, 7, 17, 0, 0, 1983, 1984, 7, 14, 0, 0, 1984, 194, 1, 0, 0, 0, 1985, 1986, 7, 16, 0, 0, 1986, 1987, 7, 5, 0, 0, 1987, 1988, 7, 18, 0, 0, 1988, 1989, 7, 6, 0, 0, 1989, 1990, 7, 10, 0, 0, 1990, 196, 1, 0, 0, 0, 1991, 1992, 7, 16, 0, 0, 1992, 1993, 7, 20, 0, 0, 1993, 1994, 7, 10, 0, 0, 1994, 1995, 7, 7, 0, 0, 1995, 198, 1, 0, 0, 0, 1996, 1997, 7, 16, 0, 0, 1997, 1998, 7, 19, 0, 0, 1998, 200, 1, 0, 0, 0, 1999, 2000, 7, 16, 0, 0, 2000, 2001, 7, 13, 0, 0, 2001, 2002, 7, 5, 0, 0, 2002, 2003, 7, 17, 0, 0, 2003, 2004, 7, 6, 0, 0, 2004, 2005, 7, 17, 0, 0, 2005, 2006, 7, 7, 0, 0, 2006, 2007, 7, 23, 0, 0, 2007, 202, 1, 0, 0, 0, 2008, 2009, 7, 16, 0, 0, 2009, 2010, 7, 13, 0, 0, 2010, 2011, 7, 22, 0, 0, 2011, 2012, 7, 10, 0, 0, 2012, 204, 1, 0, 0, 0, 2013, 2014, 7, 22, 0, 0, 2014, 2015, 7, 7, 0, 0, 2015, 2016, 7, 17, 0, 0, 2016, 2017, 7, 19, 0, 0, 2017, 2018, 7, 7, 0, 0, 2018, 206, 1, 0, 0, 0, 2019, 2020, 7, 22, 0, 0, 2020, 2021, 7, 7, 0, 0, 2021, 2022, 7, 17, 0, 0, 2022, 2023, 7, 28, 0, 0, 2023, 2024, 7, 22, 0, 0, 2024, 2025, 7, 10, 0, 0, 2025, 208, 1, 0, 0, 0, 2026, 2027, 7, 22, 0, 0, 2027, 2028, 7, 9, 0, 0, 2028, 2029, 7, 10, 0, 0, 2029, 2030, 7, 13, 0, 0, 2030, 210, 1, 0, 0, 0, 2031, 2032, 7, 22, 0, 0, 2032, 2033, 7, 9, 0, 0, 2033, 2034, 7, 17, 0, 0, 2034, 2035, 7, 7, 0, 0, 2035, 2036, 7, 23, 0, 0, 2036, 212, 1, 0, 0, 0, 2037, 2038, 7, 27, 0, 0, 2038, 2039, 7, 5, 0, 0, 2039, 2040, 7, 13, 0, 0, 2040, 2041, 7, 17, 0, 0, 2041, 2042, 7, 5, 0, 0, 2042, 2043, 7, 12, 0, 0, 2043, 2044, 7, 17, 0, 0, 2044, 2045, 7, 14, 0, 0, 2045, 214, 1, 0, 0, 0, 2046, 2047, 7, 29, 0, 0, 2047, 2048, 7, 20, 0, 0, 2048, 2049, 7, 10, 0, 0, 2049, 2050, 7, 7, 0, 0, 2050, 216, 1, 0, 0, 0, 2051, 2052, 7, 29, 0, 0, 2052, 2053, 7, 20, 0, 0, 2053, 2054, 7, 10, 0, 0, 2054, 2055, 7, 13, 0, 0, 2055, 2056, 7, 10, 0, 0, 2056, 218, 1, 0, 0, 0, 2057, 2058, 7, 29, 0, 0, 2058, 2059, 7, 17, 0, 0, 2059, 2060, 7, 7, 0, 0, 2060, 2061, 7, 12, 0, 0, 2061, 2062, 7, 19, 0, 0, 2062, 2063, 7, 29, 0, 0, 2063, 220, 1, 0, 0, 0, 2064, 2065, 7, 29, 0, 0, 2065, 2066, 7, 17, 0, 0, 2066, 2067, 7, 16, 0, 0, 2067, 2068, 7, 20, 0, 0, 2068, 222, 1, 0, 0, 0, 2069, 2070, 7, 5, 0, 0, 2070, 2071, 7, 22, 0, 0, 2071, 2072, 7, 16, 0, 0, 2072, 2073, 7, 20, 0, 0, 2073, 2074, 7, 19, 0, 0, 2074, 2075, 7, 13, 0, 0, 2075, 2076, 7, 17, 0, 0, 2076, 2077, 7, 11, 0, 0, 2077, 2078, 7, 5, 0, 0, 2078, 2079, 7, 16, 0, 0, 2079, 2080, 7, 17, 0, 0, 2080, 2081, 7, 19, 0, 0, 2081, 2082, 7, 7, 0, 0, 2082, 224, 1, 0, 0, 0, 2083, 2084, 7, 18, 0, 0, 2084, 2085, 7, 17, 0, 0, 2085, 2086, 7, 7, 0, 0, 2086, 2087, 7, 5, 0, 0, 2087, 2088, 7, 13, 0, 0, 2088, 2089, 7, 8, 0, 0, 2089, 226, 1, 0, 0, 0, 2090, 2091, 7, 14, 0, 0, 2091, 2092, 7, 19, 0, 0, 2092, 2093, 7, 6, 0, 0, 2093, 2094, 7, 6, 0, 0, 2094, 2095, 7, 5, 0, 0, 2095, 2096, 7, 16, 0, 0, 2096, 2097, 7, 17, 0, 0, 2097, 2098, 7, 19, 0, 0, 2098, 2099, 7, 7, 0, 0, 2099, 228, 1, 0, 0, 0, 2100, 2101, 7, 14, 0, 0, 2101, 2102, 7, 19, 0, 0, 2102, 2103, 7, 7, 0, 0, 2103, 2104, 7, 14, 0, 0, 2104, 2105, 7, 22, 0, 0, 2105, 2106, 7, 13, 0, 0, 2106, 2107, 7, 13, 0, 0, 2107, 2108, 7, 10, 0, 0, 2108, 2109, 7, 7, 0, 0, 2109, 2110, 7, 16, 0, 0, 2110, 2111, 7, 6, 0, 0, 2111, 2112, 7, 8, 0, 0, 2112, 230, 1, 0, 0, 0, 2113, 2114, 7, 14, 0, 0, 2114, 2115, 7, 13, 0, 0, 2115, 2116, 7, 19, 0, 0, 2116, 2117, 7, 9, 0, 0, 2117, 2118, 7, 9, 0, 0, 2118, 232, 1, 0, 0, 0, 2119, 2120, 7, 14, 0, 0, 2120, 2121, 7, 22, 0, 0, 2121, 2122, 7, 13, 0, 0, 2122, 2123, 7, 13, 0, 0, 2123, 2124, 7, 10, 0, 0, 2124, 2125, 7, 7, 0, 0, 2125, 2126, 7, 16, 0, 0, 2126, 2127, 5, 95, 0, 0, 2127, 2128, 7, 9, 0, 0, 2128, 2129, 7, 14, 0, 0, 2129, 2130, 7, 20, 0, 0, 2130, 2131, 7, 10, 0, 0, 2131, 2132, 7, 15, 0, 0, 2132, 2133, 7, 5, 0, 0, 2133, 234, 1, 0, 0, 0, 2134, 2135, 7, 25, 0, 0, 2135, 2136, 7, 13, 0, 0, 2136, 2137, 7, 10, 0, 0, 2137, 2138, 7, 10, 0, 0, 2138, 2139, 7, 11, 0, 0, 2139, 2140, 7, 10, 0, 0, 2140, 236, 1, 0, 0, 0, 2141, 2142, 7, 25, 0, 0, 2142, 2143, 7, 22, 0, 0, 2143, 2144, 7, 6, 0, 0, 2144, 2145, 7, 6, 0, 0, 2145, 238, 1, 0, 0, 0, 2146, 2147, 7, 17, 0, 0, 2147, 2148, 7, 6, 0, 0, 2148, 2149, 7, 17, 0, 0, 2149, 2150, 7, 21, 0, 0, 2150, 2151, 7, 10, 0, 0, 2151, 240, 1, 0, 0, 0, 2152, 2153, 7, 17, 0, 0, 2153, 2154, 7, 7, 0, 0, 2154, 2155, 7, 7, 0, 0, 2155, 2156, 7, 10, 0, 0, 2156, 2157, 7, 13, 0, 0, 2157, 242, 1, 0, 0, 0, 2158, 2159, 7, 17, 0, 0, 2159, 2160, 7, 9, 0, 0, 2160, 244, 1, 0, 0, 0, 2161, 2162, 7, 17, 0, 0, 2162, 2163, 7, 9, 0, 0, 2163, 2164, 7, 7, 0, 0, 2164, 2165, 7, 22, 0, 0, 2165, 2166, 7, 6, 0, 0, 2166, 2167, 7, 6, 0, 0, 2167, 246, 1, 0, 0, 0, 2168, 2169, 7, 30, 0, 0, 2169, 2170, 7, 19, 0, 0, 2170, 2171, 7, 17, 0, 0, 2171, 2172, 7, 7, 0, 0, 2172, 248, 1, 0, 0, 0, 2173, 2174, 7, 6, 0, 0, 2174, 2175, 7, 10, 0, 0, 2175, 2176, 7, 25, 0, 0, 2176, 2177, 7, 16, 0, 0, 2177, 250, 1, 0, 0, 0, 2178, 2179, 7, 6, 0, 0, 2179, 2180, 7, 17, 0, 0, 2180, 2181, 7, 21, 0, 0, 2181, 2182, 7, 10, 0, 0, 2182, 252, 1, 0, 0, 0, 2183, 2184, 7, 7, 0, 0, 2184, 2185, 7, 5, 0, 0, 2185, 2186, 7, 16, 0, 0, 2186, 2187, 7, 22, 0, 0, 2187, 2188, 7, 13, 0, 0, 2188, 2189, 7, 5, 0, 0, 2189, 2190, 7, 6, 0, 0, 2190, 254, 1, 0, 0, 0, 2191, 2192, 7, 7, 0, 0, 2192, 2193, 7, 19, 0, 0, 2193, 2194, 7, 16, 0, 0, 2194, 2195, 7, 7, 0, 0, 2195, 2196, 7, 22, 0, 0, 2196, 2197, 7, 6, 0, 0, 2197, 2198, 7, 6, 0, 0, 2198, 256, 1, 0, 0, 0, 2199, 2200, 7, 19, 0, 0, 2200, 2201, 7, 22, 0, 0, 2201, 2202, 7, 16, 0, 0, 2202, 2203, 7, 10, 0, 0, 2203, 2204, 7, 13, 0, 0, 2204, 258, 1, 0, 0, 0, 2205, 2206, 7, 19, 0, 0, 2206, 2207, 7, 27, 0, 0, 2207, 2208, 7, 10, 0, 0, 2208, 2209, 7, 13, 0, 0, 2209, 260, 1, 0, 0, 0, 2210, 2211, 7, 19, 0, 0, 2211, 2212, 7, 27, 0, 0, 2212, 2213, 7, 10, 0, 0, 2213, 2214, 7, 13, 0, 0, 2214, 2215, 7, 6, 0, 0, 2215, 2216, 7, 5, 0, 0, 2216, 2217, 7, 24, 0, 0, 2217, 2218, 7, 9, 0, 0, 2218, 262, 1, 0, 0, 0, 2219, 2220, 7, 13, 0, 0, 2220, 2221, 7, 17, 0, 0, 2221, 2222, 7, 23, 0, 0, 2222, 2223, 7, 20, 0, 0, 2223, 2224, 7, 16, 0, 0, 2224, 264, 1, 0, 0, 0, 2225, 2226, 7, 9, 0, 0, 2226, 2227, 7, 17, 0, 0, 2227, 2228, 7, 15, 0, 0, 2228, 2229, 7, 17, 0, 0, 2229, 2230, 7, 6, 0, 0, 2230, 2231, 7, 5, 0, 0, 2231, 2232, 7, 13, 0, 0, 2232, 266, 1, 0, 0, 0, 2233, 2234, 7, 27, 0, 0, 2234, 2235, 7, 10, 0, 0, 2235, 2236, 7, 13, 0, 0, 2236, 2237, 7, 18, 0, 0, 2237, 2238, 7, 19, 0, 0, 2238, 2239, 7, 9, 0, 0, 2239, 2240, 7, 10, 0, 0, 2240, 268, 1, 0, 0, 0, 2241, 2242, 7, 5, 0, 0, 2242, 2243, 7, 18, 0, 0, 2243, 2244, 7, 19, 0, 0, 2244, 2245, 7, 13, 0, 0, 2245, 2246, 7, 16, 0, 0, 2246, 270, 1, 0, 0, 0, 2247, 2248, 7, 5, 0, 0, 2248, 2249, 7, 18, 0, 0, 2249, 2250, 7, 9, 0, 0, 2250, 2251, 7, 19, 0, 0, 2251, 2252, 7, 6, 0, 0, 2252, 2253, 7, 22, 0, 0, 2253, 2254, 7, 16, 0, 0, 2254, 2255, 7, 10, 0, 0, 2255, 272, 1, 0, 0, 0, 2256, 2257, 7, 5, 0, 0, 2257, 2258, 7, 14, 0, 0, 2258, 2259, 7, 14, 0, 0, 2259, 2260, 7, 10, 0, 0, 2260, 2261, 7, 9, 0, 0, 2261, 2262, 7, 9, 0, 0, 2262, 274, 1, 0, 0, 0, 2263, 2264, 7, 5, 0, 0, 2264, 2265, 7, 14, 0, 0, 2265, 2266, 7, 16, 0, 0, 2266, 2267, 7, 17, 0, 0, 2267, 2268, 7, 19, 0, 0, 2268, 2269, 7, 7, 0, 0, 2269, 276, 1, 0, 0, 0, 2270, 2271, 7, 5, 0, 0, 2271, 2272, 7, 12, 0, 0, 2272, 2273, 7, 12, 0, 0, 2273, 278, 1, 0, 0, 0, 2274, 2275, 7, 5, 0, 0, 2275, 2276, 7, 12, 0, 0, 2276, 2277, 7, 15, 0, 0, 2277, 2278, 7, 17, 0, 0, 2278, 2279, 7, 7, 0, 0, 2279, 280, 1, 0, 0, 0, 2280, 2281, 7, 5, 0, 0, 2281, 2282, 7, 25, 0, 0, 2282, 2283, 7, 16, 0, 0, 2283, 2284, 7, 10, 0, 0, 2284, 2285, 7, 13, 0, 0, 2285, 282, 1, 0, 0, 0, 2286, 2287, 7, 5, 0, 0, 2287, 2288, 7, 23, 0, 0, 2288, 2289, 7, 23, 0, 0, 2289, 2290, 7, 13, 0, 0, 2290, 2291, 7, 10, 0, 0, 2291, 2292, 7, 23, 0, 0, 2292, 2293, 7, 5, 0, 0, 2293, 2294, 7, 16, 0, 0, 2294, 2295, 7, 10, 0, 0, 2295, 284, 1, 0, 0, 0, 2296, 2297, 7, 5, 0, 0, 2297, 2298, 7, 6, 0, 0, 2298, 2299, 7, 9, 0, 0, 2299, 2300, 7, 19, 0, 0, 2300, 286, 1, 0, 0, 0, 2301, 2302, 7, 5, 0, 0, 2302, 2303, 7, 6, 0, 0, 2303, 2304, 7, 16, 0, 0, 2304, 2305, 7, 10, 0, 0, 2305, 2306, 7, 13, 0, 0, 2306, 288, 1, 0, 0, 0, 2307, 2308, 7, 5, 0, 0, 2308, 2309, 7, 6, 0, 0, 2309, 2310, 7, 29, 0, 0, 2310, 2311, 7, 5, 0, 0, 2311, 2312, 7, 8, 0, 0, 2312, 2313, 7, 9, 0, 0, 2313, 290, 1, 0, 0, 0, 2314, 2315, 7, 5, 0, 0, 2315, 2316, 7, 9, 0, 0, 2316, 2317, 7, 9, 0, 0, 2317, 2318, 7, 10, 0, 0, 2318, 2319, 7, 13, 0, 0, 2319, 2320, 7, 16, 0, 0, 2320, 2321, 7, 17, 0, 0, 2321, 2322, 7, 19, 0, 0, 2322, 2323, 7, 7, 0, 0, 2323, 292, 1, 0, 0, 0, 2324, 2325, 7, 5, 0, 0, 2325, 2326, 7, 9, 0, 0, 2326, 2327, 7, 9, 0, 0, 2327, 2328, 7, 17, 0, 0, 2328, 2329, 7, 23, 0, 0, 2329, 2330, 7, 7, 0, 0, 2330, 2331, 7, 15, 0, 0, 2331, 2332, 7, 10, 0, 0, 2332, 2333, 7, 7, 0, 0, 2333, 2334, 7, 16, 0, 0, 2334, 294, 1, 0, 0, 0, 2335, 2336, 7, 5, 0, 0, 2336, 2337, 7, 16, 0, 0, 2337, 296, 1, 0, 0, 0, 2338, 2339, 7, 5, 0, 0, 2339, 2340, 7, 16, 0, 0, 2340, 2341, 7, 16, 0, 0, 2341, 2342, 7, 13, 0, 0, 2342, 2343, 7, 17, 0, 0, 2343, 2344, 7, 18, 0, 0, 2344, 2345, 7, 22, 0, 0, 2345, 2346, 7, 16, 0, 0, 2346, 2347, 7, 10, 0, 0, 2347, 298, 1, 0, 0, 0, 2348, 2349, 7, 18, 0, 0, 2349, 2350, 7, 5, 0, 0, 2350, 2351, 7, 14, 0, 0, 2351, 2352, 7, 21, 0, 0, 2352, 2353, 7, 29, 0, 0, 2353, 2354, 7, 5, 0, 0, 2354, 2355, 7, 13, 0, 0, 2355, 2356, 7, 12, 0, 0, 2356, 300, 1, 0, 0, 0, 2357, 2358, 7, 18, 0, 0, 2358, 2359, 7, 10, 0, 0, 2359, 2360, 7, 25, 0, 0, 2360, 2361, 7, 19, 0, 0, 2361, 2362, 7, 13, 0, 0, 2362, 2363, 7, 10, 0, 0, 2363, 302, 1, 0, 0, 0, 2364, 2365, 7, 18, 0, 0, 2365, 2366, 7, 10, 0, 0, 2366, 2367, 7, 23, 0, 0, 2367, 2368, 7, 17, 0, 0, 2368, 2369, 7, 7, 0, 0, 2369, 304, 1, 0, 0, 0, 2370, 2371, 7, 18, 0, 0, 2371, 2372, 7, 8, 0, 0, 2372, 306, 1, 0, 0, 0, 2373, 2374, 7, 14, 0, 0, 2374, 2375, 7, 5, 0, 0, 2375, 2376, 7, 14, 0, 0, 2376, 2377, 7, 20, 0, 0, 2377, 2378, 7, 10, 0, 0, 2378, 308, 1, 0, 0, 0, 2379, 2380, 7, 14, 0, 0, 2380, 2381, 7, 5, 0, 0, 2381, 2382, 7, 6, 0, 0, 2382, 2383, 7, 6, 0, 0, 2383, 2384, 7, 10, 0, 0, 2384, 2385, 7, 12, 0, 0, 2385, 310, 1, 0, 0, 0, 2386, 2387, 7, 14, 0, 0, 2387, 2388, 7, 5, 0, 0, 2388, 2389, 7, 9, 0, 0, 2389, 2390, 7, 14, 0, 0, 2390, 2391, 7, 5, 0, 0, 2391, 2392, 7, 12, 0, 0, 2392, 2393, 7, 10, 0, 0, 2393, 312, 1, 0, 0, 0, 2394, 2395, 7, 14, 0, 0, 2395, 2396, 7, 5, 0, 0, 2396, 2397, 7, 9, 0, 0, 2397, 2398, 7, 14, 0, 0, 2398, 2399, 7, 5, 0, 0, 2399, 2400, 7, 12, 0, 0, 2400, 2401, 7, 10, 0, 0, 2401, 2402, 7, 12, 0, 0, 2402, 314, 1, 0, 0, 0, 2403, 2404, 7, 14, 0, 0, 2404, 2405, 7, 5, 0, 0, 2405, 2406, 7, 16, 0, 0, 2406, 2407, 7, 5, 0, 0, 2407, 2408, 7, 6, 0, 0, 2408, 2409, 7, 19, 0, 0, 2409, 2410, 7, 23, 0, 0, 2410, 316, 1, 0, 0, 0, 2411, 2412, 7, 14, 0, 0, 2412, 2413, 7, 20, 0, 0, 2413, 2414, 7, 5, 0, 0, 2414, 2415, 7, 17, 0, 0, 2415, 2416, 7, 7, 0, 0, 2416, 318, 1, 0, 0, 0, 2417, 2418, 7, 14, 0, 0, 2418, 2419, 7, 20, 0, 0, 2419, 2420, 7, 5, 0, 0, 2420, 2421, 7, 13, 0, 0, 2421, 2422, 7, 5, 0, 0, 2422, 2423, 7, 14, 0, 0, 2423, 2424, 7, 16, 0, 0, 2424, 2425, 7, 10, 0, 0, 2425, 2426, 7, 13, 0, 0, 2426, 2427, 7, 17, 0, 0, 2427, 2428, 7, 9, 0, 0, 2428, 2429, 7, 16, 0, 0, 2429, 2430, 7, 17, 0, 0, 2430, 2431, 7, 14, 0, 0, 2431, 2432, 7, 9, 0, 0, 2432, 320, 1, 0, 0, 0, 2433, 2434, 7, 14, 0, 0, 2434, 2435, 7, 20, 0, 0, 2435, 2436, 7, 10, 0, 0, 2436, 2437, 7, 14, 0, 0, 2437, 2438, 7, 21, 0, 0, 2438, 2439, 7, 24, 0, 0, 2439, 2440, 7, 19, 0, 0, 2440, 2441, 7, 17, 0, 0, 2441, 2442, 7, 7, 0, 0, 2442, 2443, 7, 16, 0, 0, 2443, 322, 1, 0, 0, 0, 2444, 2445, 7, 14, 0, 0, 2445, 2446, 7, 6, 0, 0, 2446, 2447, 7, 5, 0, 0, 2447, 2448, 7, 9, 0, 0, 2448, 2449, 7, 9, 0, 0, 2449, 324, 1, 0, 0, 0, 2450, 2451, 7, 14, 0, 0, 2451, 2452, 7, 6, 0, 0, 2452, 2453, 7, 19, 0, 0, 2453, 2454, 7, 9, 0, 0, 2454, 2455, 7, 10, 0, 0, 2455, 326, 1, 0, 0, 0, 2456, 2457, 7, 14, 0, 0, 2457, 2458, 7, 6, 0, 0, 2458, 2459, 7, 22, 0, 0, 2459, 2460, 7, 9, 0, 0, 2460, 2461, 7, 16, 0, 0, 2461, 2462, 7, 10, 0, 0, 2462, 2463, 7, 13, 0, 0, 2463, 328, 1, 0, 0, 0, 2464, 2465, 7, 14, 0, 0, 2465, 2466, 7, 19, 0, 0, 2466, 2467, 7, 15, 0, 0, 2467, 2468, 7, 15, 0, 0, 2468, 2469, 7, 10, 0, 0, 2469, 2470, 7, 7, 0, 0, 2470, 2471, 7, 16, 0, 0, 2471, 330, 1, 0, 0, 0, 2472, 2473, 7, 14, 0, 0, 2473, 2474, 7, 19, 0, 0, 2474, 2475, 7, 15, 0, 0, 2475, 2476, 7, 15, 0, 0, 2476, 2477, 7, 10, 0, 0, 2477, 2478, 7, 7, 0, 0, 2478, 2479, 7, 16, 0, 0, 2479, 2480, 7, 9, 0, 0, 2480, 332, 1, 0, 0, 0, 2481, 2482, 7, 14, 0, 0, 2482, 2483, 7, 19, 0, 0, 2483, 2484, 7, 15, 0, 0, 2484, 2485, 7, 15, 0, 0, 2485, 2486, 7, 17, 0, 0, 2486, 2487, 7, 16, 0, 0, 2487, 334, 1, 0, 0, 0, 2488, 2489, 7, 14, 0, 0, 2489, 2490, 7, 19, 0, 0, 2490, 2491, 7, 15, 0, 0, 2491, 2492, 7, 15, 0, 0, 2492, 2493, 7, 17, 0, 0, 2493, 2494, 7, 16, 0, 0, 2494, 2495, 7, 16, 0, 0, 2495, 2496, 7, 10, 0, 0, 2496, 2497, 7, 12, 0, 0, 2497, 336, 1, 0, 0, 0, 2498, 2499, 7, 14, 0, 0, 2499, 2500, 7, 19, 0, 0, 2500, 2501, 7, 7, 0, 0, 2501, 2502, 7, 25, 0, 0, 2502, 2503, 7, 17, 0, 0, 2503, 2504, 7, 23, 0, 0, 2504, 2505, 7, 22, 0, 0, 2505, 2506, 7, 13, 0, 0, 2506, 2507, 7, 5, 0, 0, 2507, 2508, 7, 16, 0, 0, 2508, 2509, 7, 17, 0, 0, 2509, 2510, 7, 19, 0, 0, 2510, 2511, 7, 7, 0, 0, 2511, 338, 1, 0, 0, 0, 2512, 2513, 7, 14, 0, 0, 2513, 2514, 7, 19, 0, 0, 2514, 2515, 7, 7, 0, 0, 2515, 2516, 7, 7, 0, 0, 2516, 2517, 7, 10, 0, 0, 2517, 2518, 7, 14, 0, 0, 2518, 2519, 7, 16, 0, 0, 2519, 2520, 7, 17, 0, 0, 2520, 2521, 7, 19, 0, 0, 2521, 2522, 7, 7, 0, 0, 2522, 340, 1, 0, 0, 0, 2523, 2524, 7, 14, 0, 0, 2524, 2525, 7, 19, 0, 0, 2525, 2526, 7, 7, 0, 0, 2526, 2527, 7, 9, 0, 0, 2527, 2528, 7, 16, 0, 0, 2528, 2529, 7, 13, 0, 0, 2529, 2530, 7, 5, 0, 0, 2530, 2531, 7, 17, 0, 0, 2531, 2532, 7, 7, 0, 0, 2532, 2533, 7, 16, 0, 0, 2533, 2534, 7, 9, 0, 0, 2534, 342, 1, 0, 0, 0, 2535, 2536, 7, 14, 0, 0, 2536, 2537, 7, 19, 0, 0, 2537, 2538, 7, 7, 0, 0, 2538, 2539, 7, 16, 0, 0, 2539, 2540, 7, 10, 0, 0, 2540, 2541, 7, 7, 0, 0, 2541, 2542, 7, 16, 0, 0, 2542, 344, 1, 0, 0, 0, 2543, 2544, 7, 14, 0, 0, 2544, 2545, 7, 19, 0, 0, 2545, 2546, 7, 7, 0, 0, 2546, 2547, 7, 16, 0, 0, 2547, 2548, 7, 17, 0, 0, 2548, 2549, 7, 7, 0, 0, 2549, 2550, 7, 22, 0, 0, 2550, 2551, 7, 10, 0, 0, 2551, 346, 1, 0, 0, 0, 2552, 2553, 7, 14, 0, 0, 2553, 2554, 7, 19, 0, 0, 2554, 2555, 7, 7, 0, 0, 2555, 2556, 7, 27, 0, 0, 2556, 2557, 7, 10, 0, 0, 2557, 2558, 7, 13, 0, 0, 2558, 2559, 7, 9, 0, 0, 2559, 2560, 7, 17, 0, 0, 2560, 2561, 7, 19, 0, 0, 2561, 2562, 7, 7, 0, 0, 2562, 348, 1, 0, 0, 0, 2563, 2564, 7, 14, 0, 0, 2564, 2565, 7, 19, 0, 0, 2565, 2566, 7, 24, 0, 0, 2566, 2567, 7, 8, 0, 0, 2567, 350, 1, 0, 0, 0, 2568, 2569, 7, 14, 0, 0, 2569, 2570, 7, 19, 0, 0, 2570, 2571, 7, 9, 0, 0, 2571, 2572, 7, 16, 0, 0, 2572, 352, 1, 0, 0, 0, 2573, 2574, 7, 14, 0, 0, 2574, 2575, 7, 9, 0, 0, 2575, 2576, 7, 27, 0, 0, 2576, 354, 1, 0, 0, 0, 2577, 2578, 7, 14, 0, 0, 2578, 2579, 7, 22, 0, 0, 2579, 2580, 7, 13, 0, 0, 2580, 2581, 7, 9, 0, 0, 2581, 2582, 7, 19, 0, 0, 2582, 2583, 7, 13, 0, 0, 2583, 356, 1, 0, 0, 0, 2584, 2585, 7, 14, 0, 0, 2585, 2586, 7, 8, 0, 0, 2586, 2587, 7, 14, 0, 0, 2587, 2588, 7, 6, 0, 0, 2588, 2589, 7, 10, 0, 0, 2589, 358, 1, 0, 0, 0, 2590, 2591, 7, 12, 0, 0, 2591, 2592, 7, 5, 0, 0, 2592, 2593, 7, 16, 0, 0, 2593, 2594, 7, 5, 0, 0, 2594, 360, 1, 0, 0, 0, 2595, 2596, 7, 12, 0, 0, 2596, 2597, 7, 5, 0, 0, 2597, 2598, 7, 16, 0, 0, 2598, 2599, 7, 5, 0, 0, 2599, 2600, 7, 18, 0, 0, 2600, 2601, 7, 5, 0, 0, 2601, 2602, 7, 9, 0, 0, 2602, 2603, 7, 10, 0, 0, 2603, 362, 1, 0, 0, 0, 2604, 2605, 7, 12, 0, 0, 2605, 2606, 7, 5, 0, 0, 2606, 2607, 7, 8, 0, 0, 2607, 364, 1, 0, 0, 0, 2608, 2609, 7, 12, 0, 0, 2609, 2610, 7, 10, 0, 0, 2610, 2611, 7, 5, 0, 0, 2611, 2612, 7, 6, 0, 0, 2612, 2613, 7, 6, 0, 0, 2613, 2614, 7, 19, 0, 0, 2614, 2615, 7, 14, 0, 0, 2615, 2616, 7, 5, 0, 0, 2616, 2617, 7, 16, 0, 0, 2617, 2618, 7, 10, 0, 0, 2618, 366, 1, 0, 0, 0, 2619, 2620, 7, 12, 0, 0, 2620, 2621, 7, 10, 0, 0, 2621, 2622, 7, 14, 0, 0, 2622, 2623, 7, 6, 0, 0, 2623, 2624, 7, 5, 0, 0, 2624, 2625, 7, 13, 0, 0, 2625, 2626, 7, 10, 0, 0, 2626, 368, 1, 0, 0, 0, 2627, 2628, 7, 12, 0, 0, 2628, 2629, 7, 10, 0, 0, 2629, 2630, 7, 25, 0, 0, 2630, 2631, 7, 5, 0, 0, 2631, 2632, 7, 22, 0, 0, 2632, 2633, 7, 6, 0, 0, 2633, 2634, 7, 16, 0, 0, 2634, 2635, 7, 9, 0, 0, 2635, 370, 1, 0, 0, 0, 2636, 2637, 7, 12, 0, 0, 2637, 2638, 7, 10, 0, 0, 2638, 2639, 7, 25, 0, 0, 2639, 2640, 7, 10, 0, 0, 2640, 2641, 7, 13, 0, 0, 2641, 2642, 7, 13, 0, 0, 2642, 2643, 7, 10, 0, 0, 2643, 2644, 7, 12, 0, 0, 2644, 372, 1, 0, 0, 0, 2645, 2646, 7, 12, 0, 0, 2646, 2647, 7, 10, 0, 0, 2647, 2648, 7, 25, 0, 0, 2648, 2649, 7, 17, 0, 0, 2649, 2650, 7, 7, 0, 0, 2650, 2651, 7, 10, 0, 0, 2651, 2652, 7, 13, 0, 0, 2652, 374, 1, 0, 0, 0, 2653, 2654, 7, 12, 0, 0, 2654, 2655, 7, 10, 0, 0, 2655, 2656, 7, 6, 0, 0, 2656, 2657, 7, 10, 0, 0, 2657, 2658, 7, 16, 0, 0, 2658, 2659, 7, 10, 0, 0, 2659, 376, 1, 0, 0, 0, 2660, 2661, 7, 12, 0, 0, 2661, 2662, 7, 10, 0, 0, 2662, 2663, 7, 6, 0, 0, 2663, 2664, 7, 17, 0, 0, 2664, 2665, 7, 15, 0, 0, 2665, 2666, 7, 17, 0, 0, 2666, 2667, 7, 16, 0, 0, 2667, 2668, 7, 10, 0, 0, 2668, 2669, 7, 13, 0, 0, 2669, 378, 1, 0, 0, 0, 2670, 2671, 7, 12, 0, 0, 2671, 2672, 7, 10, 0, 0, 2672, 2673, 7, 6, 0, 0, 2673, 2674, 7, 17, 0, 0, 2674, 2675, 7, 15, 0, 0, 2675, 2676, 7, 17, 0, 0, 2676, 2677, 7, 16, 0, 0, 2677, 2678, 7, 10, 0, 0, 2678, 2679, 7, 13, 0, 0, 2679, 2680, 7, 9, 0, 0, 2680, 380, 1, 0, 0, 0, 2681, 2682, 7, 12, 0, 0, 2682, 2683, 7, 17, 0, 0, 2683, 2684, 7, 14, 0, 0, 2684, 2685, 7, 16, 0, 0, 2685, 2686, 7, 17, 0, 0, 2686, 2687, 7, 19, 0, 0, 2687, 2688, 7, 7, 0, 0, 2688, 2689, 7, 5, 0, 0, 2689, 2690, 7, 13, 0, 0, 2690, 2691, 7, 8, 0, 0, 2691, 382, 1, 0, 0, 0, 2692, 2693, 7, 12, 0, 0, 2693, 2694, 7, 17, 0, 0, 2694, 2695, 7, 9, 0, 0, 2695, 2696, 7, 5, 0, 0, 2696, 2697, 7, 18, 0, 0, 2697, 2698, 7, 6, 0, 0, 2698, 2699, 7, 10, 0, 0, 2699, 384, 1, 0, 0, 0, 2700, 2701, 7, 12, 0, 0, 2701, 2702, 7, 17, 0, 0, 2702, 2703, 7, 9, 0, 0, 2703, 2704, 7, 14, 0, 0, 2704, 2705, 7, 5, 0, 0, 2705, 2706, 7, 13, 0, 0, 2706, 2707, 7, 12, 0, 0, 2707, 386, 1, 0, 0, 0, 2708, 2709, 7, 12, 0, 0, 2709, 2710, 7, 19, 0, 0, 2710, 2711, 7, 14, 0, 0, 2711, 2712, 7, 22, 0, 0, 2712, 2713, 7, 15, 0, 0, 2713, 2714, 7, 10, 0, 0, 2714, 2715, 7, 7, 0, 0, 2715, 2716, 7, 16, 0, 0, 2716, 388, 1, 0, 0, 0, 2717, 2718, 7, 12, 0, 0, 2718, 2719, 7, 19, 0, 0, 2719, 2720, 7, 15, 0, 0, 2720, 2721, 7, 5, 0, 0, 2721, 2722, 7, 17, 0, 0, 2722, 2723, 7, 7, 0, 0, 2723, 390, 1, 0, 0, 0, 2724, 2725, 7, 12, 0, 0, 2725, 2726, 7, 19, 0, 0, 2726, 2727, 7, 22, 0, 0, 2727, 2728, 7, 18, 0, 0, 2728, 2729, 7, 6, 0, 0, 2729, 2730, 7, 10, 0, 0, 2730, 392, 1, 0, 0, 0, 2731, 2732, 7, 12, 0, 0, 2732, 2733, 7, 13, 0, 0, 2733, 2734, 7, 19, 0, 0, 2734, 2735, 7, 24, 0, 0, 2735, 394, 1, 0, 0, 0, 2736, 2737, 7, 10, 0, 0, 2737, 2738, 7, 5, 0, 0, 2738, 2739, 7, 14, 0, 0, 2739, 2740, 7, 20, 0, 0, 2740, 396, 1, 0, 0, 0, 2741, 2742, 7, 10, 0, 0, 2742, 2743, 7, 7, 0, 0, 2743, 2744, 7, 5, 0, 0, 2744, 2745, 7, 18, 0, 0, 2745, 2746, 7, 6, 0, 0, 2746, 2747, 7, 10, 0, 0, 2747, 398, 1, 0, 0, 0, 2748, 2749, 7, 10, 0, 0, 2749, 2750, 7, 7, 0, 0, 2750, 2751, 7, 14, 0, 0, 2751, 2752, 7, 19, 0, 0, 2752, 2753, 7, 12, 0, 0, 2753, 2754, 7, 17, 0, 0, 2754, 2755, 7, 7, 0, 0, 2755, 2756, 7, 23, 0, 0, 2756, 400, 1, 0, 0, 0, 2757, 2758, 7, 10, 0, 0, 2758, 2759, 7, 7, 0, 0, 2759, 2760, 7, 14, 0, 0, 2760, 2761, 7, 13, 0, 0, 2761, 2762, 7, 8, 0, 0, 2762, 2763, 7, 24, 0, 0, 2763, 2764, 7, 16, 0, 0, 2764, 2765, 7, 10, 0, 0, 2765, 2766, 7, 12, 0, 0, 2766, 402, 1, 0, 0, 0, 2767, 2768, 7, 10, 0, 0, 2768, 2769, 7, 7, 0, 0, 2769, 2770, 7, 22, 0, 0, 2770, 2771, 7, 15, 0, 0, 2771, 404, 1, 0, 0, 0, 2772, 2773, 7, 10, 0, 0, 2773, 2774, 7, 9, 0, 0, 2774, 2775, 7, 14, 0, 0, 2775, 2776, 7, 5, 0, 0, 2776, 2777, 7, 24, 0, 0, 2777, 2778, 7, 10, 0, 0, 2778, 406, 1, 0, 0, 0, 2779, 2780, 7, 10, 0, 0, 2780, 2781, 7, 27, 0, 0, 2781, 2782, 7, 10, 0, 0, 2782, 2783, 7, 7, 0, 0, 2783, 2784, 7, 16, 0, 0, 2784, 408, 1, 0, 0, 0, 2785, 2786, 7, 10, 0, 0, 2786, 2787, 7, 26, 0, 0, 2787, 2788, 7, 14, 0, 0, 2788, 2789, 7, 6, 0, 0, 2789, 2790, 7, 22, 0, 0, 2790, 2791, 7, 12, 0, 0, 2791, 2792, 7, 10, 0, 0, 2792, 410, 1, 0, 0, 0, 2793, 2794, 7, 10, 0, 0, 2794, 2795, 7, 26, 0, 0, 2795, 2796, 7, 14, 0, 0, 2796, 2797, 7, 6, 0, 0, 2797, 2798, 7, 22, 0, 0, 2798, 2799, 7, 12, 0, 0, 2799, 2800, 7, 17, 0, 0, 2800, 2801, 7, 7, 0, 0, 2801, 2802, 7, 23, 0, 0, 2802, 412, 1, 0, 0, 0, 2803, 2804, 7, 10, 0, 0, 2804, 2805, 7, 26, 0, 0, 2805, 2806, 7, 14, 0, 0, 2806, 2807, 7, 6, 0, 0, 2807, 2808, 7, 22, 0, 0, 2808, 2809, 7, 9, 0, 0, 2809, 2810, 7, 17, 0, 0, 2810, 2811, 7, 27, 0, 0, 2811, 2812, 7, 10, 0, 0, 2812, 414, 1, 0, 0, 0, 2813, 2814, 7, 10, 0, 0, 2814, 2815, 7, 26, 0, 0, 2815, 2816, 7, 10, 0, 0, 2816, 2817, 7, 14, 0, 0, 2817, 2818, 7, 22, 0, 0, 2818, 2819, 7, 16, 0, 0, 2819, 2820, 7, 10, 0, 0, 2820, 416, 1, 0, 0, 0, 2821, 2822, 7, 10, 0, 0, 2822, 2823, 7, 26, 0, 0, 2823, 2824, 7, 24, 0, 0, 2824, 2825, 7, 6, 0, 0, 2825, 2826, 7, 5, 0, 0, 2826, 2827, 7, 17, 0, 0, 2827, 2828, 7, 7, 0, 0, 2828, 418, 1, 0, 0, 0, 2829, 2830, 7, 10, 0, 0, 2830, 2831, 7, 26, 0, 0, 2831, 2832, 7, 16, 0, 0, 2832, 2833, 7, 10, 0, 0, 2833, 2834, 7, 7, 0, 0, 2834, 2835, 7, 9, 0, 0, 2835, 2836, 7, 17, 0, 0, 2836, 2837, 7, 19, 0, 0, 2837, 2838, 7, 7, 0, 0, 2838, 420, 1, 0, 0, 0, 2839, 2840, 7, 10, 0, 0, 2840, 2841, 7, 26, 0, 0, 2841, 2842, 7, 16, 0, 0, 2842, 2843, 7, 10, 0, 0, 2843, 2844, 7, 13, 0, 0, 2844, 2845, 7, 7, 0, 0, 2845, 2846, 7, 5, 0, 0, 2846, 2847, 7, 6, 0, 0, 2847, 422, 1, 0, 0, 0, 2848, 2849, 7, 25, 0, 0, 2849, 2850, 7, 5, 0, 0, 2850, 2851, 7, 15, 0, 0, 2851, 2852, 7, 17, 0, 0, 2852, 2853, 7, 6, 0, 0, 2853, 2854, 7, 8, 0, 0, 2854, 424, 1, 0, 0, 0, 2855, 2856, 7, 25, 0, 0, 2856, 2857, 7, 17, 0, 0, 2857, 2858, 7, 13, 0, 0, 2858, 2859, 7, 9, 0, 0, 2859, 2860, 7, 16, 0, 0, 2860, 426, 1, 0, 0, 0, 2861, 2862, 7, 25, 0, 0, 2862, 2863, 7, 19, 0, 0, 2863, 2864, 7, 6, 0, 0, 2864, 2865, 7, 6, 0, 0, 2865, 2866, 7, 19, 0, 0, 2866, 2867, 7, 29, 0, 0, 2867, 2868, 7, 17, 0, 0, 2868, 2869, 7, 7, 0, 0, 2869, 2870, 7, 23, 0, 0, 2870, 428, 1, 0, 0, 0, 2871, 2872, 7, 25, 0, 0, 2872, 2873, 7, 19, 0, 0, 2873, 2874, 7, 13, 0, 0, 2874, 2875, 7, 14, 0, 0, 2875, 2876, 7, 10, 0, 0, 2876, 430, 1, 0, 0, 0, 2877, 2878, 7, 25, 0, 0, 2878, 2879, 7, 19, 0, 0, 2879, 2880, 7, 13, 0, 0, 2880, 2881, 7, 29, 0, 0, 2881, 2882, 7, 5, 0, 0, 2882, 2883, 7, 13, 0, 0, 2883, 2884, 7, 12, 0, 0, 2884, 432, 1, 0, 0, 0, 2885, 2886, 7, 25, 0, 0, 2886, 2887, 7, 22, 0, 0, 2887, 2888, 7, 7, 0, 0, 2888, 2889, 7, 14, 0, 0, 2889, 2890, 7, 16, 0, 0, 2890, 2891, 7, 17, 0, 0, 2891, 2892, 7, 19, 0, 0, 2892, 2893, 7, 7, 0, 0, 2893, 434, 1, 0, 0, 0, 2894, 2895, 7, 25, 0, 0, 2895, 2896, 7, 22, 0, 0, 2896, 2897, 7, 7, 0, 0, 2897, 2898, 7, 14, 0, 0, 2898, 2899, 7, 16, 0, 0, 2899, 2900, 7, 17, 0, 0, 2900, 2901, 7, 19, 0, 0, 2901, 2902, 7, 7, 0, 0, 2902, 2903, 7, 9, 0, 0, 2903, 436, 1, 0, 0, 0, 2904, 2905, 7, 23, 0, 0, 2905, 2906, 7, 6, 0, 0, 2906, 2907, 7, 19, 0, 0, 2907, 2908, 7, 18, 0, 0, 2908, 2909, 7, 5, 0, 0, 2909, 2910, 7, 6, 0, 0, 2910, 438, 1, 0, 0, 0, 2911, 2912, 7, 23, 0, 0, 2912, 2913, 7, 13, 0, 0, 2913, 2914, 7, 5, 0, 0, 2914, 2915, 7, 7, 0, 0, 2915, 2916, 7, 16, 0, 0, 2916, 2917, 7, 10, 0, 0, 2917, 2918, 7, 12, 0, 0, 2918, 440, 1, 0, 0, 0, 2919, 2920, 7, 20, 0, 0, 2920, 2921, 7, 5, 0, 0, 2921, 2922, 7, 7, 0, 0, 2922, 2923, 7, 12, 0, 0, 2923, 2924, 7, 6, 0, 0, 2924, 2925, 7, 10, 0, 0, 2925, 2926, 7, 13, 0, 0, 2926, 442, 1, 0, 0, 0, 2927, 2928, 7, 20, 0, 0, 2928, 2929, 7, 10, 0, 0, 2929, 2930, 7, 5, 0, 0, 2930, 2931, 7, 12, 0, 0, 2931, 2932, 7, 10, 0, 0, 2932, 2933, 7, 13, 0, 0, 2933, 444, 1, 0, 0, 0, 2934, 2935, 7, 20, 0, 0, 2935, 2936, 7, 19, 0, 0, 2936, 2937, 7, 6, 0, 0, 2937, 2938, 7, 12, 0, 0, 2938, 446, 1, 0, 0, 0, 2939, 2940, 7, 20, 0, 0, 2940, 2941, 7, 19, 0, 0, 2941, 2942, 7, 22, 0, 0, 2942, 2943, 7, 13, 0, 0, 2943, 448, 1, 0, 0, 0, 2944, 2945, 7, 17, 0, 0, 2945, 2946, 7, 12, 0, 0, 2946, 2947, 7, 10, 0, 0, 2947, 2948, 7, 7, 0, 0, 2948, 2949, 7, 16, 0, 0, 2949, 2950, 7, 17, 0, 0, 2950, 2951, 7, 16, 0, 0, 2951, 2952, 7, 8, 0, 0, 2952, 450, 1, 0, 0, 0, 2953, 2954, 7, 17, 0, 0, 2954, 2955, 7, 25, 0, 0, 2955, 452, 1, 0, 0, 0, 2956, 2957, 7, 17, 0, 0, 2957, 2958, 7, 15, 0, 0, 2958, 2959, 7, 15, 0, 0, 2959, 2960, 7, 10, 0, 0, 2960, 2961, 7, 12, 0, 0, 2961, 2962, 7, 17, 0, 0, 2962, 2963, 7, 5, 0, 0, 2963, 2964, 7, 16, 0, 0, 2964, 2965, 7, 10, 0, 0, 2965, 454, 1, 0, 0, 0, 2966, 2967, 7, 17, 0, 0, 2967, 2968, 7, 15, 0, 0, 2968, 2969, 7, 15, 0, 0, 2969, 2970, 7, 22, 0, 0, 2970, 2971, 7, 16, 0, 0, 2971, 2972, 7, 5, 0, 0, 2972, 2973, 7, 18, 0, 0, 2973, 2974, 7, 6, 0, 0, 2974, 2975, 7, 10, 0, 0, 2975, 456, 1, 0, 0, 0, 2976, 2977, 7, 17, 0, 0, 2977, 2978, 7, 15, 0, 0, 2978, 2979, 7, 24, 0, 0, 2979, 2980, 7, 6, 0, 0, 2980, 2981, 7, 17, 0, 0, 2981, 2982, 7, 14, 0, 0, 2982, 2983, 7, 17, 0, 0, 2983, 2984, 7, 16, 0, 0, 2984, 458, 1, 0, 0, 0, 2985, 2986, 7, 17, 0, 0, 2986, 2987, 7, 7, 0, 0, 2987, 2988, 7, 14, 0, 0, 2988, 2989, 7, 6, 0, 0, 2989, 2990, 7, 22, 0, 0, 2990, 2991, 7, 12, 0, 0, 2991, 2992, 7, 17, 0, 0, 2992, 2993, 7, 7, 0, 0, 2993, 2994, 7, 23, 0, 0, 2994, 460, 1, 0, 0, 0, 2995, 2996, 7, 17, 0, 0, 2996, 2997, 7, 7, 0, 0, 2997, 2998, 7, 14, 0, 0, 2998, 2999, 7, 13, 0, 0, 2999, 3000, 7, 10, 0, 0, 3000, 3001, 7, 15, 0, 0, 3001, 3002, 7, 10, 0, 0, 3002, 3003, 7, 7, 0, 0, 3003, 3004, 7, 16, 0, 0, 3004, 462, 1, 0, 0, 0, 3005, 3006, 7, 17, 0, 0, 3006, 3007, 7, 7, 0, 0, 3007, 3008, 7, 12, 0, 0, 3008, 3009, 7, 10, 0, 0, 3009, 3010, 7, 26, 0, 0, 3010, 464, 1, 0, 0, 0, 3011, 3012, 7, 17, 0, 0, 3012, 3013, 7, 7, 0, 0, 3013, 3014, 7, 12, 0, 0, 3014, 3015, 7, 10, 0, 0, 3015, 3016, 7, 26, 0, 0, 3016, 3017, 7, 10, 0, 0, 3017, 3018, 7, 9, 0, 0, 3018, 466, 1, 0, 0, 0, 3019, 3020, 7, 17, 0, 0, 3020, 3021, 7, 7, 0, 0, 3021, 3022, 7, 20, 0, 0, 3022, 3023, 7, 10, 0, 0, 3023, 3024, 7, 13, 0, 0, 3024, 3025, 7, 17, 0, 0, 3025, 3026, 7, 16, 0, 0, 3026, 468, 1, 0, 0, 0, 3027, 3028, 7, 17, 0, 0, 3028, 3029, 7, 7, 0, 0, 3029, 3030, 7, 20, 0, 0, 3030, 3031, 7, 10, 0, 0, 3031, 3032, 7, 13, 0, 0, 3032, 3033, 7, 17, 0, 0, 3033, 3034, 7, 16, 0, 0, 3034, 3035, 7, 9, 0, 0, 3035, 470, 1, 0, 0, 0, 3036, 3037, 7, 17, 0, 0, 3037, 3038, 7, 7, 0, 0, 3038, 3039, 7, 6, 0, 0, 3039, 3040, 7, 17, 0, 0, 3040, 3041, 7, 7, 0, 0, 3041, 3042, 7, 10, 0, 0, 3042, 472, 1, 0, 0, 0, 3043, 3044, 7, 17, 0, 0, 3044, 3045, 7, 7, 0, 0, 3045, 3046, 7, 9, 0, 0, 3046, 3047, 7, 10, 0, 0, 3047, 3048, 7, 7, 0, 0, 3048, 3049, 7, 9, 0, 0, 3049, 3050, 7, 17, 0, 0, 3050, 3051, 7, 16, 0, 0, 3051, 3052, 7, 17, 0, 0, 3052, 3053, 7, 27, 0, 0, 3053, 3054, 7, 10, 0, 0, 3054, 474, 1, 0, 0, 0, 3055, 3056, 7, 17, 0, 0, 3056, 3057, 7, 7, 0, 0, 3057, 3058, 7, 9, 0, 0, 3058, 3059, 7, 10, 0, 0, 3059, 3060, 7, 13, 0, 0, 3060, 3061, 7, 16, 0, 0, 3061, 476, 1, 0, 0, 0, 3062, 3063, 7, 17, 0, 0, 3063, 3064, 7, 7, 0, 0, 3064, 3065, 7, 9, 0, 0, 3065, 3066, 7, 16, 0, 0, 3066, 3067, 7, 10, 0, 0, 3067, 3068, 7, 5, 0, 0, 3068, 3069, 7, 12, 0, 0, 3069, 478, 1, 0, 0, 0, 3070, 3071, 7, 17, 0, 0, 3071, 3072, 7, 7, 0, 0, 3072, 3073, 7, 27, 0, 0, 3073, 3074, 7, 19, 0, 0, 3074, 3075, 7, 21, 0, 0, 3075, 3076, 7, 10, 0, 0, 3076, 3077, 7, 13, 0, 0, 3077, 480, 1, 0, 0, 0, 3078, 3079, 7, 17, 0, 0, 3079, 3080, 7, 9, 0, 0, 3080, 3081, 7, 19, 0, 0, 3081, 3082, 7, 6, 0, 0, 3082, 3083, 7, 5, 0, 0, 3083, 3084, 7, 16, 0, 0, 3084, 3085, 7, 17, 0, 0, 3085, 3086, 7, 19, 0, 0, 3086, 3087, 7, 7, 0, 0, 3087, 482, 1, 0, 0, 0, 3088, 3089, 7, 21, 0, 0, 3089, 3090, 7, 10, 0, 0, 3090, 3091, 7, 8, 0, 0, 3091, 484, 1, 0, 0, 0, 3092, 3093, 7, 6, 0, 0, 3093, 3094, 7, 5, 0, 0, 3094, 3095, 7, 18, 0, 0, 3095, 3096, 7, 10, 0, 0, 3096, 3097, 7, 6, 0, 0, 3097, 486, 1, 0, 0, 0, 3098, 3099, 7, 6, 0, 0, 3099, 3100, 7, 5, 0, 0, 3100, 3101, 7, 7, 0, 0, 3101, 3102, 7, 23, 0, 0, 3102, 3103, 7, 22, 0, 0, 3103, 3104, 7, 5, 0, 0, 3104, 3105, 7, 23, 0, 0, 3105, 3106, 7, 10, 0, 0, 3106, 488, 1, 0, 0, 0, 3107, 3108, 7, 6, 0, 0, 3108, 3109, 7, 5, 0, 0, 3109, 3110, 7, 13, 0, 0, 3110, 3111, 7, 23, 0, 0, 3111, 3112, 7, 10, 0, 0, 3112, 490, 1, 0, 0, 0, 3113, 3114, 7, 6, 0, 0, 3114, 3115, 7, 5, 0, 0, 3115, 3116, 7, 9, 0, 0, 3116, 3117, 7, 16, 0, 0, 3117, 492, 1, 0, 0, 0, 3118, 3119, 7, 6, 0, 0, 3119, 3120, 7, 10, 0, 0, 3120, 3121, 7, 5, 0, 0, 3121, 3122, 7, 21, 0, 0, 3122, 3123, 7, 24, 0, 0, 3123, 3124, 7, 13, 0, 0, 3124, 3125, 7, 19, 0, 0, 3125, 3126, 7, 19, 0, 0, 3126, 3127, 7, 25, 0, 0, 3127, 494, 1, 0, 0, 0, 3128, 3129, 7, 6, 0, 0, 3129, 3130, 7, 10, 0, 0, 3130, 3131, 7, 27, 0, 0, 3131, 3132, 7, 10, 0, 0, 3132, 3133, 7, 6, 0, 0, 3133, 496, 1, 0, 0, 0, 3134, 3135, 7, 6, 0, 0, 3135, 3136, 7, 17, 0, 0, 3136, 3137, 7, 9, 0, 0, 3137, 3138, 7, 16, 0, 0, 3138, 3139, 7, 10, 0, 0, 3139, 3140, 7, 7, 0, 0, 3140, 498, 1, 0, 0, 0, 3141, 3142, 7, 6, 0, 0, 3142, 3143, 7, 19, 0, 0, 3143, 3144, 7, 5, 0, 0, 3144, 3145, 7, 12, 0, 0, 3145, 500, 1, 0, 0, 0, 3146, 3147, 7, 6, 0, 0, 3147, 3148, 7, 19, 0, 0, 3148, 3149, 7, 14, 0, 0, 3149, 3150, 7, 5, 0, 0, 3150, 3151, 7, 6, 0, 0, 3151, 502, 1, 0, 0, 0, 3152, 3153, 7, 6, 0, 0, 3153, 3154, 7, 19, 0, 0, 3154, 3155, 7, 14, 0, 0, 3155, 3156, 7, 5, 0, 0, 3156, 3157, 7, 16, 0, 0, 3157, 3158, 7, 17, 0, 0, 3158, 3159, 7, 19, 0, 0, 3159, 3160, 7, 7, 0, 0, 3160, 504, 1, 0, 0, 0, 3161, 3162, 7, 6, 0, 0, 3162, 3163, 7, 19, 0, 0, 3163, 3164, 7, 14, 0, 0, 3164, 3165, 7, 21, 0, 0, 3165, 506, 1, 0, 0, 0, 3166, 3167, 7, 15, 0, 0, 3167, 3168, 7, 5, 0, 0, 3168, 3169, 7, 24, 0, 0, 3169, 3170, 7, 24, 0, 0, 3170, 3171, 7, 17, 0, 0, 3171, 3172, 7, 7, 0, 0, 3172, 3173, 7, 23, 0, 0, 3173, 508, 1, 0, 0, 0, 3174, 3175, 7, 15, 0, 0, 3175, 3176, 7, 5, 0, 0, 3176, 3177, 7, 16, 0, 0, 3177, 3178, 7, 14, 0, 0, 3178, 3179, 7, 20, 0, 0, 3179, 510, 1, 0, 0, 0, 3180, 3181, 7, 15, 0, 0, 3181, 3182, 7, 5, 0, 0, 3182, 3183, 7, 16, 0, 0, 3183, 3184, 7, 14, 0, 0, 3184, 3185, 7, 20, 0, 0, 3185, 3186, 7, 10, 0, 0, 3186, 3187, 7, 12, 0, 0, 3187, 512, 1, 0, 0, 0, 3188, 3189, 7, 15, 0, 0, 3189, 3190, 7, 5, 0, 0, 3190, 3191, 7, 16, 0, 0, 3191, 3192, 7, 10, 0, 0, 3192, 3193, 7, 13, 0, 0, 3193, 3194, 7, 17, 0, 0, 3194, 3195, 7, 5, 0, 0, 3195, 3196, 7, 6, 0, 0, 3196, 3197, 7, 17, 0, 0, 3197, 3198, 7, 11, 0, 0, 3198, 3199, 7, 10, 0, 0, 3199, 3200, 7, 12, 0, 0, 3200, 514, 1, 0, 0, 0, 3201, 3202, 7, 15, 0, 0, 3202, 3203, 7, 5, 0, 0, 3203, 3204, 7, 26, 0, 0, 3204, 3205, 7, 27, 0, 0, 3205, 3206, 7, 5, 0, 0, 3206, 3207, 7, 6, 0, 0, 3207, 3208, 7, 22, 0, 0, 3208, 3209, 7, 10, 0, 0, 3209, 516, 1, 0, 0, 0, 3210, 3211, 7, 15, 0, 0, 3211, 3212, 7, 10, 0, 0, 3212, 3213, 7, 13, 0, 0, 3213, 3214, 7, 23, 0, 0, 3214, 3215, 7, 10, 0, 0, 3215, 518, 1, 0, 0, 0, 3216, 3217, 7, 15, 0, 0, 3217, 3218, 7, 17, 0, 0, 3218, 3219, 7, 7, 0, 0, 3219, 3220, 7, 22, 0, 0, 3220, 3221, 7, 16, 0, 0, 3221, 3222, 7, 10, 0, 0, 3222, 520, 1, 0, 0, 0, 3223, 3224, 7, 15, 0, 0, 3224, 3225, 7, 17, 0, 0, 3225, 3226, 7, 7, 0, 0, 3226, 3227, 7, 27, 0, 0, 3227, 3228, 7, 5, 0, 0, 3228, 3229, 7, 6, 0, 0, 3229, 3230, 7, 22, 0, 0, 3230, 3231, 7, 10, 0, 0, 3231, 522, 1, 0, 0, 0, 3232, 3233, 7, 15, 0, 0, 3233, 3234, 7, 19, 0, 0, 3234, 3235, 7, 12, 0, 0, 3235, 3236, 7, 10, 0, 0, 3236, 524, 1, 0, 0, 0, 3237, 3238, 7, 15, 0, 0, 3238, 3239, 7, 19, 0, 0, 3239, 3240, 7, 7, 0, 0, 3240, 3241, 7, 16, 0, 0, 3241, 3242, 7, 20, 0, 0, 3242, 526, 1, 0, 0, 0, 3243, 3244, 7, 15, 0, 0, 3244, 3245, 7, 19, 0, 0, 3245, 3246, 7, 27, 0, 0, 3246, 3247, 7, 10, 0, 0, 3247, 528, 1, 0, 0, 0, 3248, 3249, 7, 7, 0, 0, 3249, 3250, 7, 5, 0, 0, 3250, 3251, 7, 15, 0, 0, 3251, 3252, 7, 10, 0, 0, 3252, 530, 1, 0, 0, 0, 3253, 3254, 7, 7, 0, 0, 3254, 3255, 7, 5, 0, 0, 3255, 3256, 7, 15, 0, 0, 3256, 3257, 7, 10, 0, 0, 3257, 3258, 7, 9, 0, 0, 3258, 532, 1, 0, 0, 0, 3259, 3260, 7, 7, 0, 0, 3260, 3261, 7, 10, 0, 0, 3261, 3262, 7, 26, 0, 0, 3262, 3263, 7, 16, 0, 0, 3263, 534, 1, 0, 0, 0, 3264, 3265, 7, 7, 0, 0, 3265, 3266, 7, 19, 0, 0, 3266, 536, 1, 0, 0, 0, 3267, 3268, 7, 7, 0, 0, 3268, 3269, 7, 19, 0, 0, 3269, 3270, 7, 16, 0, 0, 3270, 3271, 7, 20, 0, 0, 3271, 3272, 7, 17, 0, 0, 3272, 3273, 7, 7, 0, 0, 3273, 3274, 7, 23, 0, 0, 3274, 538, 1, 0, 0, 0, 3275, 3276, 7, 7, 0, 0, 3276, 3277, 7, 19, 0, 0, 3277, 3278, 7, 16, 0, 0, 3278, 3279, 7, 17, 0, 0, 3279, 3280, 7, 25, 0, 0, 3280, 3281, 7, 8, 0, 0, 3281, 540, 1, 0, 0, 0, 3282, 3283, 7, 7, 0, 0, 3283, 3284, 7, 19, 0, 0, 3284, 3285, 7, 29, 0, 0, 3285, 3286, 7, 5, 0, 0, 3286, 3287, 7, 17, 0, 0, 3287, 3288, 7, 16, 0, 0, 3288, 542, 1, 0, 0, 0, 3289, 3290, 7, 7, 0, 0, 3290, 3291, 7, 22, 0, 0, 3291, 3292, 7, 6, 0, 0, 3292, 3293, 7, 6, 0, 0, 3293, 3294, 7, 9, 0, 0, 3294, 544, 1, 0, 0, 0, 3295, 3296, 7, 19, 0, 0, 3296, 3297, 7, 18, 0, 0, 3297, 3298, 7, 30, 0, 0, 3298, 3299, 7, 10, 0, 0, 3299, 3300, 7, 14, 0, 0, 3300, 3301, 7, 16, 0, 0, 3301, 546, 1, 0, 0, 0, 3302, 3303, 7, 19, 0, 0, 3303, 3304, 7, 25, 0, 0, 3304, 548, 1, 0, 0, 0, 3305, 3306, 7, 19, 0, 0, 3306, 3307, 7, 25, 0, 0, 3307, 3308, 7, 25, 0, 0, 3308, 550, 1, 0, 0, 0, 3309, 3310, 7, 19, 0, 0, 3310, 3311, 7, 17, 0, 0, 3311, 3312, 7, 12, 0, 0, 3312, 3313, 7, 9, 0, 0, 3313, 552, 1, 0, 0, 0, 3314, 3315, 7, 19, 0, 0, 3315, 3316, 7, 24, 0, 0, 3316, 3317, 7, 10, 0, 0, 3317, 3318, 7, 13, 0, 0, 3318, 3319, 7, 5, 0, 0, 3319, 3320, 7, 16, 0, 0, 3320, 3321, 7, 19, 0, 0, 3321, 3322, 7, 13, 0, 0, 3322, 554, 1, 0, 0, 0, 3323, 3324, 7, 19, 0, 0, 3324, 3325, 7, 24, 0, 0, 3325, 3326, 7, 16, 0, 0, 3326, 3327, 7, 17, 0, 0, 3327, 3328, 7, 19, 0, 0, 3328, 3329, 7, 7, 0, 0, 3329, 556, 1, 0, 0, 0, 3330, 3331, 7, 19, 0, 0, 3331, 3332, 7, 24, 0, 0, 3332, 3333, 7, 16, 0, 0, 3333, 3334, 7, 17, 0, 0, 3334, 3335, 7, 19, 0, 0, 3335, 3336, 7, 7, 0, 0, 3336, 3337, 7, 9, 0, 0, 3337, 558, 1, 0, 0, 0, 3338, 3339, 7, 19, 0, 0, 3339, 3340, 7, 29, 0, 0, 3340, 3341, 7, 7, 0, 0, 3341, 3342, 7, 10, 0, 0, 3342, 3343, 7, 12, 0, 0, 3343, 560, 1, 0, 0, 0, 3344, 3345, 7, 19, 0, 0, 3345, 3346, 7, 29, 0, 0, 3346, 3347, 7, 7, 0, 0, 3347, 3348, 7, 10, 0, 0, 3348, 3349, 7, 13, 0, 0, 3349, 562, 1, 0, 0, 0, 3350, 3351, 7, 24, 0, 0, 3351, 3352, 7, 5, 0, 0, 3352, 3353, 7, 13, 0, 0, 3353, 3354, 7, 9, 0, 0, 3354, 3355, 7, 10, 0, 0, 3355, 3356, 7, 13, 0, 0, 3356, 564, 1, 0, 0, 0, 3357, 3358, 7, 24, 0, 0, 3358, 3359, 7, 5, 0, 0, 3359, 3360, 7, 13, 0, 0, 3360, 3361, 7, 16, 0, 0, 3361, 3362, 7, 17, 0, 0, 3362, 3363, 7, 5, 0, 0, 3363, 3364, 7, 6, 0, 0, 3364, 566, 1, 0, 0, 0, 3365, 3366, 7, 24, 0, 0, 3366, 3367, 7, 5, 0, 0, 3367, 3368, 7, 13, 0, 0, 3368, 3369, 7, 16, 0, 0, 3369, 3370, 7, 17, 0, 0, 3370, 3371, 7, 16, 0, 0, 3371, 3372, 7, 17, 0, 0, 3372, 3373, 7, 19, 0, 0, 3373, 3374, 7, 7, 0, 0, 3374, 568, 1, 0, 0, 0, 3375, 3376, 7, 24, 0, 0, 3376, 3377, 7, 5, 0, 0, 3377, 3378, 7, 9, 0, 0, 3378, 3379, 7, 9, 0, 0, 3379, 3380, 7, 17, 0, 0, 3380, 3381, 7, 7, 0, 0, 3381, 3382, 7, 23, 0, 0, 3382, 570, 1, 0, 0, 0, 3383, 3384, 7, 24, 0, 0, 3384, 3385, 7, 5, 0, 0, 3385, 3386, 7, 9, 0, 0, 3386, 3387, 7, 9, 0, 0, 3387, 3388, 7, 29, 0, 0, 3388, 3389, 7, 19, 0, 0, 3389, 3390, 7, 13, 0, 0, 3390, 3391, 7, 12, 0, 0, 3391, 572, 1, 0, 0, 0, 3392, 3393, 7, 24, 0, 0, 3393, 3394, 7, 6, 0, 0, 3394, 3395, 7, 5, 0, 0, 3395, 3396, 7, 7, 0, 0, 3396, 3397, 7, 9, 0, 0, 3397, 574, 1, 0, 0, 0, 3398, 3399, 7, 24, 0, 0, 3399, 3400, 7, 13, 0, 0, 3400, 3401, 7, 10, 0, 0, 3401, 3402, 7, 14, 0, 0, 3402, 3403, 7, 10, 0, 0, 3403, 3404, 7, 12, 0, 0, 3404, 3405, 7, 17, 0, 0, 3405, 3406, 7, 7, 0, 0, 3406, 3407, 7, 23, 0, 0, 3407, 576, 1, 0, 0, 0, 3408, 3409, 7, 24, 0, 0, 3409, 3410, 7, 13, 0, 0, 3410, 3411, 7, 10, 0, 0, 3411, 3412, 7, 24, 0, 0, 3412, 3413, 7, 5, 0, 0, 3413, 3414, 7, 13, 0, 0, 3414, 3415, 7, 10, 0, 0, 3415, 578, 1, 0, 0, 0, 3416, 3417, 7, 24, 0, 0, 3417, 3418, 7, 13, 0, 0, 3418, 3419, 7, 10, 0, 0, 3419, 3420, 7, 24, 0, 0, 3420, 3421, 7, 5, 0, 0, 3421, 3422, 7, 13, 0, 0, 3422, 3423, 7, 10, 0, 0, 3423, 3424, 7, 12, 0, 0, 3424, 580, 1, 0, 0, 0, 3425, 3426, 7, 24, 0, 0, 3426, 3427, 7, 13, 0, 0, 3427, 3428, 7, 10, 0, 0, 3428, 3429, 7, 9, 0, 0, 3429, 3430, 7, 10, 0, 0, 3430, 3431, 7, 13, 0, 0, 3431, 3432, 7, 27, 0, 0, 3432, 3433, 7, 10, 0, 0, 3433, 582, 1, 0, 0, 0, 3434, 3435, 7, 24, 0, 0, 3435, 3436, 7, 13, 0, 0, 3436, 3437, 7, 17, 0, 0, 3437, 3438, 7, 19, 0, 0, 3438, 3439, 7, 13, 0, 0, 3439, 584, 1, 0, 0, 0, 3440, 3441, 7, 24, 0, 0, 3441, 3442, 7, 13, 0, 0, 3442, 3443, 7, 17, 0, 0, 3443, 3444, 7, 27, 0, 0, 3444, 3445, 7, 17, 0, 0, 3445, 3446, 7, 6, 0, 0, 3446, 3447, 7, 10, 0, 0, 3447, 3448, 7, 23, 0, 0, 3448, 3449, 7, 10, 0, 0, 3449, 3450, 7, 9, 0, 0, 3450, 586, 1, 0, 0, 0, 3451, 3452, 7, 24, 0, 0, 3452, 3453, 7, 13, 0, 0, 3453, 3454, 7, 19, 0, 0, 3454, 3455, 7, 14, 0, 0, 3455, 3456, 7, 10, 0, 0, 3456, 3457, 7, 12, 0, 0, 3457, 3458, 7, 22, 0, 0, 3458, 3459, 7, 13, 0, 0, 3459, 3460, 7, 5, 0, 0, 3460, 3461, 7, 6, 0, 0, 3461, 588, 1, 0, 0, 0, 3462, 3463, 7, 24, 0, 0, 3463, 3464, 7, 13, 0, 0, 3464, 3465, 7, 19, 0, 0, 3465, 3466, 7, 14, 0, 0, 3466, 3467, 7, 10, 0, 0, 3467, 3468, 7, 12, 0, 0, 3468, 3469, 7, 22, 0, 0, 3469, 3470, 7, 13, 0, 0, 3470, 3471, 7, 10, 0, 0, 3471, 590, 1, 0, 0, 0, 3472, 3473, 7, 24, 0, 0, 3473, 3474, 7, 13, 0, 0, 3474, 3475, 7, 19, 0, 0, 3475, 3476, 7, 23, 0, 0, 3476, 3477, 7, 13, 0, 0, 3477, 3478, 7, 5, 0, 0, 3478, 3479, 7, 15, 0, 0, 3479, 592, 1, 0, 0, 0, 3480, 3481, 7, 28, 0, 0, 3481, 3482, 7, 22, 0, 0, 3482, 3483, 7, 19, 0, 0, 3483, 3484, 7, 16, 0, 0, 3484, 3485, 7, 10, 0, 0, 3485, 594, 1, 0, 0, 0, 3486, 3487, 7, 13, 0, 0, 3487, 3488, 7, 5, 0, 0, 3488, 3489, 7, 7, 0, 0, 3489, 3490, 7, 23, 0, 0, 3490, 3491, 7, 10, 0, 0, 3491, 596, 1, 0, 0, 0, 3492, 3493, 7, 13, 0, 0, 3493, 3494, 7, 10, 0, 0, 3494, 3495, 7, 5, 0, 0, 3495, 3496, 7, 12, 0, 0, 3496, 598, 1, 0, 0, 0, 3497, 3498, 7, 13, 0, 0, 3498, 3499, 7, 10, 0, 0, 3499, 3500, 7, 5, 0, 0, 3500, 3501, 7, 9, 0, 0, 3501, 3502, 7, 9, 0, 0, 3502, 3503, 7, 17, 0, 0, 3503, 3504, 7, 23, 0, 0, 3504, 3505, 7, 7, 0, 0, 3505, 600, 1, 0, 0, 0, 3506, 3507, 7, 13, 0, 0, 3507, 3508, 7, 10, 0, 0, 3508, 3509, 7, 14, 0, 0, 3509, 3510, 7, 20, 0, 0, 3510, 3511, 7, 10, 0, 0, 3511, 3512, 7, 14, 0, 0, 3512, 3513, 7, 21, 0, 0, 3513, 602, 1, 0, 0, 0, 3514, 3515, 7, 13, 0, 0, 3515, 3516, 7, 10, 0, 0, 3516, 3517, 7, 14, 0, 0, 3517, 3518, 7, 22, 0, 0, 3518, 3519, 7, 13, 0, 0, 3519, 3520, 7, 9, 0, 0, 3520, 3521, 7, 17, 0, 0, 3521, 3522, 7, 27, 0, 0, 3522, 3523, 7, 10, 0, 0, 3523, 604, 1, 0, 0, 0, 3524, 3525, 7, 13, 0, 0, 3525, 3526, 7, 10, 0, 0, 3526, 3527, 7, 25, 0, 0, 3527, 606, 1, 0, 0, 0, 3528, 3529, 7, 13, 0, 0, 3529, 3530, 7, 10, 0, 0, 3530, 3531, 7, 25, 0, 0, 3531, 3532, 7, 13, 0, 0, 3532, 3533, 7, 10, 0, 0, 3533, 3534, 7, 9, 0, 0, 3534, 3535, 7, 20, 0, 0, 3535, 608, 1, 0, 0, 0, 3536, 3537, 7, 13, 0, 0, 3537, 3538, 7, 10, 0, 0, 3538, 3539, 7, 17, 0, 0, 3539, 3540, 7, 7, 0, 0, 3540, 3541, 7, 12, 0, 0, 3541, 3542, 7, 10, 0, 0, 3542, 3543, 7, 26, 0, 0, 3543, 610, 1, 0, 0, 0, 3544, 3545, 7, 13, 0, 0, 3545, 3546, 7, 10, 0, 0, 3546, 3547, 7, 6, 0, 0, 3547, 3548, 7, 5, 0, 0, 3548, 3549, 7, 16, 0, 0, 3549, 3550, 7, 17, 0, 0, 3550, 3551, 7, 27, 0, 0, 3551, 3552, 7, 10, 0, 0, 3552, 612, 1, 0, 0, 0, 3553, 3554, 7, 13, 0, 0, 3554, 3555, 7, 10, 0, 0, 3555, 3556, 7, 6, 0, 0, 3556, 3557, 7, 10, 0, 0, 3557, 3558, 7, 5, 0, 0, 3558, 3559, 7, 9, 0, 0, 3559, 3560, 7, 10, 0, 0, 3560, 614, 1, 0, 0, 0, 3561, 3562, 7, 13, 0, 0, 3562, 3563, 7, 10, 0, 0, 3563, 3564, 7, 7, 0, 0, 3564, 3565, 7, 5, 0, 0, 3565, 3566, 7, 15, 0, 0, 3566, 3567, 7, 10, 0, 0, 3567, 616, 1, 0, 0, 0, 3568, 3569, 7, 13, 0, 0, 3569, 3570, 7, 10, 0, 0, 3570, 3571, 7, 24, 0, 0, 3571, 3572, 7, 10, 0, 0, 3572, 3573, 7, 5, 0, 0, 3573, 3574, 7, 16, 0, 0, 3574, 3575, 7, 5, 0, 0, 3575, 3576, 7, 18, 0, 0, 3576, 3577, 7, 6, 0, 0, 3577, 3578, 7, 10, 0, 0, 3578, 618, 1, 0, 0, 0, 3579, 3580, 7, 13, 0, 0, 3580, 3581, 7, 10, 0, 0, 3581, 3582, 7, 24, 0, 0, 3582, 3583, 7, 6, 0, 0, 3583, 3584, 7, 5, 0, 0, 3584, 3585, 7, 14, 0, 0, 3585, 3586, 7, 10, 0, 0, 3586, 620, 1, 0, 0, 0, 3587, 3588, 7, 13, 0, 0, 3588, 3589, 7, 10, 0, 0, 3589, 3590, 7, 24, 0, 0, 3590, 3591, 7, 6, 0, 0, 3591, 3592, 7, 17, 0, 0, 3592, 3593, 7, 14, 0, 0, 3593, 3594, 7, 5, 0, 0, 3594, 622, 1, 0, 0, 0, 3595, 3596, 7, 13, 0, 0, 3596, 3597, 7, 10, 0, 0, 3597, 3598, 7, 9, 0, 0, 3598, 3599, 7, 10, 0, 0, 3599, 3600, 7, 16, 0, 0, 3600, 624, 1, 0, 0, 0, 3601, 3602, 7, 13, 0, 0, 3602, 3603, 7, 10, 0, 0, 3603, 3604, 7, 9, 0, 0, 3604, 3605, 7, 16, 0, 0, 3605, 3606, 7, 5, 0, 0, 3606, 3607, 7, 13, 0, 0, 3607, 3608, 7, 16, 0, 0, 3608, 626, 1, 0, 0, 0, 3609, 3610, 7, 13, 0, 0, 3610, 3611, 7, 10, 0, 0, 3611, 3612, 7, 9, 0, 0, 3612, 3613, 7, 16, 0, 0, 3613, 3614, 7, 13, 0, 0, 3614, 3615, 7, 17, 0, 0, 3615, 3616, 7, 14, 0, 0, 3616, 3617, 7, 16, 0, 0, 3617, 628, 1, 0, 0, 0, 3618, 3619, 7, 13, 0, 0, 3619, 3620, 7, 10, 0, 0, 3620, 3621, 7, 16, 0, 0, 3621, 3622, 7, 22, 0, 0, 3622, 3623, 7, 13, 0, 0, 3623, 3624, 7, 7, 0, 0, 3624, 3625, 7, 9, 0, 0, 3625, 630, 1, 0, 0, 0, 3626, 3627, 7, 13, 0, 0, 3627, 3628, 7, 10, 0, 0, 3628, 3629, 7, 27, 0, 0, 3629, 3630, 7, 19, 0, 0, 3630, 3631, 7, 21, 0, 0, 3631, 3632, 7, 10, 0, 0, 3632, 632, 1, 0, 0, 0, 3633, 3634, 7, 13, 0, 0, 3634, 3635, 7, 19, 0, 0, 3635, 3636, 7, 6, 0, 0, 3636, 3637, 7, 10, 0, 0, 3637, 634, 1, 0, 0, 0, 3638, 3639, 7, 13, 0, 0, 3639, 3640, 7, 19, 0, 0, 3640, 3641, 7, 6, 0, 0, 3641, 3642, 7, 6, 0, 0, 3642, 3643, 7, 18, 0, 0, 3643, 3644, 7, 5, 0, 0, 3644, 3645, 7, 14, 0, 0, 3645, 3646, 7, 21, 0, 0, 3646, 636, 1, 0, 0, 0, 3647, 3648, 7, 13, 0, 0, 3648, 3649, 7, 19, 0, 0, 3649, 3650, 7, 29, 0, 0, 3650, 3651, 7, 9, 0, 0, 3651, 638, 1, 0, 0, 0, 3652, 3653, 7, 13, 0, 0, 3653, 3654, 7, 22, 0, 0, 3654, 3655, 7, 6, 0, 0, 3655, 3656, 7, 10, 0, 0, 3656, 640, 1, 0, 0, 0, 3657, 3658, 7, 9, 0, 0, 3658, 3659, 7, 5, 0, 0, 3659, 3660, 7, 27, 0, 0, 3660, 3661, 7, 10, 0, 0, 3661, 3662, 7, 24, 0, 0, 3662, 3663, 7, 19, 0, 0, 3663, 3664, 7, 17, 0, 0, 3664, 3665, 7, 7, 0, 0, 3665, 3666, 7, 16, 0, 0, 3666, 642, 1, 0, 0, 0, 3667, 3668, 7, 9, 0, 0, 3668, 3669, 7, 14, 0, 0, 3669, 3670, 7, 20, 0, 0, 3670, 3671, 7, 10, 0, 0, 3671, 3672, 7, 15, 0, 0, 3672, 3673, 7, 5, 0, 0, 3673, 644, 1, 0, 0, 0, 3674, 3675, 7, 9, 0, 0, 3675, 3676, 7, 14, 0, 0, 3676, 3677, 7, 13, 0, 0, 3677, 3678, 7, 19, 0, 0, 3678, 3679, 7, 6, 0, 0, 3679, 3680, 7, 6, 0, 0, 3680, 646, 1, 0, 0, 0, 3681, 3682, 7, 9, 0, 0, 3682, 3683, 7, 10, 0, 0, 3683, 3684, 7, 5, 0, 0, 3684, 3685, 7, 13, 0, 0, 3685, 3686, 7, 14, 0, 0, 3686, 3687, 7, 20, 0, 0, 3687, 648, 1, 0, 0, 0, 3688, 3689, 7, 9, 0, 0, 3689, 3690, 7, 10, 0, 0, 3690, 3691, 7, 14, 0, 0, 3691, 3692, 7, 19, 0, 0, 3692, 3693, 7, 7, 0, 0, 3693, 3694, 7, 12, 0, 0, 3694, 650, 1, 0, 0, 0, 3695, 3696, 7, 9, 0, 0, 3696, 3697, 7, 10, 0, 0, 3697, 3698, 7, 14, 0, 0, 3698, 3699, 7, 22, 0, 0, 3699, 3700, 7, 13, 0, 0, 3700, 3701, 7, 17, 0, 0, 3701, 3702, 7, 16, 0, 0, 3702, 3703, 7, 8, 0, 0, 3703, 652, 1, 0, 0, 0, 3704, 3705, 7, 9, 0, 0, 3705, 3706, 7, 10, 0, 0, 3706, 3707, 7, 28, 0, 0, 3707, 3708, 7, 22, 0, 0, 3708, 3709, 7, 10, 0, 0, 3709, 3710, 7, 7, 0, 0, 3710, 3711, 7, 14, 0, 0, 3711, 3712, 7, 10, 0, 0, 3712, 654, 1, 0, 0, 0, 3713, 3714, 7, 9, 0, 0, 3714, 3715, 7, 10, 0, 0, 3715, 3716, 7, 28, 0, 0, 3716, 3717, 7, 22, 0, 0, 3717, 3718, 7, 10, 0, 0, 3718, 3719, 7, 7, 0, 0, 3719, 3720, 7, 14, 0, 0, 3720, 3721, 7, 10, 0, 0, 3721, 3722, 7, 9, 0, 0, 3722, 656, 1, 0, 0, 0, 3723, 3724, 7, 9, 0, 0, 3724, 3725, 7, 10, 0, 0, 3725, 3726, 7, 13, 0, 0, 3726, 3727, 7, 17, 0, 0, 3727, 3728, 7, 5, 0, 0, 3728, 3729, 7, 6, 0, 0, 3729, 3730, 7, 17, 0, 0, 3730, 3731, 7, 11, 0, 0, 3731, 3732, 7, 5, 0, 0, 3732, 3733, 7, 18, 0, 0, 3733, 3734, 7, 6, 0, 0, 3734, 3735, 7, 10, 0, 0, 3735, 658, 1, 0, 0, 0, 3736, 3737, 7, 9, 0, 0, 3737, 3738, 7, 10, 0, 0, 3738, 3739, 7, 13, 0, 0, 3739, 3740, 7, 27, 0, 0, 3740, 3741, 7, 10, 0, 0, 3741, 3742, 7, 13, 0, 0, 3742, 660, 1, 0, 0, 0, 3743, 3744, 7, 9, 0, 0, 3744, 3745, 7, 10, 0, 0, 3745, 3746, 7, 9, 0, 0, 3746, 3747, 7, 9, 0, 0, 3747, 3748, 7, 17, 0, 0, 3748, 3749, 7, 19, 0, 0, 3749, 3750, 7, 7, 0, 0, 3750, 662, 1, 0, 0, 0, 3751, 3752, 7, 9, 0, 0, 3752, 3753, 7, 10, 0, 0, 3753, 3754, 7, 16, 0, 0, 3754, 664, 1, 0, 0, 0, 3755, 3756, 7, 9, 0, 0, 3756, 3757, 7, 20, 0, 0, 3757, 3758, 7, 5, 0, 0, 3758, 3759, 7, 13, 0, 0, 3759, 3760, 7, 10, 0, 0, 3760, 666, 1, 0, 0, 0, 3761, 3762, 7, 9, 0, 0, 3762, 3763, 7, 20, 0, 0, 3763, 3764, 7, 19, 0, 0, 3764, 3765, 7, 29, 0, 0, 3765, 668, 1, 0, 0, 0, 3766, 3767, 7, 9, 0, 0, 3767, 3768, 7, 17, 0, 0, 3768, 3769, 7, 15, 0, 0, 3769, 3770, 7, 24, 0, 0, 3770, 3771, 7, 6, 0, 0, 3771, 3772, 7, 10, 0, 0, 3772, 670, 1, 0, 0, 0, 3773, 3774, 7, 9, 0, 0, 3774, 3775, 7, 7, 0, 0, 3775, 3776, 7, 5, 0, 0, 3776, 3777, 7, 24, 0, 0, 3777, 3778, 7, 9, 0, 0, 3778, 3779, 7, 20, 0, 0, 3779, 3780, 7, 19, 0, 0, 3780, 3781, 7, 16, 0, 0, 3781, 672, 1, 0, 0, 0, 3782, 3783, 7, 9, 0, 0, 3783, 3784, 7, 16, 0, 0, 3784, 3785, 7, 5, 0, 0, 3785, 3786, 7, 18, 0, 0, 3786, 3787, 7, 6, 0, 0, 3787, 3788, 7, 10, 0, 0, 3788, 674, 1, 0, 0, 0, 3789, 3790, 7, 9, 0, 0, 3790, 3791, 7, 16, 0, 0, 3791, 3792, 7, 5, 0, 0, 3792, 3793, 7, 7, 0, 0, 3793, 3794, 7, 12, 0, 0, 3794, 3795, 7, 5, 0, 0, 3795, 3796, 7, 6, 0, 0, 3796, 3797, 7, 19, 0, 0, 3797, 3798, 7, 7, 0, 0, 3798, 3799, 7, 10, 0, 0, 3799, 676, 1, 0, 0, 0, 3800, 3801, 7, 9, 0, 0, 3801, 3802, 7, 16, 0, 0, 3802, 3803, 7, 5, 0, 0, 3803, 3804, 7, 13, 0, 0, 3804, 3805, 7, 16, 0, 0, 3805, 678, 1, 0, 0, 0, 3806, 3807, 7, 9, 0, 0, 3807, 3808, 7, 16, 0, 0, 3808, 3809, 7, 5, 0, 0, 3809, 3810, 7, 16, 0, 0, 3810, 3811, 7, 10, 0, 0, 3811, 3812, 7, 15, 0, 0, 3812, 3813, 7, 10, 0, 0, 3813, 3814, 7, 7, 0, 0, 3814, 3815, 7, 16, 0, 0, 3815, 680, 1, 0, 0, 0, 3816, 3817, 7, 9, 0, 0, 3817, 3818, 7, 16, 0, 0, 3818, 3819, 7, 5, 0, 0, 3819, 3820, 7, 16, 0, 0, 3820, 3821, 7, 17, 0, 0, 3821, 3822, 7, 9, 0, 0, 3822, 3823, 7, 16, 0, 0, 3823, 3824, 7, 17, 0, 0, 3824, 3825, 7, 14, 0, 0, 3825, 3826, 7, 9, 0, 0, 3826, 682, 1, 0, 0, 0, 3827, 3828, 7, 9, 0, 0, 3828, 3829, 7, 16, 0, 0, 3829, 3830, 7, 12, 0, 0, 3830, 3831, 7, 17, 0, 0, 3831, 3832, 7, 7, 0, 0, 3832, 684, 1, 0, 0, 0, 3833, 3834, 7, 9, 0, 0, 3834, 3835, 7, 16, 0, 0, 3835, 3836, 7, 12, 0, 0, 3836, 3837, 7, 19, 0, 0, 3837, 3838, 7, 22, 0, 0, 3838, 3839, 7, 16, 0, 0, 3839, 686, 1, 0, 0, 0, 3840, 3841, 7, 9, 0, 0, 3841, 3842, 7, 16, 0, 0, 3842, 3843, 7, 19, 0, 0, 3843, 3844, 7, 13, 0, 0, 3844, 3845, 7, 5, 0, 0, 3845, 3846, 7, 23, 0, 0, 3846, 3847, 7, 10, 0, 0, 3847, 688, 1, 0, 0, 0, 3848, 3849, 7, 9, 0, 0, 3849, 3850, 7, 16, 0, 0, 3850, 3851, 7, 13, 0, 0, 3851, 3852, 7, 17, 0, 0, 3852, 3853, 7, 14, 0, 0, 3853, 3854, 7, 16, 0, 0, 3854, 690, 1, 0, 0, 0, 3855, 3856, 7, 9, 0, 0, 3856, 3857, 7, 16, 0, 0, 3857, 3858, 7, 13, 0, 0, 3858, 3859, 7, 17, 0, 0, 3859, 3860, 7, 24, 0, 0, 3860, 692, 1, 0, 0, 0, 3861, 3862, 7, 9, 0, 0, 3862, 3863, 7, 8, 0, 0, 3863, 3864, 7, 9, 0, 0, 3864, 3865, 7, 17, 0, 0, 3865, 3866, 7, 12, 0, 0, 3866, 694, 1, 0, 0, 0, 3867, 3868, 7, 9, 0, 0, 3868, 3869, 7, 8, 0, 0, 3869, 3870, 7, 9, 0, 0, 3870, 3871, 7, 16, 0, 0, 3871, 3872, 7, 10, 0, 0, 3872, 3873, 7, 15, 0, 0, 3873, 696, 1, 0, 0, 0, 3874, 3875, 7, 16, 0, 0, 3875, 3876, 7, 5, 0, 0, 3876, 3877, 7, 18, 0, 0, 3877, 3878, 7, 6, 0, 0, 3878, 3879, 7, 10, 0, 0, 3879, 3880, 7, 9, 0, 0, 3880, 698, 1, 0, 0, 0, 3881, 3882, 7, 16, 0, 0, 3882, 3883, 7, 5, 0, 0, 3883, 3884, 7, 18, 0, 0, 3884, 3885, 7, 6, 0, 0, 3885, 3886, 7, 10, 0, 0, 3886, 3887, 7, 9, 0, 0, 3887, 3888, 7, 24, 0, 0, 3888, 3889, 7, 5, 0, 0, 3889, 3890, 7, 14, 0, 0, 3890, 3891, 7, 10, 0, 0, 3891, 700, 1, 0, 0, 0, 3892, 3893, 7, 16, 0, 0, 3893, 3894, 7, 10, 0, 0, 3894, 3895, 7, 15, 0, 0, 3895, 3896, 7, 24, 0, 0, 3896, 702, 1, 0, 0, 0, 3897, 3898, 7, 16, 0, 0, 3898, 3899, 7, 10, 0, 0, 3899, 3900, 7, 15, 0, 0, 3900, 3901, 7, 24, 0, 0, 3901, 3902, 7, 6, 0, 0, 3902, 3903, 7, 5, 0, 0, 3903, 3904, 7, 16, 0, 0, 3904, 3905, 7, 10, 0, 0, 3905, 704, 1, 0, 0, 0, 3906, 3907, 7, 16, 0, 0, 3907, 3908, 7, 10, 0, 0, 3908, 3909, 7, 15, 0, 0, 3909, 3910, 7, 24, 0, 0, 3910, 3911, 7, 19, 0, 0, 3911, 3912, 7, 13, 0, 0, 3912, 3913, 7, 5, 0, 0, 3913, 3914, 7, 13, 0, 0, 3914, 3915, 7, 8, 0, 0, 3915, 706, 1, 0, 0, 0, 3916, 3917, 7, 16, 0, 0, 3917, 3918, 7, 10, 0, 0, 3918, 3919, 7, 26, 0, 0, 3919, 3920, 7, 16, 0, 0, 3920, 708, 1, 0, 0, 0, 3921, 3922, 7, 16, 0, 0, 3922, 3923, 7, 13, 0, 0, 3923, 3924, 7, 5, 0, 0, 3924, 3925, 7, 7, 0, 0, 3925, 3926, 7, 9, 0, 0, 3926, 3927, 7, 5, 0, 0, 3927, 3928, 7, 14, 0, 0, 3928, 3929, 7, 16, 0, 0, 3929, 3930, 7, 17, 0, 0, 3930, 3931, 7, 19, 0, 0, 3931, 3932, 7, 7, 0, 0, 3932, 710, 1, 0, 0, 0, 3933, 3934, 7, 16, 0, 0, 3934, 3935, 7, 13, 0, 0, 3935, 3936, 7, 17, 0, 0, 3936, 3937, 7, 23, 0, 0, 3937, 3938, 7, 23, 0, 0, 3938, 3939, 7, 10, 0, 0, 3939, 3940, 7, 13, 0, 0, 3940, 712, 1, 0, 0, 0, 3941, 3942, 7, 16, 0, 0, 3942, 3943, 7, 13, 0, 0, 3943, 3944, 7, 22, 0, 0, 3944, 3945, 7, 7, 0, 0, 3945, 3946, 7, 14, 0, 0, 3946, 3947, 7, 5, 0, 0, 3947, 3948, 7, 16, 0, 0, 3948, 3949, 7, 10, 0, 0, 3949, 714, 1, 0, 0, 0, 3950, 3951, 7, 16, 0, 0, 3951, 3952, 7, 13, 0, 0, 3952, 3953, 7, 22, 0, 0, 3953, 3954, 7, 9, 0, 0, 3954, 3955, 7, 16, 0, 0, 3955, 3956, 7, 10, 0, 0, 3956, 3957, 7, 12, 0, 0, 3957, 716, 1, 0, 0, 0, 3958, 3959, 7, 16, 0, 0, 3959, 3960, 7, 8, 0, 0, 3960, 3961, 7, 24, 0, 0, 3961, 3962, 7, 10, 0, 0, 3962, 718, 1, 0, 0, 0, 3963, 3964, 7, 16, 0, 0, 3964, 3965, 7, 8, 0, 0, 3965, 3966, 7, 24, 0, 0, 3966, 3967, 7, 10, 0, 0, 3967, 3968, 7, 9, 0, 0, 3968, 720, 1, 0, 0, 0, 3969, 3970, 7, 22, 0, 0, 3970, 3971, 7, 7, 0, 0, 3971, 3972, 7, 18, 0, 0, 3972, 3973, 7, 19, 0, 0, 3973, 3974, 7, 22, 0, 0, 3974, 3975, 7, 7, 0, 0, 3975, 3976, 7, 12, 0, 0, 3976, 3977, 7, 10, 0, 0, 3977, 3978, 7, 12, 0, 0, 3978, 722, 1, 0, 0, 0, 3979, 3980, 7, 22, 0, 0, 3980, 3981, 7, 7, 0, 0, 3981, 3982, 7, 14, 0, 0, 3982, 3983, 7, 19, 0, 0, 3983, 3984, 7, 15, 0, 0, 3984, 3985, 7, 15, 0, 0, 3985, 3986, 7, 17, 0, 0, 3986, 3987, 7, 16, 0, 0, 3987, 3988, 7, 16, 0, 0, 3988, 3989, 7, 10, 0, 0, 3989, 3990, 7, 12, 0, 0, 3990, 724, 1, 0, 0, 0, 3991, 3992, 7, 22, 0, 0, 3992, 3993, 7, 7, 0, 0, 3993, 3994, 7, 10, 0, 0, 3994, 3995, 7, 7, 0, 0, 3995, 3996, 7, 14, 0, 0, 3996, 3997, 7, 13, 0, 0, 3997, 3998, 7, 8, 0, 0, 3998, 3999, 7, 24, 0, 0, 3999, 4000, 7, 16, 0, 0, 4000, 4001, 7, 10, 0, 0, 4001, 4002, 7, 12, 0, 0, 4002, 726, 1, 0, 0, 0, 4003, 4004, 7, 22, 0, 0, 4004, 4005, 7, 7, 0, 0, 4005, 4006, 7, 21, 0, 0, 4006, 4007, 7, 7, 0, 0, 4007, 4008, 7, 19, 0, 0, 4008, 4009, 7, 29, 0, 0, 4009, 4010, 7, 7, 0, 0, 4010, 728, 1, 0, 0, 0, 4011, 4012, 7, 22, 0, 0, 4012, 4013, 7, 7, 0, 0, 4013, 4014, 7, 6, 0, 0, 4014, 4015, 7, 17, 0, 0, 4015, 4016, 7, 9, 0, 0, 4016, 4017, 7, 16, 0, 0, 4017, 4018, 7, 10, 0, 0, 4018, 4019, 7, 7, 0, 0, 4019, 730, 1, 0, 0, 0, 4020, 4021, 7, 22, 0, 0, 4021, 4022, 7, 7, 0, 0, 4022, 4023, 7, 6, 0, 0, 4023, 4024, 7, 19, 0, 0, 4024, 4025, 7, 23, 0, 0, 4025, 4026, 7, 23, 0, 0, 4026, 4027, 7, 10, 0, 0, 4027, 4028, 7, 12, 0, 0, 4028, 732, 1, 0, 0, 0, 4029, 4030, 7, 22, 0, 0, 4030, 4031, 7, 7, 0, 0, 4031, 4032, 7, 16, 0, 0, 4032, 4033, 7, 17, 0, 0, 4033, 4034, 7, 6, 0, 0, 4034, 734, 1, 0, 0, 0, 4035, 4036, 7, 22, 0, 0, 4036, 4037, 7, 24, 0, 0, 4037, 4038, 7, 12, 0, 0, 4038, 4039, 7, 5, 0, 0, 4039, 4040, 7, 16, 0, 0, 4040, 4041, 7, 10, 0, 0, 4041, 736, 1, 0, 0, 0, 4042, 4043, 7, 27, 0, 0, 4043, 4044, 7, 5, 0, 0, 4044, 4045, 7, 14, 0, 0, 4045, 4046, 7, 22, 0, 0, 4046, 4047, 7, 22, 0, 0, 4047, 4048, 7, 15, 0, 0, 4048, 738, 1, 0, 0, 0, 4049, 4050, 7, 27, 0, 0, 4050, 4051, 7, 5, 0, 0, 4051, 4052, 7, 6, 0, 0, 4052, 4053, 7, 17, 0, 0, 4053, 4054, 7, 12, 0, 0, 4054, 740, 1, 0, 0, 0, 4055, 4056, 7, 27, 0, 0, 4056, 4057, 7, 5, 0, 0, 4057, 4058, 7, 6, 0, 0, 4058, 4059, 7, 17, 0, 0, 4059, 4060, 7, 12, 0, 0, 4060, 4061, 7, 5, 0, 0, 4061, 4062, 7, 16, 0, 0, 4062, 4063, 7, 10, 0, 0, 4063, 742, 1, 0, 0, 0, 4064, 4065, 7, 27, 0, 0, 4065, 4066, 7, 5, 0, 0, 4066, 4067, 7, 6, 0, 0, 4067, 4068, 7, 17, 0, 0, 4068, 4069, 7, 12, 0, 0, 4069, 4070, 7, 5, 0, 0, 4070, 4071, 7, 16, 0, 0, 4071, 4072, 7, 19, 0, 0, 4072, 4073, 7, 13, 0, 0, 4073, 744, 1, 0, 0, 0, 4074, 4075, 7, 27, 0, 0, 4075, 4076, 7, 5, 0, 0, 4076, 4077, 7, 13, 0, 0, 4077, 4078, 7, 8, 0, 0, 4078, 4079, 7, 17, 0, 0, 4079, 4080, 7, 7, 0, 0, 4080, 4081, 7, 23, 0, 0, 4081, 746, 1, 0, 0, 0, 4082, 4083, 7, 27, 0, 0, 4083, 4084, 7, 10, 0, 0, 4084, 4085, 7, 13, 0, 0, 4085, 4086, 7, 9, 0, 0, 4086, 4087, 7, 17, 0, 0, 4087, 4088, 7, 19, 0, 0, 4088, 4089, 7, 7, 0, 0, 4089, 748, 1, 0, 0, 0, 4090, 4091, 7, 27, 0, 0, 4091, 4092, 7, 17, 0, 0, 4092, 4093, 7, 10, 0, 0, 4093, 4094, 7, 29, 0, 0, 4094, 750, 1, 0, 0, 0, 4095, 4096, 7, 27, 0, 0, 4096, 4097, 7, 19, 0, 0, 4097, 4098, 7, 6, 0, 0, 4098, 4099, 7, 5, 0, 0, 4099, 4100, 7, 16, 0, 0, 4100, 4101, 7, 17, 0, 0, 4101, 4102, 7, 6, 0, 0, 4102, 4103, 7, 10, 0, 0, 4103, 752, 1, 0, 0, 0, 4104, 4105, 7, 29, 0, 0, 4105, 4106, 7, 20, 0, 0, 4106, 4107, 7, 17, 0, 0, 4107, 4108, 7, 16, 0, 0, 4108, 4109, 7, 10, 0, 0, 4109, 4110, 7, 9, 0, 0, 4110, 4111, 7, 24, 0, 0, 4111, 4112, 7, 5, 0, 0, 4112, 4113, 7, 14, 0, 0, 4113, 4114, 7, 10, 0, 0, 4114, 754, 1, 0, 0, 0, 4115, 4116, 7, 29, 0, 0, 4116, 4117, 7, 17, 0, 0, 4117, 4118, 7, 16, 0, 0, 4118, 4119, 7, 20, 0, 0, 4119, 4120, 7, 19, 0, 0, 4120, 4121, 7, 22, 0, 0, 4121, 4122, 7, 16, 0, 0, 4122, 756, 1, 0, 0, 0, 4123, 4124, 7, 29, 0, 0, 4124, 4125, 7, 19, 0, 0, 4125, 4126, 7, 13, 0, 0, 4126, 4127, 7, 21, 0, 0, 4127, 758, 1, 0, 0, 0, 4128, 4129, 7, 29, 0, 0, 4129, 4130, 7, 13, 0, 0, 4130, 4131, 7, 5, 0, 0, 4131, 4132, 7, 24, 0, 0, 4132, 4133, 7, 24, 0, 0, 4133, 4134, 7, 10, 0, 0, 4134, 4135, 7, 13, 0, 0, 4135, 760, 1, 0, 0, 0, 4136, 4137, 7, 29, 0, 0, 4137, 4138, 7, 13, 0, 0, 4138, 4139, 7, 17, 0, 0, 4139, 4140, 7, 16, 0, 0, 4140, 4141, 7, 10, 0, 0, 4141, 762, 1, 0, 0, 0, 4142, 4143, 7, 26, 0, 0, 4143, 4144, 7, 15, 0, 0, 4144, 4145, 7, 6, 0, 0, 4145, 764, 1, 0, 0, 0, 4146, 4147, 7, 8, 0, 0, 4147, 4148, 7, 10, 0, 0, 4148, 4149, 7, 5, 0, 0, 4149, 4150, 7, 13, 0, 0, 4150, 766, 1, 0, 0, 0, 4151, 4152, 7, 8, 0, 0, 4152, 4153, 7, 10, 0, 0, 4153, 4154, 7, 9, 0, 0, 4154, 768, 1, 0, 0, 0, 4155, 4156, 7, 11, 0, 0, 4156, 4157, 7, 19, 0, 0, 4157, 4158, 7, 7, 0, 0, 4158, 4159, 7, 10, 0, 0, 4159, 770, 1, 0, 0, 0, 4160, 4161, 7, 18, 0, 0, 4161, 4162, 7, 10, 0, 0, 4162, 4163, 7, 16, 0, 0, 4163, 4164, 7, 29, 0, 0, 4164, 4165, 7, 10, 0, 0, 4165, 4166, 7, 10, 0, 0, 4166, 4167, 7, 7, 0, 0, 4167, 772, 1, 0, 0, 0, 4168, 4169, 7, 18, 0, 0, 4169, 4170, 7, 17, 0, 0, 4170, 4171, 7, 23, 0, 0, 4171, 4172, 7, 17, 0, 0, 4172, 4173, 7, 7, 0, 0, 4173, 4174, 7, 16, 0, 0, 4174, 774, 1, 0, 0, 0, 4175, 4176, 7, 18, 0, 0, 4176, 4177, 7, 17, 0, 0, 4177, 4178, 7, 16, 0, 0, 4178, 776, 1, 0, 0, 0, 4179, 4180, 7, 18, 0, 0, 4180, 4181, 7, 19, 0, 0, 4181, 4182, 7, 19, 0, 0, 4182, 4183, 7, 6, 0, 0, 4183, 4184, 7, 10, 0, 0, 4184, 4185, 7, 5, 0, 0, 4185, 4186, 7, 7, 0, 0, 4186, 778, 1, 0, 0, 0, 4187, 4188, 7, 14, 0, 0, 4188, 4189, 7, 20, 0, 0, 4189, 4190, 7, 5, 0, 0, 4190, 4191, 7, 13, 0, 0, 4191, 780, 1, 0, 0, 0, 4192, 4193, 7, 14, 0, 0, 4193, 4194, 7, 20, 0, 0, 4194, 4195, 7, 5, 0, 0, 4195, 4196, 7, 13, 0, 0, 4196, 4197, 7, 5, 0, 0, 4197, 4198, 7, 14, 0, 0, 4198, 4199, 7, 16, 0, 0, 4199, 4200, 7, 10, 0, 0, 4200, 4201, 7, 13, 0, 0, 4201, 782, 1, 0, 0, 0, 4202, 4203, 7, 14, 0, 0, 4203, 4204, 7, 19, 0, 0, 4204, 4205, 7, 5, 0, 0, 4205, 4206, 7, 6, 0, 0, 4206, 4207, 7, 10, 0, 0, 4207, 4208, 7, 9, 0, 0, 4208, 4209, 7, 14, 0, 0, 4209, 4210, 7, 10, 0, 0, 4210, 784, 1, 0, 0, 0, 4211, 4212, 7, 12, 0, 0, 4212, 4213, 7, 10, 0, 0, 4213, 4214, 7, 14, 0, 0, 4214, 786, 1, 0, 0, 0, 4215, 4216, 7, 12, 0, 0, 4216, 4217, 7, 10, 0, 0, 4217, 4218, 7, 14, 0, 0, 4218, 4219, 7, 17, 0, 0, 4219, 4220, 7, 15, 0, 0, 4220, 4221, 7, 5, 0, 0, 4221, 4222, 7, 6, 0, 0, 4222, 788, 1, 0, 0, 0, 4223, 4224, 7, 10, 0, 0, 4224, 4225, 7, 26, 0, 0, 4225, 4226, 7, 17, 0, 0, 4226, 4227, 7, 9, 0, 0, 4227, 4228, 7, 16, 0, 0, 4228, 4229, 7, 9, 0, 0, 4229, 790, 1, 0, 0, 0, 4230, 4231, 7, 10, 0, 0, 4231, 4232, 7, 26, 0, 0, 4232, 4233, 7, 16, 0, 0, 4233, 4234, 7, 13, 0, 0, 4234, 4235, 7, 5, 0, 0, 4235, 4236, 7, 14, 0, 0, 4236, 4237, 7, 16, 0, 0, 4237, 792, 1, 0, 0, 0, 4238, 4239, 7, 25, 0, 0, 4239, 4240, 7, 6, 0, 0, 4240, 4241, 7, 19, 0, 0, 4241, 4242, 7, 5, 0, 0, 4242, 4243, 7, 16, 0, 0, 4243, 794, 1, 0, 0, 0, 4244, 4245, 7, 23, 0, 0, 4245, 4246, 7, 13, 0, 0, 4246, 4247, 7, 10, 0, 0, 4247, 4248, 7, 5, 0, 0, 4248, 4249, 7, 16, 0, 0, 4249, 4250, 7, 10, 0, 0, 4250, 4251, 7, 9, 0, 0, 4251, 4252, 7, 16, 0, 0, 4252, 796, 1, 0, 0, 0, 4253, 4254, 7, 17, 0, 0, 4254, 4255, 7, 7, 0, 0, 4255, 4256, 7, 19, 0, 0, 4256, 4257, 7, 22, 0, 0, 4257, 4258, 7, 16, 0, 0, 4258, 798, 1, 0, 0, 0, 4259, 4260, 7, 17, 0, 0, 4260, 4261, 7, 7, 0, 0, 4261, 4262, 7, 16, 0, 0, 4262, 800, 1, 0, 0, 0, 4263, 4264, 7, 17, 0, 0, 4264, 4265, 7, 7, 0, 0, 4265, 4266, 7, 16, 0, 0, 4266, 4267, 7, 10, 0, 0, 4267, 4268, 7, 23, 0, 0, 4268, 4269, 7, 10, 0, 0, 4269, 4270, 7, 13, 0, 0, 4270, 802, 1, 0, 0, 0, 4271, 4272, 7, 17, 0, 0, 4272, 4273, 7, 7, 0, 0, 4273, 4274, 7, 16, 0, 0, 4274, 4275, 7, 10, 0, 0, 4275, 4276, 7, 13, 0, 0, 4276, 4277, 7, 27, 0, 0, 4277, 4278, 7, 5, 0, 0, 4278, 4279, 7, 6, 0, 0, 4279, 804, 1, 0, 0, 0, 4280, 4281, 7, 6, 0, 0, 4281, 4282, 7, 10, 0, 0, 4282, 4283, 7, 5, 0, 0, 4283, 4284, 7, 9, 0, 0, 4284, 4285, 7, 16, 0, 0, 4285, 806, 1, 0, 0, 0, 4286, 4287, 7, 7, 0, 0, 4287, 4288, 7, 5, 0, 0, 4288, 4289, 7, 16, 0, 0, 4289, 4290, 7, 17, 0, 0, 4290, 4291, 7, 19, 0, 0, 4291, 4292, 7, 7, 0, 0, 4292, 4293, 7, 5, 0, 0, 4293, 4294, 7, 6, 0, 0, 4294, 808, 1, 0, 0, 0, 4295, 4296, 7, 7, 0, 0, 4296, 4297, 7, 14, 0, 0, 4297, 4298, 7, 20, 0, 0, 4298, 4299, 7, 5, 0, 0, 4299, 4300, 7, 13, 0, 0, 4300, 810, 1, 0, 0, 0, 4301, 4302, 7, 7, 0, 0, 4302, 4303, 7, 19, 0, 0, 4303, 4304, 7, 7, 0, 0, 4304, 4305, 7, 10, 0, 0, 4305, 812, 1, 0, 0, 0, 4306, 4307, 7, 7, 0, 0, 4307, 4308, 7, 22, 0, 0, 4308, 4309, 7, 6, 0, 0, 4309, 4310, 7, 6, 0, 0, 4310, 4311, 7, 17, 0, 0, 4311, 4312, 7, 25, 0, 0, 4312, 814, 1, 0, 0, 0, 4313, 4314, 7, 7, 0, 0, 4314, 4315, 7, 22, 0, 0, 4315, 4316, 7, 15, 0, 0, 4316, 4317, 7, 10, 0, 0, 4317, 4318, 7, 13, 0, 0, 4318, 4319, 7, 17, 0, 0, 4319, 4320, 7, 14, 0, 0, 4320, 816, 1, 0, 0, 0, 4321, 4322, 7, 19, 0, 0, 4322, 4323, 7, 27, 0, 0, 4323, 4324, 7, 10, 0, 0, 4324, 4325, 7, 13, 0, 0, 4325, 4326, 7, 6, 0, 0, 4326, 4327, 7, 5, 0, 0, 4327, 4328, 7, 8, 0, 0, 4328, 818, 1, 0, 0, 0, 4329, 4330, 7, 24, 0, 0, 4330, 4331, 7, 19, 0, 0, 4331, 4332, 7, 9, 0, 0, 4332, 4333, 7, 17, 0, 0, 4333, 4334, 7, 16, 0, 0, 4334, 4335, 7, 17, 0, 0, 4335, 4336, 7, 19, 0, 0, 4336, 4337, 7, 7, 0, 0, 4337, 820, 1, 0, 0, 0, 4338, 4339, 7, 24, 0, 0, 4339, 4340, 7, 13, 0, 0, 4340, 4341, 7, 10, 0, 0, 4341, 4342, 7, 14, 0, 0, 4342, 4343, 7, 17, 0, 0, 4343, 4344, 7, 9, 0, 0, 4344, 4345, 7, 17, 0, 0, 4345, 4346, 7, 19, 0, 0, 4346, 4347, 7, 7, 0, 0, 4347, 822, 1, 0, 0, 0, 4348, 4349, 7, 13, 0, 0, 4349, 4350, 7, 10, 0, 0, 4350, 4351, 7, 5, 0, 0, 4351, 4352, 7, 6, 0, 0, 4352, 824, 1, 0, 0, 0, 4353, 4354, 7, 13, 0, 0, 4354, 4355, 7, 19, 0, 0, 4355, 4356, 7, 29, 0, 0, 4356, 826, 1, 0, 0, 0, 4357, 4358, 7, 9, 0, 0, 4358, 4359, 7, 10, 0, 0, 4359, 4360, 7, 16, 0, 0, 4360, 4361, 7, 19, 0, 0, 4361, 4362, 7, 25, 0, 0, 4362, 828, 1, 0, 0, 0, 4363, 4364, 7, 9, 0, 0, 4364, 4365, 7, 15, 0, 0, 4365, 4366, 7, 5, 0, 0, 4366, 4367, 7, 6, 0, 0, 4367, 4368, 7, 6, 0, 0, 4368, 4369, 7, 17, 0, 0, 4369, 4370, 7, 7, 0, 0, 4370, 4371, 7, 16, 0, 0, 4371, 830, 1, 0, 0, 0, 4372, 4373, 7, 9, 0, 0, 4373, 4374, 7, 22, 0, 0, 4374, 4375, 7, 18, 0, 0, 4375, 4376, 7, 9, 0, 0, 4376, 4377, 7, 16, 0, 0, 4377, 4378, 7, 13, 0, 0, 4378, 4379, 7, 17, 0, 0, 4379, 4380, 7, 7, 0, 0, 4380, 4381, 7, 23, 0, 0, 4381, 832, 1, 0, 0, 0, 4382, 4383, 7, 16, 0, 0, 4383, 4384, 7, 17, 0, 0, 4384, 4385, 7, 15, 0, 0, 4385, 4386, 7, 10, 0, 0, 4386, 834, 1, 0, 0, 0, 4387, 4388, 7, 16, 0, 0, 4388, 4389, 7, 17, 0, 0, 4389, 4390, 7, 15, 0, 0, 4390, 4391, 7, 10, 0, 0, 4391, 4392, 7, 9, 0, 0, 4392, 4393, 7, 16, 0, 0, 4393, 4394, 7, 5, 0, 0, 4394, 4395, 7, 15, 0, 0, 4395, 4396, 7, 24, 0, 0, 4396, 836, 1, 0, 0, 0, 4397, 4398, 7, 16, 0, 0, 4398, 4399, 7, 13, 0, 0, 4399, 4400, 7, 10, 0, 0, 4400, 4401, 7, 5, 0, 0, 4401, 4402, 7, 16, 0, 0, 4402, 838, 1, 0, 0, 0, 4403, 4404, 7, 16, 0, 0, 4404, 4405, 7, 13, 0, 0, 4405, 4406, 7, 17, 0, 0, 4406, 4407, 7, 15, 0, 0, 4407, 840, 1, 0, 0, 0, 4408, 4409, 7, 27, 0, 0, 4409, 4410, 7, 5, 0, 0, 4410, 4411, 7, 6, 0, 0, 4411, 4412, 7, 22, 0, 0, 4412, 4413, 7, 10, 0, 0, 4413, 4414, 7, 9, 0, 0, 4414, 842, 1, 0, 0, 0, 4415, 4416, 7, 27, 0, 0, 4416, 4417, 7, 5, 0, 0, 4417, 4418, 7, 13, 0, 0, 4418, 4419, 7, 14, 0, 0, 4419, 4420, 7, 20, 0, 0, 4420, 4421, 7, 5, 0, 0, 4421, 4422, 7, 13, 0, 0, 4422, 844, 1, 0, 0, 0, 4423, 4424, 7, 26, 0, 0, 4424, 4425, 7, 15, 0, 0, 4425, 4426, 7, 6, 0, 0, 4426, 4427, 7, 5, 0, 0, 4427, 4428, 7, 16, 0, 0, 4428, 4429, 7, 16, 0, 0, 4429, 4430, 7, 13, 0, 0, 4430, 4431, 7, 17, 0, 0, 4431, 4432, 7, 18, 0, 0, 4432, 4433, 7, 22, 0, 0, 4433, 4434, 7, 16, 0, 0, 4434, 4435, 7, 10, 0, 0, 4435, 4436, 7, 9, 0, 0, 4436, 846, 1, 0, 0, 0, 4437, 4438, 7, 26, 0, 0, 4438, 4439, 7, 15, 0, 0, 4439, 4440, 7, 6, 0, 0, 4440, 4441, 7, 14, 0, 0, 4441, 4442, 7, 19, 0, 0, 4442, 4443, 7, 15, 0, 0, 4443, 4444, 7, 15, 0, 0, 4444, 4445, 7, 10, 0, 0, 4445, 4446, 7, 7, 0, 0, 4446, 4447, 7, 16, 0, 0, 4447, 848, 1, 0, 0, 0, 4448, 4449, 7, 26, 0, 0, 4449, 4450, 7, 15, 0, 0, 4450, 4451, 7, 6, 0, 0, 4451, 4452, 7, 5, 0, 0, 4452, 4453, 7, 23, 0, 0, 4453, 4454, 7, 23, 0, 0, 4454, 850, 1, 0, 0, 0, 4455, 4456, 7, 26, 0, 0, 4456, 4457, 7, 15, 0, 0, 4457, 4458, 7, 6, 0, 0, 4458, 4459, 5, 95, 0, 0, 4459, 4460, 7, 17, 0, 0, 4460, 4461, 7, 9, 0, 0, 4461, 4462, 5, 95, 0, 0, 4462, 4463, 7, 29, 0, 0, 4463, 4464, 7, 10, 0, 0, 4464, 4465, 7, 6, 0, 0, 4465, 4466, 7, 6, 0, 0, 4466, 4467, 5, 95, 0, 0, 4467, 4468, 7, 25, 0, 0, 4468, 4469, 7, 19, 0, 0, 4469, 4470, 7, 13, 0, 0, 4470, 4471, 7, 15, 0, 0, 4471, 4472, 7, 10, 0, 0, 4472, 4473, 7, 12, 0, 0, 4473, 852, 1, 0, 0, 0, 4474, 4475, 7, 26, 0, 0, 4475, 4476, 7, 15, 0, 0, 4476, 4477, 7, 6, 0, 0, 4477, 4478, 5, 95, 0, 0, 4478, 4479, 7, 17, 0, 0, 4479, 4480, 7, 9, 0, 0, 4480, 4481, 5, 95, 0, 0, 4481, 4482, 7, 29, 0, 0, 4482, 4483, 7, 10, 0, 0, 4483, 4484, 7, 6, 0, 0, 4484, 4485, 7, 6, 0, 0, 4485, 4486, 5, 95, 0, 0, 4486, 4487, 7, 25, 0, 0, 4487, 4488, 7, 19, 0, 0, 4488, 4489, 7, 13, 0, 0, 4489, 4490, 7, 15, 0, 0, 4490, 4491, 7, 10, 0, 0, 4491, 4492, 7, 12, 0, 0, 4492, 4493, 5, 95, 0, 0, 4493, 4494, 7, 12, 0, 0, 4494, 4495, 7, 19, 0, 0, 4495, 4496, 7, 14, 0, 0, 4496, 4497, 7, 22, 0, 0, 4497, 4498, 7, 15, 0, 0, 4498, 4499, 7, 10, 0, 0, 4499, 4500, 7, 7, 0, 0, 4500, 4501, 7, 16, 0, 0, 4501, 854, 1, 0, 0, 0, 4502, 4503, 7, 26, 0, 0, 4503, 4504, 7, 15, 0, 0, 4504, 4505, 7, 6, 0, 0, 4505, 4506, 5, 95, 0, 0, 4506, 4507, 7, 17, 0, 0, 4507, 4508, 7, 9, 0, 0, 4508, 4509, 5, 95, 0, 0, 4509, 4510, 7, 29, 0, 0, 4510, 4511, 7, 10, 0, 0, 4511, 4512, 7, 6, 0, 0, 4512, 4513, 7, 6, 0, 0, 4513, 4514, 5, 95, 0, 0, 4514, 4515, 7, 25, 0, 0, 4515, 4516, 7, 19, 0, 0, 4516, 4517, 7, 13, 0, 0, 4517, 4518, 7, 15, 0, 0, 4518, 4519, 7, 10, 0, 0, 4519, 4520, 7, 12, 0, 0, 4520, 4521, 5, 95, 0, 0, 4521, 4522, 7, 14, 0, 0, 4522, 4523, 7, 19, 0, 0, 4523, 4524, 7, 7, 0, 0, 4524, 4525, 7, 16, 0, 0, 4525, 4526, 7, 10, 0, 0, 4526, 4527, 7, 7, 0, 0, 4527, 4528, 7, 16, 0, 0, 4528, 856, 1, 0, 0, 0, 4529, 4530, 7, 26, 0, 0, 4530, 4531, 7, 24, 0, 0, 4531, 4532, 7, 5, 0, 0, 4532, 4533, 7, 16, 0, 0, 4533, 4534, 7, 20, 0, 0, 4534, 858, 1, 0, 0, 0, 4535, 4536, 7, 26, 0, 0, 4536, 4537, 7, 24, 0, 0, 4537, 4538, 7, 5, 0, 0, 4538, 4539, 7, 16, 0, 0, 4539, 4540, 7, 20, 0, 0, 4540, 4541, 5, 95, 0, 0, 4541, 4542, 7, 10, 0, 0, 4542, 4543, 7, 26, 0, 0, 4543, 4544, 7, 17, 0, 0, 4544, 4545, 7, 9, 0, 0, 4545, 4546, 7, 16, 0, 0, 4546, 4547, 7, 9, 0, 0, 4547, 860, 1, 0, 0, 0, 4548, 4549, 7, 26, 0, 0, 4549, 4550, 7, 15, 0, 0, 4550, 4551, 7, 6, 0, 0, 4551, 4552, 7, 14, 0, 0, 4552, 4553, 7, 19, 0, 0, 4553, 4554, 7, 7, 0, 0, 4554, 4555, 7, 14, 0, 0, 4555, 4556, 7, 5, 0, 0, 4556, 4557, 7, 16, 0, 0, 4557, 862, 1, 0, 0, 0, 4558, 4559, 7, 26, 0, 0, 4559, 4560, 7, 15, 0, 0, 4560, 4561, 7, 6, 0, 0, 4561, 4562, 7, 10, 0, 0, 4562, 4563, 7, 6, 0, 0, 4563, 4564, 7, 10, 0, 0, 4564, 4565, 7, 15, 0, 0, 4565, 4566, 7, 10, 0, 0, 4566, 4567, 7, 7, 0, 0, 4567, 4568, 7, 16, 0, 0, 4568, 864, 1, 0, 0, 0, 4569, 4570, 7, 26, 0, 0, 4570, 4571, 7, 15, 0, 0, 4571, 4572, 7, 6, 0, 0, 4572, 4573, 7, 10, 0, 0, 4573, 4574, 7, 26, 0, 0, 4574, 4575, 7, 17, 0, 0, 4575, 4576, 7, 9, 0, 0, 4576, 4577, 7, 16, 0, 0, 4577, 4578, 7, 9, 0, 0, 4578, 866, 1, 0, 0, 0, 4579, 4580, 7, 26, 0, 0, 4580, 4581, 7, 15, 0, 0, 4581, 4582, 7, 6, 0, 0, 4582, 4583, 7, 25, 0, 0, 4583, 4584, 7, 19, 0, 0, 4584, 4585, 7, 13, 0, 0, 4585, 4586, 7, 10, 0, 0, 4586, 4587, 7, 9, 0, 0, 4587, 4588, 7, 16, 0, 0, 4588, 868, 1, 0, 0, 0, 4589, 4590, 7, 26, 0, 0, 4590, 4591, 7, 15, 0, 0, 4591, 4592, 7, 6, 0, 0, 4592, 4593, 7, 24, 0, 0, 4593, 4594, 7, 5, 0, 0, 4594, 4595, 7, 13, 0, 0, 4595, 4596, 7, 9, 0, 0, 4596, 4597, 7, 10, 0, 0, 4597, 870, 1, 0, 0, 0, 4598, 4599, 7, 26, 0, 0, 4599, 4600, 7, 15, 0, 0, 4600, 4601, 7, 6, 0, 0, 4601, 4602, 7, 24, 0, 0, 4602, 4603, 7, 17, 0, 0, 4603, 872, 1, 0, 0, 0, 4604, 4605, 7, 26, 0, 0, 4605, 4606, 7, 15, 0, 0, 4606, 4607, 7, 6, 0, 0, 4607, 4608, 7, 13, 0, 0, 4608, 4609, 7, 19, 0, 0, 4609, 4610, 7, 19, 0, 0, 4610, 4611, 7, 16, 0, 0, 4611, 874, 1, 0, 0, 0, 4612, 4613, 7, 26, 0, 0, 4613, 4614, 7, 15, 0, 0, 4614, 4615, 7, 6, 0, 0, 4615, 4616, 7, 9, 0, 0, 4616, 4617, 7, 10, 0, 0, 4617, 4618, 7, 13, 0, 0, 4618, 4619, 7, 17, 0, 0, 4619, 4620, 7, 5, 0, 0, 4620, 4621, 7, 6, 0, 0, 4621, 4622, 7, 17, 0, 0, 4622, 4623, 7, 11, 0, 0, 4623, 4624, 7, 10, 0, 0, 4624, 876, 1, 0, 0, 0, 4625, 4626, 7, 14, 0, 0, 4626, 4627, 7, 5, 0, 0, 4627, 4628, 7, 6, 0, 0, 4628, 4629, 7, 6, 0, 0, 4629, 878, 1, 0, 0, 0, 4630, 4631, 7, 14, 0, 0, 4631, 4632, 7, 22, 0, 0, 4632, 4633, 7, 13, 0, 0, 4633, 4634, 7, 13, 0, 0, 4634, 4635, 7, 10, 0, 0, 4635, 4636, 7, 7, 0, 0, 4636, 4637, 7, 16, 0, 0, 4637, 880, 1, 0, 0, 0, 4638, 4639, 7, 5, 0, 0, 4639, 4640, 7, 16, 0, 0, 4640, 4641, 7, 16, 0, 0, 4641, 4642, 7, 5, 0, 0, 4642, 4643, 7, 14, 0, 0, 4643, 4644, 7, 20, 0, 0, 4644, 882, 1, 0, 0, 0, 4645, 4646, 7, 12, 0, 0, 4646, 4647, 7, 10, 0, 0, 4647, 4648, 7, 16, 0, 0, 4648, 4649, 7, 5, 0, 0, 4649, 4650, 7, 14, 0, 0, 4650, 4651, 7, 20, 0, 0, 4651, 884, 1, 0, 0, 0, 4652, 4653, 7, 10, 0, 0, 4653, 4654, 7, 26, 0, 0, 4654, 4655, 7, 24, 0, 0, 4655, 4656, 7, 13, 0, 0, 4656, 4657, 7, 10, 0, 0, 4657, 4658, 7, 9, 0, 0, 4658, 4659, 7, 9, 0, 0, 4659, 4660, 7, 17, 0, 0, 4660, 4661, 7, 19, 0, 0, 4661, 4662, 7, 7, 0, 0, 4662, 886, 1, 0, 0, 0, 4663, 4664, 7, 23, 0, 0, 4664, 4665, 7, 10, 0, 0, 4665, 4666, 7, 7, 0, 0, 4666, 4667, 7, 10, 0, 0, 4667, 4668, 7, 13, 0, 0, 4668, 4669, 7, 5, 0, 0, 4669, 4670, 7, 16, 0, 0, 4670, 4671, 7, 10, 0, 0, 4671, 4672, 7, 12, 0, 0, 4672, 888, 1, 0, 0, 0, 4673, 4674, 7, 6, 0, 0, 4674, 4675, 7, 19, 0, 0, 4675, 4676, 7, 23, 0, 0, 4676, 4677, 7, 23, 0, 0, 4677, 4678, 7, 10, 0, 0, 4678, 4679, 7, 12, 0, 0, 4679, 890, 1, 0, 0, 0, 4680, 4681, 7, 9, 0, 0, 4681, 4682, 7, 16, 0, 0, 4682, 4683, 7, 19, 0, 0, 4683, 4684, 7, 13, 0, 0, 4684, 4685, 7, 10, 0, 0, 4685, 4686, 7, 12, 0, 0, 4686, 892, 1, 0, 0, 0, 4687, 4688, 7, 17, 0, 0, 4688, 4689, 7, 7, 0, 0, 4689, 4690, 7, 14, 0, 0, 4690, 4691, 7, 6, 0, 0, 4691, 4692, 7, 22, 0, 0, 4692, 4693, 7, 12, 0, 0, 4693, 4694, 7, 10, 0, 0, 4694, 894, 1, 0, 0, 0, 4695, 4696, 7, 13, 0, 0, 4696, 4697, 7, 19, 0, 0, 4697, 4698, 7, 22, 0, 0, 4698, 4699, 7, 16, 0, 0, 4699, 4700, 7, 17, 0, 0, 4700, 4701, 7, 7, 0, 0, 4701, 4702, 7, 10, 0, 0, 4702, 896, 1, 0, 0, 0, 4703, 4704, 7, 16, 0, 0, 4704, 4705, 7, 13, 0, 0, 4705, 4706, 7, 5, 0, 0, 4706, 4707, 7, 7, 0, 0, 4707, 4708, 7, 9, 0, 0, 4708, 4709, 7, 25, 0, 0, 4709, 4710, 7, 19, 0, 0, 4710, 4711, 7, 13, 0, 0, 4711, 4712, 7, 15, 0, 0, 4712, 898, 1, 0, 0, 0, 4713, 4714, 7, 17, 0, 0, 4714, 4715, 7, 15, 0, 0, 4715, 4716, 7, 24, 0, 0, 4716, 4717, 7, 19, 0, 0, 4717, 4718, 7, 13, 0, 0, 4718, 4719, 7, 16, 0, 0, 4719, 900, 1, 0, 0, 0, 4720, 4721, 7, 24, 0, 0, 4721, 4722, 7, 19, 0, 0, 4722, 4723, 7, 6, 0, 0, 4723, 4724, 7, 17, 0, 0, 4724, 4725, 7, 14, 0, 0, 4725, 4726, 7, 8, 0, 0, 4726, 902, 1, 0, 0, 0, 4727, 4728, 7, 15, 0, 0, 4728, 4729, 7, 10, 0, 0, 4729, 4730, 7, 16, 0, 0, 4730, 4731, 7, 20, 0, 0, 4731, 4732, 7, 19, 0, 0, 4732, 4733, 7, 12, 0, 0, 4733, 904, 1, 0, 0, 0, 4734, 4735, 7, 13, 0, 0, 4735, 4736, 7, 10, 0, 0, 4736, 4737, 7, 25, 0, 0, 4737, 4738, 7, 10, 0, 0, 4738, 4739, 7, 13, 0, 0, 4739, 4740, 7, 10, 0, 0, 4740, 4741, 7, 7, 0, 0, 4741, 4742, 7, 14, 0, 0, 4742, 4743, 7, 17, 0, 0, 4743, 4744, 7, 7, 0, 0, 4744, 4745, 7, 23, 0, 0, 4745, 906, 1, 0, 0, 0, 4746, 4747, 7, 7, 0, 0, 4747, 4748, 7, 10, 0, 0, 4748, 4749, 7, 29, 0, 0, 4749, 908, 1, 0, 0, 0, 4750, 4751, 7, 19, 0, 0, 4751, 4752, 7, 6, 0, 0, 4752, 4753, 7, 12, 0, 0, 4753, 910, 1, 0, 0, 0, 4754, 4755, 7, 27, 0, 0, 4755, 4756, 7, 5, 0, 0, 4756, 4757, 7, 6, 0, 0, 4757, 4758, 7, 22, 0, 0, 4758, 4759, 7, 10, 0, 0, 4759, 912, 1, 0, 0, 0, 4760, 4761, 7, 9, 0, 0, 4761, 4762, 7, 22, 0, 0, 4762, 4763, 7, 18, 0, 0, 4763, 4764, 7, 9, 0, 0, 4764, 4765, 7, 14, 0, 0, 4765, 4766, 7, 13, 0, 0, 4766, 4767, 7, 17, 0, 0, 4767, 4768, 7, 24, 0, 0, 4768, 4769, 7, 16, 0, 0, 4769, 4770, 7, 17, 0, 0, 4770, 4771, 7, 19, 0, 0, 4771, 4772, 7, 7, 0, 0, 4772, 914, 1, 0, 0, 0, 4773, 4774, 7, 24, 0, 0, 4774, 4775, 7, 22, 0, 0, 4775, 4776, 7, 18, 0, 0, 4776, 4777, 7, 6, 0, 0, 4777, 4778, 7, 17, 0, 0, 4778, 4779, 7, 14, 0, 0, 4779, 4780, 7, 5, 0, 0, 4780, 4781, 7, 16, 0, 0, 4781, 4782, 7, 17, 0, 0, 4782, 4783, 7, 19, 0, 0, 4783, 4784, 7, 7, 0, 0, 4784, 916, 1, 0, 0, 0, 4785, 4786, 7, 19, 0, 0, 4786, 4787, 7, 22, 0, 0, 4787, 4788, 7, 16, 0, 0, 4788, 918, 1, 0, 0, 0, 4789, 4790, 7, 10, 0, 0, 4790, 4791, 7, 7, 0, 0, 4791, 4792, 7, 12, 0, 0, 4792, 920, 1, 0, 0, 0, 4793, 4794, 7, 13, 0, 0, 4794, 4795, 7, 19, 0, 0, 4795, 4796, 7, 22, 0, 0, 4796, 4797, 7, 16, 0, 0, 4797, 4798, 7, 17, 0, 0, 4798, 4799, 7, 7, 0, 0, 4799, 4800, 7, 10, 0, 0, 4800, 4801, 7, 9, 0, 0, 4801, 922, 1, 0, 0, 0, 4802, 4803, 7, 9, 0, 0, 4803, 4804, 7, 14, 0, 0, 4804, 4805, 7, 20, 0, 0, 4805, 4806, 7, 10, 0, 0, 4806, 4807, 7, 15, 0, 0, 4807, 4808, 7, 5, 0, 0, 4808, 4809, 7, 9, 0, 0, 4809, 924, 1, 0, 0, 0, 4810, 4811, 7, 24, 0, 0, 4811, 4812, 7, 13, 0, 0, 4812, 4813, 7, 19, 0, 0, 4813, 4814, 7, 14, 0, 0, 4814, 4815, 7, 10, 0, 0, 4815, 4816, 7, 12, 0, 0, 4816, 4817, 7, 22, 0, 0, 4817, 4818, 7, 13, 0, 0, 4818, 4819, 7, 10, 0, 0, 4819, 4820, 7, 9, 0, 0, 4820, 926, 1, 0, 0, 0, 4821, 4822, 7, 17, 0, 0, 4822, 4823, 7, 7, 0, 0, 4823, 4824, 7, 24, 0, 0, 4824, 4825, 7, 22, 0, 0, 4825, 4826, 7, 16, 0, 0, 4826, 928, 1, 0, 0, 0, 4827, 4828, 7, 9, 0, 0, 4828, 4829, 7, 22, 0, 0, 4829, 4830, 7, 24, 0, 0, 4830, 4831, 7, 24, 0, 0, 4831, 4832, 7, 19, 0, 0, 4832, 4833, 7, 13, 0, 0, 4833, 4834, 7, 16, 0, 0, 4834, 930, 1, 0, 0, 0, 4835, 4836, 7, 24, 0, 0, 4836, 4837, 7, 5, 0, 0, 4837, 4838, 7, 13, 0, 0, 4838, 4839, 7, 5, 0, 0, 4839, 4840, 7, 6, 0, 0, 4840, 4841, 7, 6, 0, 0, 4841, 4842, 7, 10, 0, 0, 4842, 4843, 7, 6, 0, 0, 4843, 932, 1, 0, 0, 0, 4844, 4845, 7, 9, 0, 0, 4845, 4846, 7, 28, 0, 0, 4846, 4847, 7, 6, 0, 0, 4847, 934, 1, 0, 0, 0, 4848, 4849, 7, 12, 0, 0, 4849, 4850, 7, 10, 0, 0, 4850, 4851, 7, 24, 0, 0, 4851, 4852, 7, 10, 0, 0, 4852, 4853, 7, 7, 0, 0, 4853, 4854, 7, 12, 0, 0, 4854, 4855, 7, 9, 0, 0, 4855, 936, 1, 0, 0, 0, 4856, 4857, 7, 19, 0, 0, 4857, 4858, 7, 27, 0, 0, 4858, 4859, 7, 10, 0, 0, 4859, 4860, 7, 13, 0, 0, 4860, 4861, 7, 13, 0, 0, 4861, 4862, 7, 17, 0, 0, 4862, 4863, 7, 12, 0, 0, 4863, 4864, 7, 17, 0, 0, 4864, 4865, 7, 7, 0, 0, 4865, 4866, 7, 23, 0, 0, 4866, 938, 1, 0, 0, 0, 4867, 4868, 7, 14, 0, 0, 4868, 4869, 7, 19, 0, 0, 4869, 4870, 7, 7, 0, 0, 4870, 4871, 7, 25, 0, 0, 4871, 4872, 7, 6, 0, 0, 4872, 4873, 7, 17, 0, 0, 4873, 4874, 7, 14, 0, 0, 4874, 4875, 7, 16, 0, 0, 4875, 940, 1, 0, 0, 0, 4876, 4877, 7, 9, 0, 0, 4877, 4878, 7, 21, 0, 0, 4878, 4879, 7, 17, 0, 0, 4879, 4880, 7, 24, 0, 0, 4880, 942, 1, 0, 0, 0, 4881, 4882, 7, 6, 0, 0, 4882, 4883, 7, 19, 0, 0, 4883, 4884, 7, 14, 0, 0, 4884, 4885, 7, 21, 0, 0, 4885, 4886, 7, 10, 0, 0, 4886, 4887, 7, 12, 0, 0, 4887, 944, 1, 0, 0, 0, 4888, 4889, 7, 16, 0, 0, 4889, 4890, 7, 17, 0, 0, 4890, 4891, 7, 10, 0, 0, 4891, 4892, 7, 9, 0, 0, 4892, 946, 1, 0, 0, 0, 4893, 4894, 7, 13, 0, 0, 4894, 4895, 7, 19, 0, 0, 4895, 4896, 7, 6, 0, 0, 4896, 4897, 7, 6, 0, 0, 4897, 4898, 7, 22, 0, 0, 4898, 4899, 7, 24, 0, 0, 4899, 948, 1, 0, 0, 0, 4900, 4901, 7, 14, 0, 0, 4901, 4902, 7, 22, 0, 0, 4902, 4903, 7, 18, 0, 0, 4903, 4904, 7, 10, 0, 0, 4904, 950, 1, 0, 0, 0, 4905, 4906, 7, 23, 0, 0, 4906, 4907, 7, 13, 0, 0, 4907, 4908, 7, 19, 0, 0, 4908, 4909, 7, 22, 0, 0, 4909, 4910, 7, 24, 0, 0, 4910, 4911, 7, 17, 0, 0, 4911, 4912, 7, 7, 0, 0, 4912, 4913, 7, 23, 0, 0, 4913, 952, 1, 0, 0, 0, 4914, 4915, 7, 9, 0, 0, 4915, 4916, 7, 10, 0, 0, 4916, 4917, 7, 16, 0, 0, 4917, 4918, 7, 9, 0, 0, 4918, 954, 1, 0, 0, 0, 4919, 4920, 7, 16, 0, 0, 4920, 4921, 7, 5, 0, 0, 4921, 4922, 7, 18, 0, 0, 4922, 4923, 7, 6, 0, 0, 4923, 4924, 7, 10, 0, 0, 4924, 4925, 7, 9, 0, 0, 4925, 4926, 7, 5, 0, 0, 4926, 4927, 7, 15, 0, 0, 4927, 4928, 7, 24, 0, 0, 4928, 4929, 7, 6, 0, 0, 4929, 4930, 7, 10, 0, 0, 4930, 956, 1, 0, 0, 0, 4931, 4932, 7, 19, 0, 0, 4932, 4933, 7, 13, 0, 0, 4933, 4934, 7, 12, 0, 0, 4934, 4935, 7, 17, 0, 0, 4935, 4936, 7, 7, 0, 0, 4936, 4937, 7, 5, 0, 0, 4937, 4938, 7, 6, 0, 0, 4938, 4939, 7, 17, 0, 0, 4939, 4940, 7, 16, 0, 0, 4940, 4941, 7, 8, 0, 0, 4941, 958, 1, 0, 0, 0, 4942, 4943, 7, 26, 0, 0, 4943, 4944, 7, 15, 0, 0, 4944, 4945, 7, 6, 0, 0, 4945, 4946, 7, 16, 0, 0, 4946, 4947, 7, 5, 0, 0, 4947, 4948, 7, 18, 0, 0, 4948, 4949, 7, 6, 0, 0, 4949, 4950, 7, 10, 0, 0, 4950, 960, 1, 0, 0, 0, 4951, 4952, 7, 14, 0, 0, 4952, 4953, 7, 19, 0, 0, 4953, 4954, 7, 6, 0, 0, 4954, 4955, 7, 22, 0, 0, 4955, 4956, 7, 15, 0, 0, 4956, 4957, 7, 7, 0, 0, 4957, 4958, 7, 9, 0, 0, 4958, 962, 1, 0, 0, 0, 4959, 4960, 7, 26, 0, 0, 4960, 4961, 7, 15, 0, 0, 4961, 4962, 7, 6, 0, 0, 4962, 4963, 7, 7, 0, 0, 4963, 4964, 7, 5, 0, 0, 4964, 4965, 7, 15, 0, 0, 4965, 4966, 7, 10, 0, 0, 4966, 4967, 7, 9, 0, 0, 4967, 4968, 7, 24, 0, 0, 4968, 4969, 7, 5, 0, 0, 4969, 4970, 7, 14, 0, 0, 4970, 4971, 7, 10, 0, 0, 4971, 4972, 7, 9, 0, 0, 4972, 964, 1, 0, 0, 0, 4973, 4974, 7, 13, 0, 0, 4974, 4975, 7, 19, 0, 0, 4975, 4976, 7, 29, 0, 0, 4976, 4977, 7, 16, 0, 0, 4977, 4978, 7, 8, 0, 0, 4978, 4979, 7, 24, 0, 0, 4979, 4980, 7, 10, 0, 0, 4980, 966, 1, 0, 0, 0, 4981, 4982, 7, 7, 0, 0, 4982, 4983, 7, 19, 0, 0, 4983, 4984, 7, 13, 0, 0, 4984, 4985, 7, 15, 0, 0, 4985, 4986, 7, 5, 0, 0, 4986, 4987, 7, 6, 0, 0, 4987, 4988, 7, 17, 0, 0, 4988, 4989, 7, 11, 0, 0, 4989, 4990, 7, 10, 0, 0, 4990, 4991, 7, 12, 0, 0, 4991, 968, 1, 0, 0, 0, 4992, 4993, 7, 29, 0, 0, 4993, 4994, 7, 17, 0, 0, 4994, 4995, 7, 16, 0, 0, 4995, 4996, 7, 20, 0, 0, 4996, 4997, 7, 17, 0, 0, 4997, 4998, 7, 7, 0, 0, 4998, 970, 1, 0, 0, 0, 4999, 5000, 7, 25, 0, 0, 5000, 5001, 7, 17, 0, 0, 5001, 5002, 7, 6, 0, 0, 5002, 5003, 7, 16, 0, 0, 5003, 5004, 7, 10, 0, 0, 5004, 5005, 7, 13, 0, 0, 5005, 972, 1, 0, 0, 0, 5006, 5007, 7, 23, 0, 0, 5007, 5008, 7, 13, 0, 0, 5008, 5009, 7, 19, 0, 0, 5009, 5010, 7, 22, 0, 0, 5010, 5011, 7, 24, 0, 0, 5011, 5012, 7, 9, 0, 0, 5012, 974, 1, 0, 0, 0, 5013, 5014, 7, 19, 0, 0, 5014, 5015, 7, 16, 0, 0, 5015, 5016, 7, 20, 0, 0, 5016, 5017, 7, 10, 0, 0, 5017, 5018, 7, 13, 0, 0, 5018, 5019, 7, 9, 0, 0, 5019, 976, 1, 0, 0, 0, 5020, 5021, 7, 7, 0, 0, 5021, 5022, 7, 25, 0, 0, 5022, 5023, 7, 14, 0, 0, 5023, 978, 1, 0, 0, 0, 5024, 5025, 7, 7, 0, 0, 5025, 5026, 7, 25, 0, 0, 5026, 5027, 7, 12, 0, 0, 5027, 980, 1, 0, 0, 0, 5028, 5029, 7, 7, 0, 0, 5029, 5030, 7, 25, 0, 0, 5030, 5031, 7, 21, 0, 0, 5031, 5032, 7, 14, 0, 0, 5032, 982, 1, 0, 0, 0, 5033, 5034, 7, 7, 0, 0, 5034, 5035, 7, 25, 0, 0, 5035, 5036, 7, 21, 0, 0, 5036, 5037, 7, 12, 0, 0, 5037, 984, 1, 0, 0, 0, 5038, 5039, 7, 22, 0, 0, 5039, 5040, 7, 10, 0, 0, 5040, 5041, 7, 9, 0, 0, 5041, 5042, 7, 14, 0, 0, 5042, 5043, 7, 5, 0, 0, 5043, 5044, 7, 24, 0, 0, 5044, 5045, 7, 10, 0, 0, 5045, 986, 1, 0, 0, 0, 5046, 5047, 7, 27, 0, 0, 5047, 5048, 7, 17, 0, 0, 5048, 5049, 7, 10, 0, 0, 5049, 5050, 7, 29, 0, 0, 5050, 5051, 7, 9, 0, 0, 5051, 988, 1, 0, 0, 0, 5052, 5053, 7, 7, 0, 0, 5053, 5054, 7, 19, 0, 0, 5054, 5055, 7, 13, 0, 0, 5055, 5056, 7, 15, 0, 0, 5056, 5057, 7, 5, 0, 0, 5057, 5058, 7, 6, 0, 0, 5058, 5059, 7, 17, 0, 0, 5059, 5060, 7, 11, 0, 0, 5060, 5061, 7, 10, 0, 0, 5061, 990, 1, 0, 0, 0, 5062, 5063, 7, 12, 0, 0, 5063, 5064, 7, 22, 0, 0, 5064, 5065, 7, 15, 0, 0, 5065, 5066, 7, 24, 0, 0, 5066, 992, 1, 0, 0, 0, 5067, 5068, 7, 24, 0, 0, 5068, 5069, 7, 13, 0, 0, 5069, 5070, 7, 17, 0, 0, 5070, 5071, 7, 7, 0, 0, 5071, 5072, 7, 16, 0, 0, 5072, 5073, 5, 95, 0, 0, 5073, 5074, 7, 9, 0, 0, 5074, 5075, 7, 16, 0, 0, 5075, 5076, 7, 13, 0, 0, 5076, 5077, 7, 17, 0, 0, 5077, 5078, 7, 14, 0, 0, 5078, 5079, 7, 16, 0, 0, 5079, 5080, 5, 95, 0, 0, 5080, 5081, 7, 24, 0, 0, 5081, 5082, 7, 5, 0, 0, 5082, 5083, 7, 13, 0, 0, 5083, 5084, 7, 5, 0, 0, 5084, 5085, 7, 15, 0, 0, 5085, 5086, 7, 9, 0, 0, 5086, 994, 1, 0, 0, 0, 5087, 5088, 7, 27, 0, 0, 5088, 5089, 7, 5, 0, 0, 5089, 5090, 7, 13, 0, 0, 5090, 5091, 7, 17, 0, 0, 5091, 5092, 7, 5, 0, 0, 5092, 5093, 7, 18, 0, 0, 5093, 5094, 7, 6, 0, 0, 5094, 5095, 7, 10, 0, 0, 5095, 5096, 5, 95, 0, 0, 5096, 5097, 7, 14, 0, 0, 5097, 5098, 7, 19, 0, 0, 5098, 5099, 7, 7, 0, 0, 5099, 5100, 7, 25, 0, 0, 5100, 5101, 7, 6, 0, 0, 5101, 5102, 7, 17, 0, 0, 5102, 5103, 7, 14, 0, 0, 5103, 5104, 7, 16, 0, 0, 5104, 996, 1, 0, 0, 0, 5105, 5106, 7, 10, 0, 0, 5106, 5107, 7, 13, 0, 0, 5107, 5108, 7, 13, 0, 0, 5108, 5109, 7, 19, 0, 0, 5109, 5110, 7, 13, 0, 0, 5110, 998, 1, 0, 0, 0, 5111, 5112, 7, 22, 0, 0, 5112, 5113, 7, 9, 0, 0, 5113, 5114, 7, 10, 0, 0, 5114, 5115, 5, 95, 0, 0, 5115, 5116, 7, 27, 0, 0, 5116, 5117, 7, 5, 0, 0, 5117, 5118, 7, 13, 0, 0, 5118, 5119, 7, 17, 0, 0, 5119, 5120, 7, 5, 0, 0, 5120, 5121, 7, 18, 0, 0, 5121, 5122, 7, 6, 0, 0, 5122, 5123, 7, 10, 0, 0, 5123, 1000, 1, 0, 0, 0, 5124, 5125, 7, 22, 0, 0, 5125, 5126, 7, 9, 0, 0, 5126, 5127, 7, 10, 0, 0, 5127, 5128, 5, 95, 0, 0, 5128, 5129, 7, 14, 0, 0, 5129, 5130, 7, 19, 0, 0, 5130, 5131, 7, 6, 0, 0, 5131, 5132, 7, 22, 0, 0, 5132, 5133, 7, 15, 0, 0, 5133, 5134, 7, 7, 0, 0, 5134, 1002, 1, 0, 0, 0, 5135, 5136, 7, 5, 0, 0, 5136, 5137, 7, 6, 0, 0, 5137, 5138, 7, 17, 0, 0, 5138, 5139, 7, 5, 0, 0, 5139, 5140, 7, 9, 0, 0, 5140, 1004, 1, 0, 0, 0, 5141, 5142, 7, 14, 0, 0, 5142, 5143, 7, 19, 0, 0, 5143, 5144, 7, 7, 0, 0, 5144, 5145, 7, 9, 0, 0, 5145, 5146, 7, 16, 0, 0, 5146, 5147, 7, 5, 0, 0, 5147, 5148, 7, 7, 0, 0, 5148, 5149, 7, 16, 0, 0, 5149, 1006, 1, 0, 0, 0, 5150, 5151, 7, 24, 0, 0, 5151, 5152, 7, 10, 0, 0, 5152, 5153, 7, 13, 0, 0, 5153, 5154, 7, 25, 0, 0, 5154, 5155, 7, 19, 0, 0, 5155, 5156, 7, 13, 0, 0, 5156, 5157, 7, 15, 0, 0, 5157, 1008, 1, 0, 0, 0, 5158, 5159, 7, 23, 0, 0, 5159, 5160, 7, 10, 0, 0, 5160, 5161, 7, 16, 0, 0, 5161, 1010, 1, 0, 0, 0, 5162, 5163, 7, 12, 0, 0, 5163, 5164, 7, 17, 0, 0, 5164, 5165, 7, 5, 0, 0, 5165, 5166, 7, 23, 0, 0, 5166, 5167, 7, 7, 0, 0, 5167, 5168, 7, 19, 0, 0, 5168, 5169, 7, 9, 0, 0, 5169, 5170, 7, 16, 0, 0, 5170, 5171, 7, 17, 0, 0, 5171, 5172, 7, 14, 0, 0, 5172, 5173, 7, 9, 0, 0, 5173, 1012, 1, 0, 0, 0, 5174, 5175, 7, 9, 0, 0, 5175, 5176, 7, 16, 0, 0, 5176, 5177, 7, 5, 0, 0, 5177, 5178, 7, 14, 0, 0, 5178, 5179, 7, 21, 0, 0, 5179, 5180, 7, 10, 0, 0, 5180, 5181, 7, 12, 0, 0, 5181, 1014, 1, 0, 0, 0, 5182, 5183, 7, 10, 0, 0, 5183, 5184, 7, 6, 0, 0, 5184, 5185, 7, 9, 0, 0, 5185, 5186, 7, 17, 0, 0, 5186, 5187, 7, 25, 0, 0, 5187, 1016, 1, 0, 0, 0, 5188, 5189, 7, 29, 0, 0, 5189, 5190, 7, 20, 0, 0, 5190, 5191, 7, 17, 0, 0, 5191, 5192, 7, 6, 0, 0, 5192, 5193, 7, 10, 0, 0, 5193, 1018, 1, 0, 0, 0, 5194, 5195, 7, 13, 0, 0, 5195, 5196, 7, 10, 0, 0, 5196, 5197, 7, 27, 0, 0, 5197, 5198, 7, 10, 0, 0, 5198, 5199, 7, 13, 0, 0, 5199, 5200, 7, 9, 0, 0, 5200, 5201, 7, 10, 0, 0, 5201, 1020, 1, 0, 0, 0, 5202, 5203, 7, 25, 0, 0, 5203, 5204, 7, 19, 0, 0, 5204, 5205, 7, 13, 0, 0, 5205, 5206, 7, 10, 0, 0, 5206, 5207, 7, 5, 0, 0, 5207, 5208, 7, 14, 0, 0, 5208, 5209, 7, 20, 0, 0, 5209, 1022, 1, 0, 0, 0, 5210, 5211, 7, 9, 0, 0, 5211, 5212, 7, 6, 0, 0, 5212, 5213, 7, 17, 0, 0, 5213, 5214, 7, 14, 0, 0, 5214, 5215, 7, 10, 0, 0, 5215, 1024, 1, 0, 0, 0, 5216, 5217, 7, 10, 0, 0, 5217, 5218, 7, 26, 0, 0, 5218, 5219, 7, 17, 0, 0, 5219, 5220, 7, 16, 0, 0, 5220, 1026, 1, 0, 0, 0, 5221, 5222, 7, 13, 0, 0, 5222, 5223, 7, 10, 0, 0, 5223, 5224, 7, 16, 0, 0, 5224, 5225, 7, 22, 0, 0, 5225, 5226, 7, 13, 0, 0, 5226, 5227, 7, 7, 0, 0, 5227, 1028, 1, 0, 0, 0, 5228, 5229, 7, 28, 0, 0, 5229, 5230, 7, 22, 0, 0, 5230, 5231, 7, 10, 0, 0, 5231, 5232, 7, 13, 0, 0, 5232, 5233, 7, 8, 0, 0, 5233, 1030, 1, 0, 0, 0, 5234, 5235, 7, 13, 0, 0, 5235, 5236, 7, 5, 0, 0, 5236, 5237, 7, 17, 0, 0, 5237, 5238, 7, 9, 0, 0, 5238, 5239, 7, 10, 0, 0, 5239, 1032, 1, 0, 0, 0, 5240, 5241, 7, 9, 0, 0, 5241, 5242, 7, 28, 0, 0, 5242, 5243, 7, 6, 0, 0, 5243, 5244, 7, 9, 0, 0, 5244, 5245, 7, 16, 0, 0, 5245, 5246, 7, 5, 0, 0, 5246, 5247, 7, 16, 0, 0, 5247, 5248, 7, 10, 0, 0, 5248, 1034, 1, 0, 0, 0, 5249, 5250, 7, 12, 0, 0, 5250, 5251, 7, 10, 0, 0, 5251, 5252, 7, 18, 0, 0, 5252, 5253, 7, 22, 0, 0, 5253, 5254, 7, 23, 0, 0, 5254, 1036, 1, 0, 0, 0, 5255, 5256, 7, 6, 0, 0, 5256, 5257, 7, 19, 0, 0, 5257, 5258, 7, 23, 0, 0, 5258, 1038, 1, 0, 0, 0, 5259, 5260, 7, 17, 0, 0, 5260, 5261, 7, 7, 0, 0, 5261, 5262, 7, 25, 0, 0, 5262, 5263, 7, 19, 0, 0, 5263, 1040, 1, 0, 0, 0, 5264, 5265, 7, 7, 0, 0, 5265, 5266, 7, 19, 0, 0, 5266, 5267, 7, 16, 0, 0, 5267, 5268, 7, 17, 0, 0, 5268, 5269, 7, 14, 0, 0, 5269, 5270, 7, 10, 0, 0, 5270, 1042, 1, 0, 0, 0, 5271, 5272, 7, 29, 0, 0, 5272, 5273, 7, 5, 0, 0, 5273, 5274, 7, 13, 0, 0, 5274, 5275, 7, 7, 0, 0, 5275, 5276, 7, 17, 0, 0, 5276, 5277, 7, 7, 0, 0, 5277, 5278, 7, 23, 0, 0, 5278, 1044, 1, 0, 0, 0, 5279, 5280, 7, 10, 0, 0, 5280, 5281, 7, 26, 0, 0, 5281, 5282, 7, 14, 0, 0, 5282, 5283, 7, 10, 0, 0, 5283, 5284, 7, 24, 0, 0, 5284, 5285, 7, 16, 0, 0, 5285, 5286, 7, 17, 0, 0, 5286, 5287, 7, 19, 0, 0, 5287, 5288, 7, 7, 0, 0, 5288, 1046, 1, 0, 0, 0, 5289, 5290, 7, 5, 0, 0, 5290, 5291, 7, 9, 0, 0, 5291, 5292, 7, 9, 0, 0, 5292, 5293, 7, 10, 0, 0, 5293, 5294, 7, 13, 0, 0, 5294, 5295, 7, 16, 0, 0, 5295, 1048, 1, 0, 0, 0, 5296, 5297, 7, 6, 0, 0, 5297, 5298, 7, 19, 0, 0, 5298, 5299, 7, 19, 0, 0, 5299, 5300, 7, 24, 0, 0, 5300, 1050, 1, 0, 0, 0, 5301, 5302, 7, 19, 0, 0, 5302, 5303, 7, 24, 0, 0, 5303, 5304, 7, 10, 0, 0, 5304, 5305, 7, 7, 0, 0, 5305, 1052, 1, 0, 0, 0, 5306, 5307, 7, 5, 0, 0, 5307, 5308, 7, 18, 0, 0, 5308, 5309, 7, 9, 0, 0, 5309, 1054, 1, 0, 0, 0, 5310, 5311, 7, 14, 0, 0, 5311, 5312, 7, 18, 0, 0, 5312, 5313, 7, 13, 0, 0, 5313, 5314, 7, 16, 0, 0, 5314, 1056, 1, 0, 0, 0, 5315, 5316, 7, 14, 0, 0, 5316, 5317, 7, 10, 0, 0, 5317, 5318, 7, 17, 0, 0, 5318, 5319, 7, 6, 0, 0, 5319, 1058, 1, 0, 0, 0, 5320, 5321, 7, 14, 0, 0, 5321, 5322, 7, 10, 0, 0, 5322, 5323, 7, 17, 0, 0, 5323, 5324, 7, 6, 0, 0, 5324, 5325, 7, 17, 0, 0, 5325, 5326, 7, 7, 0, 0, 5326, 5327, 7, 23, 0, 0, 5327, 1060, 1, 0, 0, 0, 5328, 5329, 7, 12, 0, 0, 5329, 5330, 7, 10, 0, 0, 5330, 5331, 7, 23, 0, 0, 5331, 5332, 7, 13, 0, 0, 5332, 5333, 7, 10, 0, 0, 5333, 5334, 7, 10, 0, 0, 5334, 5335, 7, 9, 0, 0, 5335, 1062, 1, 0, 0, 0, 5336, 5337, 7, 12, 0, 0, 5337, 5338, 7, 17, 0, 0, 5338, 5339, 7, 27, 0, 0, 5339, 1064, 1, 0, 0, 0, 5340, 5341, 7, 10, 0, 0, 5341, 5342, 7, 26, 0, 0, 5342, 5343, 7, 24, 0, 0, 5343, 1066, 1, 0, 0, 0, 5344, 5345, 7, 25, 0, 0, 5345, 5346, 7, 5, 0, 0, 5346, 5347, 7, 14, 0, 0, 5347, 5348, 7, 16, 0, 0, 5348, 5349, 7, 19, 0, 0, 5349, 5350, 7, 13, 0, 0, 5350, 5351, 7, 17, 0, 0, 5351, 5352, 7, 5, 0, 0, 5352, 5353, 7, 6, 0, 0, 5353, 1068, 1, 0, 0, 0, 5354, 5355, 7, 25, 0, 0, 5355, 5356, 7, 6, 0, 0, 5356, 5357, 7, 19, 0, 0, 5357, 5358, 7, 19, 0, 0, 5358, 5359, 7, 13, 0, 0, 5359, 1070, 1, 0, 0, 0, 5360, 5361, 7, 23, 0, 0, 5361, 5362, 7, 14, 0, 0, 5362, 5363, 7, 12, 0, 0, 5363, 1072, 1, 0, 0, 0, 5364, 5365, 7, 6, 0, 0, 5365, 5366, 7, 14, 0, 0, 5366, 5367, 7, 15, 0, 0, 5367, 1074, 1, 0, 0, 0, 5368, 5369, 7, 6, 0, 0, 5369, 5370, 7, 7, 0, 0, 5370, 1076, 1, 0, 0, 0, 5371, 5372, 7, 6, 0, 0, 5372, 5373, 7, 19, 0, 0, 5373, 5374, 7, 23, 0, 0, 5374, 5375, 5, 49, 0, 0, 5375, 5376, 5, 48, 0, 0, 5376, 1078, 1, 0, 0, 0, 5377, 5378, 7, 15, 0, 0, 5378, 5379, 7, 17, 0, 0, 5379, 5380, 7, 7, 0, 0, 5380, 5381, 5, 95, 0, 0, 5381, 5382, 7, 9, 0, 0, 5382, 5383, 7, 14, 0, 0, 5383, 5384, 7, 5, 0, 0, 5384, 5385, 7, 6, 0, 0, 5385, 5386, 7, 10, 0, 0, 5386, 1080, 1, 0, 0, 0, 5387, 5388, 7, 15, 0, 0, 5388, 5389, 7, 19, 0, 0, 5389, 5390, 7, 12, 0, 0, 5390, 1082, 1, 0, 0, 0, 5391, 5392, 7, 24, 0, 0, 5392, 5393, 7, 17, 0, 0, 5393, 1084, 1, 0, 0, 0, 5394, 5395, 7, 24, 0, 0, 5395, 5396, 7, 19, 0, 0, 5396, 5397, 7, 29, 0, 0, 5397, 5398, 7, 10, 0, 0, 5398, 5399, 7, 13, 0, 0, 5399, 1086, 1, 0, 0, 0, 5400, 5401, 7, 13, 0, 0, 5401, 5402, 7, 5, 0, 0, 5402, 5403, 7, 12, 0, 0, 5403, 5404, 7, 17, 0, 0, 5404, 5405, 7, 5, 0, 0, 5405, 5406, 7, 7, 0, 0, 5406, 5407, 7, 9, 0, 0, 5407, 1088, 1, 0, 0, 0, 5408, 5409, 7, 13, 0, 0, 5409, 5410, 7, 19, 0, 0, 5410, 5411, 7, 22, 0, 0, 5411, 5412, 7, 7, 0, 0, 5412, 5413, 7, 12, 0, 0, 5413, 1090, 1, 0, 0, 0, 5414, 5415, 7, 9, 0, 0, 5415, 5416, 7, 14, 0, 0, 5416, 5417, 7, 5, 0, 0, 5417, 5418, 7, 6, 0, 0, 5418, 5419, 7, 10, 0, 0, 5419, 1092, 1, 0, 0, 0, 5420, 5421, 7, 9, 0, 0, 5421, 5422, 7, 17, 0, 0, 5422, 5423, 7, 23, 0, 0, 5423, 5424, 7, 7, 0, 0, 5424, 1094, 1, 0, 0, 0, 5425, 5426, 7, 9, 0, 0, 5426, 5427, 7, 28, 0, 0, 5427, 5428, 7, 13, 0, 0, 5428, 5429, 7, 16, 0, 0, 5429, 1096, 1, 0, 0, 0, 5430, 5431, 7, 16, 0, 0, 5431, 5432, 7, 13, 0, 0, 5432, 5433, 7, 17, 0, 0, 5433, 5434, 7, 15, 0, 0, 5434, 5435, 5, 95, 0, 0, 5435, 5436, 7, 9, 0, 0, 5436, 5437, 7, 14, 0, 0, 5437, 5438, 7, 5, 0, 0, 5438, 5439, 7, 6, 0, 0, 5439, 5440, 7, 10, 0, 0, 5440, 1098, 1, 0, 0, 0, 5441, 5442, 7, 16, 0, 0, 5442, 5443, 7, 13, 0, 0, 5443, 5444, 7, 22, 0, 0, 5444, 5445, 7, 7, 0, 0, 5445, 5446, 7, 14, 0, 0, 5446, 1100, 1, 0, 0, 0, 5447, 5448, 7, 29, 0, 0, 5448, 5449, 7, 17, 0, 0, 5449, 5450, 7, 12, 0, 0, 5450, 5451, 7, 16, 0, 0, 5451, 5452, 7, 20, 0, 0, 5452, 5453, 5, 95, 0, 0, 5453, 5454, 7, 18, 0, 0, 5454, 5455, 7, 22, 0, 0, 5455, 5456, 7, 14, 0, 0, 5456, 5457, 7, 21, 0, 0, 5457, 5458, 7, 10, 0, 0, 5458, 5459, 7, 16, 0, 0, 5459, 1102, 1, 0, 0, 0, 5460, 5461, 7, 13, 0, 0, 5461, 5462, 7, 5, 0, 0, 5462, 5463, 7, 7, 0, 0, 5463, 5464, 7, 12, 0, 0, 5464, 5465, 7, 19, 0, 0, 5465, 5466, 7, 15, 0, 0, 5466, 1104, 1, 0, 0, 0, 5467, 5468, 7, 9, 0, 0, 5468, 5469, 7, 10, 0, 0, 5469, 5470, 7, 16, 0, 0, 5470, 5471, 7, 9, 0, 0, 5471, 5472, 7, 10, 0, 0, 5472, 5473, 7, 10, 0, 0, 5473, 5474, 7, 12, 0, 0, 5474, 1106, 1, 0, 0, 0, 5475, 5476, 7, 5, 0, 0, 5476, 5477, 7, 14, 0, 0, 5477, 5478, 7, 19, 0, 0, 5478, 5479, 7, 9, 0, 0, 5479, 1108, 1, 0, 0, 0, 5480, 5481, 7, 5, 0, 0, 5481, 5482, 7, 14, 0, 0, 5482, 5483, 7, 19, 0, 0, 5483, 5484, 7, 9, 0, 0, 5484, 5485, 7, 12, 0, 0, 5485, 1110, 1, 0, 0, 0, 5486, 5487, 7, 5, 0, 0, 5487, 5488, 7, 9, 0, 0, 5488, 5489, 7, 17, 0, 0, 5489, 5490, 7, 7, 0, 0, 5490, 1112, 1, 0, 0, 0, 5491, 5492, 7, 5, 0, 0, 5492, 5493, 7, 9, 0, 0, 5493, 5494, 7, 17, 0, 0, 5494, 5495, 7, 7, 0, 0, 5495, 5496, 7, 12, 0, 0, 5496, 1114, 1, 0, 0, 0, 5497, 5498, 7, 5, 0, 0, 5498, 5499, 7, 16, 0, 0, 5499, 5500, 7, 5, 0, 0, 5500, 5501, 7, 7, 0, 0, 5501, 1116, 1, 0, 0, 0, 5502, 5503, 7, 5, 0, 0, 5503, 5504, 7, 16, 0, 0, 5504, 5505, 7, 5, 0, 0, 5505, 5506, 7, 7, 0, 0, 5506, 5507, 7, 12, 0, 0, 5507, 1118, 1, 0, 0, 0, 5508, 5509, 7, 5, 0, 0, 5509, 5510, 7, 16, 0, 0, 5510, 5511, 7, 5, 0, 0, 5511, 5512, 7, 7, 0, 0, 5512, 5513, 5, 50, 0, 0, 5513, 1120, 1, 0, 0, 0, 5514, 5515, 7, 5, 0, 0, 5515, 5516, 7, 16, 0, 0, 5516, 5517, 7, 5, 0, 0, 5517, 5518, 7, 7, 0, 0, 5518, 5519, 5, 50, 0, 0, 5519, 5520, 7, 12, 0, 0, 5520, 1122, 1, 0, 0, 0, 5521, 5522, 7, 14, 0, 0, 5522, 5523, 7, 19, 0, 0, 5523, 5524, 7, 9, 0, 0, 5524, 1124, 1, 0, 0, 0, 5525, 5526, 7, 14, 0, 0, 5526, 5527, 7, 19, 0, 0, 5527, 5528, 7, 9, 0, 0, 5528, 5529, 7, 12, 0, 0, 5529, 1126, 1, 0, 0, 0, 5530, 5531, 7, 14, 0, 0, 5531, 5532, 7, 19, 0, 0, 5532, 5533, 7, 16, 0, 0, 5533, 1128, 1, 0, 0, 0, 5534, 5535, 7, 14, 0, 0, 5535, 5536, 7, 19, 0, 0, 5536, 5537, 7, 16, 0, 0, 5537, 5538, 7, 12, 0, 0, 5538, 1130, 1, 0, 0, 0, 5539, 5540, 7, 9, 0, 0, 5540, 5541, 7, 17, 0, 0, 5541, 5542, 7, 7, 0, 0, 5542, 1132, 1, 0, 0, 0, 5543, 5544, 7, 9, 0, 0, 5544, 5545, 7, 17, 0, 0, 5545, 5546, 7, 7, 0, 0, 5546, 5547, 7, 12, 0, 0, 5547, 1134, 1, 0, 0, 0, 5548, 5549, 7, 16, 0, 0, 5549, 5550, 7, 5, 0, 0, 5550, 5551, 7, 7, 0, 0, 5551, 1136, 1, 0, 0, 0, 5552, 5553, 7, 16, 0, 0, 5553, 5554, 7, 5, 0, 0, 5554, 5555, 7, 7, 0, 0, 5555, 5556, 7, 12, 0, 0, 5556, 1138, 1, 0, 0, 0, 5557, 5558, 7, 9, 0, 0, 5558, 5559, 7, 17, 0, 0, 5559, 5560, 7, 7, 0, 0, 5560, 5561, 7, 20, 0, 0, 5561, 1140, 1, 0, 0, 0, 5562, 5563, 7, 14, 0, 0, 5563, 5564, 7, 19, 0, 0, 5564, 5565, 7, 9, 0, 0, 5565, 5566, 7, 20, 0, 0, 5566, 1142, 1, 0, 0, 0, 5567, 5568, 7, 16, 0, 0, 5568, 5569, 7, 5, 0, 0, 5569, 5570, 7, 7, 0, 0, 5570, 5571, 7, 20, 0, 0, 5571, 1144, 1, 0, 0, 0, 5572, 5573, 7, 5, 0, 0, 5573, 5574, 7, 9, 0, 0, 5574, 5575, 7, 17, 0, 0, 5575, 5576, 7, 7, 0, 0, 5576, 5577, 7, 20, 0, 0, 5577, 1146, 1, 0, 0, 0, 5578, 5579, 7, 5, 0, 0, 5579, 5580, 7, 14, 0, 0, 5580, 5581, 7, 19, 0, 0, 5581, 5582, 7, 9, 0, 0, 5582, 5583, 7, 20, 0, 0, 5583, 1148, 1, 0, 0, 0, 5584, 5585, 7, 5, 0, 0, 5585, 5586, 7, 16, 0, 0, 5586, 5587, 7, 5, 0, 0, 5587, 5588, 7, 7, 0, 0, 5588, 5589, 7, 20, 0, 0, 5589, 1150, 1, 0, 0, 0, 5590, 5591, 7, 18, 0, 0, 5591, 5592, 7, 17, 0, 0, 5592, 5593, 7, 16, 0, 0, 5593, 5594, 5, 95, 0, 0, 5594, 5595, 7, 6, 0, 0, 5595, 5596, 7, 10, 0, 0, 5596, 5597, 7, 7, 0, 0, 5597, 5598, 7, 23, 0, 0, 5598, 5599, 7, 16, 0, 0, 5599, 5600, 7, 20, 0, 0, 5600, 1152, 1, 0, 0, 0, 5601, 5602, 7, 14, 0, 0, 5602, 5603, 7, 20, 0, 0, 5603, 5604, 7, 5, 0, 0, 5604, 5605, 7, 13, 0, 0, 5605, 5606, 5, 95, 0, 0, 5606, 5607, 7, 6, 0, 0, 5607, 5608, 7, 10, 0, 0, 5608, 5609, 7, 7, 0, 0, 5609, 5610, 7, 23, 0, 0, 5610, 5611, 7, 16, 0, 0, 5611, 5612, 7, 20, 0, 0, 5612, 1154, 1, 0, 0, 0, 5613, 5614, 7, 14, 0, 0, 5614, 5615, 7, 20, 0, 0, 5615, 5616, 7, 5, 0, 0, 5616, 5617, 7, 13, 0, 0, 5617, 5618, 7, 5, 0, 0, 5618, 5619, 7, 14, 0, 0, 5619, 5620, 7, 16, 0, 0, 5620, 5621, 7, 10, 0, 0, 5621, 5622, 7, 13, 0, 0, 5622, 5623, 5, 95, 0, 0, 5623, 5624, 7, 6, 0, 0, 5624, 5625, 7, 10, 0, 0, 5625, 5626, 7, 7, 0, 0, 5626, 5627, 7, 23, 0, 0, 5627, 5628, 7, 16, 0, 0, 5628, 5629, 7, 20, 0, 0, 5629, 1156, 1, 0, 0, 0, 5630, 5631, 7, 6, 0, 0, 5631, 5632, 7, 19, 0, 0, 5632, 5633, 7, 29, 0, 0, 5633, 5634, 7, 10, 0, 0, 5634, 5635, 7, 13, 0, 0, 5635, 1158, 1, 0, 0, 0, 5636, 5637, 7, 19, 0, 0, 5637, 5638, 7, 14, 0, 0, 5638, 5639, 7, 16, 0, 0, 5639, 5640, 7, 10, 0, 0, 5640, 5641, 7, 16, 0, 0, 5641, 5642, 5, 95, 0, 0, 5642, 5643, 7, 6, 0, 0, 5643, 5644, 7, 10, 0, 0, 5644, 5645, 7, 7, 0, 0, 5645, 5646, 7, 23, 0, 0, 5646, 5647, 7, 16, 0, 0, 5647, 5648, 7, 20, 0, 0, 5648, 1160, 1, 0, 0, 0, 5649, 5650, 7, 22, 0, 0, 5650, 5651, 7, 24, 0, 0, 5651, 5652, 7, 24, 0, 0, 5652, 5653, 7, 10, 0, 0, 5653, 5654, 7, 13, 0, 0, 5654, 1162, 1, 0, 0, 0, 5655, 5656, 7, 5, 0, 0, 5656, 5657, 7, 9, 0, 0, 5657, 5658, 7, 14, 0, 0, 5658, 5659, 7, 17, 0, 0, 5659, 5660, 7, 17, 0, 0, 5660, 1164, 1, 0, 0, 0, 5661, 5662, 7, 18, 0, 0, 5662, 5663, 7, 16, 0, 0, 5663, 5664, 7, 13, 0, 0, 5664, 5665, 7, 17, 0, 0, 5665, 5666, 7, 15, 0, 0, 5666, 1166, 1, 0, 0, 0, 5667, 5668, 7, 14, 0, 0, 5668, 5669, 7, 20, 0, 0, 5669, 5670, 7, 13, 0, 0, 5670, 1168, 1, 0, 0, 0, 5671, 5672, 7, 14, 0, 0, 5672, 5673, 7, 19, 0, 0, 5673, 5674, 7, 7, 0, 0, 5674, 5675, 7, 14, 0, 0, 5675, 5676, 7, 5, 0, 0, 5676, 5677, 7, 16, 0, 0, 5677, 1170, 1, 0, 0, 0, 5678, 5679, 7, 14, 0, 0, 5679, 5680, 7, 19, 0, 0, 5680, 5681, 7, 7, 0, 0, 5681, 5682, 7, 14, 0, 0, 5682, 5683, 7, 5, 0, 0, 5683, 5684, 7, 16, 0, 0, 5684, 5685, 5, 95, 0, 0, 5685, 5686, 7, 29, 0, 0, 5686, 5687, 7, 9, 0, 0, 5687, 1172, 1, 0, 0, 0, 5688, 5689, 7, 25, 0, 0, 5689, 5690, 7, 19, 0, 0, 5690, 5691, 7, 13, 0, 0, 5691, 5692, 7, 15, 0, 0, 5692, 5693, 7, 5, 0, 0, 5693, 5694, 7, 16, 0, 0, 5694, 1174, 1, 0, 0, 0, 5695, 5696, 7, 17, 0, 0, 5696, 5697, 7, 7, 0, 0, 5697, 5698, 7, 17, 0, 0, 5698, 5699, 7, 16, 0, 0, 5699, 5700, 7, 14, 0, 0, 5700, 5701, 7, 5, 0, 0, 5701, 5702, 7, 24, 0, 0, 5702, 1176, 1, 0, 0, 0, 5703, 5704, 7, 6, 0, 0, 5704, 5705, 7, 10, 0, 0, 5705, 5706, 7, 7, 0, 0, 5706, 5707, 7, 23, 0, 0, 5707, 5708, 7, 16, 0, 0, 5708, 5709, 7, 20, 0, 0, 5709, 1178, 1, 0, 0, 0, 5710, 5711, 7, 6, 0, 0, 5711, 5712, 7, 24, 0, 0, 5712, 5713, 7, 5, 0, 0, 5713, 5714, 7, 12, 0, 0, 5714, 1180, 1, 0, 0, 0, 5715, 5716, 7, 6, 0, 0, 5716, 5717, 7, 16, 0, 0, 5717, 5718, 7, 13, 0, 0, 5718, 5719, 7, 17, 0, 0, 5719, 5720, 7, 15, 0, 0, 5720, 1182, 1, 0, 0, 0, 5721, 5722, 7, 15, 0, 0, 5722, 5723, 7, 12, 0, 0, 5723, 5724, 5, 53, 0, 0, 5724, 1184, 1, 0, 0, 0, 5725, 5726, 7, 24, 0, 0, 5726, 5727, 7, 5, 0, 0, 5727, 5728, 7, 13, 0, 0, 5728, 5729, 7, 9, 0, 0, 5729, 5730, 7, 10, 0, 0, 5730, 5731, 5, 95, 0, 0, 5731, 5732, 7, 17, 0, 0, 5732, 5733, 7, 12, 0, 0, 5733, 5734, 7, 10, 0, 0, 5734, 5735, 7, 7, 0, 0, 5735, 5736, 7, 16, 0, 0, 5736, 1186, 1, 0, 0, 0, 5737, 5738, 7, 24, 0, 0, 5738, 5739, 7, 23, 0, 0, 5739, 5740, 5, 95, 0, 0, 5740, 5741, 7, 14, 0, 0, 5741, 5742, 7, 6, 0, 0, 5742, 5743, 7, 17, 0, 0, 5743, 5744, 7, 10, 0, 0, 5744, 5745, 7, 7, 0, 0, 5745, 5746, 7, 16, 0, 0, 5746, 5747, 5, 95, 0, 0, 5747, 5748, 7, 10, 0, 0, 5748, 5749, 7, 7, 0, 0, 5749, 5750, 7, 14, 0, 0, 5750, 5751, 7, 19, 0, 0, 5751, 5752, 7, 12, 0, 0, 5752, 5753, 7, 17, 0, 0, 5753, 5754, 7, 7, 0, 0, 5754, 5755, 7, 23, 0, 0, 5755, 1188, 1, 0, 0, 0, 5756, 5757, 7, 28, 0, 0, 5757, 5758, 7, 22, 0, 0, 5758, 5759, 7, 19, 0, 0, 5759, 5760, 7, 16, 0, 0, 5760, 5761, 7, 10, 0, 0, 5761, 5762, 5, 95, 0, 0, 5762, 5763, 7, 17, 0, 0, 5763, 5764, 7, 12, 0, 0, 5764, 5765, 7, 10, 0, 0, 5765, 5766, 7, 7, 0, 0, 5766, 5767, 7, 16, 0, 0, 5767, 1190, 1, 0, 0, 0, 5768, 5769, 7, 28, 0, 0, 5769, 5770, 7, 22, 0, 0, 5770, 5771, 7, 19, 0, 0, 5771, 5772, 7, 16, 0, 0, 5772, 5773, 7, 10, 0, 0, 5773, 5774, 5, 95, 0, 0, 5774, 5775, 7, 6, 0, 0, 5775, 5776, 7, 17, 0, 0, 5776, 5777, 7, 16, 0, 0, 5777, 5778, 7, 10, 0, 0, 5778, 5779, 7, 13, 0, 0, 5779, 5780, 7, 5, 0, 0, 5780, 5781, 7, 6, 0, 0, 5781, 1192, 1, 0, 0, 0, 5782, 5783, 7, 28, 0, 0, 5783, 5784, 7, 22, 0, 0, 5784, 5785, 7, 19, 0, 0, 5785, 5786, 7, 16, 0, 0, 5786, 5787, 7, 10, 0, 0, 5787, 5788, 5, 95, 0, 0, 5788, 5789, 7, 7, 0, 0, 5789, 5790, 7, 22, 0, 0, 5790, 5791, 7, 6, 0, 0, 5791, 5792, 7, 6, 0, 0, 5792, 5793, 7, 5, 0, 0, 5793, 5794, 7, 18, 0, 0, 5794, 5795, 7, 6, 0, 0, 5795, 5796, 7, 10, 0, 0, 5796, 1194, 1, 0, 0, 0, 5797, 5798, 7, 13, 0, 0, 5798, 5799, 7, 10, 0, 0, 5799, 5800, 7, 23, 0, 0, 5800, 5801, 7, 10, 0, 0, 5801, 5802, 7, 26, 0, 0, 5802, 5803, 7, 24, 0, 0, 5803, 5804, 5, 95, 0, 0, 5804, 5805, 7, 14, 0, 0, 5805, 5806, 7, 19, 0, 0, 5806, 5807, 7, 22, 0, 0, 5807, 5808, 7, 7, 0, 0, 5808, 5809, 7, 16, 0, 0, 5809, 1196, 1, 0, 0, 0, 5810, 5811, 7, 13, 0, 0, 5811, 5812, 7, 10, 0, 0, 5812, 5813, 7, 23, 0, 0, 5813, 5814, 7, 10, 0, 0, 5814, 5815, 7, 26, 0, 0, 5815, 5816, 7, 24, 0, 0, 5816, 5817, 5, 95, 0, 0, 5817, 5818, 7, 17, 0, 0, 5818, 5819, 7, 7, 0, 0, 5819, 5820, 7, 9, 0, 0, 5820, 5821, 7, 16, 0, 0, 5821, 5822, 7, 13, 0, 0, 5822, 1198, 1, 0, 0, 0, 5823, 5824, 7, 13, 0, 0, 5824, 5825, 7, 10, 0, 0, 5825, 5826, 7, 23, 0, 0, 5826, 5827, 7, 10, 0, 0, 5827, 5828, 7, 26, 0, 0, 5828, 5829, 7, 24, 0, 0, 5829, 5830, 5, 95, 0, 0, 5830, 5831, 7, 6, 0, 0, 5831, 5832, 7, 17, 0, 0, 5832, 5833, 7, 21, 0, 0, 5833, 5834, 7, 10, 0, 0, 5834, 1200, 1, 0, 0, 0, 5835, 5836, 7, 13, 0, 0, 5836, 5837, 7, 10, 0, 0, 5837, 5838, 7, 23, 0, 0, 5838, 5839, 7, 10, 0, 0, 5839, 5840, 7, 26, 0, 0, 5840, 5841, 7, 24, 0, 0, 5841, 5842, 5, 95, 0, 0, 5842, 5843, 7, 15, 0, 0, 5843, 5844, 7, 5, 0, 0, 5844, 5845, 7, 16, 0, 0, 5845, 5846, 7, 14, 0, 0, 5846, 5847, 7, 20, 0, 0, 5847, 1202, 1, 0, 0, 0, 5848, 5849, 7, 13, 0, 0, 5849, 5850, 7, 10, 0, 0, 5850, 5851, 7, 23, 0, 0, 5851, 5852, 7, 10, 0, 0, 5852, 5853, 7, 26, 0, 0, 5853, 5854, 7, 24, 0, 0, 5854, 5855, 5, 95, 0, 0, 5855, 5856, 7, 15, 0, 0, 5856, 5857, 7, 5, 0, 0, 5857, 5858, 7, 16, 0, 0, 5858, 5859, 7, 14, 0, 0, 5859, 5860, 7, 20, 0, 0, 5860, 5861, 7, 10, 0, 0, 5861, 5862, 7, 9, 0, 0, 5862, 1204, 1, 0, 0, 0, 5863, 5864, 7, 13, 0, 0, 5864, 5865, 7, 10, 0, 0, 5865, 5866, 7, 23, 0, 0, 5866, 5867, 7, 10, 0, 0, 5867, 5868, 7, 26, 0, 0, 5868, 5869, 7, 24, 0, 0, 5869, 5870, 5, 95, 0, 0, 5870, 5871, 7, 13, 0, 0, 5871, 5872, 7, 10, 0, 0, 5872, 5873, 7, 24, 0, 0, 5873, 5874, 7, 6, 0, 0, 5874, 5875, 7, 5, 0, 0, 5875, 5876, 7, 14, 0, 0, 5876, 5877, 7, 10, 0, 0, 5877, 1206, 1, 0, 0, 0, 5878, 5879, 7, 13, 0, 0, 5879, 5880, 7, 10, 0, 0, 5880, 5881, 7, 23, 0, 0, 5881, 5882, 7, 10, 0, 0, 5882, 5883, 7, 26, 0, 0, 5883, 5884, 7, 24, 0, 0, 5884, 5885, 5, 95, 0, 0, 5885, 5886, 7, 9, 0, 0, 5886, 5887, 7, 24, 0, 0, 5887, 5888, 7, 6, 0, 0, 5888, 5889, 7, 17, 0, 0, 5889, 5890, 7, 16, 0, 0, 5890, 5891, 5, 95, 0, 0, 5891, 5892, 7, 16, 0, 0, 5892, 5893, 7, 19, 0, 0, 5893, 5894, 5, 95, 0, 0, 5894, 5895, 7, 5, 0, 0, 5895, 5896, 7, 13, 0, 0, 5896, 5897, 7, 13, 0, 0, 5897, 5898, 7, 5, 0, 0, 5898, 5899, 7, 8, 0, 0, 5899, 1208, 1, 0, 0, 0, 5900, 5901, 7, 13, 0, 0, 5901, 5902, 7, 10, 0, 0, 5902, 5903, 7, 23, 0, 0, 5903, 5904, 7, 10, 0, 0, 5904, 5905, 7, 26, 0, 0, 5905, 5906, 7, 24, 0, 0, 5906, 5907, 5, 95, 0, 0, 5907, 5908, 7, 9, 0, 0, 5908, 5909, 7, 24, 0, 0, 5909, 5910, 7, 6, 0, 0, 5910, 5911, 7, 17, 0, 0, 5911, 5912, 7, 16, 0, 0, 5912, 5913, 5, 95, 0, 0, 5913, 5914, 7, 16, 0, 0, 5914, 5915, 7, 19, 0, 0, 5915, 5916, 5, 95, 0, 0, 5916, 5917, 7, 16, 0, 0, 5917, 5918, 7, 5, 0, 0, 5918, 5919, 7, 18, 0, 0, 5919, 5920, 7, 6, 0, 0, 5920, 5921, 7, 10, 0, 0, 5921, 1210, 1, 0, 0, 0, 5922, 5923, 7, 13, 0, 0, 5923, 5924, 7, 10, 0, 0, 5924, 5925, 7, 23, 0, 0, 5925, 5926, 7, 10, 0, 0, 5926, 5927, 7, 26, 0, 0, 5927, 5928, 7, 24, 0, 0, 5928, 5929, 5, 95, 0, 0, 5929, 5930, 7, 9, 0, 0, 5930, 5931, 7, 22, 0, 0, 5931, 5932, 7, 18, 0, 0, 5932, 5933, 7, 9, 0, 0, 5933, 5934, 7, 16, 0, 0, 5934, 5935, 7, 13, 0, 0, 5935, 1212, 1, 0, 0, 0, 5936, 5937, 7, 13, 0, 0, 5937, 5938, 7, 10, 0, 0, 5938, 5939, 7, 24, 0, 0, 5939, 5940, 7, 10, 0, 0, 5940, 5941, 7, 5, 0, 0, 5941, 5942, 7, 16, 0, 0, 5942, 1214, 1, 0, 0, 0, 5943, 5944, 7, 13, 0, 0, 5944, 5945, 7, 24, 0, 0, 5945, 5946, 7, 5, 0, 0, 5946, 5947, 7, 12, 0, 0, 5947, 1216, 1, 0, 0, 0, 5948, 5949, 7, 13, 0, 0, 5949, 5950, 7, 16, 0, 0, 5950, 5951, 7, 13, 0, 0, 5951, 5952, 7, 17, 0, 0, 5952, 5953, 7, 15, 0, 0, 5953, 1218, 1, 0, 0, 0, 5954, 5955, 7, 9, 0, 0, 5955, 5956, 7, 24, 0, 0, 5956, 5957, 7, 6, 0, 0, 5957, 5958, 7, 17, 0, 0, 5958, 5959, 7, 16, 0, 0, 5959, 5960, 5, 95, 0, 0, 5960, 5961, 7, 24, 0, 0, 5961, 5962, 7, 5, 0, 0, 5962, 5963, 7, 13, 0, 0, 5963, 5964, 7, 16, 0, 0, 5964, 1220, 1, 0, 0, 0, 5965, 5966, 7, 9, 0, 0, 5966, 5967, 7, 16, 0, 0, 5967, 5968, 7, 5, 0, 0, 5968, 5969, 7, 13, 0, 0, 5969, 5970, 7, 16, 0, 0, 5970, 5971, 7, 9, 0, 0, 5971, 5972, 5, 95, 0, 0, 5972, 5973, 7, 29, 0, 0, 5973, 5974, 7, 17, 0, 0, 5974, 5975, 7, 16, 0, 0, 5975, 5976, 7, 20, 0, 0, 5976, 1222, 1, 0, 0, 0, 5977, 5978, 7, 9, 0, 0, 5978, 5979, 7, 16, 0, 0, 5979, 5980, 7, 13, 0, 0, 5980, 5981, 7, 17, 0, 0, 5981, 5982, 7, 7, 0, 0, 5982, 5983, 7, 23, 0, 0, 5983, 5984, 5, 95, 0, 0, 5984, 5985, 7, 16, 0, 0, 5985, 5986, 7, 19, 0, 0, 5986, 5987, 5, 95, 0, 0, 5987, 5988, 7, 5, 0, 0, 5988, 5989, 7, 13, 0, 0, 5989, 5990, 7, 13, 0, 0, 5990, 5991, 7, 5, 0, 0, 5991, 5992, 7, 8, 0, 0, 5992, 1224, 1, 0, 0, 0, 5993, 5994, 7, 9, 0, 0, 5994, 5995, 7, 16, 0, 0, 5995, 5996, 7, 13, 0, 0, 5996, 5997, 7, 17, 0, 0, 5997, 5998, 7, 7, 0, 0, 5998, 5999, 7, 23, 0, 0, 5999, 6000, 5, 95, 0, 0, 6000, 6001, 7, 16, 0, 0, 6001, 6002, 7, 19, 0, 0, 6002, 6003, 5, 95, 0, 0, 6003, 6004, 7, 16, 0, 0, 6004, 6005, 7, 5, 0, 0, 6005, 6006, 7, 18, 0, 0, 6006, 6007, 7, 6, 0, 0, 6007, 6008, 7, 10, 0, 0, 6008, 1226, 1, 0, 0, 0, 6009, 6010, 7, 9, 0, 0, 6010, 6011, 7, 16, 0, 0, 6011, 6012, 7, 13, 0, 0, 6012, 6013, 7, 24, 0, 0, 6013, 6014, 7, 19, 0, 0, 6014, 6015, 7, 9, 0, 0, 6015, 1228, 1, 0, 0, 0, 6016, 6017, 7, 9, 0, 0, 6017, 6018, 7, 22, 0, 0, 6018, 6019, 7, 18, 0, 0, 6019, 6020, 7, 9, 0, 0, 6020, 6021, 7, 16, 0, 0, 6021, 6022, 7, 13, 0, 0, 6022, 1230, 1, 0, 0, 0, 6023, 6024, 7, 16, 0, 0, 6024, 6025, 7, 19, 0, 0, 6025, 6026, 5, 95, 0, 0, 6026, 6027, 7, 5, 0, 0, 6027, 6028, 7, 9, 0, 0, 6028, 6029, 7, 14, 0, 0, 6029, 6030, 7, 17, 0, 0, 6030, 6031, 7, 17, 0, 0, 6031, 1232, 1, 0, 0, 0, 6032, 6033, 7, 16, 0, 0, 6033, 6034, 7, 19, 0, 0, 6034, 6035, 5, 95, 0, 0, 6035, 6036, 7, 20, 0, 0, 6036, 6037, 7, 10, 0, 0, 6037, 6038, 7, 26, 0, 0, 6038, 1234, 1, 0, 0, 0, 6039, 6040, 7, 16, 0, 0, 6040, 6041, 7, 13, 0, 0, 6041, 6042, 7, 5, 0, 0, 6042, 6043, 7, 7, 0, 0, 6043, 6044, 7, 9, 0, 0, 6044, 6045, 7, 6, 0, 0, 6045, 6046, 7, 5, 0, 0, 6046, 6047, 7, 16, 0, 0, 6047, 6048, 7, 10, 0, 0, 6048, 1236, 1, 0, 0, 0, 6049, 6050, 7, 22, 0, 0, 6050, 6051, 7, 7, 0, 0, 6051, 6052, 7, 17, 0, 0, 6052, 6053, 7, 9, 0, 0, 6053, 6054, 7, 16, 0, 0, 6054, 6055, 7, 13, 0, 0, 6055, 1238, 1, 0, 0, 0, 6056, 6057, 7, 5, 0, 0, 6057, 6058, 7, 23, 0, 0, 6058, 6059, 7, 10, 0, 0, 6059, 1240, 1, 0, 0, 0, 6060, 6061, 7, 14, 0, 0, 6061, 6062, 7, 6, 0, 0, 6062, 6063, 7, 19, 0, 0, 6063, 6064, 7, 14, 0, 0, 6064, 6065, 7, 21, 0, 0, 6065, 6066, 5, 95, 0, 0, 6066, 6067, 7, 16, 0, 0, 6067, 6068, 7, 17, 0, 0, 6068, 6069, 7, 15, 0, 0, 6069, 6070, 7, 10, 0, 0, 6070, 6071, 7, 9, 0, 0, 6071, 6072, 7, 16, 0, 0, 6072, 6073, 7, 5, 0, 0, 6073, 6074, 7, 15, 0, 0, 6074, 6075, 7, 24, 0, 0, 6075, 1242, 1, 0, 0, 0, 6076, 6077, 7, 12, 0, 0, 6077, 6078, 7, 5, 0, 0, 6078, 6079, 7, 16, 0, 0, 6079, 6080, 7, 10, 0, 0, 6080, 6081, 5, 95, 0, 0, 6081, 6082, 7, 18, 0, 0, 6082, 6083, 7, 17, 0, 0, 6083, 6084, 7, 7, 0, 0, 6084, 1244, 1, 0, 0, 0, 6085, 6086, 7, 12, 0, 0, 6086, 6087, 7, 5, 0, 0, 6087, 6088, 7, 16, 0, 0, 6088, 6089, 7, 10, 0, 0, 6089, 6090, 5, 95, 0, 0, 6090, 6091, 7, 24, 0, 0, 6091, 6092, 7, 5, 0, 0, 6092, 6093, 7, 13, 0, 0, 6093, 6094, 7, 16, 0, 0, 6094, 1246, 1, 0, 0, 0, 6095, 6096, 7, 12, 0, 0, 6096, 6097, 7, 5, 0, 0, 6097, 6098, 7, 16, 0, 0, 6098, 6099, 7, 10, 0, 0, 6099, 6100, 5, 95, 0, 0, 6100, 6101, 7, 16, 0, 0, 6101, 6102, 7, 13, 0, 0, 6102, 6103, 7, 22, 0, 0, 6103, 6104, 7, 7, 0, 0, 6104, 6105, 7, 14, 0, 0, 6105, 1248, 1, 0, 0, 0, 6106, 6107, 7, 17, 0, 0, 6107, 6108, 7, 9, 0, 0, 6108, 6109, 7, 25, 0, 0, 6109, 6110, 7, 17, 0, 0, 6110, 6111, 7, 7, 0, 0, 6111, 6112, 7, 17, 0, 0, 6112, 6113, 7, 16, 0, 0, 6113, 6114, 7, 10, 0, 0, 6114, 1250, 1, 0, 0, 0, 6115, 6116, 7, 30, 0, 0, 6116, 6117, 7, 22, 0, 0, 6117, 6118, 7, 9, 0, 0, 6118, 6119, 7, 16, 0, 0, 6119, 6120, 7, 17, 0, 0, 6120, 6121, 7, 25, 0, 0, 6121, 6122, 7, 8, 0, 0, 6122, 6123, 5, 95, 0, 0, 6123, 6124, 7, 12, 0, 0, 6124, 6125, 7, 5, 0, 0, 6125, 6126, 7, 8, 0, 0, 6126, 6127, 7, 9, 0, 0, 6127, 1252, 1, 0, 0, 0, 6128, 6129, 7, 30, 0, 0, 6129, 6130, 7, 22, 0, 0, 6130, 6131, 7, 9, 0, 0, 6131, 6132, 7, 16, 0, 0, 6132, 6133, 7, 17, 0, 0, 6133, 6134, 7, 25, 0, 0, 6134, 6135, 7, 8, 0, 0, 6135, 6136, 5, 95, 0, 0, 6136, 6137, 7, 20, 0, 0, 6137, 6138, 7, 19, 0, 0, 6138, 6139, 7, 22, 0, 0, 6139, 6140, 7, 13, 0, 0, 6140, 6141, 7, 9, 0, 0, 6141, 1254, 1, 0, 0, 0, 6142, 6143, 7, 30, 0, 0, 6143, 6144, 7, 22, 0, 0, 6144, 6145, 7, 9, 0, 0, 6145, 6146, 7, 16, 0, 0, 6146, 6147, 7, 17, 0, 0, 6147, 6148, 7, 25, 0, 0, 6148, 6149, 7, 8, 0, 0, 6149, 6150, 5, 95, 0, 0, 6150, 6151, 7, 17, 0, 0, 6151, 6152, 7, 7, 0, 0, 6152, 6153, 7, 16, 0, 0, 6153, 6154, 7, 10, 0, 0, 6154, 6155, 7, 13, 0, 0, 6155, 6156, 7, 27, 0, 0, 6156, 6157, 7, 5, 0, 0, 6157, 6158, 7, 6, 0, 0, 6158, 1256, 1, 0, 0, 0, 6159, 6160, 7, 15, 0, 0, 6160, 6161, 7, 5, 0, 0, 6161, 6162, 7, 21, 0, 0, 6162, 6163, 7, 10, 0, 0, 6163, 6164, 5, 95, 0, 0, 6164, 6165, 7, 12, 0, 0, 6165, 6166, 7, 5, 0, 0, 6166, 6167, 7, 16, 0, 0, 6167, 6168, 7, 10, 0, 0, 6168, 1258, 1, 0, 0, 0, 6169, 6170, 7, 15, 0, 0, 6170, 6171, 7, 5, 0, 0, 6171, 6172, 7, 21, 0, 0, 6172, 6173, 7, 10, 0, 0, 6173, 6174, 5, 95, 0, 0, 6174, 6175, 7, 17, 0, 0, 6175, 6176, 7, 7, 0, 0, 6176, 6177, 7, 16, 0, 0, 6177, 6178, 7, 10, 0, 0, 6178, 6179, 7, 13, 0, 0, 6179, 6180, 7, 27, 0, 0, 6180, 6181, 7, 5, 0, 0, 6181, 6182, 7, 6, 0, 0, 6182, 1260, 1, 0, 0, 0, 6183, 6184, 7, 15, 0, 0, 6184, 6185, 7, 5, 0, 0, 6185, 6186, 7, 21, 0, 0, 6186, 6187, 7, 10, 0, 0, 6187, 6188, 5, 95, 0, 0, 6188, 6189, 7, 16, 0, 0, 6189, 6190, 7, 17, 0, 0, 6190, 6191, 7, 15, 0, 0, 6191, 6192, 7, 10, 0, 0, 6192, 1262, 1, 0, 0, 0, 6193, 6194, 7, 15, 0, 0, 6194, 6195, 7, 5, 0, 0, 6195, 6196, 7, 21, 0, 0, 6196, 6197, 7, 10, 0, 0, 6197, 6198, 5, 95, 0, 0, 6198, 6199, 7, 16, 0, 0, 6199, 6200, 7, 17, 0, 0, 6200, 6201, 7, 15, 0, 0, 6201, 6202, 7, 10, 0, 0, 6202, 6203, 7, 9, 0, 0, 6203, 6204, 7, 16, 0, 0, 6204, 6205, 7, 5, 0, 0, 6205, 6206, 7, 15, 0, 0, 6206, 6207, 7, 24, 0, 0, 6207, 1264, 1, 0, 0, 0, 6208, 6209, 7, 15, 0, 0, 6209, 6210, 7, 5, 0, 0, 6210, 6211, 7, 21, 0, 0, 6211, 6212, 7, 10, 0, 0, 6212, 6213, 5, 95, 0, 0, 6213, 6214, 7, 16, 0, 0, 6214, 6215, 7, 17, 0, 0, 6215, 6216, 7, 15, 0, 0, 6216, 6217, 7, 10, 0, 0, 6217, 6218, 7, 9, 0, 0, 6218, 6219, 7, 16, 0, 0, 6219, 6220, 7, 5, 0, 0, 6220, 6221, 7, 15, 0, 0, 6221, 6222, 7, 24, 0, 0, 6222, 6223, 7, 16, 0, 0, 6223, 6224, 7, 11, 0, 0, 6224, 1266, 1, 0, 0, 0, 6225, 6226, 7, 7, 0, 0, 6226, 6227, 7, 19, 0, 0, 6227, 6228, 7, 29, 0, 0, 6228, 1268, 1, 0, 0, 0, 6229, 6230, 7, 9, 0, 0, 6230, 6231, 7, 16, 0, 0, 6231, 6232, 7, 5, 0, 0, 6232, 6233, 7, 16, 0, 0, 6233, 6234, 7, 10, 0, 0, 6234, 6235, 7, 15, 0, 0, 6235, 6236, 7, 10, 0, 0, 6236, 6237, 7, 7, 0, 0, 6237, 6238, 7, 16, 0, 0, 6238, 6239, 5, 95, 0, 0, 6239, 6240, 7, 16, 0, 0, 6240, 6241, 7, 17, 0, 0, 6241, 6242, 7, 15, 0, 0, 6242, 6243, 7, 10, 0, 0, 6243, 6244, 7, 9, 0, 0, 6244, 6245, 7, 16, 0, 0, 6245, 6246, 7, 5, 0, 0, 6246, 6247, 7, 15, 0, 0, 6247, 6248, 7, 24, 0, 0, 6248, 1270, 1, 0, 0, 0, 6249, 6250, 7, 16, 0, 0, 6250, 6251, 7, 17, 0, 0, 6251, 6252, 7, 15, 0, 0, 6252, 6253, 7, 10, 0, 0, 6253, 6254, 7, 19, 0, 0, 6254, 6255, 7, 25, 0, 0, 6255, 6256, 7, 12, 0, 0, 6256, 6257, 7, 5, 0, 0, 6257, 6258, 7, 8, 0, 0, 6258, 1272, 1, 0, 0, 0, 6259, 6260, 7, 16, 0, 0, 6260, 6261, 7, 13, 0, 0, 6261, 6262, 7, 5, 0, 0, 6262, 6263, 7, 7, 0, 0, 6263, 6264, 7, 9, 0, 0, 6264, 6265, 7, 5, 0, 0, 6265, 6266, 7, 14, 0, 0, 6266, 6267, 7, 16, 0, 0, 6267, 6268, 7, 17, 0, 0, 6268, 6269, 7, 19, 0, 0, 6269, 6270, 7, 7, 0, 0, 6270, 6271, 5, 95, 0, 0, 6271, 6272, 7, 16, 0, 0, 6272, 6273, 7, 17, 0, 0, 6273, 6274, 7, 15, 0, 0, 6274, 6275, 7, 10, 0, 0, 6275, 6276, 7, 9, 0, 0, 6276, 6277, 7, 16, 0, 0, 6277, 6278, 7, 5, 0, 0, 6278, 6279, 7, 15, 0, 0, 6279, 6280, 7, 24, 0, 0, 6280, 1274, 1, 0, 0, 0, 6281, 6282, 7, 16, 0, 0, 6282, 6283, 7, 19, 0, 0, 6283, 6284, 5, 95, 0, 0, 6284, 6285, 7, 16, 0, 0, 6285, 6286, 7, 17, 0, 0, 6286, 6287, 7, 15, 0, 0, 6287, 6288, 7, 10, 0, 0, 6288, 6289, 7, 9, 0, 0, 6289, 6290, 7, 16, 0, 0, 6290, 6291, 7, 5, 0, 0, 6291, 6292, 7, 15, 0, 0, 6292, 6293, 7, 24, 0, 0, 6293, 1276, 1, 0, 0, 0, 6294, 6295, 7, 16, 0, 0, 6295, 6296, 7, 19, 0, 0, 6296, 6297, 5, 95, 0, 0, 6297, 6298, 7, 14, 0, 0, 6298, 6299, 7, 20, 0, 0, 6299, 6300, 7, 5, 0, 0, 6300, 6301, 7, 13, 0, 0, 6301, 1278, 1, 0, 0, 0, 6302, 6303, 7, 16, 0, 0, 6303, 6304, 7, 19, 0, 0, 6304, 6305, 5, 95, 0, 0, 6305, 6306, 7, 12, 0, 0, 6306, 6307, 7, 5, 0, 0, 6307, 6308, 7, 16, 0, 0, 6308, 6309, 7, 10, 0, 0, 6309, 1280, 1, 0, 0, 0, 6310, 6311, 7, 16, 0, 0, 6311, 6312, 7, 19, 0, 0, 6312, 6313, 5, 95, 0, 0, 6313, 6314, 7, 7, 0, 0, 6314, 6315, 7, 22, 0, 0, 6315, 6316, 7, 15, 0, 0, 6316, 6317, 7, 18, 0, 0, 6317, 6318, 7, 10, 0, 0, 6318, 6319, 7, 13, 0, 0, 6319, 1282, 1, 0, 0, 0, 6320, 6324, 3, 1285, 640, 0, 6321, 6323, 3, 1287, 641, 0, 6322, 6321, 1, 0, 0, 0, 6323, 6326, 1, 0, 0, 0, 6324, 6322, 1, 0, 0, 0, 6324, 6325, 1, 0, 0, 0, 6325, 1284, 1, 0, 0, 0, 6326, 6324, 1, 0, 0, 0, 6327, 6334, 7, 31, 0, 0, 6328, 6329, 7, 32, 0, 0, 6329, 6334, 4, 640, 6, 0, 6330, 6331, 7, 33, 0, 0, 6331, 6332, 7, 34, 0, 0, 6332, 6334, 4, 640, 7, 0, 6333, 6327, 1, 0, 0, 0, 6333, 6328, 1, 0, 0, 0, 6333, 6330, 1, 0, 0, 0, 6334, 1286, 1, 0, 0, 0, 6335, 6338, 3, 1289, 642, 0, 6336, 6338, 5, 36, 0, 0, 6337, 6335, 1, 0, 0, 0, 6337, 6336, 1, 0, 0, 0, 6338, 1288, 1, 0, 0, 0, 6339, 6342, 3, 1285, 640, 0, 6340, 6342, 7, 0, 0, 0, 6341, 6339, 1, 0, 0, 0, 6341, 6340, 1, 0, 0, 0, 6342, 1290, 1, 0, 0, 0, 6343, 6344, 3, 1293, 644, 0, 6344, 6345, 5, 34, 0, 0, 6345, 1292, 1, 0, 0, 0, 6346, 6352, 5, 34, 0, 0, 6347, 6348, 5, 34, 0, 0, 6348, 6351, 5, 34, 0, 0, 6349, 6351, 8, 35, 0, 0, 6350, 6347, 1, 0, 0, 0, 6350, 6349, 1, 0, 0, 0, 6351, 6354, 1, 0, 0, 0, 6352, 6350, 1, 0, 0, 0, 6352, 6353, 1, 0, 0, 0, 6353, 1294, 1, 0, 0, 0, 6354, 6352, 1, 0, 0, 0, 6355, 6356, 3, 1297, 646, 0, 6356, 6357, 5, 34, 0, 0, 6357, 1296, 1, 0, 0, 0, 6358, 6364, 5, 34, 0, 0, 6359, 6360, 5, 34, 0, 0, 6360, 6363, 5, 34, 0, 0, 6361, 6363, 8, 36, 0, 0, 6362, 6359, 1, 0, 0, 0, 6362, 6361, 1, 0, 0, 0, 6363, 6366, 1, 0, 0, 0, 6364, 6362, 1, 0, 0, 0, 6364, 6365, 1, 0, 0, 0, 6365, 1298, 1, 0, 0, 0, 6366, 6364, 1, 0, 0, 0, 6367, 6368, 7, 22, 0, 0, 6368, 6369, 5, 38, 0, 0, 6369, 6370, 3, 1291, 643, 0, 6370, 1300, 1, 0, 0, 0, 6371, 6372, 7, 22, 0, 0, 6372, 6373, 5, 38, 0, 0, 6373, 6374, 3, 1293, 644, 0, 6374, 1302, 1, 0, 0, 0, 6375, 6376, 7, 22, 0, 0, 6376, 6377, 5, 38, 0, 0, 6377, 6378, 3, 1295, 645, 0, 6378, 1304, 1, 0, 0, 0, 6379, 6380, 7, 22, 0, 0, 6380, 6381, 5, 38, 0, 0, 6381, 6382, 3, 1297, 646, 0, 6382, 1306, 1, 0, 0, 0, 6383, 6384, 3, 1309, 652, 0, 6384, 6385, 5, 39, 0, 0, 6385, 1308, 1, 0, 0, 0, 6386, 6392, 5, 39, 0, 0, 6387, 6388, 5, 39, 0, 0, 6388, 6391, 5, 39, 0, 0, 6389, 6391, 8, 37, 0, 0, 6390, 6387, 1, 0, 0, 0, 6390, 6389, 1, 0, 0, 0, 6391, 6394, 1, 0, 0, 0, 6392, 6390, 1, 0, 0, 0, 6392, 6393, 1, 0, 0, 0, 6393, 1310, 1, 0, 0, 0, 6394, 6392, 1, 0, 0, 0, 6395, 6396, 7, 10, 0, 0, 6396, 6397, 5, 39, 0, 0, 6397, 6398, 1, 0, 0, 0, 6398, 6399, 6, 653, 2, 0, 6399, 6400, 6, 653, 3, 0, 6400, 1312, 1, 0, 0, 0, 6401, 6402, 3, 1315, 655, 0, 6402, 6403, 5, 39, 0, 0, 6403, 1314, 1, 0, 0, 0, 6404, 6405, 7, 22, 0, 0, 6405, 6406, 5, 38, 0, 0, 6406, 6407, 3, 1309, 652, 0, 6407, 1316, 1, 0, 0, 0, 6408, 6410, 5, 36, 0, 0, 6409, 6411, 3, 1319, 657, 0, 6410, 6409, 1, 0, 0, 0, 6410, 6411, 1, 0, 0, 0, 6411, 6412, 1, 0, 0, 0, 6412, 6413, 5, 36, 0, 0, 6413, 6414, 6, 656, 4, 0, 6414, 6415, 1, 0, 0, 0, 6415, 6416, 6, 656, 5, 0, 6416, 1318, 1, 0, 0, 0, 6417, 6421, 3, 1285, 640, 0, 6418, 6420, 3, 1289, 642, 0, 6419, 6418, 1, 0, 0, 0, 6420, 6423, 1, 0, 0, 0, 6421, 6419, 1, 0, 0, 0, 6421, 6422, 1, 0, 0, 0, 6422, 1320, 1, 0, 0, 0, 6423, 6421, 1, 0, 0, 0, 6424, 6425, 3, 1323, 659, 0, 6425, 6426, 5, 39, 0, 0, 6426, 1322, 1, 0, 0, 0, 6427, 6428, 7, 18, 0, 0, 6428, 6432, 5, 39, 0, 0, 6429, 6431, 7, 38, 0, 0, 6430, 6429, 1, 0, 0, 0, 6431, 6434, 1, 0, 0, 0, 6432, 6430, 1, 0, 0, 0, 6432, 6433, 1, 0, 0, 0, 6433, 1324, 1, 0, 0, 0, 6434, 6432, 1, 0, 0, 0, 6435, 6436, 3, 1327, 661, 0, 6436, 6437, 5, 39, 0, 0, 6437, 1326, 1, 0, 0, 0, 6438, 6439, 7, 18, 0, 0, 6439, 6440, 3, 1309, 652, 0, 6440, 1328, 1, 0, 0, 0, 6441, 6442, 3, 1331, 663, 0, 6442, 6443, 5, 39, 0, 0, 6443, 1330, 1, 0, 0, 0, 6444, 6445, 7, 26, 0, 0, 6445, 6449, 5, 39, 0, 0, 6446, 6448, 7, 39, 0, 0, 6447, 6446, 1, 0, 0, 0, 6448, 6451, 1, 0, 0, 0, 6449, 6447, 1, 0, 0, 0, 6449, 6450, 1, 0, 0, 0, 6450, 1332, 1, 0, 0, 0, 6451, 6449, 1, 0, 0, 0, 6452, 6453, 3, 1335, 665, 0, 6453, 6454, 5, 39, 0, 0, 6454, 1334, 1, 0, 0, 0, 6455, 6456, 7, 26, 0, 0, 6456, 6457, 3, 1309, 652, 0, 6457, 1336, 1, 0, 0, 0, 6458, 6459, 3, 1343, 669, 0, 6459, 1338, 1, 0, 0, 0, 6460, 6461, 3, 1343, 669, 0, 6461, 6462, 5, 46, 0, 0, 6462, 6463, 5, 46, 0, 0, 6463, 6464, 1, 0, 0, 0, 6464, 6465, 6, 667, 6, 0, 6465, 1340, 1, 0, 0, 0, 6466, 6467, 3, 1343, 669, 0, 6467, 6469, 5, 46, 0, 0, 6468, 6470, 3, 1343, 669, 0, 6469, 6468, 1, 0, 0, 0, 6469, 6470, 1, 0, 0, 0, 6470, 6476, 1, 0, 0, 0, 6471, 6473, 7, 10, 0, 0, 6472, 6474, 7, 1, 0, 0, 6473, 6472, 1, 0, 0, 0, 6473, 6474, 1, 0, 0, 0, 6474, 6475, 1, 0, 0, 0, 6475, 6477, 3, 1343, 669, 0, 6476, 6471, 1, 0, 0, 0, 6476, 6477, 1, 0, 0, 0, 6477, 6495, 1, 0, 0, 0, 6478, 6479, 5, 46, 0, 0, 6479, 6485, 3, 1343, 669, 0, 6480, 6482, 7, 10, 0, 0, 6481, 6483, 7, 1, 0, 0, 6482, 6481, 1, 0, 0, 0, 6482, 6483, 1, 0, 0, 0, 6483, 6484, 1, 0, 0, 0, 6484, 6486, 3, 1343, 669, 0, 6485, 6480, 1, 0, 0, 0, 6485, 6486, 1, 0, 0, 0, 6486, 6495, 1, 0, 0, 0, 6487, 6488, 3, 1343, 669, 0, 6488, 6490, 7, 10, 0, 0, 6489, 6491, 7, 1, 0, 0, 6490, 6489, 1, 0, 0, 0, 6490, 6491, 1, 0, 0, 0, 6491, 6492, 1, 0, 0, 0, 6492, 6493, 3, 1343, 669, 0, 6493, 6495, 1, 0, 0, 0, 6494, 6466, 1, 0, 0, 0, 6494, 6478, 1, 0, 0, 0, 6494, 6487, 1, 0, 0, 0, 6495, 1342, 1, 0, 0, 0, 6496, 6498, 7, 0, 0, 0, 6497, 6496, 1, 0, 0, 0, 6498, 6499, 1, 0, 0, 0, 6499, 6497, 1, 0, 0, 0, 6499, 6500, 1, 0, 0, 0, 6500, 1344, 1, 0, 0, 0, 6501, 6502, 5, 58, 0, 0, 6502, 6506, 7, 40, 0, 0, 6503, 6505, 7, 41, 0, 0, 6504, 6503, 1, 0, 0, 0, 6505, 6508, 1, 0, 0, 0, 6506, 6504, 1, 0, 0, 0, 6506, 6507, 1, 0, 0, 0, 6507, 1346, 1, 0, 0, 0, 6508, 6506, 1, 0, 0, 0, 6509, 6510, 5, 58, 0, 0, 6510, 6511, 5, 34, 0, 0, 6511, 6519, 1, 0, 0, 0, 6512, 6513, 5, 92, 0, 0, 6513, 6518, 9, 0, 0, 0, 6514, 6515, 5, 34, 0, 0, 6515, 6518, 5, 34, 0, 0, 6516, 6518, 8, 42, 0, 0, 6517, 6512, 1, 0, 0, 0, 6517, 6514, 1, 0, 0, 0, 6517, 6516, 1, 0, 0, 0, 6518, 6521, 1, 0, 0, 0, 6519, 6517, 1, 0, 0, 0, 6519, 6520, 1, 0, 0, 0, 6520, 6522, 1, 0, 0, 0, 6521, 6519, 1, 0, 0, 0, 6522, 6523, 5, 34, 0, 0, 6523, 1348, 1, 0, 0, 0, 6524, 6526, 7, 43, 0, 0, 6525, 6524, 1, 0, 0, 0, 6526, 6527, 1, 0, 0, 0, 6527, 6525, 1, 0, 0, 0, 6527, 6528, 1, 0, 0, 0, 6528, 6529, 1, 0, 0, 0, 6529, 6530, 6, 672, 7, 0, 6530, 1350, 1, 0, 0, 0, 6531, 6533, 5, 13, 0, 0, 6532, 6534, 5, 10, 0, 0, 6533, 6532, 1, 0, 0, 0, 6533, 6534, 1, 0, 0, 0, 6534, 6537, 1, 0, 0, 0, 6535, 6537, 5, 10, 0, 0, 6536, 6531, 1, 0, 0, 0, 6536, 6535, 1, 0, 0, 0, 6537, 6538, 1, 0, 0, 0, 6538, 6539, 6, 673, 7, 0, 6539, 1352, 1, 0, 0, 0, 6540, 6541, 5, 45, 0, 0, 6541, 6542, 5, 45, 0, 0, 6542, 6546, 1, 0, 0, 0, 6543, 6545, 8, 44, 0, 0, 6544, 6543, 1, 0, 0, 0, 6545, 6548, 1, 0, 0, 0, 6546, 6544, 1, 0, 0, 0, 6546, 6547, 1, 0, 0, 0, 6547, 6549, 1, 0, 0, 0, 6548, 6546, 1, 0, 0, 0, 6549, 6550, 6, 674, 7, 0, 6550, 1354, 1, 0, 0, 0, 6551, 6552, 5, 47, 0, 0, 6552, 6553, 5, 42, 0, 0, 6553, 6576, 1, 0, 0, 0, 6554, 6556, 5, 47, 0, 0, 6555, 6554, 1, 0, 0, 0, 6556, 6559, 1, 0, 0, 0, 6557, 6555, 1, 0, 0, 0, 6557, 6558, 1, 0, 0, 0, 6558, 6560, 1, 0, 0, 0, 6559, 6557, 1, 0, 0, 0, 6560, 6575, 3, 1355, 675, 0, 6561, 6575, 8, 45, 0, 0, 6562, 6564, 5, 47, 0, 0, 6563, 6562, 1, 0, 0, 0, 6564, 6565, 1, 0, 0, 0, 6565, 6563, 1, 0, 0, 0, 6565, 6566, 1, 0, 0, 0, 6566, 6567, 1, 0, 0, 0, 6567, 6575, 8, 45, 0, 0, 6568, 6570, 5, 42, 0, 0, 6569, 6568, 1, 0, 0, 0, 6570, 6571, 1, 0, 0, 0, 6571, 6569, 1, 0, 0, 0, 6571, 6572, 1, 0, 0, 0, 6572, 6573, 1, 0, 0, 0, 6573, 6575, 8, 45, 0, 0, 6574, 6557, 1, 0, 0, 0, 6574, 6561, 1, 0, 0, 0, 6574, 6563, 1, 0, 0, 0, 6574, 6569, 1, 0, 0, 0, 6575, 6578, 1, 0, 0, 0, 6576, 6574, 1, 0, 0, 0, 6576, 6577, 1, 0, 0, 0, 6577, 6582, 1, 0, 0, 0, 6578, 6576, 1, 0, 0, 0, 6579, 6581, 5, 42, 0, 0, 6580, 6579, 1, 0, 0, 0, 6581, 6584, 1, 0, 0, 0, 6582, 6580, 1, 0, 0, 0, 6582, 6583, 1, 0, 0, 0, 6583, 6585, 1, 0, 0, 0, 6584, 6582, 1, 0, 0, 0, 6585, 6586, 5, 42, 0, 0, 6586, 6587, 5, 47, 0, 0, 6587, 6588, 1, 0, 0, 0, 6588, 6589, 6, 675, 7, 0, 6589, 1356, 1, 0, 0, 0, 6590, 6591, 5, 47, 0, 0, 6591, 6592, 5, 42, 0, 0, 6592, 6617, 1, 0, 0, 0, 6593, 6595, 5, 47, 0, 0, 6594, 6593, 1, 0, 0, 0, 6595, 6598, 1, 0, 0, 0, 6596, 6594, 1, 0, 0, 0, 6596, 6597, 1, 0, 0, 0, 6597, 6599, 1, 0, 0, 0, 6598, 6596, 1, 0, 0, 0, 6599, 6616, 3, 1355, 675, 0, 6600, 6616, 8, 45, 0, 0, 6601, 6603, 5, 47, 0, 0, 6602, 6601, 1, 0, 0, 0, 6603, 6604, 1, 0, 0, 0, 6604, 6602, 1, 0, 0, 0, 6604, 6605, 1, 0, 0, 0, 6605, 6606, 1, 0, 0, 0, 6606, 6614, 8, 45, 0, 0, 6607, 6609, 5, 42, 0, 0, 6608, 6607, 1, 0, 0, 0, 6609, 6610, 1, 0, 0, 0, 6610, 6608, 1, 0, 0, 0, 6610, 6611, 1, 0, 0, 0, 6611, 6612, 1, 0, 0, 0, 6612, 6614, 8, 45, 0, 0, 6613, 6602, 1, 0, 0, 0, 6613, 6608, 1, 0, 0, 0, 6614, 6616, 1, 0, 0, 0, 6615, 6596, 1, 0, 0, 0, 6615, 6600, 1, 0, 0, 0, 6615, 6613, 1, 0, 0, 0, 6616, 6619, 1, 0, 0, 0, 6617, 6615, 1, 0, 0, 0, 6617, 6618, 1, 0, 0, 0, 6618, 6637, 1, 0, 0, 0, 6619, 6617, 1, 0, 0, 0, 6620, 6622, 5, 47, 0, 0, 6621, 6620, 1, 0, 0, 0, 6622, 6623, 1, 0, 0, 0, 6623, 6621, 1, 0, 0, 0, 6623, 6624, 1, 0, 0, 0, 6624, 6638, 1, 0, 0, 0, 6625, 6627, 5, 42, 0, 0, 6626, 6625, 1, 0, 0, 0, 6627, 6628, 1, 0, 0, 0, 6628, 6626, 1, 0, 0, 0, 6628, 6629, 1, 0, 0, 0, 6629, 6638, 1, 0, 0, 0, 6630, 6632, 5, 47, 0, 0, 6631, 6630, 1, 0, 0, 0, 6632, 6635, 1, 0, 0, 0, 6633, 6631, 1, 0, 0, 0, 6633, 6634, 1, 0, 0, 0, 6634, 6636, 1, 0, 0, 0, 6635, 6633, 1, 0, 0, 0, 6636, 6638, 3, 1357, 676, 0, 6637, 6621, 1, 0, 0, 0, 6637, 6626, 1, 0, 0, 0, 6637, 6633, 1, 0, 0, 0, 6637, 6638, 1, 0, 0, 0, 6638, 6639, 1, 0, 0, 0, 6639, 6640, 6, 676, 8, 0, 6640, 1358, 1, 0, 0, 0, 6641, 6653, 5, 92, 0, 0, 6642, 6652, 8, 46, 0, 0, 6643, 6647, 5, 34, 0, 0, 6644, 6646, 8, 47, 0, 0, 6645, 6644, 1, 0, 0, 0, 6646, 6649, 1, 0, 0, 0, 6647, 6645, 1, 0, 0, 0, 6647, 6648, 1, 0, 0, 0, 6648, 6650, 1, 0, 0, 0, 6649, 6647, 1, 0, 0, 0, 6650, 6652, 5, 34, 0, 0, 6651, 6642, 1, 0, 0, 0, 6651, 6643, 1, 0, 0, 0, 6652, 6655, 1, 0, 0, 0, 6653, 6651, 1, 0, 0, 0, 6653, 6654, 1, 0, 0, 0, 6654, 6663, 1, 0, 0, 0, 6655, 6653, 1, 0, 0, 0, 6656, 6660, 5, 34, 0, 0, 6657, 6659, 8, 47, 0, 0, 6658, 6657, 1, 0, 0, 0, 6659, 6662, 1, 0, 0, 0, 6660, 6658, 1, 0, 0, 0, 6660, 6661, 1, 0, 0, 0, 6661, 6664, 1, 0, 0, 0, 6662, 6660, 1, 0, 0, 0, 6663, 6656, 1, 0, 0, 0, 6663, 6664, 1, 0, 0, 0, 6664, 1360, 1, 0, 0, 0, 6665, 6666, 5, 92, 0, 0, 6666, 6667, 5, 92, 0, 0, 6667, 1362, 1, 0, 0, 0, 6668, 6669, 9, 0, 0, 0, 6669, 1364, 1, 0, 0, 0, 6670, 6671, 3, 1369, 682, 0, 6671, 6672, 5, 39, 0, 0, 6672, 6673, 1, 0, 0, 0, 6673, 6674, 6, 680, 9, 0, 6674, 1366, 1, 0, 0, 0, 6675, 6677, 3, 1369, 682, 0, 6676, 6678, 5, 92, 0, 0, 6677, 6676, 1, 0, 0, 0, 6677, 6678, 1, 0, 0, 0, 6678, 6679, 1, 0, 0, 0, 6679, 6680, 5, 0, 0, 1, 6680, 1368, 1, 0, 0, 0, 6681, 6682, 5, 39, 0, 0, 6682, 6705, 5, 39, 0, 0, 6683, 6701, 5, 92, 0, 0, 6684, 6685, 5, 120, 0, 0, 6685, 6702, 7, 39, 0, 0, 6686, 6687, 5, 117, 0, 0, 6687, 6688, 7, 39, 0, 0, 6688, 6689, 7, 39, 0, 0, 6689, 6690, 7, 39, 0, 0, 6690, 6702, 7, 39, 0, 0, 6691, 6692, 5, 85, 0, 0, 6692, 6693, 7, 39, 0, 0, 6693, 6694, 7, 39, 0, 0, 6694, 6695, 7, 39, 0, 0, 6695, 6696, 7, 39, 0, 0, 6696, 6697, 7, 39, 0, 0, 6697, 6698, 7, 39, 0, 0, 6698, 6699, 7, 39, 0, 0, 6699, 6702, 7, 39, 0, 0, 6700, 6702, 8, 48, 0, 0, 6701, 6684, 1, 0, 0, 0, 6701, 6686, 1, 0, 0, 0, 6701, 6691, 1, 0, 0, 0, 6701, 6700, 1, 0, 0, 0, 6702, 6705, 1, 0, 0, 0, 6703, 6705, 8, 49, 0, 0, 6704, 6681, 1, 0, 0, 0, 6704, 6683, 1, 0, 0, 0, 6704, 6703, 1, 0, 0, 0, 6705, 6708, 1, 0, 0, 0, 6706, 6704, 1, 0, 0, 0, 6706, 6707, 1, 0, 0, 0, 6707, 1370, 1, 0, 0, 0, 6708, 6706, 1, 0, 0, 0, 6709, 6710, 3, 1375, 685, 0, 6710, 6711, 5, 39, 0, 0, 6711, 6712, 1, 0, 0, 0, 6712, 6713, 6, 683, 9, 0, 6713, 1372, 1, 0, 0, 0, 6714, 6716, 3, 1375, 685, 0, 6715, 6717, 5, 92, 0, 0, 6716, 6715, 1, 0, 0, 0, 6716, 6717, 1, 0, 0, 0, 6717, 6718, 1, 0, 0, 0, 6718, 6719, 5, 0, 0, 1, 6719, 1374, 1, 0, 0, 0, 6720, 6721, 5, 39, 0, 0, 6721, 6726, 5, 39, 0, 0, 6722, 6723, 5, 92, 0, 0, 6723, 6726, 9, 0, 0, 0, 6724, 6726, 8, 49, 0, 0, 6725, 6720, 1, 0, 0, 0, 6725, 6722, 1, 0, 0, 0, 6725, 6724, 1, 0, 0, 0, 6726, 6729, 1, 0, 0, 0, 6727, 6725, 1, 0, 0, 0, 6727, 6728, 1, 0, 0, 0, 6728, 1376, 1, 0, 0, 0, 6729, 6727, 1, 0, 0, 0, 6730, 6731, 3, 1349, 672, 0, 6731, 6732, 1, 0, 0, 0, 6732, 6733, 6, 686, 10, 0, 6733, 6734, 6, 686, 7, 0, 6734, 1378, 1, 0, 0, 0, 6735, 6736, 3, 1351, 673, 0, 6736, 6737, 1, 0, 0, 0, 6737, 6738, 6, 687, 11, 0, 6738, 6739, 6, 687, 7, 0, 6739, 6740, 6, 687, 12, 0, 6740, 1380, 1, 0, 0, 0, 6741, 6742, 6, 688, 13, 0, 6742, 6743, 1, 0, 0, 0, 6743, 6744, 6, 688, 14, 0, 6744, 6745, 6, 688, 15, 0, 6745, 1382, 1, 0, 0, 0, 6746, 6747, 3, 1349, 672, 0, 6747, 6748, 1, 0, 0, 0, 6748, 6749, 6, 689, 10, 0, 6749, 6750, 6, 689, 7, 0, 6750, 1384, 1, 0, 0, 0, 6751, 6752, 3, 1351, 673, 0, 6752, 6753, 1, 0, 0, 0, 6753, 6754, 6, 690, 11, 0, 6754, 6755, 6, 690, 7, 0, 6755, 1386, 1, 0, 0, 0, 6756, 6757, 5, 39, 0, 0, 6757, 6758, 1, 0, 0, 0, 6758, 6759, 6, 691, 2, 0, 6759, 6760, 6, 691, 16, 0, 6760, 1388, 1, 0, 0, 0, 6761, 6762, 6, 692, 17, 0, 6762, 6763, 1, 0, 0, 0, 6763, 6764, 6, 692, 14, 0, 6764, 6765, 6, 692, 15, 0, 6765, 1390, 1, 0, 0, 0, 6766, 6768, 8, 50, 0, 0, 6767, 6766, 1, 0, 0, 0, 6768, 6769, 1, 0, 0, 0, 6769, 6767, 1, 0, 0, 0, 6769, 6770, 1, 0, 0, 0, 6770, 6779, 1, 0, 0, 0, 6771, 6775, 5, 36, 0, 0, 6772, 6774, 8, 50, 0, 0, 6773, 6772, 1, 0, 0, 0, 6774, 6777, 1, 0, 0, 0, 6775, 6773, 1, 0, 0, 0, 6775, 6776, 1, 0, 0, 0, 6776, 6779, 1, 0, 0, 0, 6777, 6775, 1, 0, 0, 0, 6778, 6767, 1, 0, 0, 0, 6778, 6771, 1, 0, 0, 0, 6779, 1392, 1, 0, 0, 0, 6780, 6782, 5, 36, 0, 0, 6781, 6783, 3, 1319, 657, 0, 6782, 6781, 1, 0, 0, 0, 6782, 6783, 1, 0, 0, 0, 6783, 6784, 1, 0, 0, 0, 6784, 6785, 5, 36, 0, 0, 6785, 6786, 1, 0, 0, 0, 6786, 6787, 4, 694, 8, 0, 6787, 6788, 6, 694, 18, 0, 6788, 6789, 1, 0, 0, 0, 6789, 6790, 6, 694, 15, 0, 6790, 1394, 1, 0, 0, 0, 78, 0, 1, 2, 3, 4, 1462, 1468, 1470, 1475, 1479, 1481, 1484, 1493, 1495, 1500, 1505, 1507, 6324, 6333, 6337, 6341, 6350, 6352, 6362, 6364, 6390, 6392, 6410, 6421, 6432, 6449, 6469, 6473, 6476, 6482, 6485, 6490, 6494, 6499, 6506, 6517, 6519, 6527, 6533, 6536, 6546, 6557, 6565, 6571, 6574, 6576, 6582, 6596, 6604, 6610, 6613, 6615, 6617, 6623, 6628, 6633, 6637, 6647, 6651, 6653, 6660, 6663, 6677, 6701, 6704, 6706, 6716, 6725, 6727, 6769, 6775, 6778, 6782, 19, 1, 28, 0, 7, 29, 0, 3, 0, 0, 5, 1, 0, 1, 656, 1, 5, 4, 0, 1, 667, 2, 0, 1, 0, 1, 676, 3, 2, 2, 0, 7, 663, 0, 7, 664, 0, 2, 3, 0, 1, 688, 4, 6, 0, 0, 4, 0, 0, 2, 1, 0, 1, 692, 5, 1, 694, 6] \ No newline at end of file +[4, 0, 681, 6808, 6, -1, 6, -1, 6, -1, 6, -1, 6, -1, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7, 13, 2, 14, 7, 14, 2, 15, 7, 15, 2, 16, 7, 16, 2, 17, 7, 17, 2, 18, 7, 18, 2, 19, 7, 19, 2, 20, 7, 20, 2, 21, 7, 21, 2, 22, 7, 22, 2, 23, 7, 23, 2, 24, 7, 24, 2, 25, 7, 25, 2, 26, 7, 26, 2, 27, 7, 27, 2, 28, 7, 28, 2, 29, 7, 29, 2, 30, 7, 30, 2, 31, 7, 31, 2, 32, 7, 32, 2, 33, 7, 33, 2, 34, 7, 34, 2, 35, 7, 35, 2, 36, 7, 36, 2, 37, 7, 37, 2, 38, 7, 38, 2, 39, 7, 39, 2, 40, 7, 40, 2, 41, 7, 41, 2, 42, 7, 42, 2, 43, 7, 43, 2, 44, 7, 44, 2, 45, 7, 45, 2, 46, 7, 46, 2, 47, 7, 47, 2, 48, 7, 48, 2, 49, 7, 49, 2, 50, 7, 50, 2, 51, 7, 51, 2, 52, 7, 52, 2, 53, 7, 53, 2, 54, 7, 54, 2, 55, 7, 55, 2, 56, 7, 56, 2, 57, 7, 57, 2, 58, 7, 58, 2, 59, 7, 59, 2, 60, 7, 60, 2, 61, 7, 61, 2, 62, 7, 62, 2, 63, 7, 63, 2, 64, 7, 64, 2, 65, 7, 65, 2, 66, 7, 66, 2, 67, 7, 67, 2, 68, 7, 68, 2, 69, 7, 69, 2, 70, 7, 70, 2, 71, 7, 71, 2, 72, 7, 72, 2, 73, 7, 73, 2, 74, 7, 74, 2, 75, 7, 75, 2, 76, 7, 76, 2, 77, 7, 77, 2, 78, 7, 78, 2, 79, 7, 79, 2, 80, 7, 80, 2, 81, 7, 81, 2, 82, 7, 82, 2, 83, 7, 83, 2, 84, 7, 84, 2, 85, 7, 85, 2, 86, 7, 86, 2, 87, 7, 87, 2, 88, 7, 88, 2, 89, 7, 89, 2, 90, 7, 90, 2, 91, 7, 91, 2, 92, 7, 92, 2, 93, 7, 93, 2, 94, 7, 94, 2, 95, 7, 95, 2, 96, 7, 96, 2, 97, 7, 97, 2, 98, 7, 98, 2, 99, 7, 99, 2, 100, 7, 100, 2, 101, 7, 101, 2, 102, 7, 102, 2, 103, 7, 103, 2, 104, 7, 104, 2, 105, 7, 105, 2, 106, 7, 106, 2, 107, 7, 107, 2, 108, 7, 108, 2, 109, 7, 109, 2, 110, 7, 110, 2, 111, 7, 111, 2, 112, 7, 112, 2, 113, 7, 113, 2, 114, 7, 114, 2, 115, 7, 115, 2, 116, 7, 116, 2, 117, 7, 117, 2, 118, 7, 118, 2, 119, 7, 119, 2, 120, 7, 120, 2, 121, 7, 121, 2, 122, 7, 122, 2, 123, 7, 123, 2, 124, 7, 124, 2, 125, 7, 125, 2, 126, 7, 126, 2, 127, 7, 127, 2, 128, 7, 128, 2, 129, 7, 129, 2, 130, 7, 130, 2, 131, 7, 131, 2, 132, 7, 132, 2, 133, 7, 133, 2, 134, 7, 134, 2, 135, 7, 135, 2, 136, 7, 136, 2, 137, 7, 137, 2, 138, 7, 138, 2, 139, 7, 139, 2, 140, 7, 140, 2, 141, 7, 141, 2, 142, 7, 142, 2, 143, 7, 143, 2, 144, 7, 144, 2, 145, 7, 145, 2, 146, 7, 146, 2, 147, 7, 147, 2, 148, 7, 148, 2, 149, 7, 149, 2, 150, 7, 150, 2, 151, 7, 151, 2, 152, 7, 152, 2, 153, 7, 153, 2, 154, 7, 154, 2, 155, 7, 155, 2, 156, 7, 156, 2, 157, 7, 157, 2, 158, 7, 158, 2, 159, 7, 159, 2, 160, 7, 160, 2, 161, 7, 161, 2, 162, 7, 162, 2, 163, 7, 163, 2, 164, 7, 164, 2, 165, 7, 165, 2, 166, 7, 166, 2, 167, 7, 167, 2, 168, 7, 168, 2, 169, 7, 169, 2, 170, 7, 170, 2, 171, 7, 171, 2, 172, 7, 172, 2, 173, 7, 173, 2, 174, 7, 174, 2, 175, 7, 175, 2, 176, 7, 176, 2, 177, 7, 177, 2, 178, 7, 178, 2, 179, 7, 179, 2, 180, 7, 180, 2, 181, 7, 181, 2, 182, 7, 182, 2, 183, 7, 183, 2, 184, 7, 184, 2, 185, 7, 185, 2, 186, 7, 186, 2, 187, 7, 187, 2, 188, 7, 188, 2, 189, 7, 189, 2, 190, 7, 190, 2, 191, 7, 191, 2, 192, 7, 192, 2, 193, 7, 193, 2, 194, 7, 194, 2, 195, 7, 195, 2, 196, 7, 196, 2, 197, 7, 197, 2, 198, 7, 198, 2, 199, 7, 199, 2, 200, 7, 200, 2, 201, 7, 201, 2, 202, 7, 202, 2, 203, 7, 203, 2, 204, 7, 204, 2, 205, 7, 205, 2, 206, 7, 206, 2, 207, 7, 207, 2, 208, 7, 208, 2, 209, 7, 209, 2, 210, 7, 210, 2, 211, 7, 211, 2, 212, 7, 212, 2, 213, 7, 213, 2, 214, 7, 214, 2, 215, 7, 215, 2, 216, 7, 216, 2, 217, 7, 217, 2, 218, 7, 218, 2, 219, 7, 219, 2, 220, 7, 220, 2, 221, 7, 221, 2, 222, 7, 222, 2, 223, 7, 223, 2, 224, 7, 224, 2, 225, 7, 225, 2, 226, 7, 226, 2, 227, 7, 227, 2, 228, 7, 228, 2, 229, 7, 229, 2, 230, 7, 230, 2, 231, 7, 231, 2, 232, 7, 232, 2, 233, 7, 233, 2, 234, 7, 234, 2, 235, 7, 235, 2, 236, 7, 236, 2, 237, 7, 237, 2, 238, 7, 238, 2, 239, 7, 239, 2, 240, 7, 240, 2, 241, 7, 241, 2, 242, 7, 242, 2, 243, 7, 243, 2, 244, 7, 244, 2, 245, 7, 245, 2, 246, 7, 246, 2, 247, 7, 247, 2, 248, 7, 248, 2, 249, 7, 249, 2, 250, 7, 250, 2, 251, 7, 251, 2, 252, 7, 252, 2, 253, 7, 253, 2, 254, 7, 254, 2, 255, 7, 255, 2, 256, 7, 256, 2, 257, 7, 257, 2, 258, 7, 258, 2, 259, 7, 259, 2, 260, 7, 260, 2, 261, 7, 261, 2, 262, 7, 262, 2, 263, 7, 263, 2, 264, 7, 264, 2, 265, 7, 265, 2, 266, 7, 266, 2, 267, 7, 267, 2, 268, 7, 268, 2, 269, 7, 269, 2, 270, 7, 270, 2, 271, 7, 271, 2, 272, 7, 272, 2, 273, 7, 273, 2, 274, 7, 274, 2, 275, 7, 275, 2, 276, 7, 276, 2, 277, 7, 277, 2, 278, 7, 278, 2, 279, 7, 279, 2, 280, 7, 280, 2, 281, 7, 281, 2, 282, 7, 282, 2, 283, 7, 283, 2, 284, 7, 284, 2, 285, 7, 285, 2, 286, 7, 286, 2, 287, 7, 287, 2, 288, 7, 288, 2, 289, 7, 289, 2, 290, 7, 290, 2, 291, 7, 291, 2, 292, 7, 292, 2, 293, 7, 293, 2, 294, 7, 294, 2, 295, 7, 295, 2, 296, 7, 296, 2, 297, 7, 297, 2, 298, 7, 298, 2, 299, 7, 299, 2, 300, 7, 300, 2, 301, 7, 301, 2, 302, 7, 302, 2, 303, 7, 303, 2, 304, 7, 304, 2, 305, 7, 305, 2, 306, 7, 306, 2, 307, 7, 307, 2, 308, 7, 308, 2, 309, 7, 309, 2, 310, 7, 310, 2, 311, 7, 311, 2, 312, 7, 312, 2, 313, 7, 313, 2, 314, 7, 314, 2, 315, 7, 315, 2, 316, 7, 316, 2, 317, 7, 317, 2, 318, 7, 318, 2, 319, 7, 319, 2, 320, 7, 320, 2, 321, 7, 321, 2, 322, 7, 322, 2, 323, 7, 323, 2, 324, 7, 324, 2, 325, 7, 325, 2, 326, 7, 326, 2, 327, 7, 327, 2, 328, 7, 328, 2, 329, 7, 329, 2, 330, 7, 330, 2, 331, 7, 331, 2, 332, 7, 332, 2, 333, 7, 333, 2, 334, 7, 334, 2, 335, 7, 335, 2, 336, 7, 336, 2, 337, 7, 337, 2, 338, 7, 338, 2, 339, 7, 339, 2, 340, 7, 340, 2, 341, 7, 341, 2, 342, 7, 342, 2, 343, 7, 343, 2, 344, 7, 344, 2, 345, 7, 345, 2, 346, 7, 346, 2, 347, 7, 347, 2, 348, 7, 348, 2, 349, 7, 349, 2, 350, 7, 350, 2, 351, 7, 351, 2, 352, 7, 352, 2, 353, 7, 353, 2, 354, 7, 354, 2, 355, 7, 355, 2, 356, 7, 356, 2, 357, 7, 357, 2, 358, 7, 358, 2, 359, 7, 359, 2, 360, 7, 360, 2, 361, 7, 361, 2, 362, 7, 362, 2, 363, 7, 363, 2, 364, 7, 364, 2, 365, 7, 365, 2, 366, 7, 366, 2, 367, 7, 367, 2, 368, 7, 368, 2, 369, 7, 369, 2, 370, 7, 370, 2, 371, 7, 371, 2, 372, 7, 372, 2, 373, 7, 373, 2, 374, 7, 374, 2, 375, 7, 375, 2, 376, 7, 376, 2, 377, 7, 377, 2, 378, 7, 378, 2, 379, 7, 379, 2, 380, 7, 380, 2, 381, 7, 381, 2, 382, 7, 382, 2, 383, 7, 383, 2, 384, 7, 384, 2, 385, 7, 385, 2, 386, 7, 386, 2, 387, 7, 387, 2, 388, 7, 388, 2, 389, 7, 389, 2, 390, 7, 390, 2, 391, 7, 391, 2, 392, 7, 392, 2, 393, 7, 393, 2, 394, 7, 394, 2, 395, 7, 395, 2, 396, 7, 396, 2, 397, 7, 397, 2, 398, 7, 398, 2, 399, 7, 399, 2, 400, 7, 400, 2, 401, 7, 401, 2, 402, 7, 402, 2, 403, 7, 403, 2, 404, 7, 404, 2, 405, 7, 405, 2, 406, 7, 406, 2, 407, 7, 407, 2, 408, 7, 408, 2, 409, 7, 409, 2, 410, 7, 410, 2, 411, 7, 411, 2, 412, 7, 412, 2, 413, 7, 413, 2, 414, 7, 414, 2, 415, 7, 415, 2, 416, 7, 416, 2, 417, 7, 417, 2, 418, 7, 418, 2, 419, 7, 419, 2, 420, 7, 420, 2, 421, 7, 421, 2, 422, 7, 422, 2, 423, 7, 423, 2, 424, 7, 424, 2, 425, 7, 425, 2, 426, 7, 426, 2, 427, 7, 427, 2, 428, 7, 428, 2, 429, 7, 429, 2, 430, 7, 430, 2, 431, 7, 431, 2, 432, 7, 432, 2, 433, 7, 433, 2, 434, 7, 434, 2, 435, 7, 435, 2, 436, 7, 436, 2, 437, 7, 437, 2, 438, 7, 438, 2, 439, 7, 439, 2, 440, 7, 440, 2, 441, 7, 441, 2, 442, 7, 442, 2, 443, 7, 443, 2, 444, 7, 444, 2, 445, 7, 445, 2, 446, 7, 446, 2, 447, 7, 447, 2, 448, 7, 448, 2, 449, 7, 449, 2, 450, 7, 450, 2, 451, 7, 451, 2, 452, 7, 452, 2, 453, 7, 453, 2, 454, 7, 454, 2, 455, 7, 455, 2, 456, 7, 456, 2, 457, 7, 457, 2, 458, 7, 458, 2, 459, 7, 459, 2, 460, 7, 460, 2, 461, 7, 461, 2, 462, 7, 462, 2, 463, 7, 463, 2, 464, 7, 464, 2, 465, 7, 465, 2, 466, 7, 466, 2, 467, 7, 467, 2, 468, 7, 468, 2, 469, 7, 469, 2, 470, 7, 470, 2, 471, 7, 471, 2, 472, 7, 472, 2, 473, 7, 473, 2, 474, 7, 474, 2, 475, 7, 475, 2, 476, 7, 476, 2, 477, 7, 477, 2, 478, 7, 478, 2, 479, 7, 479, 2, 480, 7, 480, 2, 481, 7, 481, 2, 482, 7, 482, 2, 483, 7, 483, 2, 484, 7, 484, 2, 485, 7, 485, 2, 486, 7, 486, 2, 487, 7, 487, 2, 488, 7, 488, 2, 489, 7, 489, 2, 490, 7, 490, 2, 491, 7, 491, 2, 492, 7, 492, 2, 493, 7, 493, 2, 494, 7, 494, 2, 495, 7, 495, 2, 496, 7, 496, 2, 497, 7, 497, 2, 498, 7, 498, 2, 499, 7, 499, 2, 500, 7, 500, 2, 501, 7, 501, 2, 502, 7, 502, 2, 503, 7, 503, 2, 504, 7, 504, 2, 505, 7, 505, 2, 506, 7, 506, 2, 507, 7, 507, 2, 508, 7, 508, 2, 509, 7, 509, 2, 510, 7, 510, 2, 511, 7, 511, 2, 512, 7, 512, 2, 513, 7, 513, 2, 514, 7, 514, 2, 515, 7, 515, 2, 516, 7, 516, 2, 517, 7, 517, 2, 518, 7, 518, 2, 519, 7, 519, 2, 520, 7, 520, 2, 521, 7, 521, 2, 522, 7, 522, 2, 523, 7, 523, 2, 524, 7, 524, 2, 525, 7, 525, 2, 526, 7, 526, 2, 527, 7, 527, 2, 528, 7, 528, 2, 529, 7, 529, 2, 530, 7, 530, 2, 531, 7, 531, 2, 532, 7, 532, 2, 533, 7, 533, 2, 534, 7, 534, 2, 535, 7, 535, 2, 536, 7, 536, 2, 537, 7, 537, 2, 538, 7, 538, 2, 539, 7, 539, 2, 540, 7, 540, 2, 541, 7, 541, 2, 542, 7, 542, 2, 543, 7, 543, 2, 544, 7, 544, 2, 545, 7, 545, 2, 546, 7, 546, 2, 547, 7, 547, 2, 548, 7, 548, 2, 549, 7, 549, 2, 550, 7, 550, 2, 551, 7, 551, 2, 552, 7, 552, 2, 553, 7, 553, 2, 554, 7, 554, 2, 555, 7, 555, 2, 556, 7, 556, 2, 557, 7, 557, 2, 558, 7, 558, 2, 559, 7, 559, 2, 560, 7, 560, 2, 561, 7, 561, 2, 562, 7, 562, 2, 563, 7, 563, 2, 564, 7, 564, 2, 565, 7, 565, 2, 566, 7, 566, 2, 567, 7, 567, 2, 568, 7, 568, 2, 569, 7, 569, 2, 570, 7, 570, 2, 571, 7, 571, 2, 572, 7, 572, 2, 573, 7, 573, 2, 574, 7, 574, 2, 575, 7, 575, 2, 576, 7, 576, 2, 577, 7, 577, 2, 578, 7, 578, 2, 579, 7, 579, 2, 580, 7, 580, 2, 581, 7, 581, 2, 582, 7, 582, 2, 583, 7, 583, 2, 584, 7, 584, 2, 585, 7, 585, 2, 586, 7, 586, 2, 587, 7, 587, 2, 588, 7, 588, 2, 589, 7, 589, 2, 590, 7, 590, 2, 591, 7, 591, 2, 592, 7, 592, 2, 593, 7, 593, 2, 594, 7, 594, 2, 595, 7, 595, 2, 596, 7, 596, 2, 597, 7, 597, 2, 598, 7, 598, 2, 599, 7, 599, 2, 600, 7, 600, 2, 601, 7, 601, 2, 602, 7, 602, 2, 603, 7, 603, 2, 604, 7, 604, 2, 605, 7, 605, 2, 606, 7, 606, 2, 607, 7, 607, 2, 608, 7, 608, 2, 609, 7, 609, 2, 610, 7, 610, 2, 611, 7, 611, 2, 612, 7, 612, 2, 613, 7, 613, 2, 614, 7, 614, 2, 615, 7, 615, 2, 616, 7, 616, 2, 617, 7, 617, 2, 618, 7, 618, 2, 619, 7, 619, 2, 620, 7, 620, 2, 621, 7, 621, 2, 622, 7, 622, 2, 623, 7, 623, 2, 624, 7, 624, 2, 625, 7, 625, 2, 626, 7, 626, 2, 627, 7, 627, 2, 628, 7, 628, 2, 629, 7, 629, 2, 630, 7, 630, 2, 631, 7, 631, 2, 632, 7, 632, 2, 633, 7, 633, 2, 634, 7, 634, 2, 635, 7, 635, 2, 636, 7, 636, 2, 637, 7, 637, 2, 638, 7, 638, 2, 639, 7, 639, 2, 640, 7, 640, 2, 641, 7, 641, 2, 642, 7, 642, 2, 643, 7, 643, 2, 644, 7, 644, 2, 645, 7, 645, 2, 646, 7, 646, 2, 647, 7, 647, 2, 648, 7, 648, 2, 649, 7, 649, 2, 650, 7, 650, 2, 651, 7, 651, 2, 652, 7, 652, 2, 653, 7, 653, 2, 654, 7, 654, 2, 655, 7, 655, 2, 656, 7, 656, 2, 657, 7, 657, 2, 658, 7, 658, 2, 659, 7, 659, 2, 660, 7, 660, 2, 661, 7, 661, 2, 662, 7, 662, 2, 663, 7, 663, 2, 664, 7, 664, 2, 665, 7, 665, 2, 666, 7, 666, 2, 667, 7, 667, 2, 668, 7, 668, 2, 669, 7, 669, 2, 670, 7, 670, 2, 671, 7, 671, 2, 672, 7, 672, 2, 673, 7, 673, 2, 674, 7, 674, 2, 675, 7, 675, 2, 676, 7, 676, 2, 677, 7, 677, 2, 678, 7, 678, 2, 679, 7, 679, 2, 680, 7, 680, 2, 681, 7, 681, 2, 682, 7, 682, 2, 683, 7, 683, 2, 684, 7, 684, 2, 685, 7, 685, 2, 686, 7, 686, 2, 687, 7, 687, 2, 688, 7, 688, 2, 689, 7, 689, 2, 690, 7, 690, 2, 691, 7, 691, 2, 692, 7, 692, 2, 693, 7, 693, 2, 694, 7, 694, 2, 695, 7, 695, 2, 696, 7, 696, 1, 0, 1, 0, 1, 1, 1, 1, 1, 2, 1, 2, 1, 3, 1, 3, 1, 4, 1, 4, 1, 5, 1, 5, 1, 6, 1, 6, 1, 7, 1, 7, 1, 8, 1, 8, 1, 9, 1, 9, 1, 10, 1, 10, 1, 11, 1, 11, 1, 12, 1, 12, 1, 13, 1, 13, 1, 14, 1, 14, 1, 15, 1, 15, 1, 16, 1, 16, 1, 17, 1, 17, 1, 17, 1, 18, 1, 18, 1, 18, 1, 19, 1, 19, 1, 19, 1, 20, 1, 20, 1, 20, 1, 21, 1, 21, 1, 21, 1, 22, 1, 22, 1, 22, 1, 23, 1, 23, 1, 23, 1, 24, 1, 24, 1, 24, 1, 25, 1, 25, 1, 25, 1, 26, 1, 26, 1, 27, 1, 27, 4, 27, 1465, 8, 27, 11, 27, 12, 27, 1466, 1, 28, 1, 28, 1, 28, 1, 28, 4, 28, 1473, 8, 28, 11, 28, 12, 28, 1474, 1, 28, 1, 28, 1, 28, 3, 28, 1480, 8, 28, 1, 28, 1, 28, 4, 28, 1484, 8, 28, 11, 28, 12, 28, 1485, 1, 28, 3, 28, 1489, 8, 28, 1, 28, 1, 28, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 5, 29, 1498, 8, 29, 10, 29, 12, 29, 1501, 9, 29, 1, 29, 1, 29, 3, 29, 1505, 8, 29, 1, 29, 1, 29, 1, 29, 4, 29, 1510, 8, 29, 11, 29, 12, 29, 1511, 1, 29, 1, 29, 1, 30, 1, 30, 1, 31, 1, 31, 1, 32, 1, 32, 1, 33, 1, 33, 1, 33, 1, 33, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 36, 1, 36, 1, 36, 1, 36, 1, 37, 1, 37, 1, 37, 1, 37, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 39, 1, 39, 1, 39, 1, 40, 1, 40, 1, 40, 1, 40, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 60, 1, 60, 1, 60, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 65, 1, 65, 1, 65, 1, 65, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 71, 1, 71, 1, 71, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 80, 1, 80, 1, 80, 1, 80, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 83, 1, 83, 1, 83, 1, 84, 1, 84, 1, 84, 1, 84, 1, 84, 1, 85, 1, 85, 1, 85, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 88, 1, 88, 1, 88, 1, 88, 1, 88, 1, 88, 1, 88, 1, 88, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 93, 1, 93, 1, 93, 1, 93, 1, 93, 1, 94, 1, 94, 1, 94, 1, 94, 1, 94, 1, 94, 1, 94, 1, 94, 1, 94, 1, 94, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 97, 1, 97, 1, 97, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 102, 1, 102, 1, 102, 1, 102, 1, 102, 1, 102, 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 107, 1, 107, 1, 107, 1, 107, 1, 107, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 110, 1, 110, 1, 110, 1, 110, 1, 110, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 1, 113, 1, 113, 1, 113, 1, 113, 1, 113, 1, 113, 1, 113, 1, 113, 1, 113, 1, 113, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 115, 1, 115, 1, 115, 1, 115, 1, 115, 1, 115, 1, 116, 1, 116, 1, 116, 1, 116, 1, 116, 1, 116, 1, 116, 1, 116, 1, 116, 1, 116, 1, 116, 1, 116, 1, 116, 1, 116, 1, 116, 1, 117, 1, 117, 1, 117, 1, 117, 1, 117, 1, 117, 1, 117, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 121, 1, 121, 1, 121, 1, 122, 1, 122, 1, 122, 1, 122, 1, 122, 1, 122, 1, 122, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 126, 1, 126, 1, 126, 1, 126, 1, 126, 1, 126, 1, 126, 1, 126, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 129, 1, 129, 1, 129, 1, 129, 1, 129, 1, 130, 1, 130, 1, 130, 1, 130, 1, 130, 1, 130, 1, 130, 1, 130, 1, 130, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 132, 1, 132, 1, 132, 1, 132, 1, 132, 1, 132, 1, 132, 1, 132, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 1, 136, 1, 136, 1, 136, 1, 136, 1, 136, 1, 136, 1, 136, 1, 137, 1, 137, 1, 137, 1, 137, 1, 137, 1, 137, 1, 137, 1, 138, 1, 138, 1, 138, 1, 138, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 140, 1, 140, 1, 140, 1, 140, 1, 140, 1, 140, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 142, 1, 142, 1, 142, 1, 142, 1, 142, 1, 143, 1, 143, 1, 143, 1, 143, 1, 143, 1, 143, 1, 144, 1, 144, 1, 144, 1, 144, 1, 144, 1, 144, 1, 144, 1, 145, 1, 145, 1, 145, 1, 145, 1, 145, 1, 145, 1, 145, 1, 145, 1, 145, 1, 145, 1, 146, 1, 146, 1, 146, 1, 146, 1, 146, 1, 146, 1, 146, 1, 146, 1, 146, 1, 146, 1, 146, 1, 147, 1, 147, 1, 147, 1, 148, 1, 148, 1, 148, 1, 148, 1, 148, 1, 148, 1, 148, 1, 148, 1, 148, 1, 148, 1, 149, 1, 149, 1, 149, 1, 149, 1, 149, 1, 149, 1, 149, 1, 149, 1, 149, 1, 150, 1, 150, 1, 150, 1, 150, 1, 150, 1, 150, 1, 150, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 152, 1, 152, 1, 152, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 157, 1, 157, 1, 157, 1, 157, 1, 157, 1, 157, 1, 157, 1, 157, 1, 158, 1, 158, 1, 158, 1, 158, 1, 158, 1, 158, 1, 159, 1, 159, 1, 159, 1, 159, 1, 159, 1, 159, 1, 159, 1, 159, 1, 159, 1, 159, 1, 159, 1, 159, 1, 159, 1, 159, 1, 159, 1, 159, 1, 160, 1, 160, 1, 160, 1, 160, 1, 160, 1, 160, 1, 160, 1, 160, 1, 160, 1, 160, 1, 160, 1, 161, 1, 161, 1, 161, 1, 161, 1, 161, 1, 161, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 163, 1, 163, 1, 163, 1, 163, 1, 163, 1, 163, 1, 163, 1, 163, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 165, 1, 165, 1, 165, 1, 165, 1, 165, 1, 165, 1, 165, 1, 165, 1, 165, 1, 166, 1, 166, 1, 166, 1, 166, 1, 166, 1, 166, 1, 166, 1, 167, 1, 167, 1, 167, 1, 167, 1, 167, 1, 167, 1, 167, 1, 167, 1, 167, 1, 167, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 169, 1, 169, 1, 169, 1, 169, 1, 169, 1, 169, 1, 169, 1, 169, 1, 169, 1, 169, 1, 169, 1, 170, 1, 170, 1, 170, 1, 170, 1, 170, 1, 170, 1, 170, 1, 170, 1, 170, 1, 170, 1, 170, 1, 170, 1, 171, 1, 171, 1, 171, 1, 171, 1, 171, 1, 171, 1, 171, 1, 171, 1, 172, 1, 172, 1, 172, 1, 172, 1, 172, 1, 172, 1, 172, 1, 172, 1, 172, 1, 173, 1, 173, 1, 173, 1, 173, 1, 173, 1, 173, 1, 173, 1, 173, 1, 173, 1, 173, 1, 173, 1, 174, 1, 174, 1, 174, 1, 174, 1, 174, 1, 175, 1, 175, 1, 175, 1, 175, 1, 175, 1, 176, 1, 176, 1, 176, 1, 176, 1, 177, 1, 177, 1, 177, 1, 177, 1, 177, 1, 177, 1, 177, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 1, 179, 1, 179, 1, 179, 1, 179, 1, 179, 1, 180, 1, 180, 1, 180, 1, 180, 1, 180, 1, 180, 1, 180, 1, 180, 1, 180, 1, 181, 1, 181, 1, 181, 1, 181, 1, 182, 1, 182, 1, 182, 1, 182, 1, 182, 1, 182, 1, 182, 1, 182, 1, 182, 1, 182, 1, 182, 1, 183, 1, 183, 1, 183, 1, 183, 1, 183, 1, 183, 1, 183, 1, 183, 1, 184, 1, 184, 1, 184, 1, 184, 1, 184, 1, 184, 1, 184, 1, 184, 1, 184, 1, 185, 1, 185, 1, 185, 1, 185, 1, 185, 1, 185, 1, 185, 1, 185, 1, 185, 1, 186, 1, 186, 1, 186, 1, 186, 1, 186, 1, 186, 1, 186, 1, 186, 1, 187, 1, 187, 1, 187, 1, 187, 1, 187, 1, 187, 1, 187, 1, 188, 1, 188, 1, 188, 1, 188, 1, 188, 1, 188, 1, 188, 1, 188, 1, 188, 1, 188, 1, 189, 1, 189, 1, 189, 1, 189, 1, 189, 1, 189, 1, 189, 1, 189, 1, 189, 1, 189, 1, 189, 1, 190, 1, 190, 1, 190, 1, 190, 1, 190, 1, 190, 1, 190, 1, 190, 1, 190, 1, 190, 1, 190, 1, 191, 1, 191, 1, 191, 1, 191, 1, 191, 1, 191, 1, 191, 1, 191, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 193, 1, 193, 1, 193, 1, 193, 1, 193, 1, 193, 1, 193, 1, 193, 1, 193, 1, 194, 1, 194, 1, 194, 1, 194, 1, 194, 1, 194, 1, 194, 1, 195, 1, 195, 1, 195, 1, 195, 1, 195, 1, 195, 1, 195, 1, 196, 1, 196, 1, 196, 1, 196, 1, 196, 1, 197, 1, 197, 1, 197, 1, 197, 1, 197, 1, 198, 1, 198, 1, 198, 1, 198, 1, 198, 1, 198, 1, 198, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 201, 1, 201, 1, 201, 1, 201, 1, 201, 1, 202, 1, 202, 1, 202, 1, 202, 1, 202, 1, 202, 1, 202, 1, 203, 1, 203, 1, 203, 1, 203, 1, 203, 1, 203, 1, 204, 1, 204, 1, 204, 1, 204, 1, 204, 1, 204, 1, 204, 1, 204, 1, 205, 1, 205, 1, 205, 1, 205, 1, 205, 1, 205, 1, 205, 1, 205, 1, 205, 1, 205, 1, 206, 1, 206, 1, 206, 1, 206, 1, 206, 1, 206, 1, 206, 1, 206, 1, 206, 1, 206, 1, 207, 1, 207, 1, 207, 1, 207, 1, 207, 1, 207, 1, 207, 1, 207, 1, 208, 1, 208, 1, 208, 1, 208, 1, 208, 1, 208, 1, 208, 1, 208, 1, 209, 1, 209, 1, 209, 1, 209, 1, 209, 1, 209, 1, 209, 1, 209, 1, 209, 1, 209, 1, 210, 1, 210, 1, 210, 1, 210, 1, 210, 1, 210, 1, 210, 1, 210, 1, 210, 1, 211, 1, 211, 1, 211, 1, 211, 1, 211, 1, 211, 1, 211, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 213, 1, 213, 1, 213, 1, 213, 1, 213, 1, 213, 1, 213, 1, 213, 1, 213, 1, 213, 1, 214, 1, 214, 1, 214, 1, 214, 1, 214, 1, 214, 1, 215, 1, 215, 1, 215, 1, 215, 1, 215, 1, 215, 1, 215, 1, 215, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 217, 1, 217, 1, 217, 1, 217, 1, 217, 1, 217, 1, 217, 1, 217, 1, 217, 1, 217, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 219, 1, 219, 1, 219, 1, 219, 1, 219, 1, 219, 1, 219, 1, 219, 1, 220, 1, 220, 1, 220, 1, 220, 1, 220, 1, 220, 1, 220, 1, 220, 1, 221, 1, 221, 1, 221, 1, 221, 1, 221, 1, 221, 1, 221, 1, 222, 1, 222, 1, 222, 1, 222, 1, 222, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 224, 1, 224, 1, 224, 1, 224, 1, 224, 1, 224, 1, 224, 1, 224, 1, 224, 1, 225, 1, 225, 1, 225, 1, 226, 1, 226, 1, 226, 1, 226, 1, 226, 1, 226, 1, 226, 1, 226, 1, 226, 1, 226, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 228, 1, 228, 1, 228, 1, 228, 1, 228, 1, 228, 1, 228, 1, 228, 1, 228, 1, 229, 1, 229, 1, 229, 1, 229, 1, 229, 1, 229, 1, 229, 1, 229, 1, 229, 1, 229, 1, 230, 1, 230, 1, 230, 1, 230, 1, 230, 1, 230, 1, 230, 1, 230, 1, 230, 1, 230, 1, 231, 1, 231, 1, 231, 1, 231, 1, 231, 1, 231, 1, 232, 1, 232, 1, 232, 1, 232, 1, 232, 1, 232, 1, 232, 1, 232, 1, 233, 1, 233, 1, 233, 1, 233, 1, 233, 1, 233, 1, 233, 1, 233, 1, 234, 1, 234, 1, 234, 1, 234, 1, 234, 1, 234, 1, 234, 1, 234, 1, 234, 1, 235, 1, 235, 1, 235, 1, 235, 1, 235, 1, 235, 1, 235, 1, 236, 1, 236, 1, 236, 1, 236, 1, 236, 1, 236, 1, 236, 1, 236, 1, 236, 1, 236, 1, 236, 1, 236, 1, 237, 1, 237, 1, 237, 1, 237, 1, 237, 1, 237, 1, 237, 1, 238, 1, 238, 1, 238, 1, 238, 1, 238, 1, 238, 1, 238, 1, 238, 1, 239, 1, 239, 1, 239, 1, 239, 1, 239, 1, 239, 1, 239, 1, 239, 1, 240, 1, 240, 1, 240, 1, 240, 1, 240, 1, 240, 1, 240, 1, 240, 1, 240, 1, 240, 1, 241, 1, 241, 1, 241, 1, 241, 1, 242, 1, 242, 1, 242, 1, 242, 1, 242, 1, 242, 1, 243, 1, 243, 1, 243, 1, 243, 1, 243, 1, 243, 1, 243, 1, 243, 1, 243, 1, 244, 1, 244, 1, 244, 1, 244, 1, 244, 1, 244, 1, 245, 1, 245, 1, 245, 1, 245, 1, 245, 1, 246, 1, 246, 1, 246, 1, 246, 1, 246, 1, 246, 1, 246, 1, 246, 1, 246, 1, 246, 1, 247, 1, 247, 1, 247, 1, 247, 1, 247, 1, 247, 1, 248, 1, 248, 1, 248, 1, 248, 1, 248, 1, 248, 1, 248, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 1, 250, 1, 250, 1, 250, 1, 250, 1, 250, 1, 250, 1, 251, 1, 251, 1, 251, 1, 251, 1, 251, 1, 251, 1, 251, 1, 251, 1, 251, 1, 252, 1, 252, 1, 252, 1, 252, 1, 252, 1, 253, 1, 253, 1, 253, 1, 253, 1, 253, 1, 253, 1, 253, 1, 253, 1, 254, 1, 254, 1, 254, 1, 254, 1, 254, 1, 254, 1, 255, 1, 255, 1, 255, 1, 255, 1, 255, 1, 255, 1, 255, 1, 255, 1, 256, 1, 256, 1, 256, 1, 256, 1, 256, 1, 256, 1, 256, 1, 256, 1, 256, 1, 256, 1, 256, 1, 256, 1, 256, 1, 257, 1, 257, 1, 257, 1, 257, 1, 257, 1, 257, 1, 257, 1, 257, 1, 257, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 259, 1, 259, 1, 259, 1, 259, 1, 259, 1, 259, 1, 259, 1, 260, 1, 260, 1, 260, 1, 260, 1, 260, 1, 260, 1, 260, 1, 260, 1, 260, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 262, 1, 262, 1, 262, 1, 262, 1, 262, 1, 262, 1, 263, 1, 263, 1, 263, 1, 263, 1, 263, 1, 264, 1, 264, 1, 264, 1, 264, 1, 264, 1, 265, 1, 265, 1, 265, 1, 265, 1, 265, 1, 265, 1, 266, 1, 266, 1, 266, 1, 266, 1, 266, 1, 267, 1, 267, 1, 267, 1, 268, 1, 268, 1, 268, 1, 268, 1, 268, 1, 268, 1, 268, 1, 268, 1, 269, 1, 269, 1, 269, 1, 269, 1, 269, 1, 269, 1, 269, 1, 270, 1, 270, 1, 270, 1, 270, 1, 270, 1, 270, 1, 270, 1, 271, 1, 271, 1, 271, 1, 271, 1, 271, 1, 271, 1, 272, 1, 272, 1, 272, 1, 272, 1, 272, 1, 272, 1, 272, 1, 273, 1, 273, 1, 273, 1, 274, 1, 274, 1, 274, 1, 274, 1, 275, 1, 275, 1, 275, 1, 275, 1, 275, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 279, 1, 279, 1, 279, 1, 279, 1, 279, 1, 279, 1, 280, 1, 280, 1, 280, 1, 280, 1, 280, 1, 280, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 282, 1, 282, 1, 282, 1, 282, 1, 282, 1, 282, 1, 282, 1, 282, 1, 283, 1, 283, 1, 283, 1, 283, 1, 283, 1, 283, 1, 283, 1, 283, 1, 283, 1, 283, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 285, 1, 285, 1, 285, 1, 285, 1, 285, 1, 285, 1, 285, 1, 285, 1, 285, 1, 286, 1, 286, 1, 286, 1, 286, 1, 286, 1, 286, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 288, 1, 288, 1, 288, 1, 288, 1, 288, 1, 288, 1, 288, 1, 288, 1, 289, 1, 289, 1, 289, 1, 289, 1, 289, 1, 289, 1, 289, 1, 289, 1, 289, 1, 290, 1, 290, 1, 290, 1, 290, 1, 290, 1, 290, 1, 290, 1, 290, 1, 290, 1, 291, 1, 291, 1, 291, 1, 291, 1, 291, 1, 291, 1, 292, 1, 292, 1, 292, 1, 292, 1, 292, 1, 292, 1, 292, 1, 292, 1, 292, 1, 292, 1, 292, 1, 293, 1, 293, 1, 293, 1, 293, 1, 293, 1, 293, 1, 293, 1, 293, 1, 293, 1, 293, 1, 293, 1, 294, 1, 294, 1, 294, 1, 294, 1, 294, 1, 294, 1, 294, 1, 294, 1, 294, 1, 294, 1, 295, 1, 295, 1, 295, 1, 295, 1, 295, 1, 295, 1, 295, 1, 295, 1, 296, 1, 296, 1, 296, 1, 296, 1, 296, 1, 296, 1, 297, 1, 297, 1, 297, 1, 297, 1, 297, 1, 297, 1, 298, 1, 298, 1, 298, 1, 298, 1, 298, 1, 299, 1, 299, 1, 299, 1, 299, 1, 299, 1, 299, 1, 299, 1, 299, 1, 299, 1, 300, 1, 300, 1, 300, 1, 300, 1, 300, 1, 300, 1, 300, 1, 300, 1, 301, 1, 301, 1, 301, 1, 301, 1, 301, 1, 301, 1, 301, 1, 301, 1, 301, 1, 301, 1, 302, 1, 302, 1, 302, 1, 302, 1, 303, 1, 303, 1, 303, 1, 303, 1, 303, 1, 303, 1, 303, 1, 303, 1, 304, 1, 304, 1, 304, 1, 304, 1, 304, 1, 304, 1, 304, 1, 304, 1, 305, 1, 305, 1, 305, 1, 305, 1, 305, 1, 305, 1, 305, 1, 305, 1, 305, 1, 306, 1, 306, 1, 306, 1, 306, 1, 306, 1, 306, 1, 306, 1, 306, 1, 307, 1, 307, 1, 307, 1, 307, 1, 307, 1, 307, 1, 307, 1, 308, 1, 308, 1, 308, 1, 308, 1, 308, 1, 308, 1, 308, 1, 308, 1, 308, 1, 308, 1, 308, 1, 309, 1, 309, 1, 309, 1, 309, 1, 309, 1, 309, 1, 309, 1, 309, 1, 310, 1, 310, 1, 310, 1, 310, 1, 310, 1, 310, 1, 310, 1, 310, 1, 311, 1, 311, 1, 311, 1, 311, 1, 311, 1, 311, 1, 312, 1, 312, 1, 312, 1, 312, 1, 312, 1, 312, 1, 312, 1, 312, 1, 313, 1, 313, 1, 313, 1, 313, 1, 313, 1, 313, 1, 313, 1, 313, 1, 313, 1, 314, 1, 314, 1, 314, 1, 314, 1, 314, 1, 314, 1, 314, 1, 314, 1, 315, 1, 315, 1, 315, 1, 315, 1, 315, 1, 315, 1, 315, 1, 316, 1, 316, 1, 316, 1, 316, 1, 316, 1, 317, 1, 317, 1, 317, 1, 317, 1, 317, 1, 317, 1, 317, 1, 317, 1, 317, 1, 318, 1, 318, 1, 318, 1, 318, 1, 318, 1, 319, 1, 319, 1, 319, 1, 319, 1, 319, 1, 320, 1, 320, 1, 320, 1, 320, 1, 320, 1, 320, 1, 320, 1, 320, 1, 320, 1, 320, 1, 321, 1, 321, 1, 321, 1, 321, 1, 321, 1, 321, 1, 321, 1, 322, 1, 322, 1, 322, 1, 322, 1, 322, 1, 322, 1, 322, 1, 323, 1, 323, 1, 323, 1, 323, 1, 323, 1, 323, 1, 323, 1, 324, 1, 324, 1, 324, 1, 324, 1, 324, 1, 324, 1, 324, 1, 325, 1, 325, 1, 325, 1, 325, 1, 325, 1, 325, 1, 325, 1, 325, 1, 325, 1, 326, 1, 326, 1, 326, 1, 326, 1, 326, 1, 326, 1, 326, 1, 326, 1, 326, 1, 327, 1, 327, 1, 327, 1, 327, 1, 327, 1, 327, 1, 327, 1, 327, 1, 327, 1, 327, 1, 328, 1, 328, 1, 328, 1, 328, 1, 328, 1, 328, 1, 328, 1, 328, 1, 328, 1, 328, 1, 328, 1, 328, 1, 328, 1, 329, 1, 329, 1, 329, 1, 329, 1, 329, 1, 329, 1, 329, 1, 330, 1, 330, 1, 330, 1, 330, 1, 330, 1, 330, 1, 330, 1, 330, 1, 331, 1, 331, 1, 331, 1, 331, 1, 332, 1, 332, 1, 332, 1, 332, 1, 332, 1, 332, 1, 333, 1, 333, 1, 333, 1, 333, 1, 333, 1, 334, 1, 334, 1, 334, 1, 334, 1, 334, 1, 334, 1, 334, 1, 335, 1, 335, 1, 335, 1, 335, 1, 335, 1, 335, 1, 335, 1, 335, 1, 335, 1, 336, 1, 336, 1, 336, 1, 336, 1, 336, 1, 336, 1, 336, 1, 337, 1, 337, 1, 337, 1, 337, 1, 337, 1, 337, 1, 337, 1, 337, 1, 337, 1, 337, 1, 337, 1, 338, 1, 338, 1, 338, 1, 338, 1, 338, 1, 338, 1, 339, 1, 339, 1, 339, 1, 339, 1, 339, 1, 339, 1, 339, 1, 339, 1, 339, 1, 339, 1, 340, 1, 340, 1, 340, 1, 340, 1, 340, 1, 340, 1, 340, 1, 340, 1, 340, 1, 340, 1, 340, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 342, 1, 342, 1, 342, 1, 342, 1, 342, 1, 342, 1, 342, 1, 343, 1, 343, 1, 343, 1, 343, 1, 343, 1, 343, 1, 343, 1, 343, 1, 344, 1, 344, 1, 344, 1, 344, 1, 344, 1, 344, 1, 344, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 346, 1, 346, 1, 346, 1, 346, 1, 346, 1, 346, 1, 347, 1, 347, 1, 347, 1, 347, 1, 347, 1, 347, 1, 347, 1, 348, 1, 348, 1, 348, 1, 348, 1, 348, 1, 348, 1, 348, 1, 349, 1, 349, 1, 349, 1, 349, 1, 349, 1, 349, 1, 349, 1, 349, 1, 349, 1, 349, 1, 349, 1, 350, 1, 350, 1, 350, 1, 350, 1, 350, 1, 351, 1, 351, 1, 351, 1, 351, 1, 351, 1, 351, 1, 351, 1, 351, 1, 351, 1, 352, 1, 352, 1, 352, 1, 352, 1, 352, 1, 352, 1, 352, 1, 352, 1, 352, 1, 352, 1, 353, 1, 353, 1, 353, 1, 353, 1, 353, 1, 354, 1, 354, 1, 354, 1, 354, 1, 354, 1, 354, 1, 354, 1, 354, 1, 354, 1, 354, 1, 354, 1, 354, 1, 355, 1, 355, 1, 355, 1, 355, 1, 355, 1, 355, 1, 355, 1, 355, 1, 356, 1, 356, 1, 356, 1, 356, 1, 356, 1, 356, 1, 356, 1, 356, 1, 356, 1, 357, 1, 357, 1, 357, 1, 357, 1, 357, 1, 357, 1, 357, 1, 357, 1, 358, 1, 358, 1, 358, 1, 358, 1, 358, 1, 359, 1, 359, 1, 359, 1, 359, 1, 359, 1, 359, 1, 360, 1, 360, 1, 360, 1, 360, 1, 360, 1, 360, 1, 360, 1, 360, 1, 360, 1, 360, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 362, 1, 362, 1, 362, 1, 362, 1, 362, 1, 362, 1, 362, 1, 362, 1, 362, 1, 362, 1, 362, 1, 362, 1, 363, 1, 363, 1, 363, 1, 363, 1, 363, 1, 363, 1, 363, 1, 363, 1, 364, 1, 364, 1, 364, 1, 364, 1, 364, 1, 364, 1, 364, 1, 364, 1, 364, 1, 365, 1, 365, 1, 365, 1, 365, 1, 365, 1, 365, 1, 365, 1, 365, 1, 365, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 367, 1, 367, 1, 367, 1, 367, 1, 367, 1, 367, 1, 367, 1, 368, 1, 368, 1, 368, 1, 368, 1, 368, 1, 368, 1, 368, 1, 369, 1, 369, 1, 369, 1, 369, 1, 369, 1, 369, 1, 370, 1, 370, 1, 370, 1, 370, 1, 370, 1, 370, 1, 370, 1, 370, 1, 370, 1, 371, 1, 371, 1, 371, 1, 371, 1, 371, 1, 371, 1, 371, 1, 371, 1, 371, 1, 371, 1, 372, 1, 372, 1, 372, 1, 372, 1, 372, 1, 372, 1, 372, 1, 372, 1, 373, 1, 373, 1, 373, 1, 373, 1, 373, 1, 373, 1, 373, 1, 373, 1, 374, 1, 374, 1, 374, 1, 374, 1, 374, 1, 375, 1, 375, 1, 375, 1, 375, 1, 375, 1, 375, 1, 375, 1, 375, 1, 375, 1, 376, 1, 376, 1, 376, 1, 376, 1, 376, 1, 376, 1, 376, 1, 376, 1, 376, 1, 376, 1, 376, 1, 377, 1, 377, 1, 377, 1, 377, 1, 377, 1, 377, 1, 377, 1, 377, 1, 378, 1, 378, 1, 378, 1, 378, 1, 378, 1, 379, 1, 379, 1, 379, 1, 379, 1, 379, 1, 379, 1, 379, 1, 379, 1, 380, 1, 380, 1, 380, 1, 380, 1, 380, 1, 380, 1, 381, 1, 381, 1, 381, 1, 381, 1, 382, 1, 382, 1, 382, 1, 382, 1, 382, 1, 383, 1, 383, 1, 383, 1, 383, 1, 384, 1, 384, 1, 384, 1, 384, 1, 384, 1, 385, 1, 385, 1, 385, 1, 385, 1, 385, 1, 385, 1, 385, 1, 385, 1, 386, 1, 386, 1, 386, 1, 386, 1, 386, 1, 386, 1, 386, 1, 387, 1, 387, 1, 387, 1, 387, 1, 388, 1, 388, 1, 388, 1, 388, 1, 388, 1, 388, 1, 388, 1, 388, 1, 389, 1, 389, 1, 389, 1, 389, 1, 389, 1, 390, 1, 390, 1, 390, 1, 390, 1, 390, 1, 390, 1, 390, 1, 390, 1, 390, 1, 390, 1, 391, 1, 391, 1, 391, 1, 391, 1, 391, 1, 391, 1, 391, 1, 391, 1, 391, 1, 392, 1, 392, 1, 392, 1, 392, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 394, 1, 394, 1, 394, 1, 394, 1, 394, 1, 394, 1, 394, 1, 395, 1, 395, 1, 395, 1, 395, 1, 395, 1, 395, 1, 395, 1, 395, 1, 396, 1, 396, 1, 396, 1, 396, 1, 396, 1, 396, 1, 397, 1, 397, 1, 397, 1, 397, 1, 397, 1, 397, 1, 397, 1, 397, 1, 397, 1, 398, 1, 398, 1, 398, 1, 398, 1, 398, 1, 398, 1, 399, 1, 399, 1, 399, 1, 399, 1, 400, 1, 400, 1, 400, 1, 400, 1, 400, 1, 400, 1, 400, 1, 400, 1, 401, 1, 401, 1, 401, 1, 401, 1, 401, 1, 401, 1, 401, 1, 401, 1, 401, 1, 402, 1, 402, 1, 402, 1, 402, 1, 402, 1, 402, 1, 403, 1, 403, 1, 403, 1, 403, 1, 403, 1, 403, 1, 403, 1, 403, 1, 403, 1, 404, 1, 404, 1, 404, 1, 404, 1, 404, 1, 404, 1, 405, 1, 405, 1, 405, 1, 405, 1, 405, 1, 406, 1, 406, 1, 406, 1, 406, 1, 406, 1, 406, 1, 406, 1, 407, 1, 407, 1, 407, 1, 407, 1, 407, 1, 407, 1, 407, 1, 407, 1, 408, 1, 408, 1, 408, 1, 408, 1, 408, 1, 408, 1, 408, 1, 408, 1, 409, 1, 409, 1, 409, 1, 409, 1, 409, 1, 409, 1, 409, 1, 409, 1, 409, 1, 410, 1, 410, 1, 410, 1, 410, 1, 410, 1, 410, 1, 410, 1, 410, 1, 410, 1, 410, 1, 411, 1, 411, 1, 411, 1, 411, 1, 411, 1, 412, 1, 412, 1, 412, 1, 412, 1, 413, 1, 413, 1, 413, 1, 413, 1, 413, 1, 413, 1, 414, 1, 414, 1, 414, 1, 414, 1, 414, 1, 414, 1, 414, 1, 414, 1, 414, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 416, 1, 416, 1, 416, 1, 416, 1, 416, 1, 417, 1, 417, 1, 417, 1, 417, 1, 417, 1, 417, 1, 417, 1, 417, 1, 417, 1, 417, 1, 418, 1, 418, 1, 418, 1, 418, 1, 418, 1, 418, 1, 419, 1, 419, 1, 419, 1, 419, 1, 419, 1, 420, 1, 420, 1, 420, 1, 420, 1, 420, 1, 420, 1, 420, 1, 421, 1, 421, 1, 421, 1, 421, 1, 421, 1, 421, 1, 421, 1, 421, 1, 422, 1, 422, 1, 422, 1, 422, 1, 422, 1, 422, 1, 422, 1, 422, 1, 422, 1, 422, 1, 422, 1, 422, 1, 422, 1, 422, 1, 423, 1, 423, 1, 423, 1, 423, 1, 423, 1, 423, 1, 423, 1, 423, 1, 423, 1, 423, 1, 423, 1, 424, 1, 424, 1, 424, 1, 424, 1, 424, 1, 424, 1, 424, 1, 425, 1, 425, 1, 425, 1, 425, 1, 425, 1, 425, 1, 425, 1, 425, 1, 425, 1, 425, 1, 425, 1, 425, 1, 425, 1, 425, 1, 425, 1, 425, 1, 425, 1, 425, 1, 425, 1, 426, 1, 426, 1, 426, 1, 426, 1, 426, 1, 426, 1, 426, 1, 426, 1, 426, 1, 426, 1, 426, 1, 426, 1, 426, 1, 426, 1, 426, 1, 426, 1, 426, 1, 426, 1, 426, 1, 426, 1, 426, 1, 426, 1, 426, 1, 426, 1, 426, 1, 426, 1, 426, 1, 426, 1, 427, 1, 427, 1, 427, 1, 427, 1, 427, 1, 427, 1, 427, 1, 427, 1, 427, 1, 427, 1, 427, 1, 427, 1, 427, 1, 427, 1, 427, 1, 427, 1, 427, 1, 427, 1, 427, 1, 427, 1, 427, 1, 427, 1, 427, 1, 427, 1, 427, 1, 427, 1, 427, 1, 428, 1, 428, 1, 428, 1, 428, 1, 428, 1, 428, 1, 429, 1, 429, 1, 429, 1, 429, 1, 429, 1, 429, 1, 429, 1, 429, 1, 429, 1, 429, 1, 429, 1, 429, 1, 429, 1, 430, 1, 430, 1, 430, 1, 430, 1, 430, 1, 430, 1, 430, 1, 430, 1, 430, 1, 430, 1, 431, 1, 431, 1, 431, 1, 431, 1, 431, 1, 431, 1, 431, 1, 431, 1, 431, 1, 431, 1, 431, 1, 432, 1, 432, 1, 432, 1, 432, 1, 432, 1, 432, 1, 432, 1, 432, 1, 432, 1, 432, 1, 433, 1, 433, 1, 433, 1, 433, 1, 433, 1, 433, 1, 433, 1, 433, 1, 433, 1, 433, 1, 434, 1, 434, 1, 434, 1, 434, 1, 434, 1, 434, 1, 434, 1, 434, 1, 434, 1, 435, 1, 435, 1, 435, 1, 435, 1, 435, 1, 435, 1, 436, 1, 436, 1, 436, 1, 436, 1, 436, 1, 436, 1, 436, 1, 436, 1, 437, 1, 437, 1, 437, 1, 437, 1, 437, 1, 437, 1, 437, 1, 437, 1, 437, 1, 437, 1, 437, 1, 437, 1, 437, 1, 438, 1, 438, 1, 438, 1, 438, 1, 438, 1, 439, 1, 439, 1, 439, 1, 439, 1, 439, 1, 439, 1, 439, 1, 439, 1, 440, 1, 440, 1, 440, 1, 440, 1, 440, 1, 440, 1, 440, 1, 441, 1, 441, 1, 441, 1, 441, 1, 441, 1, 441, 1, 441, 1, 442, 1, 442, 1, 442, 1, 442, 1, 442, 1, 442, 1, 442, 1, 442, 1, 442, 1, 442, 1, 442, 1, 443, 1, 443, 1, 443, 1, 443, 1, 443, 1, 443, 1, 443, 1, 443, 1, 443, 1, 443, 1, 444, 1, 444, 1, 444, 1, 444, 1, 444, 1, 444, 1, 444, 1, 445, 1, 445, 1, 445, 1, 445, 1, 445, 1, 445, 1, 445, 1, 446, 1, 446, 1, 446, 1, 446, 1, 446, 1, 446, 1, 446, 1, 446, 1, 447, 1, 447, 1, 447, 1, 447, 1, 447, 1, 447, 1, 447, 1, 447, 1, 448, 1, 448, 1, 448, 1, 448, 1, 448, 1, 448, 1, 448, 1, 448, 1, 448, 1, 448, 1, 449, 1, 449, 1, 449, 1, 449, 1, 449, 1, 449, 1, 449, 1, 450, 1, 450, 1, 450, 1, 450, 1, 450, 1, 450, 1, 450, 1, 451, 1, 451, 1, 451, 1, 451, 1, 451, 1, 451, 1, 451, 1, 452, 1, 452, 1, 452, 1, 452, 1, 452, 1, 452, 1, 452, 1, 452, 1, 452, 1, 452, 1, 452, 1, 452, 1, 453, 1, 453, 1, 453, 1, 453, 1, 454, 1, 454, 1, 454, 1, 454, 1, 455, 1, 455, 1, 455, 1, 455, 1, 455, 1, 455, 1, 456, 1, 456, 1, 456, 1, 456, 1, 456, 1, 456, 1, 456, 1, 456, 1, 456, 1, 456, 1, 456, 1, 456, 1, 456, 1, 457, 1, 457, 1, 457, 1, 457, 1, 457, 1, 457, 1, 457, 1, 457, 1, 457, 1, 457, 1, 457, 1, 457, 1, 458, 1, 458, 1, 458, 1, 458, 1, 459, 1, 459, 1, 459, 1, 459, 1, 460, 1, 460, 1, 460, 1, 460, 1, 460, 1, 460, 1, 460, 1, 460, 1, 460, 1, 461, 1, 461, 1, 461, 1, 461, 1, 461, 1, 461, 1, 461, 1, 461, 1, 462, 1, 462, 1, 462, 1, 462, 1, 462, 1, 462, 1, 462, 1, 462, 1, 462, 1, 462, 1, 462, 1, 463, 1, 463, 1, 463, 1, 463, 1, 463, 1, 463, 1, 464, 1, 464, 1, 464, 1, 464, 1, 464, 1, 464, 1, 464, 1, 464, 1, 465, 1, 465, 1, 465, 1, 465, 1, 465, 1, 465, 1, 465, 1, 465, 1, 465, 1, 466, 1, 466, 1, 466, 1, 466, 1, 467, 1, 467, 1, 467, 1, 467, 1, 467, 1, 467, 1, 467, 1, 467, 1, 468, 1, 468, 1, 468, 1, 468, 1, 468, 1, 468, 1, 468, 1, 468, 1, 468, 1, 468, 1, 468, 1, 469, 1, 469, 1, 469, 1, 469, 1, 469, 1, 469, 1, 469, 1, 469, 1, 469, 1, 470, 1, 470, 1, 470, 1, 470, 1, 470, 1, 471, 1, 471, 1, 471, 1, 471, 1, 471, 1, 471, 1, 471, 1, 472, 1, 472, 1, 472, 1, 472, 1, 472, 1, 473, 1, 473, 1, 473, 1, 473, 1, 473, 1, 473, 1, 473, 1, 474, 1, 474, 1, 474, 1, 474, 1, 474, 1, 475, 1, 475, 1, 475, 1, 475, 1, 475, 1, 475, 1, 475, 1, 475, 1, 475, 1, 476, 1, 476, 1, 476, 1, 476, 1, 476, 1, 477, 1, 477, 1, 477, 1, 477, 1, 477, 1, 477, 1, 477, 1, 477, 1, 477, 1, 477, 1, 477, 1, 477, 1, 478, 1, 478, 1, 478, 1, 478, 1, 478, 1, 478, 1, 478, 1, 478, 1, 478, 1, 478, 1, 478, 1, 479, 1, 479, 1, 479, 1, 479, 1, 479, 1, 479, 1, 479, 1, 479, 1, 479, 1, 480, 1, 480, 1, 480, 1, 480, 1, 480, 1, 480, 1, 480, 1, 480, 1, 481, 1, 481, 1, 481, 1, 481, 1, 481, 1, 481, 1, 481, 1, 481, 1, 481, 1, 481, 1, 481, 1, 481, 1, 481, 1, 481, 1, 482, 1, 482, 1, 482, 1, 482, 1, 482, 1, 482, 1, 482, 1, 482, 1, 483, 1, 483, 1, 483, 1, 483, 1, 483, 1, 483, 1, 483, 1, 483, 1, 483, 1, 483, 1, 483, 1, 484, 1, 484, 1, 484, 1, 484, 1, 484, 1, 484, 1, 484, 1, 485, 1, 485, 1, 485, 1, 485, 1, 485, 1, 485, 1, 485, 1, 486, 1, 486, 1, 486, 1, 486, 1, 486, 1, 486, 1, 486, 1, 487, 1, 487, 1, 487, 1, 487, 1, 487, 1, 487, 1, 487, 1, 488, 1, 488, 1, 488, 1, 488, 1, 489, 1, 489, 1, 489, 1, 489, 1, 490, 1, 490, 1, 490, 1, 490, 1, 490, 1, 491, 1, 491, 1, 491, 1, 491, 1, 491, 1, 492, 1, 492, 1, 492, 1, 492, 1, 492, 1, 492, 1, 492, 1, 492, 1, 493, 1, 493, 1, 493, 1, 493, 1, 493, 1, 493, 1, 494, 1, 494, 1, 494, 1, 494, 1, 494, 1, 494, 1, 494, 1, 494, 1, 494, 1, 494, 1, 495, 1, 495, 1, 495, 1, 495, 1, 495, 1, 496, 1, 496, 1, 496, 1, 496, 1, 496, 1, 496, 1, 496, 1, 496, 1, 496, 1, 496, 1, 496, 1, 496, 1, 496, 1, 496, 1, 496, 1, 496, 1, 496, 1, 496, 1, 496, 1, 496, 1, 497, 1, 497, 1, 497, 1, 497, 1, 497, 1, 497, 1, 497, 1, 497, 1, 497, 1, 497, 1, 497, 1, 497, 1, 497, 1, 497, 1, 497, 1, 497, 1, 497, 1, 497, 1, 498, 1, 498, 1, 498, 1, 498, 1, 498, 1, 498, 1, 499, 1, 499, 1, 499, 1, 499, 1, 499, 1, 499, 1, 499, 1, 499, 1, 499, 1, 499, 1, 499, 1, 499, 1, 499, 1, 500, 1, 500, 1, 500, 1, 500, 1, 500, 1, 500, 1, 500, 1, 500, 1, 500, 1, 500, 1, 500, 1, 501, 1, 501, 1, 501, 1, 501, 1, 501, 1, 501, 1, 502, 1, 502, 1, 502, 1, 502, 1, 502, 1, 502, 1, 502, 1, 502, 1, 502, 1, 503, 1, 503, 1, 503, 1, 503, 1, 503, 1, 503, 1, 503, 1, 503, 1, 504, 1, 504, 1, 504, 1, 504, 1, 505, 1, 505, 1, 505, 1, 505, 1, 505, 1, 505, 1, 505, 1, 505, 1, 505, 1, 505, 1, 505, 1, 505, 1, 506, 1, 506, 1, 506, 1, 506, 1, 506, 1, 506, 1, 506, 1, 506, 1, 507, 1, 507, 1, 507, 1, 507, 1, 507, 1, 507, 1, 508, 1, 508, 1, 508, 1, 508, 1, 508, 1, 508, 1, 509, 1, 509, 1, 509, 1, 509, 1, 509, 1, 509, 1, 509, 1, 509, 1, 510, 1, 510, 1, 510, 1, 510, 1, 510, 1, 510, 1, 510, 1, 510, 1, 511, 1, 511, 1, 511, 1, 511, 1, 511, 1, 511, 1, 512, 1, 512, 1, 512, 1, 512, 1, 512, 1, 513, 1, 513, 1, 513, 1, 513, 1, 513, 1, 513, 1, 513, 1, 514, 1, 514, 1, 514, 1, 514, 1, 514, 1, 514, 1, 515, 1, 515, 1, 515, 1, 515, 1, 515, 1, 515, 1, 516, 1, 516, 1, 516, 1, 516, 1, 516, 1, 516, 1, 516, 1, 516, 1, 516, 1, 517, 1, 517, 1, 517, 1, 517, 1, 517, 1, 517, 1, 518, 1, 518, 1, 518, 1, 518, 1, 519, 1, 519, 1, 519, 1, 519, 1, 519, 1, 520, 1, 520, 1, 520, 1, 520, 1, 520, 1, 520, 1, 520, 1, 521, 1, 521, 1, 521, 1, 521, 1, 521, 1, 521, 1, 521, 1, 521, 1, 522, 1, 522, 1, 522, 1, 522, 1, 522, 1, 522, 1, 522, 1, 522, 1, 522, 1, 522, 1, 523, 1, 523, 1, 523, 1, 523, 1, 523, 1, 523, 1, 523, 1, 524, 1, 524, 1, 524, 1, 524, 1, 524, 1, 525, 1, 525, 1, 525, 1, 525, 1, 525, 1, 526, 1, 526, 1, 526, 1, 526, 1, 527, 1, 527, 1, 527, 1, 527, 1, 527, 1, 528, 1, 528, 1, 528, 1, 528, 1, 528, 1, 529, 1, 529, 1, 529, 1, 529, 1, 529, 1, 529, 1, 529, 1, 529, 1, 530, 1, 530, 1, 530, 1, 530, 1, 530, 1, 530, 1, 530, 1, 530, 1, 531, 1, 531, 1, 531, 1, 531, 1, 532, 1, 532, 1, 532, 1, 532, 1, 533, 1, 533, 1, 533, 1, 533, 1, 533, 1, 533, 1, 533, 1, 533, 1, 533, 1, 533, 1, 534, 1, 534, 1, 534, 1, 534, 1, 534, 1, 534, 1, 535, 1, 535, 1, 535, 1, 535, 1, 536, 1, 536, 1, 536, 1, 536, 1, 537, 1, 537, 1, 537, 1, 538, 1, 538, 1, 538, 1, 538, 1, 538, 1, 538, 1, 539, 1, 539, 1, 539, 1, 539, 1, 539, 1, 539, 1, 539, 1, 539, 1, 539, 1, 539, 1, 540, 1, 540, 1, 540, 1, 540, 1, 541, 1, 541, 1, 541, 1, 542, 1, 542, 1, 542, 1, 542, 1, 542, 1, 542, 1, 543, 1, 543, 1, 543, 1, 543, 1, 543, 1, 543, 1, 543, 1, 543, 1, 544, 1, 544, 1, 544, 1, 544, 1, 544, 1, 544, 1, 545, 1, 545, 1, 545, 1, 545, 1, 545, 1, 545, 1, 546, 1, 546, 1, 546, 1, 546, 1, 546, 1, 547, 1, 547, 1, 547, 1, 547, 1, 547, 1, 548, 1, 548, 1, 548, 1, 548, 1, 548, 1, 548, 1, 548, 1, 548, 1, 548, 1, 548, 1, 548, 1, 549, 1, 549, 1, 549, 1, 549, 1, 549, 1, 549, 1, 550, 1, 550, 1, 550, 1, 550, 1, 550, 1, 550, 1, 550, 1, 550, 1, 550, 1, 550, 1, 550, 1, 550, 1, 550, 1, 551, 1, 551, 1, 551, 1, 551, 1, 551, 1, 551, 1, 551, 1, 552, 1, 552, 1, 552, 1, 552, 1, 552, 1, 552, 1, 552, 1, 552, 1, 553, 1, 553, 1, 553, 1, 553, 1, 553, 1, 554, 1, 554, 1, 554, 1, 554, 1, 554, 1, 554, 1, 555, 1, 555, 1, 555, 1, 555, 1, 555, 1, 556, 1, 556, 1, 556, 1, 556, 1, 556, 1, 556, 1, 557, 1, 557, 1, 557, 1, 557, 1, 557, 1, 558, 1, 558, 1, 558, 1, 558, 1, 558, 1, 558, 1, 559, 1, 559, 1, 559, 1, 559, 1, 559, 1, 559, 1, 560, 1, 560, 1, 560, 1, 560, 1, 560, 1, 560, 1, 560, 1, 561, 1, 561, 1, 561, 1, 561, 1, 562, 1, 562, 1, 562, 1, 562, 1, 562, 1, 563, 1, 563, 1, 563, 1, 563, 1, 564, 1, 564, 1, 564, 1, 564, 1, 564, 1, 565, 1, 565, 1, 565, 1, 565, 1, 566, 1, 566, 1, 566, 1, 566, 1, 566, 1, 567, 1, 567, 1, 567, 1, 567, 1, 568, 1, 568, 1, 568, 1, 568, 1, 568, 1, 569, 1, 569, 1, 569, 1, 569, 1, 569, 1, 570, 1, 570, 1, 570, 1, 570, 1, 570, 1, 571, 1, 571, 1, 571, 1, 571, 1, 571, 1, 572, 1, 572, 1, 572, 1, 572, 1, 572, 1, 572, 1, 573, 1, 573, 1, 573, 1, 573, 1, 573, 1, 573, 1, 574, 1, 574, 1, 574, 1, 574, 1, 574, 1, 574, 1, 575, 1, 575, 1, 575, 1, 575, 1, 575, 1, 575, 1, 575, 1, 575, 1, 575, 1, 575, 1, 575, 1, 576, 1, 576, 1, 576, 1, 576, 1, 576, 1, 576, 1, 576, 1, 576, 1, 576, 1, 576, 1, 576, 1, 576, 1, 577, 1, 577, 1, 577, 1, 577, 1, 577, 1, 577, 1, 577, 1, 577, 1, 577, 1, 577, 1, 577, 1, 577, 1, 577, 1, 577, 1, 577, 1, 577, 1, 577, 1, 578, 1, 578, 1, 578, 1, 578, 1, 578, 1, 578, 1, 579, 1, 579, 1, 579, 1, 579, 1, 579, 1, 579, 1, 579, 1, 579, 1, 579, 1, 579, 1, 579, 1, 579, 1, 579, 1, 580, 1, 580, 1, 580, 1, 580, 1, 580, 1, 580, 1, 581, 1, 581, 1, 581, 1, 581, 1, 581, 1, 581, 1, 582, 1, 582, 1, 582, 1, 582, 1, 582, 1, 582, 1, 583, 1, 583, 1, 583, 1, 583, 1, 584, 1, 584, 1, 584, 1, 584, 1, 584, 1, 584, 1, 584, 1, 585, 1, 585, 1, 585, 1, 585, 1, 585, 1, 585, 1, 585, 1, 585, 1, 585, 1, 585, 1, 586, 1, 586, 1, 586, 1, 586, 1, 586, 1, 586, 1, 586, 1, 587, 1, 587, 1, 587, 1, 587, 1, 587, 1, 587, 1, 587, 1, 587, 1, 588, 1, 588, 1, 588, 1, 588, 1, 588, 1, 588, 1, 588, 1, 589, 1, 589, 1, 589, 1, 589, 1, 589, 1, 590, 1, 590, 1, 590, 1, 590, 1, 590, 1, 590, 1, 591, 1, 591, 1, 591, 1, 591, 1, 592, 1, 592, 1, 592, 1, 592, 1, 592, 1, 592, 1, 592, 1, 592, 1, 592, 1, 592, 1, 592, 1, 592, 1, 593, 1, 593, 1, 593, 1, 593, 1, 593, 1, 593, 1, 593, 1, 593, 1, 593, 1, 593, 1, 593, 1, 593, 1, 593, 1, 593, 1, 593, 1, 593, 1, 593, 1, 593, 1, 593, 1, 594, 1, 594, 1, 594, 1, 594, 1, 594, 1, 594, 1, 594, 1, 594, 1, 594, 1, 594, 1, 594, 1, 594, 1, 595, 1, 595, 1, 595, 1, 595, 1, 595, 1, 595, 1, 595, 1, 595, 1, 595, 1, 595, 1, 595, 1, 595, 1, 595, 1, 595, 1, 596, 1, 596, 1, 596, 1, 596, 1, 596, 1, 596, 1, 596, 1, 596, 1, 596, 1, 596, 1, 596, 1, 596, 1, 596, 1, 596, 1, 596, 1, 597, 1, 597, 1, 597, 1, 597, 1, 597, 1, 597, 1, 597, 1, 597, 1, 597, 1, 597, 1, 597, 1, 597, 1, 597, 1, 598, 1, 598, 1, 598, 1, 598, 1, 598, 1, 598, 1, 598, 1, 598, 1, 598, 1, 598, 1, 598, 1, 598, 1, 598, 1, 599, 1, 599, 1, 599, 1, 599, 1, 599, 1, 599, 1, 599, 1, 599, 1, 599, 1, 599, 1, 599, 1, 599, 1, 600, 1, 600, 1, 600, 1, 600, 1, 600, 1, 600, 1, 600, 1, 600, 1, 600, 1, 600, 1, 600, 1, 600, 1, 600, 1, 601, 1, 601, 1, 601, 1, 601, 1, 601, 1, 601, 1, 601, 1, 601, 1, 601, 1, 601, 1, 601, 1, 601, 1, 601, 1, 601, 1, 601, 1, 602, 1, 602, 1, 602, 1, 602, 1, 602, 1, 602, 1, 602, 1, 602, 1, 602, 1, 602, 1, 602, 1, 602, 1, 602, 1, 602, 1, 602, 1, 603, 1, 603, 1, 603, 1, 603, 1, 603, 1, 603, 1, 603, 1, 603, 1, 603, 1, 603, 1, 603, 1, 603, 1, 603, 1, 603, 1, 603, 1, 603, 1, 603, 1, 603, 1, 603, 1, 603, 1, 603, 1, 603, 1, 604, 1, 604, 1, 604, 1, 604, 1, 604, 1, 604, 1, 604, 1, 604, 1, 604, 1, 604, 1, 604, 1, 604, 1, 604, 1, 604, 1, 604, 1, 604, 1, 604, 1, 604, 1, 604, 1, 604, 1, 604, 1, 604, 1, 605, 1, 605, 1, 605, 1, 605, 1, 605, 1, 605, 1, 605, 1, 605, 1, 605, 1, 605, 1, 605, 1, 605, 1, 605, 1, 605, 1, 606, 1, 606, 1, 606, 1, 606, 1, 606, 1, 606, 1, 606, 1, 607, 1, 607, 1, 607, 1, 607, 1, 607, 1, 608, 1, 608, 1, 608, 1, 608, 1, 608, 1, 608, 1, 609, 1, 609, 1, 609, 1, 609, 1, 609, 1, 609, 1, 609, 1, 609, 1, 609, 1, 609, 1, 609, 1, 610, 1, 610, 1, 610, 1, 610, 1, 610, 1, 610, 1, 610, 1, 610, 1, 610, 1, 610, 1, 610, 1, 610, 1, 611, 1, 611, 1, 611, 1, 611, 1, 611, 1, 611, 1, 611, 1, 611, 1, 611, 1, 611, 1, 611, 1, 611, 1, 611, 1, 611, 1, 611, 1, 611, 1, 612, 1, 612, 1, 612, 1, 612, 1, 612, 1, 612, 1, 612, 1, 612, 1, 612, 1, 612, 1, 612, 1, 612, 1, 612, 1, 612, 1, 612, 1, 612, 1, 613, 1, 613, 1, 613, 1, 613, 1, 613, 1, 613, 1, 613, 1, 614, 1, 614, 1, 614, 1, 614, 1, 614, 1, 614, 1, 614, 1, 615, 1, 615, 1, 615, 1, 615, 1, 615, 1, 615, 1, 615, 1, 615, 1, 615, 1, 616, 1, 616, 1, 616, 1, 616, 1, 616, 1, 616, 1, 616, 1, 617, 1, 617, 1, 617, 1, 617, 1, 617, 1, 617, 1, 617, 1, 617, 1, 617, 1, 617, 1, 618, 1, 618, 1, 618, 1, 618, 1, 618, 1, 618, 1, 618, 1, 619, 1, 619, 1, 619, 1, 619, 1, 620, 1, 620, 1, 620, 1, 620, 1, 620, 1, 620, 1, 620, 1, 620, 1, 620, 1, 620, 1, 620, 1, 620, 1, 620, 1, 620, 1, 620, 1, 620, 1, 621, 1, 621, 1, 621, 1, 621, 1, 621, 1, 621, 1, 621, 1, 621, 1, 621, 1, 622, 1, 622, 1, 622, 1, 622, 1, 622, 1, 622, 1, 622, 1, 622, 1, 622, 1, 622, 1, 623, 1, 623, 1, 623, 1, 623, 1, 623, 1, 623, 1, 623, 1, 623, 1, 623, 1, 623, 1, 623, 1, 624, 1, 624, 1, 624, 1, 624, 1, 624, 1, 624, 1, 624, 1, 624, 1, 624, 1, 625, 1, 625, 1, 625, 1, 625, 1, 625, 1, 625, 1, 625, 1, 625, 1, 625, 1, 625, 1, 625, 1, 625, 1, 625, 1, 626, 1, 626, 1, 626, 1, 626, 1, 626, 1, 626, 1, 626, 1, 626, 1, 626, 1, 626, 1, 626, 1, 626, 1, 626, 1, 626, 1, 627, 1, 627, 1, 627, 1, 627, 1, 627, 1, 627, 1, 627, 1, 627, 1, 627, 1, 627, 1, 627, 1, 627, 1, 627, 1, 627, 1, 627, 1, 627, 1, 627, 1, 628, 1, 628, 1, 628, 1, 628, 1, 628, 1, 628, 1, 628, 1, 628, 1, 628, 1, 628, 1, 629, 1, 629, 1, 629, 1, 629, 1, 629, 1, 629, 1, 629, 1, 629, 1, 629, 1, 629, 1, 629, 1, 629, 1, 629, 1, 629, 1, 630, 1, 630, 1, 630, 1, 630, 1, 630, 1, 630, 1, 630, 1, 630, 1, 630, 1, 630, 1, 631, 1, 631, 1, 631, 1, 631, 1, 631, 1, 631, 1, 631, 1, 631, 1, 631, 1, 631, 1, 631, 1, 631, 1, 631, 1, 631, 1, 631, 1, 632, 1, 632, 1, 632, 1, 632, 1, 632, 1, 632, 1, 632, 1, 632, 1, 632, 1, 632, 1, 632, 1, 632, 1, 632, 1, 632, 1, 632, 1, 632, 1, 632, 1, 633, 1, 633, 1, 633, 1, 633, 1, 634, 1, 634, 1, 634, 1, 634, 1, 634, 1, 634, 1, 634, 1, 634, 1, 634, 1, 634, 1, 634, 1, 634, 1, 634, 1, 634, 1, 634, 1, 634, 1, 634, 1, 634, 1, 634, 1, 634, 1, 635, 1, 635, 1, 635, 1, 635, 1, 635, 1, 635, 1, 635, 1, 635, 1, 635, 1, 635, 1, 636, 1, 636, 1, 636, 1, 636, 1, 636, 1, 636, 1, 636, 1, 636, 1, 636, 1, 636, 1, 636, 1, 636, 1, 636, 1, 636, 1, 636, 1, 636, 1, 636, 1, 636, 1, 636, 1, 636, 1, 636, 1, 636, 1, 637, 1, 637, 1, 637, 1, 637, 1, 637, 1, 637, 1, 637, 1, 637, 1, 637, 1, 637, 1, 637, 1, 637, 1, 637, 1, 638, 1, 638, 1, 638, 1, 638, 1, 638, 1, 638, 1, 638, 1, 638, 1, 639, 1, 639, 1, 639, 1, 639, 1, 639, 1, 639, 1, 639, 1, 639, 1, 640, 1, 640, 1, 640, 1, 640, 1, 640, 1, 640, 1, 640, 1, 640, 1, 640, 1, 640, 1, 641, 1, 641, 5, 641, 6340, 8, 641, 10, 641, 12, 641, 6343, 9, 641, 1, 642, 1, 642, 1, 642, 1, 642, 1, 642, 1, 642, 3, 642, 6351, 8, 642, 1, 643, 1, 643, 3, 643, 6355, 8, 643, 1, 644, 1, 644, 3, 644, 6359, 8, 644, 1, 645, 1, 645, 1, 645, 1, 646, 1, 646, 1, 646, 1, 646, 5, 646, 6368, 8, 646, 10, 646, 12, 646, 6371, 9, 646, 1, 647, 1, 647, 1, 647, 1, 648, 1, 648, 1, 648, 1, 648, 5, 648, 6380, 8, 648, 10, 648, 12, 648, 6383, 9, 648, 1, 649, 1, 649, 1, 649, 1, 649, 1, 650, 1, 650, 1, 650, 1, 650, 1, 651, 1, 651, 1, 651, 1, 651, 1, 652, 1, 652, 1, 652, 1, 652, 1, 653, 1, 653, 1, 653, 1, 654, 1, 654, 1, 654, 1, 654, 5, 654, 6408, 8, 654, 10, 654, 12, 654, 6411, 9, 654, 1, 655, 1, 655, 1, 655, 1, 655, 1, 655, 1, 655, 1, 656, 1, 656, 1, 656, 1, 657, 1, 657, 1, 657, 1, 657, 1, 658, 1, 658, 3, 658, 6428, 8, 658, 1, 658, 1, 658, 1, 658, 1, 658, 1, 658, 1, 659, 1, 659, 5, 659, 6437, 8, 659, 10, 659, 12, 659, 6440, 9, 659, 1, 660, 1, 660, 1, 660, 1, 661, 1, 661, 1, 661, 5, 661, 6448, 8, 661, 10, 661, 12, 661, 6451, 9, 661, 1, 662, 1, 662, 1, 662, 1, 663, 1, 663, 1, 663, 1, 664, 1, 664, 1, 664, 1, 665, 1, 665, 1, 665, 5, 665, 6465, 8, 665, 10, 665, 12, 665, 6468, 9, 665, 1, 666, 1, 666, 1, 666, 1, 667, 1, 667, 1, 667, 1, 668, 1, 668, 1, 669, 1, 669, 1, 669, 1, 669, 1, 669, 1, 669, 1, 670, 1, 670, 1, 670, 3, 670, 6487, 8, 670, 1, 670, 1, 670, 3, 670, 6491, 8, 670, 1, 670, 3, 670, 6494, 8, 670, 1, 670, 1, 670, 1, 670, 1, 670, 3, 670, 6500, 8, 670, 1, 670, 3, 670, 6503, 8, 670, 1, 670, 1, 670, 1, 670, 3, 670, 6508, 8, 670, 1, 670, 1, 670, 3, 670, 6512, 8, 670, 1, 671, 4, 671, 6515, 8, 671, 11, 671, 12, 671, 6516, 1, 672, 1, 672, 1, 672, 5, 672, 6522, 8, 672, 10, 672, 12, 672, 6525, 9, 672, 1, 673, 1, 673, 1, 673, 1, 673, 1, 673, 1, 673, 1, 673, 1, 673, 5, 673, 6535, 8, 673, 10, 673, 12, 673, 6538, 9, 673, 1, 673, 1, 673, 1, 674, 4, 674, 6543, 8, 674, 11, 674, 12, 674, 6544, 1, 674, 1, 674, 1, 675, 1, 675, 3, 675, 6551, 8, 675, 1, 675, 3, 675, 6554, 8, 675, 1, 675, 1, 675, 1, 676, 1, 676, 1, 676, 1, 676, 5, 676, 6562, 8, 676, 10, 676, 12, 676, 6565, 9, 676, 1, 676, 1, 676, 1, 677, 1, 677, 1, 677, 1, 677, 5, 677, 6573, 8, 677, 10, 677, 12, 677, 6576, 9, 677, 1, 677, 1, 677, 1, 677, 4, 677, 6581, 8, 677, 11, 677, 12, 677, 6582, 1, 677, 1, 677, 4, 677, 6587, 8, 677, 11, 677, 12, 677, 6588, 1, 677, 5, 677, 6592, 8, 677, 10, 677, 12, 677, 6595, 9, 677, 1, 677, 5, 677, 6598, 8, 677, 10, 677, 12, 677, 6601, 9, 677, 1, 677, 1, 677, 1, 677, 1, 677, 1, 677, 1, 678, 1, 678, 1, 678, 1, 678, 5, 678, 6612, 8, 678, 10, 678, 12, 678, 6615, 9, 678, 1, 678, 1, 678, 1, 678, 4, 678, 6620, 8, 678, 11, 678, 12, 678, 6621, 1, 678, 1, 678, 4, 678, 6626, 8, 678, 11, 678, 12, 678, 6627, 1, 678, 3, 678, 6631, 8, 678, 5, 678, 6633, 8, 678, 10, 678, 12, 678, 6636, 9, 678, 1, 678, 4, 678, 6639, 8, 678, 11, 678, 12, 678, 6640, 1, 678, 4, 678, 6644, 8, 678, 11, 678, 12, 678, 6645, 1, 678, 5, 678, 6649, 8, 678, 10, 678, 12, 678, 6652, 9, 678, 1, 678, 3, 678, 6655, 8, 678, 1, 678, 1, 678, 1, 679, 1, 679, 1, 679, 1, 679, 5, 679, 6663, 8, 679, 10, 679, 12, 679, 6666, 9, 679, 1, 679, 5, 679, 6669, 8, 679, 10, 679, 12, 679, 6672, 9, 679, 1, 679, 1, 679, 5, 679, 6676, 8, 679, 10, 679, 12, 679, 6679, 9, 679, 3, 679, 6681, 8, 679, 1, 680, 1, 680, 1, 680, 1, 681, 1, 681, 1, 682, 1, 682, 1, 682, 1, 682, 1, 682, 1, 683, 1, 683, 3, 683, 6695, 8, 683, 1, 683, 1, 683, 1, 684, 1, 684, 1, 684, 1, 684, 1, 684, 1, 684, 1, 684, 1, 684, 1, 684, 1, 684, 1, 684, 1, 684, 1, 684, 1, 684, 1, 684, 1, 684, 1, 684, 1, 684, 1, 684, 1, 684, 3, 684, 6719, 8, 684, 1, 684, 5, 684, 6722, 8, 684, 10, 684, 12, 684, 6725, 9, 684, 1, 685, 1, 685, 1, 685, 1, 685, 1, 685, 1, 686, 1, 686, 3, 686, 6734, 8, 686, 1, 686, 1, 686, 1, 687, 1, 687, 1, 687, 1, 687, 1, 687, 5, 687, 6743, 8, 687, 10, 687, 12, 687, 6746, 9, 687, 1, 688, 1, 688, 1, 688, 1, 688, 1, 688, 1, 689, 1, 689, 1, 689, 1, 689, 1, 689, 1, 689, 1, 690, 1, 690, 1, 690, 1, 690, 1, 690, 1, 691, 1, 691, 1, 691, 1, 691, 1, 691, 1, 692, 1, 692, 1, 692, 1, 692, 1, 692, 1, 693, 1, 693, 1, 693, 1, 693, 1, 693, 1, 694, 1, 694, 1, 694, 1, 694, 1, 694, 1, 695, 4, 695, 6785, 8, 695, 11, 695, 12, 695, 6786, 1, 695, 1, 695, 5, 695, 6791, 8, 695, 10, 695, 12, 695, 6794, 9, 695, 3, 695, 6796, 8, 695, 1, 696, 1, 696, 3, 696, 6800, 8, 696, 1, 696, 1, 696, 1, 696, 1, 696, 1, 696, 1, 696, 1, 696, 0, 0, 697, 5, 1, 7, 2, 9, 3, 11, 4, 13, 5, 15, 6, 17, 7, 19, 8, 21, 9, 23, 10, 25, 11, 27, 12, 29, 13, 31, 14, 33, 15, 35, 16, 37, 17, 39, 18, 41, 19, 43, 20, 45, 21, 47, 22, 49, 23, 51, 24, 53, 25, 55, 26, 57, 27, 59, 28, 61, 29, 63, 0, 65, 0, 67, 0, 69, 0, 71, 30, 73, 31, 75, 32, 77, 33, 79, 34, 81, 35, 83, 36, 85, 37, 87, 38, 89, 39, 91, 40, 93, 41, 95, 42, 97, 43, 99, 44, 101, 45, 103, 46, 105, 47, 107, 48, 109, 49, 111, 50, 113, 51, 115, 52, 117, 53, 119, 54, 121, 55, 123, 56, 125, 57, 127, 58, 129, 59, 131, 60, 133, 61, 135, 62, 137, 63, 139, 64, 141, 65, 143, 66, 145, 67, 147, 68, 149, 69, 151, 70, 153, 71, 155, 72, 157, 73, 159, 74, 161, 75, 163, 76, 165, 77, 167, 78, 169, 79, 171, 80, 173, 81, 175, 82, 177, 83, 179, 84, 181, 85, 183, 86, 185, 87, 187, 88, 189, 89, 191, 90, 193, 91, 195, 92, 197, 93, 199, 94, 201, 95, 203, 96, 205, 97, 207, 98, 209, 99, 211, 100, 213, 101, 215, 102, 217, 103, 219, 104, 221, 105, 223, 106, 225, 107, 227, 108, 229, 109, 231, 110, 233, 111, 235, 112, 237, 113, 239, 114, 241, 115, 243, 116, 245, 117, 247, 118, 249, 119, 251, 120, 253, 121, 255, 122, 257, 123, 259, 124, 261, 125, 263, 126, 265, 127, 267, 128, 269, 129, 271, 130, 273, 131, 275, 132, 277, 133, 279, 134, 281, 135, 283, 136, 285, 137, 287, 138, 289, 139, 291, 140, 293, 141, 295, 142, 297, 143, 299, 144, 301, 145, 303, 146, 305, 147, 307, 148, 309, 149, 311, 150, 313, 151, 315, 152, 317, 153, 319, 154, 321, 155, 323, 156, 325, 157, 327, 158, 329, 159, 331, 160, 333, 161, 335, 162, 337, 163, 339, 164, 341, 165, 343, 166, 345, 167, 347, 168, 349, 169, 351, 170, 353, 171, 355, 172, 357, 173, 359, 174, 361, 175, 363, 176, 365, 177, 367, 178, 369, 179, 371, 180, 373, 181, 375, 182, 377, 183, 379, 184, 381, 185, 383, 186, 385, 187, 387, 188, 389, 189, 391, 190, 393, 191, 395, 192, 397, 193, 399, 194, 401, 195, 403, 196, 405, 197, 407, 198, 409, 199, 411, 200, 413, 201, 415, 202, 417, 203, 419, 204, 421, 205, 423, 206, 425, 207, 427, 208, 429, 209, 431, 210, 433, 211, 435, 212, 437, 213, 439, 214, 441, 215, 443, 216, 445, 217, 447, 218, 449, 219, 451, 220, 453, 221, 455, 222, 457, 223, 459, 224, 461, 225, 463, 226, 465, 227, 467, 228, 469, 229, 471, 230, 473, 231, 475, 232, 477, 233, 479, 234, 481, 235, 483, 236, 485, 237, 487, 238, 489, 239, 491, 240, 493, 241, 495, 242, 497, 243, 499, 244, 501, 245, 503, 246, 505, 247, 507, 248, 509, 249, 511, 250, 513, 251, 515, 252, 517, 253, 519, 254, 521, 255, 523, 256, 525, 257, 527, 258, 529, 259, 531, 260, 533, 261, 535, 262, 537, 263, 539, 264, 541, 265, 543, 266, 545, 267, 547, 268, 549, 269, 551, 270, 553, 271, 555, 272, 557, 273, 559, 274, 561, 275, 563, 276, 565, 277, 567, 278, 569, 279, 571, 280, 573, 281, 575, 282, 577, 283, 579, 284, 581, 285, 583, 286, 585, 287, 587, 288, 589, 289, 591, 290, 593, 291, 595, 292, 597, 293, 599, 294, 601, 295, 603, 296, 605, 297, 607, 298, 609, 299, 611, 300, 613, 301, 615, 302, 617, 303, 619, 304, 621, 305, 623, 306, 625, 307, 627, 308, 629, 309, 631, 310, 633, 311, 635, 312, 637, 313, 639, 314, 641, 315, 643, 316, 645, 317, 647, 318, 649, 319, 651, 320, 653, 321, 655, 322, 657, 323, 659, 324, 661, 325, 663, 326, 665, 327, 667, 328, 669, 329, 671, 330, 673, 331, 675, 332, 677, 333, 679, 334, 681, 335, 683, 336, 685, 337, 687, 338, 689, 339, 691, 340, 693, 341, 695, 342, 697, 343, 699, 344, 701, 345, 703, 346, 705, 347, 707, 348, 709, 349, 711, 350, 713, 351, 715, 352, 717, 353, 719, 354, 721, 355, 723, 356, 725, 357, 727, 358, 729, 359, 731, 360, 733, 361, 735, 362, 737, 363, 739, 364, 741, 365, 743, 366, 745, 367, 747, 368, 749, 369, 751, 370, 753, 371, 755, 372, 757, 373, 759, 374, 761, 375, 763, 376, 765, 377, 767, 378, 769, 379, 771, 380, 773, 381, 775, 382, 777, 383, 779, 384, 781, 385, 783, 386, 785, 387, 787, 388, 789, 389, 791, 390, 793, 391, 795, 392, 797, 393, 799, 394, 801, 395, 803, 396, 805, 397, 807, 398, 809, 399, 811, 400, 813, 401, 815, 402, 817, 403, 819, 404, 821, 405, 823, 406, 825, 407, 827, 408, 829, 409, 831, 410, 833, 411, 835, 412, 837, 413, 839, 414, 841, 415, 843, 416, 845, 417, 847, 418, 849, 419, 851, 420, 853, 421, 855, 422, 857, 423, 859, 424, 861, 425, 863, 426, 865, 427, 867, 428, 869, 429, 871, 430, 873, 431, 875, 432, 877, 433, 879, 434, 881, 435, 883, 436, 885, 437, 887, 438, 889, 439, 891, 440, 893, 441, 895, 442, 897, 443, 899, 444, 901, 445, 903, 446, 905, 447, 907, 448, 909, 449, 911, 450, 913, 451, 915, 452, 917, 453, 919, 454, 921, 455, 923, 456, 925, 457, 927, 458, 929, 459, 931, 460, 933, 461, 935, 462, 937, 463, 939, 464, 941, 465, 943, 466, 945, 467, 947, 468, 949, 469, 951, 470, 953, 471, 955, 472, 957, 473, 959, 474, 961, 475, 963, 476, 965, 477, 967, 478, 969, 479, 971, 480, 973, 481, 975, 482, 977, 483, 979, 484, 981, 485, 983, 486, 985, 487, 987, 488, 989, 489, 991, 490, 993, 491, 995, 492, 997, 493, 999, 494, 1001, 495, 1003, 496, 1005, 497, 1007, 498, 1009, 499, 1011, 500, 1013, 501, 1015, 502, 1017, 503, 1019, 504, 1021, 505, 1023, 506, 1025, 507, 1027, 508, 1029, 509, 1031, 510, 1033, 511, 1035, 512, 1037, 513, 1039, 514, 1041, 515, 1043, 516, 1045, 517, 1047, 518, 1049, 519, 1051, 520, 1053, 521, 1055, 522, 1057, 523, 1059, 524, 1061, 525, 1063, 526, 1065, 527, 1067, 528, 1069, 529, 1071, 530, 1073, 531, 1075, 532, 1077, 533, 1079, 534, 1081, 535, 1083, 536, 1085, 537, 1087, 538, 1089, 539, 1091, 540, 1093, 541, 1095, 542, 1097, 543, 1099, 544, 1101, 545, 1103, 546, 1105, 547, 1107, 548, 1109, 549, 1111, 550, 1113, 551, 1115, 552, 1117, 553, 1119, 554, 1121, 555, 1123, 556, 1125, 557, 1127, 558, 1129, 559, 1131, 560, 1133, 561, 1135, 562, 1137, 563, 1139, 564, 1141, 565, 1143, 566, 1145, 567, 1147, 568, 1149, 569, 1151, 570, 1153, 571, 1155, 572, 1157, 573, 1159, 574, 1161, 575, 1163, 576, 1165, 577, 1167, 578, 1169, 579, 1171, 580, 1173, 581, 1175, 582, 1177, 583, 1179, 584, 1181, 585, 1183, 586, 1185, 587, 1187, 588, 1189, 589, 1191, 590, 1193, 591, 1195, 592, 1197, 593, 1199, 594, 1201, 595, 1203, 596, 1205, 597, 1207, 598, 1209, 599, 1211, 600, 1213, 601, 1215, 602, 1217, 603, 1219, 604, 1221, 605, 1223, 606, 1225, 607, 1227, 608, 1229, 609, 1231, 610, 1233, 611, 1235, 612, 1237, 613, 1239, 614, 1241, 615, 1243, 616, 1245, 617, 1247, 618, 1249, 619, 1251, 620, 1253, 621, 1255, 622, 1257, 623, 1259, 624, 1261, 625, 1263, 626, 1265, 627, 1267, 628, 1269, 629, 1271, 630, 1273, 631, 1275, 632, 1277, 633, 1279, 634, 1281, 635, 1283, 636, 1285, 637, 1287, 638, 1289, 0, 1291, 0, 1293, 0, 1295, 639, 1297, 640, 1299, 641, 1301, 642, 1303, 643, 1305, 644, 1307, 645, 1309, 646, 1311, 647, 1313, 648, 1315, 0, 1317, 649, 1319, 650, 1321, 651, 1323, 0, 1325, 652, 1327, 653, 1329, 654, 1331, 655, 1333, 656, 1335, 657, 1337, 658, 1339, 659, 1341, 660, 1343, 661, 1345, 662, 1347, 0, 1349, 663, 1351, 664, 1353, 665, 1355, 666, 1357, 667, 1359, 668, 1361, 669, 1363, 670, 1365, 671, 1367, 672, 1369, 673, 1371, 674, 1373, 0, 1375, 675, 1377, 676, 1379, 0, 1381, 0, 1383, 0, 1385, 677, 1387, 0, 1389, 0, 1391, 681, 1393, 678, 1395, 679, 1397, 680, 5, 0, 1, 2, 3, 4, 51, 1, 0, 48, 57, 2, 0, 43, 43, 45, 45, 9, 0, 33, 33, 35, 35, 37, 38, 42, 42, 60, 64, 94, 94, 96, 96, 124, 124, 126, 126, 2, 0, 42, 43, 60, 62, 8, 0, 33, 33, 35, 35, 37, 38, 63, 64, 94, 94, 96, 96, 124, 124, 126, 126, 2, 0, 65, 65, 97, 97, 2, 0, 76, 76, 108, 108, 2, 0, 78, 78, 110, 110, 2, 0, 89, 89, 121, 121, 2, 0, 83, 83, 115, 115, 2, 0, 69, 69, 101, 101, 2, 0, 90, 90, 122, 122, 2, 0, 68, 68, 100, 100, 2, 0, 82, 82, 114, 114, 2, 0, 67, 67, 99, 99, 2, 0, 77, 77, 109, 109, 2, 0, 84, 84, 116, 116, 2, 0, 73, 73, 105, 105, 2, 0, 66, 66, 98, 98, 2, 0, 79, 79, 111, 111, 2, 0, 72, 72, 104, 104, 2, 0, 75, 75, 107, 107, 2, 0, 85, 85, 117, 117, 2, 0, 71, 71, 103, 103, 2, 0, 80, 80, 112, 112, 2, 0, 70, 70, 102, 102, 2, 0, 88, 88, 120, 120, 2, 0, 86, 86, 118, 118, 2, 0, 81, 81, 113, 113, 2, 0, 87, 87, 119, 119, 2, 0, 74, 74, 106, 106, 9, 0, 65, 90, 95, 95, 97, 122, 170, 170, 181, 181, 186, 186, 192, 214, 216, 246, 248, 255, 2, 0, 256, 55295, 57344, 65535, 1, 0, 55296, 56319, 1, 0, 56320, 57343, 2, 0, 0, 0, 34, 34, 1, 0, 34, 34, 1, 0, 39, 39, 1, 0, 48, 49, 3, 0, 48, 57, 65, 70, 97, 102, 3, 0, 65, 90, 95, 95, 97, 122, 5, 0, 36, 36, 48, 57, 65, 90, 95, 95, 97, 122, 2, 0, 34, 34, 92, 92, 2, 0, 9, 9, 32, 32, 2, 0, 10, 10, 13, 13, 2, 0, 42, 42, 47, 47, 4, 0, 10, 10, 13, 13, 34, 34, 92, 92, 3, 0, 10, 10, 13, 13, 34, 34, 3, 0, 85, 85, 117, 117, 120, 120, 2, 0, 39, 39, 92, 92, 1, 0, 36, 36, 6880, 0, 5, 1, 0, 0, 0, 0, 7, 1, 0, 0, 0, 0, 9, 1, 0, 0, 0, 0, 11, 1, 0, 0, 0, 0, 13, 1, 0, 0, 0, 0, 15, 1, 0, 0, 0, 0, 17, 1, 0, 0, 0, 0, 19, 1, 0, 0, 0, 0, 21, 1, 0, 0, 0, 0, 23, 1, 0, 0, 0, 0, 25, 1, 0, 0, 0, 0, 27, 1, 0, 0, 0, 0, 29, 1, 0, 0, 0, 0, 31, 1, 0, 0, 0, 0, 33, 1, 0, 0, 0, 0, 35, 1, 0, 0, 0, 0, 37, 1, 0, 0, 0, 0, 39, 1, 0, 0, 0, 0, 41, 1, 0, 0, 0, 0, 43, 1, 0, 0, 0, 0, 45, 1, 0, 0, 0, 0, 47, 1, 0, 0, 0, 0, 49, 1, 0, 0, 0, 0, 51, 1, 0, 0, 0, 0, 53, 1, 0, 0, 0, 0, 55, 1, 0, 0, 0, 0, 57, 1, 0, 0, 0, 0, 59, 1, 0, 0, 0, 0, 61, 1, 0, 0, 0, 0, 63, 1, 0, 0, 0, 0, 71, 1, 0, 0, 0, 0, 73, 1, 0, 0, 0, 0, 75, 1, 0, 0, 0, 0, 77, 1, 0, 0, 0, 0, 79, 1, 0, 0, 0, 0, 81, 1, 0, 0, 0, 0, 83, 1, 0, 0, 0, 0, 85, 1, 0, 0, 0, 0, 87, 1, 0, 0, 0, 0, 89, 1, 0, 0, 0, 0, 91, 1, 0, 0, 0, 0, 93, 1, 0, 0, 0, 0, 95, 1, 0, 0, 0, 0, 97, 1, 0, 0, 0, 0, 99, 1, 0, 0, 0, 0, 101, 1, 0, 0, 0, 0, 103, 1, 0, 0, 0, 0, 105, 1, 0, 0, 0, 0, 107, 1, 0, 0, 0, 0, 109, 1, 0, 0, 0, 0, 111, 1, 0, 0, 0, 0, 113, 1, 0, 0, 0, 0, 115, 1, 0, 0, 0, 0, 117, 1, 0, 0, 0, 0, 119, 1, 0, 0, 0, 0, 121, 1, 0, 0, 0, 0, 123, 1, 0, 0, 0, 0, 125, 1, 0, 0, 0, 0, 127, 1, 0, 0, 0, 0, 129, 1, 0, 0, 0, 0, 131, 1, 0, 0, 0, 0, 133, 1, 0, 0, 0, 0, 135, 1, 0, 0, 0, 0, 137, 1, 0, 0, 0, 0, 139, 1, 0, 0, 0, 0, 141, 1, 0, 0, 0, 0, 143, 1, 0, 0, 0, 0, 145, 1, 0, 0, 0, 0, 147, 1, 0, 0, 0, 0, 149, 1, 0, 0, 0, 0, 151, 1, 0, 0, 0, 0, 153, 1, 0, 0, 0, 0, 155, 1, 0, 0, 0, 0, 157, 1, 0, 0, 0, 0, 159, 1, 0, 0, 0, 0, 161, 1, 0, 0, 0, 0, 163, 1, 0, 0, 0, 0, 165, 1, 0, 0, 0, 0, 167, 1, 0, 0, 0, 0, 169, 1, 0, 0, 0, 0, 171, 1, 0, 0, 0, 0, 173, 1, 0, 0, 0, 0, 175, 1, 0, 0, 0, 0, 177, 1, 0, 0, 0, 0, 179, 1, 0, 0, 0, 0, 181, 1, 0, 0, 0, 0, 183, 1, 0, 0, 0, 0, 185, 1, 0, 0, 0, 0, 187, 1, 0, 0, 0, 0, 189, 1, 0, 0, 0, 0, 191, 1, 0, 0, 0, 0, 193, 1, 0, 0, 0, 0, 195, 1, 0, 0, 0, 0, 197, 1, 0, 0, 0, 0, 199, 1, 0, 0, 0, 0, 201, 1, 0, 0, 0, 0, 203, 1, 0, 0, 0, 0, 205, 1, 0, 0, 0, 0, 207, 1, 0, 0, 0, 0, 209, 1, 0, 0, 0, 0, 211, 1, 0, 0, 0, 0, 213, 1, 0, 0, 0, 0, 215, 1, 0, 0, 0, 0, 217, 1, 0, 0, 0, 0, 219, 1, 0, 0, 0, 0, 221, 1, 0, 0, 0, 0, 223, 1, 0, 0, 0, 0, 225, 1, 0, 0, 0, 0, 227, 1, 0, 0, 0, 0, 229, 1, 0, 0, 0, 0, 231, 1, 0, 0, 0, 0, 233, 1, 0, 0, 0, 0, 235, 1, 0, 0, 0, 0, 237, 1, 0, 0, 0, 0, 239, 1, 0, 0, 0, 0, 241, 1, 0, 0, 0, 0, 243, 1, 0, 0, 0, 0, 245, 1, 0, 0, 0, 0, 247, 1, 0, 0, 0, 0, 249, 1, 0, 0, 0, 0, 251, 1, 0, 0, 0, 0, 253, 1, 0, 0, 0, 0, 255, 1, 0, 0, 0, 0, 257, 1, 0, 0, 0, 0, 259, 1, 0, 0, 0, 0, 261, 1, 0, 0, 0, 0, 263, 1, 0, 0, 0, 0, 265, 1, 0, 0, 0, 0, 267, 1, 0, 0, 0, 0, 269, 1, 0, 0, 0, 0, 271, 1, 0, 0, 0, 0, 273, 1, 0, 0, 0, 0, 275, 1, 0, 0, 0, 0, 277, 1, 0, 0, 0, 0, 279, 1, 0, 0, 0, 0, 281, 1, 0, 0, 0, 0, 283, 1, 0, 0, 0, 0, 285, 1, 0, 0, 0, 0, 287, 1, 0, 0, 0, 0, 289, 1, 0, 0, 0, 0, 291, 1, 0, 0, 0, 0, 293, 1, 0, 0, 0, 0, 295, 1, 0, 0, 0, 0, 297, 1, 0, 0, 0, 0, 299, 1, 0, 0, 0, 0, 301, 1, 0, 0, 0, 0, 303, 1, 0, 0, 0, 0, 305, 1, 0, 0, 0, 0, 307, 1, 0, 0, 0, 0, 309, 1, 0, 0, 0, 0, 311, 1, 0, 0, 0, 0, 313, 1, 0, 0, 0, 0, 315, 1, 0, 0, 0, 0, 317, 1, 0, 0, 0, 0, 319, 1, 0, 0, 0, 0, 321, 1, 0, 0, 0, 0, 323, 1, 0, 0, 0, 0, 325, 1, 0, 0, 0, 0, 327, 1, 0, 0, 0, 0, 329, 1, 0, 0, 0, 0, 331, 1, 0, 0, 0, 0, 333, 1, 0, 0, 0, 0, 335, 1, 0, 0, 0, 0, 337, 1, 0, 0, 0, 0, 339, 1, 0, 0, 0, 0, 341, 1, 0, 0, 0, 0, 343, 1, 0, 0, 0, 0, 345, 1, 0, 0, 0, 0, 347, 1, 0, 0, 0, 0, 349, 1, 0, 0, 0, 0, 351, 1, 0, 0, 0, 0, 353, 1, 0, 0, 0, 0, 355, 1, 0, 0, 0, 0, 357, 1, 0, 0, 0, 0, 359, 1, 0, 0, 0, 0, 361, 1, 0, 0, 0, 0, 363, 1, 0, 0, 0, 0, 365, 1, 0, 0, 0, 0, 367, 1, 0, 0, 0, 0, 369, 1, 0, 0, 0, 0, 371, 1, 0, 0, 0, 0, 373, 1, 0, 0, 0, 0, 375, 1, 0, 0, 0, 0, 377, 1, 0, 0, 0, 0, 379, 1, 0, 0, 0, 0, 381, 1, 0, 0, 0, 0, 383, 1, 0, 0, 0, 0, 385, 1, 0, 0, 0, 0, 387, 1, 0, 0, 0, 0, 389, 1, 0, 0, 0, 0, 391, 1, 0, 0, 0, 0, 393, 1, 0, 0, 0, 0, 395, 1, 0, 0, 0, 0, 397, 1, 0, 0, 0, 0, 399, 1, 0, 0, 0, 0, 401, 1, 0, 0, 0, 0, 403, 1, 0, 0, 0, 0, 405, 1, 0, 0, 0, 0, 407, 1, 0, 0, 0, 0, 409, 1, 0, 0, 0, 0, 411, 1, 0, 0, 0, 0, 413, 1, 0, 0, 0, 0, 415, 1, 0, 0, 0, 0, 417, 1, 0, 0, 0, 0, 419, 1, 0, 0, 0, 0, 421, 1, 0, 0, 0, 0, 423, 1, 0, 0, 0, 0, 425, 1, 0, 0, 0, 0, 427, 1, 0, 0, 0, 0, 429, 1, 0, 0, 0, 0, 431, 1, 0, 0, 0, 0, 433, 1, 0, 0, 0, 0, 435, 1, 0, 0, 0, 0, 437, 1, 0, 0, 0, 0, 439, 1, 0, 0, 0, 0, 441, 1, 0, 0, 0, 0, 443, 1, 0, 0, 0, 0, 445, 1, 0, 0, 0, 0, 447, 1, 0, 0, 0, 0, 449, 1, 0, 0, 0, 0, 451, 1, 0, 0, 0, 0, 453, 1, 0, 0, 0, 0, 455, 1, 0, 0, 0, 0, 457, 1, 0, 0, 0, 0, 459, 1, 0, 0, 0, 0, 461, 1, 0, 0, 0, 0, 463, 1, 0, 0, 0, 0, 465, 1, 0, 0, 0, 0, 467, 1, 0, 0, 0, 0, 469, 1, 0, 0, 0, 0, 471, 1, 0, 0, 0, 0, 473, 1, 0, 0, 0, 0, 475, 1, 0, 0, 0, 0, 477, 1, 0, 0, 0, 0, 479, 1, 0, 0, 0, 0, 481, 1, 0, 0, 0, 0, 483, 1, 0, 0, 0, 0, 485, 1, 0, 0, 0, 0, 487, 1, 0, 0, 0, 0, 489, 1, 0, 0, 0, 0, 491, 1, 0, 0, 0, 0, 493, 1, 0, 0, 0, 0, 495, 1, 0, 0, 0, 0, 497, 1, 0, 0, 0, 0, 499, 1, 0, 0, 0, 0, 501, 1, 0, 0, 0, 0, 503, 1, 0, 0, 0, 0, 505, 1, 0, 0, 0, 0, 507, 1, 0, 0, 0, 0, 509, 1, 0, 0, 0, 0, 511, 1, 0, 0, 0, 0, 513, 1, 0, 0, 0, 0, 515, 1, 0, 0, 0, 0, 517, 1, 0, 0, 0, 0, 519, 1, 0, 0, 0, 0, 521, 1, 0, 0, 0, 0, 523, 1, 0, 0, 0, 0, 525, 1, 0, 0, 0, 0, 527, 1, 0, 0, 0, 0, 529, 1, 0, 0, 0, 0, 531, 1, 0, 0, 0, 0, 533, 1, 0, 0, 0, 0, 535, 1, 0, 0, 0, 0, 537, 1, 0, 0, 0, 0, 539, 1, 0, 0, 0, 0, 541, 1, 0, 0, 0, 0, 543, 1, 0, 0, 0, 0, 545, 1, 0, 0, 0, 0, 547, 1, 0, 0, 0, 0, 549, 1, 0, 0, 0, 0, 551, 1, 0, 0, 0, 0, 553, 1, 0, 0, 0, 0, 555, 1, 0, 0, 0, 0, 557, 1, 0, 0, 0, 0, 559, 1, 0, 0, 0, 0, 561, 1, 0, 0, 0, 0, 563, 1, 0, 0, 0, 0, 565, 1, 0, 0, 0, 0, 567, 1, 0, 0, 0, 0, 569, 1, 0, 0, 0, 0, 571, 1, 0, 0, 0, 0, 573, 1, 0, 0, 0, 0, 575, 1, 0, 0, 0, 0, 577, 1, 0, 0, 0, 0, 579, 1, 0, 0, 0, 0, 581, 1, 0, 0, 0, 0, 583, 1, 0, 0, 0, 0, 585, 1, 0, 0, 0, 0, 587, 1, 0, 0, 0, 0, 589, 1, 0, 0, 0, 0, 591, 1, 0, 0, 0, 0, 593, 1, 0, 0, 0, 0, 595, 1, 0, 0, 0, 0, 597, 1, 0, 0, 0, 0, 599, 1, 0, 0, 0, 0, 601, 1, 0, 0, 0, 0, 603, 1, 0, 0, 0, 0, 605, 1, 0, 0, 0, 0, 607, 1, 0, 0, 0, 0, 609, 1, 0, 0, 0, 0, 611, 1, 0, 0, 0, 0, 613, 1, 0, 0, 0, 0, 615, 1, 0, 0, 0, 0, 617, 1, 0, 0, 0, 0, 619, 1, 0, 0, 0, 0, 621, 1, 0, 0, 0, 0, 623, 1, 0, 0, 0, 0, 625, 1, 0, 0, 0, 0, 627, 1, 0, 0, 0, 0, 629, 1, 0, 0, 0, 0, 631, 1, 0, 0, 0, 0, 633, 1, 0, 0, 0, 0, 635, 1, 0, 0, 0, 0, 637, 1, 0, 0, 0, 0, 639, 1, 0, 0, 0, 0, 641, 1, 0, 0, 0, 0, 643, 1, 0, 0, 0, 0, 645, 1, 0, 0, 0, 0, 647, 1, 0, 0, 0, 0, 649, 1, 0, 0, 0, 0, 651, 1, 0, 0, 0, 0, 653, 1, 0, 0, 0, 0, 655, 1, 0, 0, 0, 0, 657, 1, 0, 0, 0, 0, 659, 1, 0, 0, 0, 0, 661, 1, 0, 0, 0, 0, 663, 1, 0, 0, 0, 0, 665, 1, 0, 0, 0, 0, 667, 1, 0, 0, 0, 0, 669, 1, 0, 0, 0, 0, 671, 1, 0, 0, 0, 0, 673, 1, 0, 0, 0, 0, 675, 1, 0, 0, 0, 0, 677, 1, 0, 0, 0, 0, 679, 1, 0, 0, 0, 0, 681, 1, 0, 0, 0, 0, 683, 1, 0, 0, 0, 0, 685, 1, 0, 0, 0, 0, 687, 1, 0, 0, 0, 0, 689, 1, 0, 0, 0, 0, 691, 1, 0, 0, 0, 0, 693, 1, 0, 0, 0, 0, 695, 1, 0, 0, 0, 0, 697, 1, 0, 0, 0, 0, 699, 1, 0, 0, 0, 0, 701, 1, 0, 0, 0, 0, 703, 1, 0, 0, 0, 0, 705, 1, 0, 0, 0, 0, 707, 1, 0, 0, 0, 0, 709, 1, 0, 0, 0, 0, 711, 1, 0, 0, 0, 0, 713, 1, 0, 0, 0, 0, 715, 1, 0, 0, 0, 0, 717, 1, 0, 0, 0, 0, 719, 1, 0, 0, 0, 0, 721, 1, 0, 0, 0, 0, 723, 1, 0, 0, 0, 0, 725, 1, 0, 0, 0, 0, 727, 1, 0, 0, 0, 0, 729, 1, 0, 0, 0, 0, 731, 1, 0, 0, 0, 0, 733, 1, 0, 0, 0, 0, 735, 1, 0, 0, 0, 0, 737, 1, 0, 0, 0, 0, 739, 1, 0, 0, 0, 0, 741, 1, 0, 0, 0, 0, 743, 1, 0, 0, 0, 0, 745, 1, 0, 0, 0, 0, 747, 1, 0, 0, 0, 0, 749, 1, 0, 0, 0, 0, 751, 1, 0, 0, 0, 0, 753, 1, 0, 0, 0, 0, 755, 1, 0, 0, 0, 0, 757, 1, 0, 0, 0, 0, 759, 1, 0, 0, 0, 0, 761, 1, 0, 0, 0, 0, 763, 1, 0, 0, 0, 0, 765, 1, 0, 0, 0, 0, 767, 1, 0, 0, 0, 0, 769, 1, 0, 0, 0, 0, 771, 1, 0, 0, 0, 0, 773, 1, 0, 0, 0, 0, 775, 1, 0, 0, 0, 0, 777, 1, 0, 0, 0, 0, 779, 1, 0, 0, 0, 0, 781, 1, 0, 0, 0, 0, 783, 1, 0, 0, 0, 0, 785, 1, 0, 0, 0, 0, 787, 1, 0, 0, 0, 0, 789, 1, 0, 0, 0, 0, 791, 1, 0, 0, 0, 0, 793, 1, 0, 0, 0, 0, 795, 1, 0, 0, 0, 0, 797, 1, 0, 0, 0, 0, 799, 1, 0, 0, 0, 0, 801, 1, 0, 0, 0, 0, 803, 1, 0, 0, 0, 0, 805, 1, 0, 0, 0, 0, 807, 1, 0, 0, 0, 0, 809, 1, 0, 0, 0, 0, 811, 1, 0, 0, 0, 0, 813, 1, 0, 0, 0, 0, 815, 1, 0, 0, 0, 0, 817, 1, 0, 0, 0, 0, 819, 1, 0, 0, 0, 0, 821, 1, 0, 0, 0, 0, 823, 1, 0, 0, 0, 0, 825, 1, 0, 0, 0, 0, 827, 1, 0, 0, 0, 0, 829, 1, 0, 0, 0, 0, 831, 1, 0, 0, 0, 0, 833, 1, 0, 0, 0, 0, 835, 1, 0, 0, 0, 0, 837, 1, 0, 0, 0, 0, 839, 1, 0, 0, 0, 0, 841, 1, 0, 0, 0, 0, 843, 1, 0, 0, 0, 0, 845, 1, 0, 0, 0, 0, 847, 1, 0, 0, 0, 0, 849, 1, 0, 0, 0, 0, 851, 1, 0, 0, 0, 0, 853, 1, 0, 0, 0, 0, 855, 1, 0, 0, 0, 0, 857, 1, 0, 0, 0, 0, 859, 1, 0, 0, 0, 0, 861, 1, 0, 0, 0, 0, 863, 1, 0, 0, 0, 0, 865, 1, 0, 0, 0, 0, 867, 1, 0, 0, 0, 0, 869, 1, 0, 0, 0, 0, 871, 1, 0, 0, 0, 0, 873, 1, 0, 0, 0, 0, 875, 1, 0, 0, 0, 0, 877, 1, 0, 0, 0, 0, 879, 1, 0, 0, 0, 0, 881, 1, 0, 0, 0, 0, 883, 1, 0, 0, 0, 0, 885, 1, 0, 0, 0, 0, 887, 1, 0, 0, 0, 0, 889, 1, 0, 0, 0, 0, 891, 1, 0, 0, 0, 0, 893, 1, 0, 0, 0, 0, 895, 1, 0, 0, 0, 0, 897, 1, 0, 0, 0, 0, 899, 1, 0, 0, 0, 0, 901, 1, 0, 0, 0, 0, 903, 1, 0, 0, 0, 0, 905, 1, 0, 0, 0, 0, 907, 1, 0, 0, 0, 0, 909, 1, 0, 0, 0, 0, 911, 1, 0, 0, 0, 0, 913, 1, 0, 0, 0, 0, 915, 1, 0, 0, 0, 0, 917, 1, 0, 0, 0, 0, 919, 1, 0, 0, 0, 0, 921, 1, 0, 0, 0, 0, 923, 1, 0, 0, 0, 0, 925, 1, 0, 0, 0, 0, 927, 1, 0, 0, 0, 0, 929, 1, 0, 0, 0, 0, 931, 1, 0, 0, 0, 0, 933, 1, 0, 0, 0, 0, 935, 1, 0, 0, 0, 0, 937, 1, 0, 0, 0, 0, 939, 1, 0, 0, 0, 0, 941, 1, 0, 0, 0, 0, 943, 1, 0, 0, 0, 0, 945, 1, 0, 0, 0, 0, 947, 1, 0, 0, 0, 0, 949, 1, 0, 0, 0, 0, 951, 1, 0, 0, 0, 0, 953, 1, 0, 0, 0, 0, 955, 1, 0, 0, 0, 0, 957, 1, 0, 0, 0, 0, 959, 1, 0, 0, 0, 0, 961, 1, 0, 0, 0, 0, 963, 1, 0, 0, 0, 0, 965, 1, 0, 0, 0, 0, 967, 1, 0, 0, 0, 0, 969, 1, 0, 0, 0, 0, 971, 1, 0, 0, 0, 0, 973, 1, 0, 0, 0, 0, 975, 1, 0, 0, 0, 0, 977, 1, 0, 0, 0, 0, 979, 1, 0, 0, 0, 0, 981, 1, 0, 0, 0, 0, 983, 1, 0, 0, 0, 0, 985, 1, 0, 0, 0, 0, 987, 1, 0, 0, 0, 0, 989, 1, 0, 0, 0, 0, 991, 1, 0, 0, 0, 0, 993, 1, 0, 0, 0, 0, 995, 1, 0, 0, 0, 0, 997, 1, 0, 0, 0, 0, 999, 1, 0, 0, 0, 0, 1001, 1, 0, 0, 0, 0, 1003, 1, 0, 0, 0, 0, 1005, 1, 0, 0, 0, 0, 1007, 1, 0, 0, 0, 0, 1009, 1, 0, 0, 0, 0, 1011, 1, 0, 0, 0, 0, 1013, 1, 0, 0, 0, 0, 1015, 1, 0, 0, 0, 0, 1017, 1, 0, 0, 0, 0, 1019, 1, 0, 0, 0, 0, 1021, 1, 0, 0, 0, 0, 1023, 1, 0, 0, 0, 0, 1025, 1, 0, 0, 0, 0, 1027, 1, 0, 0, 0, 0, 1029, 1, 0, 0, 0, 0, 1031, 1, 0, 0, 0, 0, 1033, 1, 0, 0, 0, 0, 1035, 1, 0, 0, 0, 0, 1037, 1, 0, 0, 0, 0, 1039, 1, 0, 0, 0, 0, 1041, 1, 0, 0, 0, 0, 1043, 1, 0, 0, 0, 0, 1045, 1, 0, 0, 0, 0, 1047, 1, 0, 0, 0, 0, 1049, 1, 0, 0, 0, 0, 1051, 1, 0, 0, 0, 0, 1053, 1, 0, 0, 0, 0, 1055, 1, 0, 0, 0, 0, 1057, 1, 0, 0, 0, 0, 1059, 1, 0, 0, 0, 0, 1061, 1, 0, 0, 0, 0, 1063, 1, 0, 0, 0, 0, 1065, 1, 0, 0, 0, 0, 1067, 1, 0, 0, 0, 0, 1069, 1, 0, 0, 0, 0, 1071, 1, 0, 0, 0, 0, 1073, 1, 0, 0, 0, 0, 1075, 1, 0, 0, 0, 0, 1077, 1, 0, 0, 0, 0, 1079, 1, 0, 0, 0, 0, 1081, 1, 0, 0, 0, 0, 1083, 1, 0, 0, 0, 0, 1085, 1, 0, 0, 0, 0, 1087, 1, 0, 0, 0, 0, 1089, 1, 0, 0, 0, 0, 1091, 1, 0, 0, 0, 0, 1093, 1, 0, 0, 0, 0, 1095, 1, 0, 0, 0, 0, 1097, 1, 0, 0, 0, 0, 1099, 1, 0, 0, 0, 0, 1101, 1, 0, 0, 0, 0, 1103, 1, 0, 0, 0, 0, 1105, 1, 0, 0, 0, 0, 1107, 1, 0, 0, 0, 0, 1109, 1, 0, 0, 0, 0, 1111, 1, 0, 0, 0, 0, 1113, 1, 0, 0, 0, 0, 1115, 1, 0, 0, 0, 0, 1117, 1, 0, 0, 0, 0, 1119, 1, 0, 0, 0, 0, 1121, 1, 0, 0, 0, 0, 1123, 1, 0, 0, 0, 0, 1125, 1, 0, 0, 0, 0, 1127, 1, 0, 0, 0, 0, 1129, 1, 0, 0, 0, 0, 1131, 1, 0, 0, 0, 0, 1133, 1, 0, 0, 0, 0, 1135, 1, 0, 0, 0, 0, 1137, 1, 0, 0, 0, 0, 1139, 1, 0, 0, 0, 0, 1141, 1, 0, 0, 0, 0, 1143, 1, 0, 0, 0, 0, 1145, 1, 0, 0, 0, 0, 1147, 1, 0, 0, 0, 0, 1149, 1, 0, 0, 0, 0, 1151, 1, 0, 0, 0, 0, 1153, 1, 0, 0, 0, 0, 1155, 1, 0, 0, 0, 0, 1157, 1, 0, 0, 0, 0, 1159, 1, 0, 0, 0, 0, 1161, 1, 0, 0, 0, 0, 1163, 1, 0, 0, 0, 0, 1165, 1, 0, 0, 0, 0, 1167, 1, 0, 0, 0, 0, 1169, 1, 0, 0, 0, 0, 1171, 1, 0, 0, 0, 0, 1173, 1, 0, 0, 0, 0, 1175, 1, 0, 0, 0, 0, 1177, 1, 0, 0, 0, 0, 1179, 1, 0, 0, 0, 0, 1181, 1, 0, 0, 0, 0, 1183, 1, 0, 0, 0, 0, 1185, 1, 0, 0, 0, 0, 1187, 1, 0, 0, 0, 0, 1189, 1, 0, 0, 0, 0, 1191, 1, 0, 0, 0, 0, 1193, 1, 0, 0, 0, 0, 1195, 1, 0, 0, 0, 0, 1197, 1, 0, 0, 0, 0, 1199, 1, 0, 0, 0, 0, 1201, 1, 0, 0, 0, 0, 1203, 1, 0, 0, 0, 0, 1205, 1, 0, 0, 0, 0, 1207, 1, 0, 0, 0, 0, 1209, 1, 0, 0, 0, 0, 1211, 1, 0, 0, 0, 0, 1213, 1, 0, 0, 0, 0, 1215, 1, 0, 0, 0, 0, 1217, 1, 0, 0, 0, 0, 1219, 1, 0, 0, 0, 0, 1221, 1, 0, 0, 0, 0, 1223, 1, 0, 0, 0, 0, 1225, 1, 0, 0, 0, 0, 1227, 1, 0, 0, 0, 0, 1229, 1, 0, 0, 0, 0, 1231, 1, 0, 0, 0, 0, 1233, 1, 0, 0, 0, 0, 1235, 1, 0, 0, 0, 0, 1237, 1, 0, 0, 0, 0, 1239, 1, 0, 0, 0, 0, 1241, 1, 0, 0, 0, 0, 1243, 1, 0, 0, 0, 0, 1245, 1, 0, 0, 0, 0, 1247, 1, 0, 0, 0, 0, 1249, 1, 0, 0, 0, 0, 1251, 1, 0, 0, 0, 0, 1253, 1, 0, 0, 0, 0, 1255, 1, 0, 0, 0, 0, 1257, 1, 0, 0, 0, 0, 1259, 1, 0, 0, 0, 0, 1261, 1, 0, 0, 0, 0, 1263, 1, 0, 0, 0, 0, 1265, 1, 0, 0, 0, 0, 1267, 1, 0, 0, 0, 0, 1269, 1, 0, 0, 0, 0, 1271, 1, 0, 0, 0, 0, 1273, 1, 0, 0, 0, 0, 1275, 1, 0, 0, 0, 0, 1277, 1, 0, 0, 0, 0, 1279, 1, 0, 0, 0, 0, 1281, 1, 0, 0, 0, 0, 1283, 1, 0, 0, 0, 0, 1285, 1, 0, 0, 0, 0, 1287, 1, 0, 0, 0, 0, 1295, 1, 0, 0, 0, 0, 1297, 1, 0, 0, 0, 0, 1299, 1, 0, 0, 0, 0, 1301, 1, 0, 0, 0, 0, 1303, 1, 0, 0, 0, 0, 1305, 1, 0, 0, 0, 0, 1307, 1, 0, 0, 0, 0, 1309, 1, 0, 0, 0, 0, 1311, 1, 0, 0, 0, 0, 1313, 1, 0, 0, 0, 0, 1315, 1, 0, 0, 0, 0, 1317, 1, 0, 0, 0, 0, 1319, 1, 0, 0, 0, 0, 1321, 1, 0, 0, 0, 0, 1325, 1, 0, 0, 0, 0, 1327, 1, 0, 0, 0, 0, 1329, 1, 0, 0, 0, 0, 1331, 1, 0, 0, 0, 0, 1333, 1, 0, 0, 0, 0, 1335, 1, 0, 0, 0, 0, 1337, 1, 0, 0, 0, 0, 1339, 1, 0, 0, 0, 0, 1341, 1, 0, 0, 0, 0, 1343, 1, 0, 0, 0, 0, 1345, 1, 0, 0, 0, 0, 1349, 1, 0, 0, 0, 0, 1351, 1, 0, 0, 0, 0, 1353, 1, 0, 0, 0, 0, 1355, 1, 0, 0, 0, 0, 1357, 1, 0, 0, 0, 0, 1359, 1, 0, 0, 0, 0, 1361, 1, 0, 0, 0, 0, 1363, 1, 0, 0, 0, 0, 1365, 1, 0, 0, 0, 0, 1367, 1, 0, 0, 0, 1, 1369, 1, 0, 0, 0, 1, 1371, 1, 0, 0, 0, 1, 1375, 1, 0, 0, 0, 1, 1377, 1, 0, 0, 0, 2, 1381, 1, 0, 0, 0, 2, 1383, 1, 0, 0, 0, 2, 1385, 1, 0, 0, 0, 3, 1387, 1, 0, 0, 0, 3, 1389, 1, 0, 0, 0, 3, 1391, 1, 0, 0, 0, 3, 1393, 1, 0, 0, 0, 4, 1395, 1, 0, 0, 0, 4, 1397, 1, 0, 0, 0, 5, 1399, 1, 0, 0, 0, 7, 1401, 1, 0, 0, 0, 9, 1403, 1, 0, 0, 0, 11, 1405, 1, 0, 0, 0, 13, 1407, 1, 0, 0, 0, 15, 1409, 1, 0, 0, 0, 17, 1411, 1, 0, 0, 0, 19, 1413, 1, 0, 0, 0, 21, 1415, 1, 0, 0, 0, 23, 1417, 1, 0, 0, 0, 25, 1419, 1, 0, 0, 0, 27, 1421, 1, 0, 0, 0, 29, 1423, 1, 0, 0, 0, 31, 1425, 1, 0, 0, 0, 33, 1427, 1, 0, 0, 0, 35, 1429, 1, 0, 0, 0, 37, 1431, 1, 0, 0, 0, 39, 1433, 1, 0, 0, 0, 41, 1436, 1, 0, 0, 0, 43, 1439, 1, 0, 0, 0, 45, 1442, 1, 0, 0, 0, 47, 1445, 1, 0, 0, 0, 49, 1448, 1, 0, 0, 0, 51, 1451, 1, 0, 0, 0, 53, 1454, 1, 0, 0, 0, 55, 1457, 1, 0, 0, 0, 57, 1460, 1, 0, 0, 0, 59, 1462, 1, 0, 0, 0, 61, 1488, 1, 0, 0, 0, 63, 1499, 1, 0, 0, 0, 65, 1515, 1, 0, 0, 0, 67, 1517, 1, 0, 0, 0, 69, 1519, 1, 0, 0, 0, 71, 1521, 1, 0, 0, 0, 73, 1525, 1, 0, 0, 0, 75, 1533, 1, 0, 0, 0, 77, 1541, 1, 0, 0, 0, 79, 1545, 1, 0, 0, 0, 81, 1549, 1, 0, 0, 0, 83, 1555, 1, 0, 0, 0, 85, 1558, 1, 0, 0, 0, 87, 1562, 1, 0, 0, 0, 89, 1573, 1, 0, 0, 0, 91, 1578, 1, 0, 0, 0, 93, 1583, 1, 0, 0, 0, 95, 1588, 1, 0, 0, 0, 97, 1594, 1, 0, 0, 0, 99, 1602, 1, 0, 0, 0, 101, 1609, 1, 0, 0, 0, 103, 1620, 1, 0, 0, 0, 105, 1627, 1, 0, 0, 0, 107, 1643, 1, 0, 0, 0, 109, 1656, 1, 0, 0, 0, 111, 1669, 1, 0, 0, 0, 113, 1682, 1, 0, 0, 0, 115, 1700, 1, 0, 0, 0, 117, 1713, 1, 0, 0, 0, 119, 1721, 1, 0, 0, 0, 121, 1732, 1, 0, 0, 0, 123, 1737, 1, 0, 0, 0, 125, 1746, 1, 0, 0, 0, 127, 1749, 1, 0, 0, 0, 129, 1754, 1, 0, 0, 0, 131, 1761, 1, 0, 0, 0, 133, 1767, 1, 0, 0, 0, 135, 1773, 1, 0, 0, 0, 137, 1777, 1, 0, 0, 0, 139, 1785, 1, 0, 0, 0, 141, 1790, 1, 0, 0, 0, 143, 1796, 1, 0, 0, 0, 145, 1802, 1, 0, 0, 0, 147, 1809, 1, 0, 0, 0, 149, 1812, 1, 0, 0, 0, 151, 1822, 1, 0, 0, 0, 153, 1832, 1, 0, 0, 0, 155, 1837, 1, 0, 0, 0, 157, 1845, 1, 0, 0, 0, 159, 1853, 1, 0, 0, 0, 161, 1859, 1, 0, 0, 0, 163, 1869, 1, 0, 0, 0, 165, 1884, 1, 0, 0, 0, 167, 1888, 1, 0, 0, 0, 169, 1893, 1, 0, 0, 0, 171, 1900, 1, 0, 0, 0, 173, 1903, 1, 0, 0, 0, 175, 1908, 1, 0, 0, 0, 177, 1911, 1, 0, 0, 0, 179, 1917, 1, 0, 0, 0, 181, 1925, 1, 0, 0, 0, 183, 1933, 1, 0, 0, 0, 185, 1944, 1, 0, 0, 0, 187, 1954, 1, 0, 0, 0, 189, 1961, 1, 0, 0, 0, 191, 1974, 1, 0, 0, 0, 193, 1979, 1, 0, 0, 0, 195, 1989, 1, 0, 0, 0, 197, 1995, 1, 0, 0, 0, 199, 2000, 1, 0, 0, 0, 201, 2003, 1, 0, 0, 0, 203, 2009, 1, 0, 0, 0, 205, 2016, 1, 0, 0, 0, 207, 2025, 1, 0, 0, 0, 209, 2030, 1, 0, 0, 0, 211, 2036, 1, 0, 0, 0, 213, 2043, 1, 0, 0, 0, 215, 2048, 1, 0, 0, 0, 217, 2054, 1, 0, 0, 0, 219, 2063, 1, 0, 0, 0, 221, 2068, 1, 0, 0, 0, 223, 2074, 1, 0, 0, 0, 225, 2081, 1, 0, 0, 0, 227, 2086, 1, 0, 0, 0, 229, 2100, 1, 0, 0, 0, 231, 2107, 1, 0, 0, 0, 233, 2117, 1, 0, 0, 0, 235, 2130, 1, 0, 0, 0, 237, 2136, 1, 0, 0, 0, 239, 2151, 1, 0, 0, 0, 241, 2158, 1, 0, 0, 0, 243, 2163, 1, 0, 0, 0, 245, 2169, 1, 0, 0, 0, 247, 2175, 1, 0, 0, 0, 249, 2178, 1, 0, 0, 0, 251, 2185, 1, 0, 0, 0, 253, 2190, 1, 0, 0, 0, 255, 2195, 1, 0, 0, 0, 257, 2200, 1, 0, 0, 0, 259, 2208, 1, 0, 0, 0, 261, 2216, 1, 0, 0, 0, 263, 2222, 1, 0, 0, 0, 265, 2227, 1, 0, 0, 0, 267, 2236, 1, 0, 0, 0, 269, 2242, 1, 0, 0, 0, 271, 2250, 1, 0, 0, 0, 273, 2258, 1, 0, 0, 0, 275, 2264, 1, 0, 0, 0, 277, 2273, 1, 0, 0, 0, 279, 2280, 1, 0, 0, 0, 281, 2287, 1, 0, 0, 0, 283, 2291, 1, 0, 0, 0, 285, 2297, 1, 0, 0, 0, 287, 2303, 1, 0, 0, 0, 289, 2313, 1, 0, 0, 0, 291, 2318, 1, 0, 0, 0, 293, 2324, 1, 0, 0, 0, 295, 2331, 1, 0, 0, 0, 297, 2341, 1, 0, 0, 0, 299, 2352, 1, 0, 0, 0, 301, 2355, 1, 0, 0, 0, 303, 2365, 1, 0, 0, 0, 305, 2374, 1, 0, 0, 0, 307, 2381, 1, 0, 0, 0, 309, 2387, 1, 0, 0, 0, 311, 2390, 1, 0, 0, 0, 313, 2396, 1, 0, 0, 0, 315, 2403, 1, 0, 0, 0, 317, 2411, 1, 0, 0, 0, 319, 2420, 1, 0, 0, 0, 321, 2428, 1, 0, 0, 0, 323, 2434, 1, 0, 0, 0, 325, 2450, 1, 0, 0, 0, 327, 2461, 1, 0, 0, 0, 329, 2467, 1, 0, 0, 0, 331, 2473, 1, 0, 0, 0, 333, 2481, 1, 0, 0, 0, 335, 2489, 1, 0, 0, 0, 337, 2498, 1, 0, 0, 0, 339, 2505, 1, 0, 0, 0, 341, 2515, 1, 0, 0, 0, 343, 2529, 1, 0, 0, 0, 345, 2540, 1, 0, 0, 0, 347, 2552, 1, 0, 0, 0, 349, 2560, 1, 0, 0, 0, 351, 2569, 1, 0, 0, 0, 353, 2580, 1, 0, 0, 0, 355, 2585, 1, 0, 0, 0, 357, 2590, 1, 0, 0, 0, 359, 2594, 1, 0, 0, 0, 361, 2601, 1, 0, 0, 0, 363, 2607, 1, 0, 0, 0, 365, 2612, 1, 0, 0, 0, 367, 2621, 1, 0, 0, 0, 369, 2625, 1, 0, 0, 0, 371, 2636, 1, 0, 0, 0, 373, 2644, 1, 0, 0, 0, 375, 2653, 1, 0, 0, 0, 377, 2662, 1, 0, 0, 0, 379, 2670, 1, 0, 0, 0, 381, 2677, 1, 0, 0, 0, 383, 2687, 1, 0, 0, 0, 385, 2698, 1, 0, 0, 0, 387, 2709, 1, 0, 0, 0, 389, 2717, 1, 0, 0, 0, 391, 2725, 1, 0, 0, 0, 393, 2734, 1, 0, 0, 0, 395, 2741, 1, 0, 0, 0, 397, 2748, 1, 0, 0, 0, 399, 2753, 1, 0, 0, 0, 401, 2758, 1, 0, 0, 0, 403, 2765, 1, 0, 0, 0, 405, 2774, 1, 0, 0, 0, 407, 2784, 1, 0, 0, 0, 409, 2789, 1, 0, 0, 0, 411, 2796, 1, 0, 0, 0, 413, 2802, 1, 0, 0, 0, 415, 2810, 1, 0, 0, 0, 417, 2820, 1, 0, 0, 0, 419, 2830, 1, 0, 0, 0, 421, 2838, 1, 0, 0, 0, 423, 2846, 1, 0, 0, 0, 425, 2856, 1, 0, 0, 0, 427, 2865, 1, 0, 0, 0, 429, 2872, 1, 0, 0, 0, 431, 2878, 1, 0, 0, 0, 433, 2888, 1, 0, 0, 0, 435, 2894, 1, 0, 0, 0, 437, 2902, 1, 0, 0, 0, 439, 2911, 1, 0, 0, 0, 441, 2921, 1, 0, 0, 0, 443, 2928, 1, 0, 0, 0, 445, 2936, 1, 0, 0, 0, 447, 2944, 1, 0, 0, 0, 449, 2951, 1, 0, 0, 0, 451, 2956, 1, 0, 0, 0, 453, 2961, 1, 0, 0, 0, 455, 2970, 1, 0, 0, 0, 457, 2973, 1, 0, 0, 0, 459, 2983, 1, 0, 0, 0, 461, 2993, 1, 0, 0, 0, 463, 3002, 1, 0, 0, 0, 465, 3012, 1, 0, 0, 0, 467, 3022, 1, 0, 0, 0, 469, 3028, 1, 0, 0, 0, 471, 3036, 1, 0, 0, 0, 473, 3044, 1, 0, 0, 0, 475, 3053, 1, 0, 0, 0, 477, 3060, 1, 0, 0, 0, 479, 3072, 1, 0, 0, 0, 481, 3079, 1, 0, 0, 0, 483, 3087, 1, 0, 0, 0, 485, 3095, 1, 0, 0, 0, 487, 3105, 1, 0, 0, 0, 489, 3109, 1, 0, 0, 0, 491, 3115, 1, 0, 0, 0, 493, 3124, 1, 0, 0, 0, 495, 3130, 1, 0, 0, 0, 497, 3135, 1, 0, 0, 0, 499, 3145, 1, 0, 0, 0, 501, 3151, 1, 0, 0, 0, 503, 3158, 1, 0, 0, 0, 505, 3163, 1, 0, 0, 0, 507, 3169, 1, 0, 0, 0, 509, 3178, 1, 0, 0, 0, 511, 3183, 1, 0, 0, 0, 513, 3191, 1, 0, 0, 0, 515, 3197, 1, 0, 0, 0, 517, 3205, 1, 0, 0, 0, 519, 3218, 1, 0, 0, 0, 521, 3227, 1, 0, 0, 0, 523, 3233, 1, 0, 0, 0, 525, 3240, 1, 0, 0, 0, 527, 3249, 1, 0, 0, 0, 529, 3254, 1, 0, 0, 0, 531, 3260, 1, 0, 0, 0, 533, 3265, 1, 0, 0, 0, 535, 3270, 1, 0, 0, 0, 537, 3276, 1, 0, 0, 0, 539, 3281, 1, 0, 0, 0, 541, 3284, 1, 0, 0, 0, 543, 3292, 1, 0, 0, 0, 545, 3299, 1, 0, 0, 0, 547, 3306, 1, 0, 0, 0, 549, 3312, 1, 0, 0, 0, 551, 3319, 1, 0, 0, 0, 553, 3322, 1, 0, 0, 0, 555, 3326, 1, 0, 0, 0, 557, 3331, 1, 0, 0, 0, 559, 3340, 1, 0, 0, 0, 561, 3347, 1, 0, 0, 0, 563, 3355, 1, 0, 0, 0, 565, 3361, 1, 0, 0, 0, 567, 3367, 1, 0, 0, 0, 569, 3374, 1, 0, 0, 0, 571, 3382, 1, 0, 0, 0, 573, 3392, 1, 0, 0, 0, 575, 3400, 1, 0, 0, 0, 577, 3409, 1, 0, 0, 0, 579, 3415, 1, 0, 0, 0, 581, 3425, 1, 0, 0, 0, 583, 3433, 1, 0, 0, 0, 585, 3442, 1, 0, 0, 0, 587, 3451, 1, 0, 0, 0, 589, 3457, 1, 0, 0, 0, 591, 3468, 1, 0, 0, 0, 593, 3479, 1, 0, 0, 0, 595, 3489, 1, 0, 0, 0, 597, 3497, 1, 0, 0, 0, 599, 3503, 1, 0, 0, 0, 601, 3509, 1, 0, 0, 0, 603, 3514, 1, 0, 0, 0, 605, 3523, 1, 0, 0, 0, 607, 3531, 1, 0, 0, 0, 609, 3541, 1, 0, 0, 0, 611, 3545, 1, 0, 0, 0, 613, 3553, 1, 0, 0, 0, 615, 3561, 1, 0, 0, 0, 617, 3570, 1, 0, 0, 0, 619, 3578, 1, 0, 0, 0, 621, 3585, 1, 0, 0, 0, 623, 3596, 1, 0, 0, 0, 625, 3604, 1, 0, 0, 0, 627, 3612, 1, 0, 0, 0, 629, 3618, 1, 0, 0, 0, 631, 3626, 1, 0, 0, 0, 633, 3635, 1, 0, 0, 0, 635, 3643, 1, 0, 0, 0, 637, 3650, 1, 0, 0, 0, 639, 3655, 1, 0, 0, 0, 641, 3664, 1, 0, 0, 0, 643, 3669, 1, 0, 0, 0, 645, 3674, 1, 0, 0, 0, 647, 3684, 1, 0, 0, 0, 649, 3691, 1, 0, 0, 0, 651, 3698, 1, 0, 0, 0, 653, 3705, 1, 0, 0, 0, 655, 3712, 1, 0, 0, 0, 657, 3721, 1, 0, 0, 0, 659, 3730, 1, 0, 0, 0, 661, 3740, 1, 0, 0, 0, 663, 3753, 1, 0, 0, 0, 665, 3760, 1, 0, 0, 0, 667, 3768, 1, 0, 0, 0, 669, 3772, 1, 0, 0, 0, 671, 3778, 1, 0, 0, 0, 673, 3783, 1, 0, 0, 0, 675, 3790, 1, 0, 0, 0, 677, 3799, 1, 0, 0, 0, 679, 3806, 1, 0, 0, 0, 681, 3817, 1, 0, 0, 0, 683, 3823, 1, 0, 0, 0, 685, 3833, 1, 0, 0, 0, 687, 3844, 1, 0, 0, 0, 689, 3850, 1, 0, 0, 0, 691, 3857, 1, 0, 0, 0, 693, 3865, 1, 0, 0, 0, 695, 3872, 1, 0, 0, 0, 697, 3878, 1, 0, 0, 0, 699, 3884, 1, 0, 0, 0, 701, 3891, 1, 0, 0, 0, 703, 3898, 1, 0, 0, 0, 705, 3909, 1, 0, 0, 0, 707, 3914, 1, 0, 0, 0, 709, 3923, 1, 0, 0, 0, 711, 3933, 1, 0, 0, 0, 713, 3938, 1, 0, 0, 0, 715, 3950, 1, 0, 0, 0, 717, 3958, 1, 0, 0, 0, 719, 3967, 1, 0, 0, 0, 721, 3975, 1, 0, 0, 0, 723, 3980, 1, 0, 0, 0, 725, 3986, 1, 0, 0, 0, 727, 3996, 1, 0, 0, 0, 729, 4008, 1, 0, 0, 0, 731, 4020, 1, 0, 0, 0, 733, 4028, 1, 0, 0, 0, 735, 4037, 1, 0, 0, 0, 737, 4046, 1, 0, 0, 0, 739, 4052, 1, 0, 0, 0, 741, 4059, 1, 0, 0, 0, 743, 4066, 1, 0, 0, 0, 745, 4072, 1, 0, 0, 0, 747, 4081, 1, 0, 0, 0, 749, 4091, 1, 0, 0, 0, 751, 4099, 1, 0, 0, 0, 753, 4107, 1, 0, 0, 0, 755, 4112, 1, 0, 0, 0, 757, 4121, 1, 0, 0, 0, 759, 4132, 1, 0, 0, 0, 761, 4140, 1, 0, 0, 0, 763, 4145, 1, 0, 0, 0, 765, 4153, 1, 0, 0, 0, 767, 4159, 1, 0, 0, 0, 769, 4163, 1, 0, 0, 0, 771, 4168, 1, 0, 0, 0, 773, 4172, 1, 0, 0, 0, 775, 4177, 1, 0, 0, 0, 777, 4185, 1, 0, 0, 0, 779, 4192, 1, 0, 0, 0, 781, 4196, 1, 0, 0, 0, 783, 4204, 1, 0, 0, 0, 785, 4209, 1, 0, 0, 0, 787, 4219, 1, 0, 0, 0, 789, 4228, 1, 0, 0, 0, 791, 4232, 1, 0, 0, 0, 793, 4240, 1, 0, 0, 0, 795, 4247, 1, 0, 0, 0, 797, 4255, 1, 0, 0, 0, 799, 4261, 1, 0, 0, 0, 801, 4270, 1, 0, 0, 0, 803, 4276, 1, 0, 0, 0, 805, 4280, 1, 0, 0, 0, 807, 4288, 1, 0, 0, 0, 809, 4297, 1, 0, 0, 0, 811, 4303, 1, 0, 0, 0, 813, 4312, 1, 0, 0, 0, 815, 4318, 1, 0, 0, 0, 817, 4323, 1, 0, 0, 0, 819, 4330, 1, 0, 0, 0, 821, 4338, 1, 0, 0, 0, 823, 4346, 1, 0, 0, 0, 825, 4355, 1, 0, 0, 0, 827, 4365, 1, 0, 0, 0, 829, 4370, 1, 0, 0, 0, 831, 4374, 1, 0, 0, 0, 833, 4380, 1, 0, 0, 0, 835, 4389, 1, 0, 0, 0, 837, 4399, 1, 0, 0, 0, 839, 4404, 1, 0, 0, 0, 841, 4414, 1, 0, 0, 0, 843, 4420, 1, 0, 0, 0, 845, 4425, 1, 0, 0, 0, 847, 4432, 1, 0, 0, 0, 849, 4440, 1, 0, 0, 0, 851, 4454, 1, 0, 0, 0, 853, 4465, 1, 0, 0, 0, 855, 4472, 1, 0, 0, 0, 857, 4491, 1, 0, 0, 0, 859, 4519, 1, 0, 0, 0, 861, 4546, 1, 0, 0, 0, 863, 4552, 1, 0, 0, 0, 865, 4565, 1, 0, 0, 0, 867, 4575, 1, 0, 0, 0, 869, 4586, 1, 0, 0, 0, 871, 4596, 1, 0, 0, 0, 873, 4606, 1, 0, 0, 0, 875, 4615, 1, 0, 0, 0, 877, 4621, 1, 0, 0, 0, 879, 4629, 1, 0, 0, 0, 881, 4642, 1, 0, 0, 0, 883, 4647, 1, 0, 0, 0, 885, 4655, 1, 0, 0, 0, 887, 4662, 1, 0, 0, 0, 889, 4669, 1, 0, 0, 0, 891, 4680, 1, 0, 0, 0, 893, 4690, 1, 0, 0, 0, 895, 4697, 1, 0, 0, 0, 897, 4704, 1, 0, 0, 0, 899, 4712, 1, 0, 0, 0, 901, 4720, 1, 0, 0, 0, 903, 4730, 1, 0, 0, 0, 905, 4737, 1, 0, 0, 0, 907, 4744, 1, 0, 0, 0, 909, 4751, 1, 0, 0, 0, 911, 4763, 1, 0, 0, 0, 913, 4767, 1, 0, 0, 0, 915, 4771, 1, 0, 0, 0, 917, 4777, 1, 0, 0, 0, 919, 4790, 1, 0, 0, 0, 921, 4802, 1, 0, 0, 0, 923, 4806, 1, 0, 0, 0, 925, 4810, 1, 0, 0, 0, 927, 4819, 1, 0, 0, 0, 929, 4827, 1, 0, 0, 0, 931, 4838, 1, 0, 0, 0, 933, 4844, 1, 0, 0, 0, 935, 4852, 1, 0, 0, 0, 937, 4861, 1, 0, 0, 0, 939, 4865, 1, 0, 0, 0, 941, 4873, 1, 0, 0, 0, 943, 4884, 1, 0, 0, 0, 945, 4893, 1, 0, 0, 0, 947, 4898, 1, 0, 0, 0, 949, 4905, 1, 0, 0, 0, 951, 4910, 1, 0, 0, 0, 953, 4917, 1, 0, 0, 0, 955, 4922, 1, 0, 0, 0, 957, 4931, 1, 0, 0, 0, 959, 4936, 1, 0, 0, 0, 961, 4948, 1, 0, 0, 0, 963, 4959, 1, 0, 0, 0, 965, 4968, 1, 0, 0, 0, 967, 4976, 1, 0, 0, 0, 969, 4990, 1, 0, 0, 0, 971, 4998, 1, 0, 0, 0, 973, 5009, 1, 0, 0, 0, 975, 5016, 1, 0, 0, 0, 977, 5023, 1, 0, 0, 0, 979, 5030, 1, 0, 0, 0, 981, 5037, 1, 0, 0, 0, 983, 5041, 1, 0, 0, 0, 985, 5045, 1, 0, 0, 0, 987, 5050, 1, 0, 0, 0, 989, 5055, 1, 0, 0, 0, 991, 5063, 1, 0, 0, 0, 993, 5069, 1, 0, 0, 0, 995, 5079, 1, 0, 0, 0, 997, 5084, 1, 0, 0, 0, 999, 5104, 1, 0, 0, 0, 1001, 5122, 1, 0, 0, 0, 1003, 5128, 1, 0, 0, 0, 1005, 5141, 1, 0, 0, 0, 1007, 5152, 1, 0, 0, 0, 1009, 5158, 1, 0, 0, 0, 1011, 5167, 1, 0, 0, 0, 1013, 5175, 1, 0, 0, 0, 1015, 5179, 1, 0, 0, 0, 1017, 5191, 1, 0, 0, 0, 1019, 5199, 1, 0, 0, 0, 1021, 5205, 1, 0, 0, 0, 1023, 5211, 1, 0, 0, 0, 1025, 5219, 1, 0, 0, 0, 1027, 5227, 1, 0, 0, 0, 1029, 5233, 1, 0, 0, 0, 1031, 5238, 1, 0, 0, 0, 1033, 5245, 1, 0, 0, 0, 1035, 5251, 1, 0, 0, 0, 1037, 5257, 1, 0, 0, 0, 1039, 5266, 1, 0, 0, 0, 1041, 5272, 1, 0, 0, 0, 1043, 5276, 1, 0, 0, 0, 1045, 5281, 1, 0, 0, 0, 1047, 5288, 1, 0, 0, 0, 1049, 5296, 1, 0, 0, 0, 1051, 5306, 1, 0, 0, 0, 1053, 5313, 1, 0, 0, 0, 1055, 5318, 1, 0, 0, 0, 1057, 5323, 1, 0, 0, 0, 1059, 5327, 1, 0, 0, 0, 1061, 5332, 1, 0, 0, 0, 1063, 5337, 1, 0, 0, 0, 1065, 5345, 1, 0, 0, 0, 1067, 5353, 1, 0, 0, 0, 1069, 5357, 1, 0, 0, 0, 1071, 5361, 1, 0, 0, 0, 1073, 5371, 1, 0, 0, 0, 1075, 5377, 1, 0, 0, 0, 1077, 5381, 1, 0, 0, 0, 1079, 5385, 1, 0, 0, 0, 1081, 5388, 1, 0, 0, 0, 1083, 5394, 1, 0, 0, 0, 1085, 5404, 1, 0, 0, 0, 1087, 5408, 1, 0, 0, 0, 1089, 5411, 1, 0, 0, 0, 1091, 5417, 1, 0, 0, 0, 1093, 5425, 1, 0, 0, 0, 1095, 5431, 1, 0, 0, 0, 1097, 5437, 1, 0, 0, 0, 1099, 5442, 1, 0, 0, 0, 1101, 5447, 1, 0, 0, 0, 1103, 5458, 1, 0, 0, 0, 1105, 5464, 1, 0, 0, 0, 1107, 5477, 1, 0, 0, 0, 1109, 5484, 1, 0, 0, 0, 1111, 5492, 1, 0, 0, 0, 1113, 5497, 1, 0, 0, 0, 1115, 5503, 1, 0, 0, 0, 1117, 5508, 1, 0, 0, 0, 1119, 5514, 1, 0, 0, 0, 1121, 5519, 1, 0, 0, 0, 1123, 5525, 1, 0, 0, 0, 1125, 5531, 1, 0, 0, 0, 1127, 5538, 1, 0, 0, 0, 1129, 5542, 1, 0, 0, 0, 1131, 5547, 1, 0, 0, 0, 1133, 5551, 1, 0, 0, 0, 1135, 5556, 1, 0, 0, 0, 1137, 5560, 1, 0, 0, 0, 1139, 5565, 1, 0, 0, 0, 1141, 5569, 1, 0, 0, 0, 1143, 5574, 1, 0, 0, 0, 1145, 5579, 1, 0, 0, 0, 1147, 5584, 1, 0, 0, 0, 1149, 5589, 1, 0, 0, 0, 1151, 5595, 1, 0, 0, 0, 1153, 5601, 1, 0, 0, 0, 1155, 5607, 1, 0, 0, 0, 1157, 5618, 1, 0, 0, 0, 1159, 5630, 1, 0, 0, 0, 1161, 5647, 1, 0, 0, 0, 1163, 5653, 1, 0, 0, 0, 1165, 5666, 1, 0, 0, 0, 1167, 5672, 1, 0, 0, 0, 1169, 5678, 1, 0, 0, 0, 1171, 5684, 1, 0, 0, 0, 1173, 5688, 1, 0, 0, 0, 1175, 5695, 1, 0, 0, 0, 1177, 5705, 1, 0, 0, 0, 1179, 5712, 1, 0, 0, 0, 1181, 5720, 1, 0, 0, 0, 1183, 5727, 1, 0, 0, 0, 1185, 5732, 1, 0, 0, 0, 1187, 5738, 1, 0, 0, 0, 1189, 5742, 1, 0, 0, 0, 1191, 5754, 1, 0, 0, 0, 1193, 5773, 1, 0, 0, 0, 1195, 5785, 1, 0, 0, 0, 1197, 5799, 1, 0, 0, 0, 1199, 5814, 1, 0, 0, 0, 1201, 5827, 1, 0, 0, 0, 1203, 5840, 1, 0, 0, 0, 1205, 5852, 1, 0, 0, 0, 1207, 5865, 1, 0, 0, 0, 1209, 5880, 1, 0, 0, 0, 1211, 5895, 1, 0, 0, 0, 1213, 5917, 1, 0, 0, 0, 1215, 5939, 1, 0, 0, 0, 1217, 5953, 1, 0, 0, 0, 1219, 5960, 1, 0, 0, 0, 1221, 5965, 1, 0, 0, 0, 1223, 5971, 1, 0, 0, 0, 1225, 5982, 1, 0, 0, 0, 1227, 5994, 1, 0, 0, 0, 1229, 6010, 1, 0, 0, 0, 1231, 6026, 1, 0, 0, 0, 1233, 6033, 1, 0, 0, 0, 1235, 6040, 1, 0, 0, 0, 1237, 6049, 1, 0, 0, 0, 1239, 6056, 1, 0, 0, 0, 1241, 6066, 1, 0, 0, 0, 1243, 6073, 1, 0, 0, 0, 1245, 6077, 1, 0, 0, 0, 1247, 6093, 1, 0, 0, 0, 1249, 6102, 1, 0, 0, 0, 1251, 6112, 1, 0, 0, 0, 1253, 6123, 1, 0, 0, 0, 1255, 6132, 1, 0, 0, 0, 1257, 6145, 1, 0, 0, 0, 1259, 6159, 1, 0, 0, 0, 1261, 6176, 1, 0, 0, 0, 1263, 6186, 1, 0, 0, 0, 1265, 6200, 1, 0, 0, 0, 1267, 6210, 1, 0, 0, 0, 1269, 6225, 1, 0, 0, 0, 1271, 6242, 1, 0, 0, 0, 1273, 6246, 1, 0, 0, 0, 1275, 6266, 1, 0, 0, 0, 1277, 6276, 1, 0, 0, 0, 1279, 6298, 1, 0, 0, 0, 1281, 6311, 1, 0, 0, 0, 1283, 6319, 1, 0, 0, 0, 1285, 6327, 1, 0, 0, 0, 1287, 6337, 1, 0, 0, 0, 1289, 6350, 1, 0, 0, 0, 1291, 6354, 1, 0, 0, 0, 1293, 6358, 1, 0, 0, 0, 1295, 6360, 1, 0, 0, 0, 1297, 6363, 1, 0, 0, 0, 1299, 6372, 1, 0, 0, 0, 1301, 6375, 1, 0, 0, 0, 1303, 6384, 1, 0, 0, 0, 1305, 6388, 1, 0, 0, 0, 1307, 6392, 1, 0, 0, 0, 1309, 6396, 1, 0, 0, 0, 1311, 6400, 1, 0, 0, 0, 1313, 6403, 1, 0, 0, 0, 1315, 6412, 1, 0, 0, 0, 1317, 6418, 1, 0, 0, 0, 1319, 6421, 1, 0, 0, 0, 1321, 6425, 1, 0, 0, 0, 1323, 6434, 1, 0, 0, 0, 1325, 6441, 1, 0, 0, 0, 1327, 6444, 1, 0, 0, 0, 1329, 6452, 1, 0, 0, 0, 1331, 6455, 1, 0, 0, 0, 1333, 6458, 1, 0, 0, 0, 1335, 6461, 1, 0, 0, 0, 1337, 6469, 1, 0, 0, 0, 1339, 6472, 1, 0, 0, 0, 1341, 6475, 1, 0, 0, 0, 1343, 6477, 1, 0, 0, 0, 1345, 6511, 1, 0, 0, 0, 1347, 6514, 1, 0, 0, 0, 1349, 6518, 1, 0, 0, 0, 1351, 6526, 1, 0, 0, 0, 1353, 6542, 1, 0, 0, 0, 1355, 6553, 1, 0, 0, 0, 1357, 6557, 1, 0, 0, 0, 1359, 6568, 1, 0, 0, 0, 1361, 6607, 1, 0, 0, 0, 1363, 6658, 1, 0, 0, 0, 1365, 6682, 1, 0, 0, 0, 1367, 6685, 1, 0, 0, 0, 1369, 6687, 1, 0, 0, 0, 1371, 6692, 1, 0, 0, 0, 1373, 6723, 1, 0, 0, 0, 1375, 6726, 1, 0, 0, 0, 1377, 6731, 1, 0, 0, 0, 1379, 6744, 1, 0, 0, 0, 1381, 6747, 1, 0, 0, 0, 1383, 6752, 1, 0, 0, 0, 1385, 6758, 1, 0, 0, 0, 1387, 6763, 1, 0, 0, 0, 1389, 6768, 1, 0, 0, 0, 1391, 6773, 1, 0, 0, 0, 1393, 6778, 1, 0, 0, 0, 1395, 6795, 1, 0, 0, 0, 1397, 6797, 1, 0, 0, 0, 1399, 1400, 5, 36, 0, 0, 1400, 6, 1, 0, 0, 0, 1401, 1402, 5, 40, 0, 0, 1402, 8, 1, 0, 0, 0, 1403, 1404, 5, 41, 0, 0, 1404, 10, 1, 0, 0, 0, 1405, 1406, 5, 91, 0, 0, 1406, 12, 1, 0, 0, 0, 1407, 1408, 5, 93, 0, 0, 1408, 14, 1, 0, 0, 0, 1409, 1410, 5, 44, 0, 0, 1410, 16, 1, 0, 0, 0, 1411, 1412, 5, 59, 0, 0, 1412, 18, 1, 0, 0, 0, 1413, 1414, 5, 58, 0, 0, 1414, 20, 1, 0, 0, 0, 1415, 1416, 5, 42, 0, 0, 1416, 22, 1, 0, 0, 0, 1417, 1418, 5, 61, 0, 0, 1418, 24, 1, 0, 0, 0, 1419, 1420, 5, 46, 0, 0, 1420, 26, 1, 0, 0, 0, 1421, 1422, 5, 43, 0, 0, 1422, 28, 1, 0, 0, 0, 1423, 1424, 5, 45, 0, 0, 1424, 30, 1, 0, 0, 0, 1425, 1426, 5, 47, 0, 0, 1426, 32, 1, 0, 0, 0, 1427, 1428, 5, 94, 0, 0, 1428, 34, 1, 0, 0, 0, 1429, 1430, 5, 60, 0, 0, 1430, 36, 1, 0, 0, 0, 1431, 1432, 5, 62, 0, 0, 1432, 38, 1, 0, 0, 0, 1433, 1434, 5, 60, 0, 0, 1434, 1435, 5, 60, 0, 0, 1435, 40, 1, 0, 0, 0, 1436, 1437, 5, 62, 0, 0, 1437, 1438, 5, 62, 0, 0, 1438, 42, 1, 0, 0, 0, 1439, 1440, 5, 58, 0, 0, 1440, 1441, 5, 61, 0, 0, 1441, 44, 1, 0, 0, 0, 1442, 1443, 5, 60, 0, 0, 1443, 1444, 5, 61, 0, 0, 1444, 46, 1, 0, 0, 0, 1445, 1446, 5, 61, 0, 0, 1446, 1447, 5, 62, 0, 0, 1447, 48, 1, 0, 0, 0, 1448, 1449, 5, 62, 0, 0, 1449, 1450, 5, 61, 0, 0, 1450, 50, 1, 0, 0, 0, 1451, 1452, 5, 46, 0, 0, 1452, 1453, 5, 46, 0, 0, 1453, 52, 1, 0, 0, 0, 1454, 1455, 5, 60, 0, 0, 1455, 1456, 5, 62, 0, 0, 1456, 54, 1, 0, 0, 0, 1457, 1458, 5, 58, 0, 0, 1458, 1459, 5, 58, 0, 0, 1459, 56, 1, 0, 0, 0, 1460, 1461, 5, 37, 0, 0, 1461, 58, 1, 0, 0, 0, 1462, 1464, 5, 36, 0, 0, 1463, 1465, 7, 0, 0, 0, 1464, 1463, 1, 0, 0, 0, 1465, 1466, 1, 0, 0, 0, 1466, 1464, 1, 0, 0, 0, 1466, 1467, 1, 0, 0, 0, 1467, 60, 1, 0, 0, 0, 1468, 1484, 3, 65, 30, 0, 1469, 1473, 5, 43, 0, 0, 1470, 1471, 5, 45, 0, 0, 1471, 1473, 4, 28, 0, 0, 1472, 1469, 1, 0, 0, 0, 1472, 1470, 1, 0, 0, 0, 1473, 1474, 1, 0, 0, 0, 1474, 1472, 1, 0, 0, 0, 1474, 1475, 1, 0, 0, 0, 1475, 1479, 1, 0, 0, 0, 1476, 1480, 3, 65, 30, 0, 1477, 1478, 5, 47, 0, 0, 1478, 1480, 4, 28, 1, 0, 1479, 1476, 1, 0, 0, 0, 1479, 1477, 1, 0, 0, 0, 1480, 1484, 1, 0, 0, 0, 1481, 1482, 5, 47, 0, 0, 1482, 1484, 4, 28, 2, 0, 1483, 1468, 1, 0, 0, 0, 1483, 1472, 1, 0, 0, 0, 1483, 1481, 1, 0, 0, 0, 1484, 1485, 1, 0, 0, 0, 1485, 1483, 1, 0, 0, 0, 1485, 1486, 1, 0, 0, 0, 1486, 1489, 1, 0, 0, 0, 1487, 1489, 7, 1, 0, 0, 1488, 1483, 1, 0, 0, 0, 1488, 1487, 1, 0, 0, 0, 1489, 1490, 1, 0, 0, 0, 1490, 1491, 6, 28, 0, 0, 1491, 62, 1, 0, 0, 0, 1492, 1498, 3, 67, 31, 0, 1493, 1494, 5, 45, 0, 0, 1494, 1498, 4, 29, 3, 0, 1495, 1496, 5, 47, 0, 0, 1496, 1498, 4, 29, 4, 0, 1497, 1492, 1, 0, 0, 0, 1497, 1493, 1, 0, 0, 0, 1497, 1495, 1, 0, 0, 0, 1498, 1501, 1, 0, 0, 0, 1499, 1497, 1, 0, 0, 0, 1499, 1500, 1, 0, 0, 0, 1500, 1502, 1, 0, 0, 0, 1501, 1499, 1, 0, 0, 0, 1502, 1504, 3, 69, 32, 0, 1503, 1505, 3, 61, 28, 0, 1504, 1503, 1, 0, 0, 0, 1504, 1505, 1, 0, 0, 0, 1505, 1509, 1, 0, 0, 0, 1506, 1510, 5, 43, 0, 0, 1507, 1508, 5, 45, 0, 0, 1508, 1510, 4, 29, 5, 0, 1509, 1506, 1, 0, 0, 0, 1509, 1507, 1, 0, 0, 0, 1510, 1511, 1, 0, 0, 0, 1511, 1509, 1, 0, 0, 0, 1511, 1512, 1, 0, 0, 0, 1512, 1513, 1, 0, 0, 0, 1513, 1514, 6, 29, 1, 0, 1514, 64, 1, 0, 0, 0, 1515, 1516, 7, 2, 0, 0, 1516, 66, 1, 0, 0, 0, 1517, 1518, 7, 3, 0, 0, 1518, 68, 1, 0, 0, 0, 1519, 1520, 7, 4, 0, 0, 1520, 70, 1, 0, 0, 0, 1521, 1522, 7, 5, 0, 0, 1522, 1523, 7, 6, 0, 0, 1523, 1524, 7, 6, 0, 0, 1524, 72, 1, 0, 0, 0, 1525, 1526, 7, 5, 0, 0, 1526, 1527, 7, 7, 0, 0, 1527, 1528, 7, 5, 0, 0, 1528, 1529, 7, 6, 0, 0, 1529, 1530, 7, 8, 0, 0, 1530, 1531, 7, 9, 0, 0, 1531, 1532, 7, 10, 0, 0, 1532, 74, 1, 0, 0, 0, 1533, 1534, 7, 5, 0, 0, 1534, 1535, 7, 7, 0, 0, 1535, 1536, 7, 5, 0, 0, 1536, 1537, 7, 6, 0, 0, 1537, 1538, 7, 8, 0, 0, 1538, 1539, 7, 11, 0, 0, 1539, 1540, 7, 10, 0, 0, 1540, 76, 1, 0, 0, 0, 1541, 1542, 7, 5, 0, 0, 1542, 1543, 7, 7, 0, 0, 1543, 1544, 7, 12, 0, 0, 1544, 78, 1, 0, 0, 0, 1545, 1546, 7, 5, 0, 0, 1546, 1547, 7, 7, 0, 0, 1547, 1548, 7, 8, 0, 0, 1548, 80, 1, 0, 0, 0, 1549, 1550, 7, 5, 0, 0, 1550, 1551, 7, 13, 0, 0, 1551, 1552, 7, 13, 0, 0, 1552, 1553, 7, 5, 0, 0, 1553, 1554, 7, 8, 0, 0, 1554, 82, 1, 0, 0, 0, 1555, 1556, 7, 5, 0, 0, 1556, 1557, 7, 9, 0, 0, 1557, 84, 1, 0, 0, 0, 1558, 1559, 7, 5, 0, 0, 1559, 1560, 7, 9, 0, 0, 1560, 1561, 7, 14, 0, 0, 1561, 86, 1, 0, 0, 0, 1562, 1563, 7, 5, 0, 0, 1563, 1564, 7, 9, 0, 0, 1564, 1565, 7, 8, 0, 0, 1565, 1566, 7, 15, 0, 0, 1566, 1567, 7, 15, 0, 0, 1567, 1568, 7, 10, 0, 0, 1568, 1569, 7, 16, 0, 0, 1569, 1570, 7, 13, 0, 0, 1570, 1571, 7, 17, 0, 0, 1571, 1572, 7, 14, 0, 0, 1572, 88, 1, 0, 0, 0, 1573, 1574, 7, 18, 0, 0, 1574, 1575, 7, 19, 0, 0, 1575, 1576, 7, 16, 0, 0, 1576, 1577, 7, 20, 0, 0, 1577, 90, 1, 0, 0, 0, 1578, 1579, 7, 14, 0, 0, 1579, 1580, 7, 5, 0, 0, 1580, 1581, 7, 9, 0, 0, 1581, 1582, 7, 10, 0, 0, 1582, 92, 1, 0, 0, 0, 1583, 1584, 7, 14, 0, 0, 1584, 1585, 7, 5, 0, 0, 1585, 1586, 7, 9, 0, 0, 1586, 1587, 7, 16, 0, 0, 1587, 94, 1, 0, 0, 0, 1588, 1589, 7, 14, 0, 0, 1589, 1590, 7, 20, 0, 0, 1590, 1591, 7, 10, 0, 0, 1591, 1592, 7, 14, 0, 0, 1592, 1593, 7, 21, 0, 0, 1593, 96, 1, 0, 0, 0, 1594, 1595, 7, 14, 0, 0, 1595, 1596, 7, 19, 0, 0, 1596, 1597, 7, 6, 0, 0, 1597, 1598, 7, 6, 0, 0, 1598, 1599, 7, 5, 0, 0, 1599, 1600, 7, 16, 0, 0, 1600, 1601, 7, 10, 0, 0, 1601, 98, 1, 0, 0, 0, 1602, 1603, 7, 14, 0, 0, 1603, 1604, 7, 19, 0, 0, 1604, 1605, 7, 6, 0, 0, 1605, 1606, 7, 22, 0, 0, 1606, 1607, 7, 15, 0, 0, 1607, 1608, 7, 7, 0, 0, 1608, 100, 1, 0, 0, 0, 1609, 1610, 7, 14, 0, 0, 1610, 1611, 7, 19, 0, 0, 1611, 1612, 7, 7, 0, 0, 1612, 1613, 7, 9, 0, 0, 1613, 1614, 7, 16, 0, 0, 1614, 1615, 7, 13, 0, 0, 1615, 1616, 7, 5, 0, 0, 1616, 1617, 7, 17, 0, 0, 1617, 1618, 7, 7, 0, 0, 1618, 1619, 7, 16, 0, 0, 1619, 102, 1, 0, 0, 0, 1620, 1621, 7, 14, 0, 0, 1621, 1622, 7, 13, 0, 0, 1622, 1623, 7, 10, 0, 0, 1623, 1624, 7, 5, 0, 0, 1624, 1625, 7, 16, 0, 0, 1625, 1626, 7, 10, 0, 0, 1626, 104, 1, 0, 0, 0, 1627, 1628, 7, 14, 0, 0, 1628, 1629, 7, 22, 0, 0, 1629, 1630, 7, 13, 0, 0, 1630, 1631, 7, 13, 0, 0, 1631, 1632, 7, 10, 0, 0, 1632, 1633, 7, 7, 0, 0, 1633, 1634, 7, 16, 0, 0, 1634, 1635, 5, 95, 0, 0, 1635, 1636, 7, 14, 0, 0, 1636, 1637, 7, 5, 0, 0, 1637, 1638, 7, 16, 0, 0, 1638, 1639, 7, 5, 0, 0, 1639, 1640, 7, 6, 0, 0, 1640, 1641, 7, 19, 0, 0, 1641, 1642, 7, 23, 0, 0, 1642, 106, 1, 0, 0, 0, 1643, 1644, 7, 14, 0, 0, 1644, 1645, 7, 22, 0, 0, 1645, 1646, 7, 13, 0, 0, 1646, 1647, 7, 13, 0, 0, 1647, 1648, 7, 10, 0, 0, 1648, 1649, 7, 7, 0, 0, 1649, 1650, 7, 16, 0, 0, 1650, 1651, 5, 95, 0, 0, 1651, 1652, 7, 12, 0, 0, 1652, 1653, 7, 5, 0, 0, 1653, 1654, 7, 16, 0, 0, 1654, 1655, 7, 10, 0, 0, 1655, 108, 1, 0, 0, 0, 1656, 1657, 7, 14, 0, 0, 1657, 1658, 7, 22, 0, 0, 1658, 1659, 7, 13, 0, 0, 1659, 1660, 7, 13, 0, 0, 1660, 1661, 7, 10, 0, 0, 1661, 1662, 7, 7, 0, 0, 1662, 1663, 7, 16, 0, 0, 1663, 1664, 5, 95, 0, 0, 1664, 1665, 7, 13, 0, 0, 1665, 1666, 7, 19, 0, 0, 1666, 1667, 7, 6, 0, 0, 1667, 1668, 7, 10, 0, 0, 1668, 110, 1, 0, 0, 0, 1669, 1670, 7, 14, 0, 0, 1670, 1671, 7, 22, 0, 0, 1671, 1672, 7, 13, 0, 0, 1672, 1673, 7, 13, 0, 0, 1673, 1674, 7, 10, 0, 0, 1674, 1675, 7, 7, 0, 0, 1675, 1676, 7, 16, 0, 0, 1676, 1677, 5, 95, 0, 0, 1677, 1678, 7, 16, 0, 0, 1678, 1679, 7, 17, 0, 0, 1679, 1680, 7, 15, 0, 0, 1680, 1681, 7, 10, 0, 0, 1681, 112, 1, 0, 0, 0, 1682, 1683, 7, 14, 0, 0, 1683, 1684, 7, 22, 0, 0, 1684, 1685, 7, 13, 0, 0, 1685, 1686, 7, 13, 0, 0, 1686, 1687, 7, 10, 0, 0, 1687, 1688, 7, 7, 0, 0, 1688, 1689, 7, 16, 0, 0, 1689, 1690, 5, 95, 0, 0, 1690, 1691, 7, 16, 0, 0, 1691, 1692, 7, 17, 0, 0, 1692, 1693, 7, 15, 0, 0, 1693, 1694, 7, 10, 0, 0, 1694, 1695, 7, 9, 0, 0, 1695, 1696, 7, 16, 0, 0, 1696, 1697, 7, 5, 0, 0, 1697, 1698, 7, 15, 0, 0, 1698, 1699, 7, 24, 0, 0, 1699, 114, 1, 0, 0, 0, 1700, 1701, 7, 14, 0, 0, 1701, 1702, 7, 22, 0, 0, 1702, 1703, 7, 13, 0, 0, 1703, 1704, 7, 13, 0, 0, 1704, 1705, 7, 10, 0, 0, 1705, 1706, 7, 7, 0, 0, 1706, 1707, 7, 16, 0, 0, 1707, 1708, 5, 95, 0, 0, 1708, 1709, 7, 22, 0, 0, 1709, 1710, 7, 9, 0, 0, 1710, 1711, 7, 10, 0, 0, 1711, 1712, 7, 13, 0, 0, 1712, 116, 1, 0, 0, 0, 1713, 1714, 7, 12, 0, 0, 1714, 1715, 7, 10, 0, 0, 1715, 1716, 7, 25, 0, 0, 1716, 1717, 7, 5, 0, 0, 1717, 1718, 7, 22, 0, 0, 1718, 1719, 7, 6, 0, 0, 1719, 1720, 7, 16, 0, 0, 1720, 118, 1, 0, 0, 0, 1721, 1722, 7, 12, 0, 0, 1722, 1723, 7, 10, 0, 0, 1723, 1724, 7, 25, 0, 0, 1724, 1725, 7, 10, 0, 0, 1725, 1726, 7, 13, 0, 0, 1726, 1727, 7, 13, 0, 0, 1727, 1728, 7, 5, 0, 0, 1728, 1729, 7, 18, 0, 0, 1729, 1730, 7, 6, 0, 0, 1730, 1731, 7, 10, 0, 0, 1731, 120, 1, 0, 0, 0, 1732, 1733, 7, 12, 0, 0, 1733, 1734, 7, 10, 0, 0, 1734, 1735, 7, 9, 0, 0, 1735, 1736, 7, 14, 0, 0, 1736, 122, 1, 0, 0, 0, 1737, 1738, 7, 12, 0, 0, 1738, 1739, 7, 17, 0, 0, 1739, 1740, 7, 9, 0, 0, 1740, 1741, 7, 16, 0, 0, 1741, 1742, 7, 17, 0, 0, 1742, 1743, 7, 7, 0, 0, 1743, 1744, 7, 14, 0, 0, 1744, 1745, 7, 16, 0, 0, 1745, 124, 1, 0, 0, 0, 1746, 1747, 7, 12, 0, 0, 1747, 1748, 7, 19, 0, 0, 1748, 126, 1, 0, 0, 0, 1749, 1750, 7, 10, 0, 0, 1750, 1751, 7, 6, 0, 0, 1751, 1752, 7, 9, 0, 0, 1752, 1753, 7, 10, 0, 0, 1753, 128, 1, 0, 0, 0, 1754, 1755, 7, 10, 0, 0, 1755, 1756, 7, 26, 0, 0, 1756, 1757, 7, 14, 0, 0, 1757, 1758, 7, 10, 0, 0, 1758, 1759, 7, 24, 0, 0, 1759, 1760, 7, 16, 0, 0, 1760, 130, 1, 0, 0, 0, 1761, 1762, 7, 25, 0, 0, 1762, 1763, 7, 5, 0, 0, 1763, 1764, 7, 6, 0, 0, 1764, 1765, 7, 9, 0, 0, 1765, 1766, 7, 10, 0, 0, 1766, 132, 1, 0, 0, 0, 1767, 1768, 7, 25, 0, 0, 1768, 1769, 7, 10, 0, 0, 1769, 1770, 7, 16, 0, 0, 1770, 1771, 7, 14, 0, 0, 1771, 1772, 7, 20, 0, 0, 1772, 134, 1, 0, 0, 0, 1773, 1774, 7, 25, 0, 0, 1774, 1775, 7, 19, 0, 0, 1775, 1776, 7, 13, 0, 0, 1776, 136, 1, 0, 0, 0, 1777, 1778, 7, 25, 0, 0, 1778, 1779, 7, 19, 0, 0, 1779, 1780, 7, 13, 0, 0, 1780, 1781, 7, 10, 0, 0, 1781, 1782, 7, 17, 0, 0, 1782, 1783, 7, 23, 0, 0, 1783, 1784, 7, 7, 0, 0, 1784, 138, 1, 0, 0, 0, 1785, 1786, 7, 25, 0, 0, 1786, 1787, 7, 13, 0, 0, 1787, 1788, 7, 19, 0, 0, 1788, 1789, 7, 15, 0, 0, 1789, 140, 1, 0, 0, 0, 1790, 1791, 7, 23, 0, 0, 1791, 1792, 7, 13, 0, 0, 1792, 1793, 7, 5, 0, 0, 1793, 1794, 7, 7, 0, 0, 1794, 1795, 7, 16, 0, 0, 1795, 142, 1, 0, 0, 0, 1796, 1797, 7, 23, 0, 0, 1797, 1798, 7, 13, 0, 0, 1798, 1799, 7, 19, 0, 0, 1799, 1800, 7, 22, 0, 0, 1800, 1801, 7, 24, 0, 0, 1801, 144, 1, 0, 0, 0, 1802, 1803, 7, 20, 0, 0, 1803, 1804, 7, 5, 0, 0, 1804, 1805, 7, 27, 0, 0, 1805, 1806, 7, 17, 0, 0, 1806, 1807, 7, 7, 0, 0, 1807, 1808, 7, 23, 0, 0, 1808, 146, 1, 0, 0, 0, 1809, 1810, 7, 17, 0, 0, 1810, 1811, 7, 7, 0, 0, 1811, 148, 1, 0, 0, 0, 1812, 1813, 7, 17, 0, 0, 1813, 1814, 7, 7, 0, 0, 1814, 1815, 7, 17, 0, 0, 1815, 1816, 7, 16, 0, 0, 1816, 1817, 7, 17, 0, 0, 1817, 1818, 7, 5, 0, 0, 1818, 1819, 7, 6, 0, 0, 1819, 1820, 7, 6, 0, 0, 1820, 1821, 7, 8, 0, 0, 1821, 150, 1, 0, 0, 0, 1822, 1823, 7, 17, 0, 0, 1823, 1824, 7, 7, 0, 0, 1824, 1825, 7, 16, 0, 0, 1825, 1826, 7, 10, 0, 0, 1826, 1827, 7, 13, 0, 0, 1827, 1828, 7, 9, 0, 0, 1828, 1829, 7, 10, 0, 0, 1829, 1830, 7, 14, 0, 0, 1830, 1831, 7, 16, 0, 0, 1831, 152, 1, 0, 0, 0, 1832, 1833, 7, 17, 0, 0, 1833, 1834, 7, 7, 0, 0, 1834, 1835, 7, 16, 0, 0, 1835, 1836, 7, 19, 0, 0, 1836, 154, 1, 0, 0, 0, 1837, 1838, 7, 6, 0, 0, 1838, 1839, 7, 5, 0, 0, 1839, 1840, 7, 16, 0, 0, 1840, 1841, 7, 10, 0, 0, 1841, 1842, 7, 13, 0, 0, 1842, 1843, 7, 5, 0, 0, 1843, 1844, 7, 6, 0, 0, 1844, 156, 1, 0, 0, 0, 1845, 1846, 7, 6, 0, 0, 1846, 1847, 7, 10, 0, 0, 1847, 1848, 7, 5, 0, 0, 1848, 1849, 7, 12, 0, 0, 1849, 1850, 7, 17, 0, 0, 1850, 1851, 7, 7, 0, 0, 1851, 1852, 7, 23, 0, 0, 1852, 158, 1, 0, 0, 0, 1853, 1854, 7, 6, 0, 0, 1854, 1855, 7, 17, 0, 0, 1855, 1856, 7, 15, 0, 0, 1856, 1857, 7, 17, 0, 0, 1857, 1858, 7, 16, 0, 0, 1858, 160, 1, 0, 0, 0, 1859, 1860, 7, 6, 0, 0, 1860, 1861, 7, 19, 0, 0, 1861, 1862, 7, 14, 0, 0, 1862, 1863, 7, 5, 0, 0, 1863, 1864, 7, 6, 0, 0, 1864, 1865, 7, 16, 0, 0, 1865, 1866, 7, 17, 0, 0, 1866, 1867, 7, 15, 0, 0, 1867, 1868, 7, 10, 0, 0, 1868, 162, 1, 0, 0, 0, 1869, 1870, 7, 6, 0, 0, 1870, 1871, 7, 19, 0, 0, 1871, 1872, 7, 14, 0, 0, 1872, 1873, 7, 5, 0, 0, 1873, 1874, 7, 6, 0, 0, 1874, 1875, 7, 16, 0, 0, 1875, 1876, 7, 17, 0, 0, 1876, 1877, 7, 15, 0, 0, 1877, 1878, 7, 10, 0, 0, 1878, 1879, 7, 9, 0, 0, 1879, 1880, 7, 16, 0, 0, 1880, 1881, 7, 5, 0, 0, 1881, 1882, 7, 15, 0, 0, 1882, 1883, 7, 24, 0, 0, 1883, 164, 1, 0, 0, 0, 1884, 1885, 7, 7, 0, 0, 1885, 1886, 7, 19, 0, 0, 1886, 1887, 7, 16, 0, 0, 1887, 166, 1, 0, 0, 0, 1888, 1889, 7, 7, 0, 0, 1889, 1890, 7, 22, 0, 0, 1890, 1891, 7, 6, 0, 0, 1891, 1892, 7, 6, 0, 0, 1892, 168, 1, 0, 0, 0, 1893, 1894, 7, 19, 0, 0, 1894, 1895, 7, 25, 0, 0, 1895, 1896, 7, 25, 0, 0, 1896, 1897, 7, 9, 0, 0, 1897, 1898, 7, 10, 0, 0, 1898, 1899, 7, 16, 0, 0, 1899, 170, 1, 0, 0, 0, 1900, 1901, 7, 19, 0, 0, 1901, 1902, 7, 7, 0, 0, 1902, 172, 1, 0, 0, 0, 1903, 1904, 7, 19, 0, 0, 1904, 1905, 7, 7, 0, 0, 1905, 1906, 7, 6, 0, 0, 1906, 1907, 7, 8, 0, 0, 1907, 174, 1, 0, 0, 0, 1908, 1909, 7, 19, 0, 0, 1909, 1910, 7, 13, 0, 0, 1910, 176, 1, 0, 0, 0, 1911, 1912, 7, 19, 0, 0, 1912, 1913, 7, 13, 0, 0, 1913, 1914, 7, 12, 0, 0, 1914, 1915, 7, 10, 0, 0, 1915, 1916, 7, 13, 0, 0, 1916, 178, 1, 0, 0, 0, 1917, 1918, 7, 24, 0, 0, 1918, 1919, 7, 6, 0, 0, 1919, 1920, 7, 5, 0, 0, 1920, 1921, 7, 14, 0, 0, 1921, 1922, 7, 17, 0, 0, 1922, 1923, 7, 7, 0, 0, 1923, 1924, 7, 23, 0, 0, 1924, 180, 1, 0, 0, 0, 1925, 1926, 7, 24, 0, 0, 1926, 1927, 7, 13, 0, 0, 1927, 1928, 7, 17, 0, 0, 1928, 1929, 7, 15, 0, 0, 1929, 1930, 7, 5, 0, 0, 1930, 1931, 7, 13, 0, 0, 1931, 1932, 7, 8, 0, 0, 1932, 182, 1, 0, 0, 0, 1933, 1934, 7, 13, 0, 0, 1934, 1935, 7, 10, 0, 0, 1935, 1936, 7, 25, 0, 0, 1936, 1937, 7, 10, 0, 0, 1937, 1938, 7, 13, 0, 0, 1938, 1939, 7, 10, 0, 0, 1939, 1940, 7, 7, 0, 0, 1940, 1941, 7, 14, 0, 0, 1941, 1942, 7, 10, 0, 0, 1942, 1943, 7, 9, 0, 0, 1943, 184, 1, 0, 0, 0, 1944, 1945, 7, 13, 0, 0, 1945, 1946, 7, 10, 0, 0, 1946, 1947, 7, 16, 0, 0, 1947, 1948, 7, 22, 0, 0, 1948, 1949, 7, 13, 0, 0, 1949, 1950, 7, 7, 0, 0, 1950, 1951, 7, 17, 0, 0, 1951, 1952, 7, 7, 0, 0, 1952, 1953, 7, 23, 0, 0, 1953, 186, 1, 0, 0, 0, 1954, 1955, 7, 9, 0, 0, 1955, 1956, 7, 10, 0, 0, 1956, 1957, 7, 6, 0, 0, 1957, 1958, 7, 10, 0, 0, 1958, 1959, 7, 14, 0, 0, 1959, 1960, 7, 16, 0, 0, 1960, 188, 1, 0, 0, 0, 1961, 1962, 7, 9, 0, 0, 1962, 1963, 7, 10, 0, 0, 1963, 1964, 7, 9, 0, 0, 1964, 1965, 7, 9, 0, 0, 1965, 1966, 7, 17, 0, 0, 1966, 1967, 7, 19, 0, 0, 1967, 1968, 7, 7, 0, 0, 1968, 1969, 5, 95, 0, 0, 1969, 1970, 7, 22, 0, 0, 1970, 1971, 7, 9, 0, 0, 1971, 1972, 7, 10, 0, 0, 1972, 1973, 7, 13, 0, 0, 1973, 190, 1, 0, 0, 0, 1974, 1975, 7, 9, 0, 0, 1975, 1976, 7, 19, 0, 0, 1976, 1977, 7, 15, 0, 0, 1977, 1978, 7, 10, 0, 0, 1978, 192, 1, 0, 0, 0, 1979, 1980, 7, 9, 0, 0, 1980, 1981, 7, 8, 0, 0, 1981, 1982, 7, 15, 0, 0, 1982, 1983, 7, 15, 0, 0, 1983, 1984, 7, 10, 0, 0, 1984, 1985, 7, 16, 0, 0, 1985, 1986, 7, 13, 0, 0, 1986, 1987, 7, 17, 0, 0, 1987, 1988, 7, 14, 0, 0, 1988, 194, 1, 0, 0, 0, 1989, 1990, 7, 16, 0, 0, 1990, 1991, 7, 5, 0, 0, 1991, 1992, 7, 18, 0, 0, 1992, 1993, 7, 6, 0, 0, 1993, 1994, 7, 10, 0, 0, 1994, 196, 1, 0, 0, 0, 1995, 1996, 7, 16, 0, 0, 1996, 1997, 7, 20, 0, 0, 1997, 1998, 7, 10, 0, 0, 1998, 1999, 7, 7, 0, 0, 1999, 198, 1, 0, 0, 0, 2000, 2001, 7, 16, 0, 0, 2001, 2002, 7, 19, 0, 0, 2002, 200, 1, 0, 0, 0, 2003, 2004, 7, 16, 0, 0, 2004, 2005, 7, 19, 0, 0, 2005, 2006, 7, 24, 0, 0, 2006, 2007, 7, 17, 0, 0, 2007, 2008, 7, 14, 0, 0, 2008, 202, 1, 0, 0, 0, 2009, 2010, 7, 9, 0, 0, 2010, 2011, 7, 16, 0, 0, 2011, 2012, 7, 13, 0, 0, 2012, 2013, 7, 10, 0, 0, 2013, 2014, 7, 5, 0, 0, 2014, 2015, 7, 15, 0, 0, 2015, 204, 1, 0, 0, 0, 2016, 2017, 7, 16, 0, 0, 2017, 2018, 7, 13, 0, 0, 2018, 2019, 7, 5, 0, 0, 2019, 2020, 7, 17, 0, 0, 2020, 2021, 7, 6, 0, 0, 2021, 2022, 7, 17, 0, 0, 2022, 2023, 7, 7, 0, 0, 2023, 2024, 7, 23, 0, 0, 2024, 206, 1, 0, 0, 0, 2025, 2026, 7, 16, 0, 0, 2026, 2027, 7, 13, 0, 0, 2027, 2028, 7, 22, 0, 0, 2028, 2029, 7, 10, 0, 0, 2029, 208, 1, 0, 0, 0, 2030, 2031, 7, 22, 0, 0, 2031, 2032, 7, 7, 0, 0, 2032, 2033, 7, 17, 0, 0, 2033, 2034, 7, 19, 0, 0, 2034, 2035, 7, 7, 0, 0, 2035, 210, 1, 0, 0, 0, 2036, 2037, 7, 22, 0, 0, 2037, 2038, 7, 7, 0, 0, 2038, 2039, 7, 17, 0, 0, 2039, 2040, 7, 28, 0, 0, 2040, 2041, 7, 22, 0, 0, 2041, 2042, 7, 10, 0, 0, 2042, 212, 1, 0, 0, 0, 2043, 2044, 7, 22, 0, 0, 2044, 2045, 7, 9, 0, 0, 2045, 2046, 7, 10, 0, 0, 2046, 2047, 7, 13, 0, 0, 2047, 214, 1, 0, 0, 0, 2048, 2049, 7, 22, 0, 0, 2049, 2050, 7, 9, 0, 0, 2050, 2051, 7, 17, 0, 0, 2051, 2052, 7, 7, 0, 0, 2052, 2053, 7, 23, 0, 0, 2053, 216, 1, 0, 0, 0, 2054, 2055, 7, 27, 0, 0, 2055, 2056, 7, 5, 0, 0, 2056, 2057, 7, 13, 0, 0, 2057, 2058, 7, 17, 0, 0, 2058, 2059, 7, 5, 0, 0, 2059, 2060, 7, 12, 0, 0, 2060, 2061, 7, 17, 0, 0, 2061, 2062, 7, 14, 0, 0, 2062, 218, 1, 0, 0, 0, 2063, 2064, 7, 29, 0, 0, 2064, 2065, 7, 20, 0, 0, 2065, 2066, 7, 10, 0, 0, 2066, 2067, 7, 7, 0, 0, 2067, 220, 1, 0, 0, 0, 2068, 2069, 7, 29, 0, 0, 2069, 2070, 7, 20, 0, 0, 2070, 2071, 7, 10, 0, 0, 2071, 2072, 7, 13, 0, 0, 2072, 2073, 7, 10, 0, 0, 2073, 222, 1, 0, 0, 0, 2074, 2075, 7, 29, 0, 0, 2075, 2076, 7, 17, 0, 0, 2076, 2077, 7, 7, 0, 0, 2077, 2078, 7, 12, 0, 0, 2078, 2079, 7, 19, 0, 0, 2079, 2080, 7, 29, 0, 0, 2080, 224, 1, 0, 0, 0, 2081, 2082, 7, 29, 0, 0, 2082, 2083, 7, 17, 0, 0, 2083, 2084, 7, 16, 0, 0, 2084, 2085, 7, 20, 0, 0, 2085, 226, 1, 0, 0, 0, 2086, 2087, 7, 5, 0, 0, 2087, 2088, 7, 22, 0, 0, 2088, 2089, 7, 16, 0, 0, 2089, 2090, 7, 20, 0, 0, 2090, 2091, 7, 19, 0, 0, 2091, 2092, 7, 13, 0, 0, 2092, 2093, 7, 17, 0, 0, 2093, 2094, 7, 11, 0, 0, 2094, 2095, 7, 5, 0, 0, 2095, 2096, 7, 16, 0, 0, 2096, 2097, 7, 17, 0, 0, 2097, 2098, 7, 19, 0, 0, 2098, 2099, 7, 7, 0, 0, 2099, 228, 1, 0, 0, 0, 2100, 2101, 7, 18, 0, 0, 2101, 2102, 7, 17, 0, 0, 2102, 2103, 7, 7, 0, 0, 2103, 2104, 7, 5, 0, 0, 2104, 2105, 7, 13, 0, 0, 2105, 2106, 7, 8, 0, 0, 2106, 230, 1, 0, 0, 0, 2107, 2108, 7, 14, 0, 0, 2108, 2109, 7, 19, 0, 0, 2109, 2110, 7, 6, 0, 0, 2110, 2111, 7, 6, 0, 0, 2111, 2112, 7, 5, 0, 0, 2112, 2113, 7, 16, 0, 0, 2113, 2114, 7, 17, 0, 0, 2114, 2115, 7, 19, 0, 0, 2115, 2116, 7, 7, 0, 0, 2116, 232, 1, 0, 0, 0, 2117, 2118, 7, 14, 0, 0, 2118, 2119, 7, 19, 0, 0, 2119, 2120, 7, 7, 0, 0, 2120, 2121, 7, 14, 0, 0, 2121, 2122, 7, 22, 0, 0, 2122, 2123, 7, 13, 0, 0, 2123, 2124, 7, 13, 0, 0, 2124, 2125, 7, 10, 0, 0, 2125, 2126, 7, 7, 0, 0, 2126, 2127, 7, 16, 0, 0, 2127, 2128, 7, 6, 0, 0, 2128, 2129, 7, 8, 0, 0, 2129, 234, 1, 0, 0, 0, 2130, 2131, 7, 14, 0, 0, 2131, 2132, 7, 13, 0, 0, 2132, 2133, 7, 19, 0, 0, 2133, 2134, 7, 9, 0, 0, 2134, 2135, 7, 9, 0, 0, 2135, 236, 1, 0, 0, 0, 2136, 2137, 7, 14, 0, 0, 2137, 2138, 7, 22, 0, 0, 2138, 2139, 7, 13, 0, 0, 2139, 2140, 7, 13, 0, 0, 2140, 2141, 7, 10, 0, 0, 2141, 2142, 7, 7, 0, 0, 2142, 2143, 7, 16, 0, 0, 2143, 2144, 5, 95, 0, 0, 2144, 2145, 7, 9, 0, 0, 2145, 2146, 7, 14, 0, 0, 2146, 2147, 7, 20, 0, 0, 2147, 2148, 7, 10, 0, 0, 2148, 2149, 7, 15, 0, 0, 2149, 2150, 7, 5, 0, 0, 2150, 238, 1, 0, 0, 0, 2151, 2152, 7, 25, 0, 0, 2152, 2153, 7, 13, 0, 0, 2153, 2154, 7, 10, 0, 0, 2154, 2155, 7, 10, 0, 0, 2155, 2156, 7, 11, 0, 0, 2156, 2157, 7, 10, 0, 0, 2157, 240, 1, 0, 0, 0, 2158, 2159, 7, 25, 0, 0, 2159, 2160, 7, 22, 0, 0, 2160, 2161, 7, 6, 0, 0, 2161, 2162, 7, 6, 0, 0, 2162, 242, 1, 0, 0, 0, 2163, 2164, 7, 17, 0, 0, 2164, 2165, 7, 6, 0, 0, 2165, 2166, 7, 17, 0, 0, 2166, 2167, 7, 21, 0, 0, 2167, 2168, 7, 10, 0, 0, 2168, 244, 1, 0, 0, 0, 2169, 2170, 7, 17, 0, 0, 2170, 2171, 7, 7, 0, 0, 2171, 2172, 7, 7, 0, 0, 2172, 2173, 7, 10, 0, 0, 2173, 2174, 7, 13, 0, 0, 2174, 246, 1, 0, 0, 0, 2175, 2176, 7, 17, 0, 0, 2176, 2177, 7, 9, 0, 0, 2177, 248, 1, 0, 0, 0, 2178, 2179, 7, 17, 0, 0, 2179, 2180, 7, 9, 0, 0, 2180, 2181, 7, 7, 0, 0, 2181, 2182, 7, 22, 0, 0, 2182, 2183, 7, 6, 0, 0, 2183, 2184, 7, 6, 0, 0, 2184, 250, 1, 0, 0, 0, 2185, 2186, 7, 30, 0, 0, 2186, 2187, 7, 19, 0, 0, 2187, 2188, 7, 17, 0, 0, 2188, 2189, 7, 7, 0, 0, 2189, 252, 1, 0, 0, 0, 2190, 2191, 7, 6, 0, 0, 2191, 2192, 7, 10, 0, 0, 2192, 2193, 7, 25, 0, 0, 2193, 2194, 7, 16, 0, 0, 2194, 254, 1, 0, 0, 0, 2195, 2196, 7, 6, 0, 0, 2196, 2197, 7, 17, 0, 0, 2197, 2198, 7, 21, 0, 0, 2198, 2199, 7, 10, 0, 0, 2199, 256, 1, 0, 0, 0, 2200, 2201, 7, 7, 0, 0, 2201, 2202, 7, 5, 0, 0, 2202, 2203, 7, 16, 0, 0, 2203, 2204, 7, 22, 0, 0, 2204, 2205, 7, 13, 0, 0, 2205, 2206, 7, 5, 0, 0, 2206, 2207, 7, 6, 0, 0, 2207, 258, 1, 0, 0, 0, 2208, 2209, 7, 7, 0, 0, 2209, 2210, 7, 19, 0, 0, 2210, 2211, 7, 16, 0, 0, 2211, 2212, 7, 7, 0, 0, 2212, 2213, 7, 22, 0, 0, 2213, 2214, 7, 6, 0, 0, 2214, 2215, 7, 6, 0, 0, 2215, 260, 1, 0, 0, 0, 2216, 2217, 7, 19, 0, 0, 2217, 2218, 7, 22, 0, 0, 2218, 2219, 7, 16, 0, 0, 2219, 2220, 7, 10, 0, 0, 2220, 2221, 7, 13, 0, 0, 2221, 262, 1, 0, 0, 0, 2222, 2223, 7, 19, 0, 0, 2223, 2224, 7, 27, 0, 0, 2224, 2225, 7, 10, 0, 0, 2225, 2226, 7, 13, 0, 0, 2226, 264, 1, 0, 0, 0, 2227, 2228, 7, 19, 0, 0, 2228, 2229, 7, 27, 0, 0, 2229, 2230, 7, 10, 0, 0, 2230, 2231, 7, 13, 0, 0, 2231, 2232, 7, 6, 0, 0, 2232, 2233, 7, 5, 0, 0, 2233, 2234, 7, 24, 0, 0, 2234, 2235, 7, 9, 0, 0, 2235, 266, 1, 0, 0, 0, 2236, 2237, 7, 13, 0, 0, 2237, 2238, 7, 17, 0, 0, 2238, 2239, 7, 23, 0, 0, 2239, 2240, 7, 20, 0, 0, 2240, 2241, 7, 16, 0, 0, 2241, 268, 1, 0, 0, 0, 2242, 2243, 7, 9, 0, 0, 2243, 2244, 7, 17, 0, 0, 2244, 2245, 7, 15, 0, 0, 2245, 2246, 7, 17, 0, 0, 2246, 2247, 7, 6, 0, 0, 2247, 2248, 7, 5, 0, 0, 2248, 2249, 7, 13, 0, 0, 2249, 270, 1, 0, 0, 0, 2250, 2251, 7, 27, 0, 0, 2251, 2252, 7, 10, 0, 0, 2252, 2253, 7, 13, 0, 0, 2253, 2254, 7, 18, 0, 0, 2254, 2255, 7, 19, 0, 0, 2255, 2256, 7, 9, 0, 0, 2256, 2257, 7, 10, 0, 0, 2257, 272, 1, 0, 0, 0, 2258, 2259, 7, 5, 0, 0, 2259, 2260, 7, 18, 0, 0, 2260, 2261, 7, 19, 0, 0, 2261, 2262, 7, 13, 0, 0, 2262, 2263, 7, 16, 0, 0, 2263, 274, 1, 0, 0, 0, 2264, 2265, 7, 5, 0, 0, 2265, 2266, 7, 18, 0, 0, 2266, 2267, 7, 9, 0, 0, 2267, 2268, 7, 19, 0, 0, 2268, 2269, 7, 6, 0, 0, 2269, 2270, 7, 22, 0, 0, 2270, 2271, 7, 16, 0, 0, 2271, 2272, 7, 10, 0, 0, 2272, 276, 1, 0, 0, 0, 2273, 2274, 7, 5, 0, 0, 2274, 2275, 7, 14, 0, 0, 2275, 2276, 7, 14, 0, 0, 2276, 2277, 7, 10, 0, 0, 2277, 2278, 7, 9, 0, 0, 2278, 2279, 7, 9, 0, 0, 2279, 278, 1, 0, 0, 0, 2280, 2281, 7, 5, 0, 0, 2281, 2282, 7, 14, 0, 0, 2282, 2283, 7, 16, 0, 0, 2283, 2284, 7, 17, 0, 0, 2284, 2285, 7, 19, 0, 0, 2285, 2286, 7, 7, 0, 0, 2286, 280, 1, 0, 0, 0, 2287, 2288, 7, 5, 0, 0, 2288, 2289, 7, 12, 0, 0, 2289, 2290, 7, 12, 0, 0, 2290, 282, 1, 0, 0, 0, 2291, 2292, 7, 5, 0, 0, 2292, 2293, 7, 12, 0, 0, 2293, 2294, 7, 15, 0, 0, 2294, 2295, 7, 17, 0, 0, 2295, 2296, 7, 7, 0, 0, 2296, 284, 1, 0, 0, 0, 2297, 2298, 7, 5, 0, 0, 2298, 2299, 7, 25, 0, 0, 2299, 2300, 7, 16, 0, 0, 2300, 2301, 7, 10, 0, 0, 2301, 2302, 7, 13, 0, 0, 2302, 286, 1, 0, 0, 0, 2303, 2304, 7, 5, 0, 0, 2304, 2305, 7, 23, 0, 0, 2305, 2306, 7, 23, 0, 0, 2306, 2307, 7, 13, 0, 0, 2307, 2308, 7, 10, 0, 0, 2308, 2309, 7, 23, 0, 0, 2309, 2310, 7, 5, 0, 0, 2310, 2311, 7, 16, 0, 0, 2311, 2312, 7, 10, 0, 0, 2312, 288, 1, 0, 0, 0, 2313, 2314, 7, 5, 0, 0, 2314, 2315, 7, 6, 0, 0, 2315, 2316, 7, 9, 0, 0, 2316, 2317, 7, 19, 0, 0, 2317, 290, 1, 0, 0, 0, 2318, 2319, 7, 5, 0, 0, 2319, 2320, 7, 6, 0, 0, 2320, 2321, 7, 16, 0, 0, 2321, 2322, 7, 10, 0, 0, 2322, 2323, 7, 13, 0, 0, 2323, 292, 1, 0, 0, 0, 2324, 2325, 7, 5, 0, 0, 2325, 2326, 7, 6, 0, 0, 2326, 2327, 7, 29, 0, 0, 2327, 2328, 7, 5, 0, 0, 2328, 2329, 7, 8, 0, 0, 2329, 2330, 7, 9, 0, 0, 2330, 294, 1, 0, 0, 0, 2331, 2332, 7, 5, 0, 0, 2332, 2333, 7, 9, 0, 0, 2333, 2334, 7, 9, 0, 0, 2334, 2335, 7, 10, 0, 0, 2335, 2336, 7, 13, 0, 0, 2336, 2337, 7, 16, 0, 0, 2337, 2338, 7, 17, 0, 0, 2338, 2339, 7, 19, 0, 0, 2339, 2340, 7, 7, 0, 0, 2340, 296, 1, 0, 0, 0, 2341, 2342, 7, 5, 0, 0, 2342, 2343, 7, 9, 0, 0, 2343, 2344, 7, 9, 0, 0, 2344, 2345, 7, 17, 0, 0, 2345, 2346, 7, 23, 0, 0, 2346, 2347, 7, 7, 0, 0, 2347, 2348, 7, 15, 0, 0, 2348, 2349, 7, 10, 0, 0, 2349, 2350, 7, 7, 0, 0, 2350, 2351, 7, 16, 0, 0, 2351, 298, 1, 0, 0, 0, 2352, 2353, 7, 5, 0, 0, 2353, 2354, 7, 16, 0, 0, 2354, 300, 1, 0, 0, 0, 2355, 2356, 7, 5, 0, 0, 2356, 2357, 7, 16, 0, 0, 2357, 2358, 7, 16, 0, 0, 2358, 2359, 7, 13, 0, 0, 2359, 2360, 7, 17, 0, 0, 2360, 2361, 7, 18, 0, 0, 2361, 2362, 7, 22, 0, 0, 2362, 2363, 7, 16, 0, 0, 2363, 2364, 7, 10, 0, 0, 2364, 302, 1, 0, 0, 0, 2365, 2366, 7, 18, 0, 0, 2366, 2367, 7, 5, 0, 0, 2367, 2368, 7, 14, 0, 0, 2368, 2369, 7, 21, 0, 0, 2369, 2370, 7, 29, 0, 0, 2370, 2371, 7, 5, 0, 0, 2371, 2372, 7, 13, 0, 0, 2372, 2373, 7, 12, 0, 0, 2373, 304, 1, 0, 0, 0, 2374, 2375, 7, 18, 0, 0, 2375, 2376, 7, 10, 0, 0, 2376, 2377, 7, 25, 0, 0, 2377, 2378, 7, 19, 0, 0, 2378, 2379, 7, 13, 0, 0, 2379, 2380, 7, 10, 0, 0, 2380, 306, 1, 0, 0, 0, 2381, 2382, 7, 18, 0, 0, 2382, 2383, 7, 10, 0, 0, 2383, 2384, 7, 23, 0, 0, 2384, 2385, 7, 17, 0, 0, 2385, 2386, 7, 7, 0, 0, 2386, 308, 1, 0, 0, 0, 2387, 2388, 7, 18, 0, 0, 2388, 2389, 7, 8, 0, 0, 2389, 310, 1, 0, 0, 0, 2390, 2391, 7, 14, 0, 0, 2391, 2392, 7, 5, 0, 0, 2392, 2393, 7, 14, 0, 0, 2393, 2394, 7, 20, 0, 0, 2394, 2395, 7, 10, 0, 0, 2395, 312, 1, 0, 0, 0, 2396, 2397, 7, 14, 0, 0, 2397, 2398, 7, 5, 0, 0, 2398, 2399, 7, 6, 0, 0, 2399, 2400, 7, 6, 0, 0, 2400, 2401, 7, 10, 0, 0, 2401, 2402, 7, 12, 0, 0, 2402, 314, 1, 0, 0, 0, 2403, 2404, 7, 14, 0, 0, 2404, 2405, 7, 5, 0, 0, 2405, 2406, 7, 9, 0, 0, 2406, 2407, 7, 14, 0, 0, 2407, 2408, 7, 5, 0, 0, 2408, 2409, 7, 12, 0, 0, 2409, 2410, 7, 10, 0, 0, 2410, 316, 1, 0, 0, 0, 2411, 2412, 7, 14, 0, 0, 2412, 2413, 7, 5, 0, 0, 2413, 2414, 7, 9, 0, 0, 2414, 2415, 7, 14, 0, 0, 2415, 2416, 7, 5, 0, 0, 2416, 2417, 7, 12, 0, 0, 2417, 2418, 7, 10, 0, 0, 2418, 2419, 7, 12, 0, 0, 2419, 318, 1, 0, 0, 0, 2420, 2421, 7, 14, 0, 0, 2421, 2422, 7, 5, 0, 0, 2422, 2423, 7, 16, 0, 0, 2423, 2424, 7, 5, 0, 0, 2424, 2425, 7, 6, 0, 0, 2425, 2426, 7, 19, 0, 0, 2426, 2427, 7, 23, 0, 0, 2427, 320, 1, 0, 0, 0, 2428, 2429, 7, 14, 0, 0, 2429, 2430, 7, 20, 0, 0, 2430, 2431, 7, 5, 0, 0, 2431, 2432, 7, 17, 0, 0, 2432, 2433, 7, 7, 0, 0, 2433, 322, 1, 0, 0, 0, 2434, 2435, 7, 14, 0, 0, 2435, 2436, 7, 20, 0, 0, 2436, 2437, 7, 5, 0, 0, 2437, 2438, 7, 13, 0, 0, 2438, 2439, 7, 5, 0, 0, 2439, 2440, 7, 14, 0, 0, 2440, 2441, 7, 16, 0, 0, 2441, 2442, 7, 10, 0, 0, 2442, 2443, 7, 13, 0, 0, 2443, 2444, 7, 17, 0, 0, 2444, 2445, 7, 9, 0, 0, 2445, 2446, 7, 16, 0, 0, 2446, 2447, 7, 17, 0, 0, 2447, 2448, 7, 14, 0, 0, 2448, 2449, 7, 9, 0, 0, 2449, 324, 1, 0, 0, 0, 2450, 2451, 7, 14, 0, 0, 2451, 2452, 7, 20, 0, 0, 2452, 2453, 7, 10, 0, 0, 2453, 2454, 7, 14, 0, 0, 2454, 2455, 7, 21, 0, 0, 2455, 2456, 7, 24, 0, 0, 2456, 2457, 7, 19, 0, 0, 2457, 2458, 7, 17, 0, 0, 2458, 2459, 7, 7, 0, 0, 2459, 2460, 7, 16, 0, 0, 2460, 326, 1, 0, 0, 0, 2461, 2462, 7, 14, 0, 0, 2462, 2463, 7, 6, 0, 0, 2463, 2464, 7, 5, 0, 0, 2464, 2465, 7, 9, 0, 0, 2465, 2466, 7, 9, 0, 0, 2466, 328, 1, 0, 0, 0, 2467, 2468, 7, 14, 0, 0, 2468, 2469, 7, 6, 0, 0, 2469, 2470, 7, 19, 0, 0, 2470, 2471, 7, 9, 0, 0, 2471, 2472, 7, 10, 0, 0, 2472, 330, 1, 0, 0, 0, 2473, 2474, 7, 14, 0, 0, 2474, 2475, 7, 6, 0, 0, 2475, 2476, 7, 22, 0, 0, 2476, 2477, 7, 9, 0, 0, 2477, 2478, 7, 16, 0, 0, 2478, 2479, 7, 10, 0, 0, 2479, 2480, 7, 13, 0, 0, 2480, 332, 1, 0, 0, 0, 2481, 2482, 7, 14, 0, 0, 2482, 2483, 7, 19, 0, 0, 2483, 2484, 7, 15, 0, 0, 2484, 2485, 7, 15, 0, 0, 2485, 2486, 7, 10, 0, 0, 2486, 2487, 7, 7, 0, 0, 2487, 2488, 7, 16, 0, 0, 2488, 334, 1, 0, 0, 0, 2489, 2490, 7, 14, 0, 0, 2490, 2491, 7, 19, 0, 0, 2491, 2492, 7, 15, 0, 0, 2492, 2493, 7, 15, 0, 0, 2493, 2494, 7, 10, 0, 0, 2494, 2495, 7, 7, 0, 0, 2495, 2496, 7, 16, 0, 0, 2496, 2497, 7, 9, 0, 0, 2497, 336, 1, 0, 0, 0, 2498, 2499, 7, 14, 0, 0, 2499, 2500, 7, 19, 0, 0, 2500, 2501, 7, 15, 0, 0, 2501, 2502, 7, 15, 0, 0, 2502, 2503, 7, 17, 0, 0, 2503, 2504, 7, 16, 0, 0, 2504, 338, 1, 0, 0, 0, 2505, 2506, 7, 14, 0, 0, 2506, 2507, 7, 19, 0, 0, 2507, 2508, 7, 15, 0, 0, 2508, 2509, 7, 15, 0, 0, 2509, 2510, 7, 17, 0, 0, 2510, 2511, 7, 16, 0, 0, 2511, 2512, 7, 16, 0, 0, 2512, 2513, 7, 10, 0, 0, 2513, 2514, 7, 12, 0, 0, 2514, 340, 1, 0, 0, 0, 2515, 2516, 7, 14, 0, 0, 2516, 2517, 7, 19, 0, 0, 2517, 2518, 7, 7, 0, 0, 2518, 2519, 7, 25, 0, 0, 2519, 2520, 7, 17, 0, 0, 2520, 2521, 7, 23, 0, 0, 2521, 2522, 7, 22, 0, 0, 2522, 2523, 7, 13, 0, 0, 2523, 2524, 7, 5, 0, 0, 2524, 2525, 7, 16, 0, 0, 2525, 2526, 7, 17, 0, 0, 2526, 2527, 7, 19, 0, 0, 2527, 2528, 7, 7, 0, 0, 2528, 342, 1, 0, 0, 0, 2529, 2530, 7, 14, 0, 0, 2530, 2531, 7, 19, 0, 0, 2531, 2532, 7, 7, 0, 0, 2532, 2533, 7, 7, 0, 0, 2533, 2534, 7, 10, 0, 0, 2534, 2535, 7, 14, 0, 0, 2535, 2536, 7, 16, 0, 0, 2536, 2537, 7, 17, 0, 0, 2537, 2538, 7, 19, 0, 0, 2538, 2539, 7, 7, 0, 0, 2539, 344, 1, 0, 0, 0, 2540, 2541, 7, 14, 0, 0, 2541, 2542, 7, 19, 0, 0, 2542, 2543, 7, 7, 0, 0, 2543, 2544, 7, 9, 0, 0, 2544, 2545, 7, 16, 0, 0, 2545, 2546, 7, 13, 0, 0, 2546, 2547, 7, 5, 0, 0, 2547, 2548, 7, 17, 0, 0, 2548, 2549, 7, 7, 0, 0, 2549, 2550, 7, 16, 0, 0, 2550, 2551, 7, 9, 0, 0, 2551, 346, 1, 0, 0, 0, 2552, 2553, 7, 14, 0, 0, 2553, 2554, 7, 19, 0, 0, 2554, 2555, 7, 7, 0, 0, 2555, 2556, 7, 16, 0, 0, 2556, 2557, 7, 10, 0, 0, 2557, 2558, 7, 7, 0, 0, 2558, 2559, 7, 16, 0, 0, 2559, 348, 1, 0, 0, 0, 2560, 2561, 7, 14, 0, 0, 2561, 2562, 7, 19, 0, 0, 2562, 2563, 7, 7, 0, 0, 2563, 2564, 7, 16, 0, 0, 2564, 2565, 7, 17, 0, 0, 2565, 2566, 7, 7, 0, 0, 2566, 2567, 7, 22, 0, 0, 2567, 2568, 7, 10, 0, 0, 2568, 350, 1, 0, 0, 0, 2569, 2570, 7, 14, 0, 0, 2570, 2571, 7, 19, 0, 0, 2571, 2572, 7, 7, 0, 0, 2572, 2573, 7, 27, 0, 0, 2573, 2574, 7, 10, 0, 0, 2574, 2575, 7, 13, 0, 0, 2575, 2576, 7, 9, 0, 0, 2576, 2577, 7, 17, 0, 0, 2577, 2578, 7, 19, 0, 0, 2578, 2579, 7, 7, 0, 0, 2579, 352, 1, 0, 0, 0, 2580, 2581, 7, 14, 0, 0, 2581, 2582, 7, 19, 0, 0, 2582, 2583, 7, 24, 0, 0, 2583, 2584, 7, 8, 0, 0, 2584, 354, 1, 0, 0, 0, 2585, 2586, 7, 14, 0, 0, 2586, 2587, 7, 19, 0, 0, 2587, 2588, 7, 9, 0, 0, 2588, 2589, 7, 16, 0, 0, 2589, 356, 1, 0, 0, 0, 2590, 2591, 7, 14, 0, 0, 2591, 2592, 7, 9, 0, 0, 2592, 2593, 7, 27, 0, 0, 2593, 358, 1, 0, 0, 0, 2594, 2595, 7, 14, 0, 0, 2595, 2596, 7, 22, 0, 0, 2596, 2597, 7, 13, 0, 0, 2597, 2598, 7, 9, 0, 0, 2598, 2599, 7, 19, 0, 0, 2599, 2600, 7, 13, 0, 0, 2600, 360, 1, 0, 0, 0, 2601, 2602, 7, 14, 0, 0, 2602, 2603, 7, 8, 0, 0, 2603, 2604, 7, 14, 0, 0, 2604, 2605, 7, 6, 0, 0, 2605, 2606, 7, 10, 0, 0, 2606, 362, 1, 0, 0, 0, 2607, 2608, 7, 12, 0, 0, 2608, 2609, 7, 5, 0, 0, 2609, 2610, 7, 16, 0, 0, 2610, 2611, 7, 5, 0, 0, 2611, 364, 1, 0, 0, 0, 2612, 2613, 7, 12, 0, 0, 2613, 2614, 7, 5, 0, 0, 2614, 2615, 7, 16, 0, 0, 2615, 2616, 7, 5, 0, 0, 2616, 2617, 7, 18, 0, 0, 2617, 2618, 7, 5, 0, 0, 2618, 2619, 7, 9, 0, 0, 2619, 2620, 7, 10, 0, 0, 2620, 366, 1, 0, 0, 0, 2621, 2622, 7, 12, 0, 0, 2622, 2623, 7, 5, 0, 0, 2623, 2624, 7, 8, 0, 0, 2624, 368, 1, 0, 0, 0, 2625, 2626, 7, 12, 0, 0, 2626, 2627, 7, 10, 0, 0, 2627, 2628, 7, 5, 0, 0, 2628, 2629, 7, 6, 0, 0, 2629, 2630, 7, 6, 0, 0, 2630, 2631, 7, 19, 0, 0, 2631, 2632, 7, 14, 0, 0, 2632, 2633, 7, 5, 0, 0, 2633, 2634, 7, 16, 0, 0, 2634, 2635, 7, 10, 0, 0, 2635, 370, 1, 0, 0, 0, 2636, 2637, 7, 12, 0, 0, 2637, 2638, 7, 10, 0, 0, 2638, 2639, 7, 14, 0, 0, 2639, 2640, 7, 6, 0, 0, 2640, 2641, 7, 5, 0, 0, 2641, 2642, 7, 13, 0, 0, 2642, 2643, 7, 10, 0, 0, 2643, 372, 1, 0, 0, 0, 2644, 2645, 7, 12, 0, 0, 2645, 2646, 7, 10, 0, 0, 2646, 2647, 7, 25, 0, 0, 2647, 2648, 7, 5, 0, 0, 2648, 2649, 7, 22, 0, 0, 2649, 2650, 7, 6, 0, 0, 2650, 2651, 7, 16, 0, 0, 2651, 2652, 7, 9, 0, 0, 2652, 374, 1, 0, 0, 0, 2653, 2654, 7, 12, 0, 0, 2654, 2655, 7, 10, 0, 0, 2655, 2656, 7, 25, 0, 0, 2656, 2657, 7, 10, 0, 0, 2657, 2658, 7, 13, 0, 0, 2658, 2659, 7, 13, 0, 0, 2659, 2660, 7, 10, 0, 0, 2660, 2661, 7, 12, 0, 0, 2661, 376, 1, 0, 0, 0, 2662, 2663, 7, 12, 0, 0, 2663, 2664, 7, 10, 0, 0, 2664, 2665, 7, 25, 0, 0, 2665, 2666, 7, 17, 0, 0, 2666, 2667, 7, 7, 0, 0, 2667, 2668, 7, 10, 0, 0, 2668, 2669, 7, 13, 0, 0, 2669, 378, 1, 0, 0, 0, 2670, 2671, 7, 12, 0, 0, 2671, 2672, 7, 10, 0, 0, 2672, 2673, 7, 6, 0, 0, 2673, 2674, 7, 10, 0, 0, 2674, 2675, 7, 16, 0, 0, 2675, 2676, 7, 10, 0, 0, 2676, 380, 1, 0, 0, 0, 2677, 2678, 7, 12, 0, 0, 2678, 2679, 7, 10, 0, 0, 2679, 2680, 7, 6, 0, 0, 2680, 2681, 7, 17, 0, 0, 2681, 2682, 7, 15, 0, 0, 2682, 2683, 7, 17, 0, 0, 2683, 2684, 7, 16, 0, 0, 2684, 2685, 7, 10, 0, 0, 2685, 2686, 7, 13, 0, 0, 2686, 382, 1, 0, 0, 0, 2687, 2688, 7, 12, 0, 0, 2688, 2689, 7, 10, 0, 0, 2689, 2690, 7, 6, 0, 0, 2690, 2691, 7, 17, 0, 0, 2691, 2692, 7, 15, 0, 0, 2692, 2693, 7, 17, 0, 0, 2693, 2694, 7, 16, 0, 0, 2694, 2695, 7, 10, 0, 0, 2695, 2696, 7, 13, 0, 0, 2696, 2697, 7, 9, 0, 0, 2697, 384, 1, 0, 0, 0, 2698, 2699, 7, 12, 0, 0, 2699, 2700, 7, 17, 0, 0, 2700, 2701, 7, 14, 0, 0, 2701, 2702, 7, 16, 0, 0, 2702, 2703, 7, 17, 0, 0, 2703, 2704, 7, 19, 0, 0, 2704, 2705, 7, 7, 0, 0, 2705, 2706, 7, 5, 0, 0, 2706, 2707, 7, 13, 0, 0, 2707, 2708, 7, 8, 0, 0, 2708, 386, 1, 0, 0, 0, 2709, 2710, 7, 12, 0, 0, 2710, 2711, 7, 17, 0, 0, 2711, 2712, 7, 9, 0, 0, 2712, 2713, 7, 5, 0, 0, 2713, 2714, 7, 18, 0, 0, 2714, 2715, 7, 6, 0, 0, 2715, 2716, 7, 10, 0, 0, 2716, 388, 1, 0, 0, 0, 2717, 2718, 7, 12, 0, 0, 2718, 2719, 7, 17, 0, 0, 2719, 2720, 7, 9, 0, 0, 2720, 2721, 7, 14, 0, 0, 2721, 2722, 7, 5, 0, 0, 2722, 2723, 7, 13, 0, 0, 2723, 2724, 7, 12, 0, 0, 2724, 390, 1, 0, 0, 0, 2725, 2726, 7, 12, 0, 0, 2726, 2727, 7, 19, 0, 0, 2727, 2728, 7, 14, 0, 0, 2728, 2729, 7, 22, 0, 0, 2729, 2730, 7, 15, 0, 0, 2730, 2731, 7, 10, 0, 0, 2731, 2732, 7, 7, 0, 0, 2732, 2733, 7, 16, 0, 0, 2733, 392, 1, 0, 0, 0, 2734, 2735, 7, 12, 0, 0, 2735, 2736, 7, 19, 0, 0, 2736, 2737, 7, 15, 0, 0, 2737, 2738, 7, 5, 0, 0, 2738, 2739, 7, 17, 0, 0, 2739, 2740, 7, 7, 0, 0, 2740, 394, 1, 0, 0, 0, 2741, 2742, 7, 12, 0, 0, 2742, 2743, 7, 19, 0, 0, 2743, 2744, 7, 22, 0, 0, 2744, 2745, 7, 18, 0, 0, 2745, 2746, 7, 6, 0, 0, 2746, 2747, 7, 10, 0, 0, 2747, 396, 1, 0, 0, 0, 2748, 2749, 7, 12, 0, 0, 2749, 2750, 7, 13, 0, 0, 2750, 2751, 7, 19, 0, 0, 2751, 2752, 7, 24, 0, 0, 2752, 398, 1, 0, 0, 0, 2753, 2754, 7, 10, 0, 0, 2754, 2755, 7, 5, 0, 0, 2755, 2756, 7, 14, 0, 0, 2756, 2757, 7, 20, 0, 0, 2757, 400, 1, 0, 0, 0, 2758, 2759, 7, 10, 0, 0, 2759, 2760, 7, 7, 0, 0, 2760, 2761, 7, 5, 0, 0, 2761, 2762, 7, 18, 0, 0, 2762, 2763, 7, 6, 0, 0, 2763, 2764, 7, 10, 0, 0, 2764, 402, 1, 0, 0, 0, 2765, 2766, 7, 10, 0, 0, 2766, 2767, 7, 7, 0, 0, 2767, 2768, 7, 14, 0, 0, 2768, 2769, 7, 19, 0, 0, 2769, 2770, 7, 12, 0, 0, 2770, 2771, 7, 17, 0, 0, 2771, 2772, 7, 7, 0, 0, 2772, 2773, 7, 23, 0, 0, 2773, 404, 1, 0, 0, 0, 2774, 2775, 7, 10, 0, 0, 2775, 2776, 7, 7, 0, 0, 2776, 2777, 7, 14, 0, 0, 2777, 2778, 7, 13, 0, 0, 2778, 2779, 7, 8, 0, 0, 2779, 2780, 7, 24, 0, 0, 2780, 2781, 7, 16, 0, 0, 2781, 2782, 7, 10, 0, 0, 2782, 2783, 7, 12, 0, 0, 2783, 406, 1, 0, 0, 0, 2784, 2785, 7, 10, 0, 0, 2785, 2786, 7, 7, 0, 0, 2786, 2787, 7, 22, 0, 0, 2787, 2788, 7, 15, 0, 0, 2788, 408, 1, 0, 0, 0, 2789, 2790, 7, 10, 0, 0, 2790, 2791, 7, 9, 0, 0, 2791, 2792, 7, 14, 0, 0, 2792, 2793, 7, 5, 0, 0, 2793, 2794, 7, 24, 0, 0, 2794, 2795, 7, 10, 0, 0, 2795, 410, 1, 0, 0, 0, 2796, 2797, 7, 10, 0, 0, 2797, 2798, 7, 27, 0, 0, 2798, 2799, 7, 10, 0, 0, 2799, 2800, 7, 7, 0, 0, 2800, 2801, 7, 16, 0, 0, 2801, 412, 1, 0, 0, 0, 2802, 2803, 7, 10, 0, 0, 2803, 2804, 7, 26, 0, 0, 2804, 2805, 7, 14, 0, 0, 2805, 2806, 7, 6, 0, 0, 2806, 2807, 7, 22, 0, 0, 2807, 2808, 7, 12, 0, 0, 2808, 2809, 7, 10, 0, 0, 2809, 414, 1, 0, 0, 0, 2810, 2811, 7, 10, 0, 0, 2811, 2812, 7, 26, 0, 0, 2812, 2813, 7, 14, 0, 0, 2813, 2814, 7, 6, 0, 0, 2814, 2815, 7, 22, 0, 0, 2815, 2816, 7, 12, 0, 0, 2816, 2817, 7, 17, 0, 0, 2817, 2818, 7, 7, 0, 0, 2818, 2819, 7, 23, 0, 0, 2819, 416, 1, 0, 0, 0, 2820, 2821, 7, 10, 0, 0, 2821, 2822, 7, 26, 0, 0, 2822, 2823, 7, 14, 0, 0, 2823, 2824, 7, 6, 0, 0, 2824, 2825, 7, 22, 0, 0, 2825, 2826, 7, 9, 0, 0, 2826, 2827, 7, 17, 0, 0, 2827, 2828, 7, 27, 0, 0, 2828, 2829, 7, 10, 0, 0, 2829, 418, 1, 0, 0, 0, 2830, 2831, 7, 10, 0, 0, 2831, 2832, 7, 26, 0, 0, 2832, 2833, 7, 10, 0, 0, 2833, 2834, 7, 14, 0, 0, 2834, 2835, 7, 22, 0, 0, 2835, 2836, 7, 16, 0, 0, 2836, 2837, 7, 10, 0, 0, 2837, 420, 1, 0, 0, 0, 2838, 2839, 7, 10, 0, 0, 2839, 2840, 7, 26, 0, 0, 2840, 2841, 7, 24, 0, 0, 2841, 2842, 7, 6, 0, 0, 2842, 2843, 7, 5, 0, 0, 2843, 2844, 7, 17, 0, 0, 2844, 2845, 7, 7, 0, 0, 2845, 422, 1, 0, 0, 0, 2846, 2847, 7, 10, 0, 0, 2847, 2848, 7, 26, 0, 0, 2848, 2849, 7, 16, 0, 0, 2849, 2850, 7, 10, 0, 0, 2850, 2851, 7, 7, 0, 0, 2851, 2852, 7, 9, 0, 0, 2852, 2853, 7, 17, 0, 0, 2853, 2854, 7, 19, 0, 0, 2854, 2855, 7, 7, 0, 0, 2855, 424, 1, 0, 0, 0, 2856, 2857, 7, 10, 0, 0, 2857, 2858, 7, 26, 0, 0, 2858, 2859, 7, 16, 0, 0, 2859, 2860, 7, 10, 0, 0, 2860, 2861, 7, 13, 0, 0, 2861, 2862, 7, 7, 0, 0, 2862, 2863, 7, 5, 0, 0, 2863, 2864, 7, 6, 0, 0, 2864, 426, 1, 0, 0, 0, 2865, 2866, 7, 25, 0, 0, 2866, 2867, 7, 5, 0, 0, 2867, 2868, 7, 15, 0, 0, 2868, 2869, 7, 17, 0, 0, 2869, 2870, 7, 6, 0, 0, 2870, 2871, 7, 8, 0, 0, 2871, 428, 1, 0, 0, 0, 2872, 2873, 7, 25, 0, 0, 2873, 2874, 7, 17, 0, 0, 2874, 2875, 7, 13, 0, 0, 2875, 2876, 7, 9, 0, 0, 2876, 2877, 7, 16, 0, 0, 2877, 430, 1, 0, 0, 0, 2878, 2879, 7, 25, 0, 0, 2879, 2880, 7, 19, 0, 0, 2880, 2881, 7, 6, 0, 0, 2881, 2882, 7, 6, 0, 0, 2882, 2883, 7, 19, 0, 0, 2883, 2884, 7, 29, 0, 0, 2884, 2885, 7, 17, 0, 0, 2885, 2886, 7, 7, 0, 0, 2886, 2887, 7, 23, 0, 0, 2887, 432, 1, 0, 0, 0, 2888, 2889, 7, 25, 0, 0, 2889, 2890, 7, 19, 0, 0, 2890, 2891, 7, 13, 0, 0, 2891, 2892, 7, 14, 0, 0, 2892, 2893, 7, 10, 0, 0, 2893, 434, 1, 0, 0, 0, 2894, 2895, 7, 25, 0, 0, 2895, 2896, 7, 19, 0, 0, 2896, 2897, 7, 13, 0, 0, 2897, 2898, 7, 29, 0, 0, 2898, 2899, 7, 5, 0, 0, 2899, 2900, 7, 13, 0, 0, 2900, 2901, 7, 12, 0, 0, 2901, 436, 1, 0, 0, 0, 2902, 2903, 7, 25, 0, 0, 2903, 2904, 7, 22, 0, 0, 2904, 2905, 7, 7, 0, 0, 2905, 2906, 7, 14, 0, 0, 2906, 2907, 7, 16, 0, 0, 2907, 2908, 7, 17, 0, 0, 2908, 2909, 7, 19, 0, 0, 2909, 2910, 7, 7, 0, 0, 2910, 438, 1, 0, 0, 0, 2911, 2912, 7, 25, 0, 0, 2912, 2913, 7, 22, 0, 0, 2913, 2914, 7, 7, 0, 0, 2914, 2915, 7, 14, 0, 0, 2915, 2916, 7, 16, 0, 0, 2916, 2917, 7, 17, 0, 0, 2917, 2918, 7, 19, 0, 0, 2918, 2919, 7, 7, 0, 0, 2919, 2920, 7, 9, 0, 0, 2920, 440, 1, 0, 0, 0, 2921, 2922, 7, 23, 0, 0, 2922, 2923, 7, 6, 0, 0, 2923, 2924, 7, 19, 0, 0, 2924, 2925, 7, 18, 0, 0, 2925, 2926, 7, 5, 0, 0, 2926, 2927, 7, 6, 0, 0, 2927, 442, 1, 0, 0, 0, 2928, 2929, 7, 23, 0, 0, 2929, 2930, 7, 13, 0, 0, 2930, 2931, 7, 5, 0, 0, 2931, 2932, 7, 7, 0, 0, 2932, 2933, 7, 16, 0, 0, 2933, 2934, 7, 10, 0, 0, 2934, 2935, 7, 12, 0, 0, 2935, 444, 1, 0, 0, 0, 2936, 2937, 7, 20, 0, 0, 2937, 2938, 7, 5, 0, 0, 2938, 2939, 7, 7, 0, 0, 2939, 2940, 7, 12, 0, 0, 2940, 2941, 7, 6, 0, 0, 2941, 2942, 7, 10, 0, 0, 2942, 2943, 7, 13, 0, 0, 2943, 446, 1, 0, 0, 0, 2944, 2945, 7, 20, 0, 0, 2945, 2946, 7, 10, 0, 0, 2946, 2947, 7, 5, 0, 0, 2947, 2948, 7, 12, 0, 0, 2948, 2949, 7, 10, 0, 0, 2949, 2950, 7, 13, 0, 0, 2950, 448, 1, 0, 0, 0, 2951, 2952, 7, 20, 0, 0, 2952, 2953, 7, 19, 0, 0, 2953, 2954, 7, 6, 0, 0, 2954, 2955, 7, 12, 0, 0, 2955, 450, 1, 0, 0, 0, 2956, 2957, 7, 20, 0, 0, 2957, 2958, 7, 19, 0, 0, 2958, 2959, 7, 22, 0, 0, 2959, 2960, 7, 13, 0, 0, 2960, 452, 1, 0, 0, 0, 2961, 2962, 7, 17, 0, 0, 2962, 2963, 7, 12, 0, 0, 2963, 2964, 7, 10, 0, 0, 2964, 2965, 7, 7, 0, 0, 2965, 2966, 7, 16, 0, 0, 2966, 2967, 7, 17, 0, 0, 2967, 2968, 7, 16, 0, 0, 2968, 2969, 7, 8, 0, 0, 2969, 454, 1, 0, 0, 0, 2970, 2971, 7, 17, 0, 0, 2971, 2972, 7, 25, 0, 0, 2972, 456, 1, 0, 0, 0, 2973, 2974, 7, 17, 0, 0, 2974, 2975, 7, 15, 0, 0, 2975, 2976, 7, 15, 0, 0, 2976, 2977, 7, 10, 0, 0, 2977, 2978, 7, 12, 0, 0, 2978, 2979, 7, 17, 0, 0, 2979, 2980, 7, 5, 0, 0, 2980, 2981, 7, 16, 0, 0, 2981, 2982, 7, 10, 0, 0, 2982, 458, 1, 0, 0, 0, 2983, 2984, 7, 17, 0, 0, 2984, 2985, 7, 15, 0, 0, 2985, 2986, 7, 15, 0, 0, 2986, 2987, 7, 22, 0, 0, 2987, 2988, 7, 16, 0, 0, 2988, 2989, 7, 5, 0, 0, 2989, 2990, 7, 18, 0, 0, 2990, 2991, 7, 6, 0, 0, 2991, 2992, 7, 10, 0, 0, 2992, 460, 1, 0, 0, 0, 2993, 2994, 7, 17, 0, 0, 2994, 2995, 7, 15, 0, 0, 2995, 2996, 7, 24, 0, 0, 2996, 2997, 7, 6, 0, 0, 2997, 2998, 7, 17, 0, 0, 2998, 2999, 7, 14, 0, 0, 2999, 3000, 7, 17, 0, 0, 3000, 3001, 7, 16, 0, 0, 3001, 462, 1, 0, 0, 0, 3002, 3003, 7, 17, 0, 0, 3003, 3004, 7, 7, 0, 0, 3004, 3005, 7, 14, 0, 0, 3005, 3006, 7, 6, 0, 0, 3006, 3007, 7, 22, 0, 0, 3007, 3008, 7, 12, 0, 0, 3008, 3009, 7, 17, 0, 0, 3009, 3010, 7, 7, 0, 0, 3010, 3011, 7, 23, 0, 0, 3011, 464, 1, 0, 0, 0, 3012, 3013, 7, 17, 0, 0, 3013, 3014, 7, 7, 0, 0, 3014, 3015, 7, 14, 0, 0, 3015, 3016, 7, 13, 0, 0, 3016, 3017, 7, 10, 0, 0, 3017, 3018, 7, 15, 0, 0, 3018, 3019, 7, 10, 0, 0, 3019, 3020, 7, 7, 0, 0, 3020, 3021, 7, 16, 0, 0, 3021, 466, 1, 0, 0, 0, 3022, 3023, 7, 17, 0, 0, 3023, 3024, 7, 7, 0, 0, 3024, 3025, 7, 12, 0, 0, 3025, 3026, 7, 10, 0, 0, 3026, 3027, 7, 26, 0, 0, 3027, 468, 1, 0, 0, 0, 3028, 3029, 7, 17, 0, 0, 3029, 3030, 7, 7, 0, 0, 3030, 3031, 7, 12, 0, 0, 3031, 3032, 7, 10, 0, 0, 3032, 3033, 7, 26, 0, 0, 3033, 3034, 7, 10, 0, 0, 3034, 3035, 7, 9, 0, 0, 3035, 470, 1, 0, 0, 0, 3036, 3037, 7, 17, 0, 0, 3037, 3038, 7, 7, 0, 0, 3038, 3039, 7, 20, 0, 0, 3039, 3040, 7, 10, 0, 0, 3040, 3041, 7, 13, 0, 0, 3041, 3042, 7, 17, 0, 0, 3042, 3043, 7, 16, 0, 0, 3043, 472, 1, 0, 0, 0, 3044, 3045, 7, 17, 0, 0, 3045, 3046, 7, 7, 0, 0, 3046, 3047, 7, 20, 0, 0, 3047, 3048, 7, 10, 0, 0, 3048, 3049, 7, 13, 0, 0, 3049, 3050, 7, 17, 0, 0, 3050, 3051, 7, 16, 0, 0, 3051, 3052, 7, 9, 0, 0, 3052, 474, 1, 0, 0, 0, 3053, 3054, 7, 17, 0, 0, 3054, 3055, 7, 7, 0, 0, 3055, 3056, 7, 6, 0, 0, 3056, 3057, 7, 17, 0, 0, 3057, 3058, 7, 7, 0, 0, 3058, 3059, 7, 10, 0, 0, 3059, 476, 1, 0, 0, 0, 3060, 3061, 7, 17, 0, 0, 3061, 3062, 7, 7, 0, 0, 3062, 3063, 7, 9, 0, 0, 3063, 3064, 7, 10, 0, 0, 3064, 3065, 7, 7, 0, 0, 3065, 3066, 7, 9, 0, 0, 3066, 3067, 7, 17, 0, 0, 3067, 3068, 7, 16, 0, 0, 3068, 3069, 7, 17, 0, 0, 3069, 3070, 7, 27, 0, 0, 3070, 3071, 7, 10, 0, 0, 3071, 478, 1, 0, 0, 0, 3072, 3073, 7, 17, 0, 0, 3073, 3074, 7, 7, 0, 0, 3074, 3075, 7, 9, 0, 0, 3075, 3076, 7, 10, 0, 0, 3076, 3077, 7, 13, 0, 0, 3077, 3078, 7, 16, 0, 0, 3078, 480, 1, 0, 0, 0, 3079, 3080, 7, 17, 0, 0, 3080, 3081, 7, 7, 0, 0, 3081, 3082, 7, 9, 0, 0, 3082, 3083, 7, 16, 0, 0, 3083, 3084, 7, 10, 0, 0, 3084, 3085, 7, 5, 0, 0, 3085, 3086, 7, 12, 0, 0, 3086, 482, 1, 0, 0, 0, 3087, 3088, 7, 17, 0, 0, 3088, 3089, 7, 7, 0, 0, 3089, 3090, 7, 27, 0, 0, 3090, 3091, 7, 19, 0, 0, 3091, 3092, 7, 21, 0, 0, 3092, 3093, 7, 10, 0, 0, 3093, 3094, 7, 13, 0, 0, 3094, 484, 1, 0, 0, 0, 3095, 3096, 7, 17, 0, 0, 3096, 3097, 7, 9, 0, 0, 3097, 3098, 7, 19, 0, 0, 3098, 3099, 7, 6, 0, 0, 3099, 3100, 7, 5, 0, 0, 3100, 3101, 7, 16, 0, 0, 3101, 3102, 7, 17, 0, 0, 3102, 3103, 7, 19, 0, 0, 3103, 3104, 7, 7, 0, 0, 3104, 486, 1, 0, 0, 0, 3105, 3106, 7, 21, 0, 0, 3106, 3107, 7, 10, 0, 0, 3107, 3108, 7, 8, 0, 0, 3108, 488, 1, 0, 0, 0, 3109, 3110, 7, 6, 0, 0, 3110, 3111, 7, 5, 0, 0, 3111, 3112, 7, 18, 0, 0, 3112, 3113, 7, 10, 0, 0, 3113, 3114, 7, 6, 0, 0, 3114, 490, 1, 0, 0, 0, 3115, 3116, 7, 6, 0, 0, 3116, 3117, 7, 5, 0, 0, 3117, 3118, 7, 7, 0, 0, 3118, 3119, 7, 23, 0, 0, 3119, 3120, 7, 22, 0, 0, 3120, 3121, 7, 5, 0, 0, 3121, 3122, 7, 23, 0, 0, 3122, 3123, 7, 10, 0, 0, 3123, 492, 1, 0, 0, 0, 3124, 3125, 7, 6, 0, 0, 3125, 3126, 7, 5, 0, 0, 3126, 3127, 7, 13, 0, 0, 3127, 3128, 7, 23, 0, 0, 3128, 3129, 7, 10, 0, 0, 3129, 494, 1, 0, 0, 0, 3130, 3131, 7, 6, 0, 0, 3131, 3132, 7, 5, 0, 0, 3132, 3133, 7, 9, 0, 0, 3133, 3134, 7, 16, 0, 0, 3134, 496, 1, 0, 0, 0, 3135, 3136, 7, 6, 0, 0, 3136, 3137, 7, 10, 0, 0, 3137, 3138, 7, 5, 0, 0, 3138, 3139, 7, 21, 0, 0, 3139, 3140, 7, 24, 0, 0, 3140, 3141, 7, 13, 0, 0, 3141, 3142, 7, 19, 0, 0, 3142, 3143, 7, 19, 0, 0, 3143, 3144, 7, 25, 0, 0, 3144, 498, 1, 0, 0, 0, 3145, 3146, 7, 6, 0, 0, 3146, 3147, 7, 10, 0, 0, 3147, 3148, 7, 27, 0, 0, 3148, 3149, 7, 10, 0, 0, 3149, 3150, 7, 6, 0, 0, 3150, 500, 1, 0, 0, 0, 3151, 3152, 7, 6, 0, 0, 3152, 3153, 7, 17, 0, 0, 3153, 3154, 7, 9, 0, 0, 3154, 3155, 7, 16, 0, 0, 3155, 3156, 7, 10, 0, 0, 3156, 3157, 7, 7, 0, 0, 3157, 502, 1, 0, 0, 0, 3158, 3159, 7, 6, 0, 0, 3159, 3160, 7, 19, 0, 0, 3160, 3161, 7, 5, 0, 0, 3161, 3162, 7, 12, 0, 0, 3162, 504, 1, 0, 0, 0, 3163, 3164, 7, 6, 0, 0, 3164, 3165, 7, 19, 0, 0, 3165, 3166, 7, 14, 0, 0, 3166, 3167, 7, 5, 0, 0, 3167, 3168, 7, 6, 0, 0, 3168, 506, 1, 0, 0, 0, 3169, 3170, 7, 6, 0, 0, 3170, 3171, 7, 19, 0, 0, 3171, 3172, 7, 14, 0, 0, 3172, 3173, 7, 5, 0, 0, 3173, 3174, 7, 16, 0, 0, 3174, 3175, 7, 17, 0, 0, 3175, 3176, 7, 19, 0, 0, 3176, 3177, 7, 7, 0, 0, 3177, 508, 1, 0, 0, 0, 3178, 3179, 7, 6, 0, 0, 3179, 3180, 7, 19, 0, 0, 3180, 3181, 7, 14, 0, 0, 3181, 3182, 7, 21, 0, 0, 3182, 510, 1, 0, 0, 0, 3183, 3184, 7, 15, 0, 0, 3184, 3185, 7, 5, 0, 0, 3185, 3186, 7, 24, 0, 0, 3186, 3187, 7, 24, 0, 0, 3187, 3188, 7, 17, 0, 0, 3188, 3189, 7, 7, 0, 0, 3189, 3190, 7, 23, 0, 0, 3190, 512, 1, 0, 0, 0, 3191, 3192, 7, 15, 0, 0, 3192, 3193, 7, 5, 0, 0, 3193, 3194, 7, 16, 0, 0, 3194, 3195, 7, 14, 0, 0, 3195, 3196, 7, 20, 0, 0, 3196, 514, 1, 0, 0, 0, 3197, 3198, 7, 15, 0, 0, 3198, 3199, 7, 5, 0, 0, 3199, 3200, 7, 16, 0, 0, 3200, 3201, 7, 14, 0, 0, 3201, 3202, 7, 20, 0, 0, 3202, 3203, 7, 10, 0, 0, 3203, 3204, 7, 12, 0, 0, 3204, 516, 1, 0, 0, 0, 3205, 3206, 7, 15, 0, 0, 3206, 3207, 7, 5, 0, 0, 3207, 3208, 7, 16, 0, 0, 3208, 3209, 7, 10, 0, 0, 3209, 3210, 7, 13, 0, 0, 3210, 3211, 7, 17, 0, 0, 3211, 3212, 7, 5, 0, 0, 3212, 3213, 7, 6, 0, 0, 3213, 3214, 7, 17, 0, 0, 3214, 3215, 7, 11, 0, 0, 3215, 3216, 7, 10, 0, 0, 3216, 3217, 7, 12, 0, 0, 3217, 518, 1, 0, 0, 0, 3218, 3219, 7, 15, 0, 0, 3219, 3220, 7, 5, 0, 0, 3220, 3221, 7, 26, 0, 0, 3221, 3222, 7, 27, 0, 0, 3222, 3223, 7, 5, 0, 0, 3223, 3224, 7, 6, 0, 0, 3224, 3225, 7, 22, 0, 0, 3225, 3226, 7, 10, 0, 0, 3226, 520, 1, 0, 0, 0, 3227, 3228, 7, 15, 0, 0, 3228, 3229, 7, 10, 0, 0, 3229, 3230, 7, 13, 0, 0, 3230, 3231, 7, 23, 0, 0, 3231, 3232, 7, 10, 0, 0, 3232, 522, 1, 0, 0, 0, 3233, 3234, 7, 15, 0, 0, 3234, 3235, 7, 17, 0, 0, 3235, 3236, 7, 7, 0, 0, 3236, 3237, 7, 22, 0, 0, 3237, 3238, 7, 16, 0, 0, 3238, 3239, 7, 10, 0, 0, 3239, 524, 1, 0, 0, 0, 3240, 3241, 7, 15, 0, 0, 3241, 3242, 7, 17, 0, 0, 3242, 3243, 7, 7, 0, 0, 3243, 3244, 7, 27, 0, 0, 3244, 3245, 7, 5, 0, 0, 3245, 3246, 7, 6, 0, 0, 3246, 3247, 7, 22, 0, 0, 3247, 3248, 7, 10, 0, 0, 3248, 526, 1, 0, 0, 0, 3249, 3250, 7, 15, 0, 0, 3250, 3251, 7, 19, 0, 0, 3251, 3252, 7, 12, 0, 0, 3252, 3253, 7, 10, 0, 0, 3253, 528, 1, 0, 0, 0, 3254, 3255, 7, 15, 0, 0, 3255, 3256, 7, 19, 0, 0, 3256, 3257, 7, 7, 0, 0, 3257, 3258, 7, 16, 0, 0, 3258, 3259, 7, 20, 0, 0, 3259, 530, 1, 0, 0, 0, 3260, 3261, 7, 15, 0, 0, 3261, 3262, 7, 19, 0, 0, 3262, 3263, 7, 27, 0, 0, 3263, 3264, 7, 10, 0, 0, 3264, 532, 1, 0, 0, 0, 3265, 3266, 7, 7, 0, 0, 3266, 3267, 7, 5, 0, 0, 3267, 3268, 7, 15, 0, 0, 3268, 3269, 7, 10, 0, 0, 3269, 534, 1, 0, 0, 0, 3270, 3271, 7, 7, 0, 0, 3271, 3272, 7, 5, 0, 0, 3272, 3273, 7, 15, 0, 0, 3273, 3274, 7, 10, 0, 0, 3274, 3275, 7, 9, 0, 0, 3275, 536, 1, 0, 0, 0, 3276, 3277, 7, 7, 0, 0, 3277, 3278, 7, 10, 0, 0, 3278, 3279, 7, 26, 0, 0, 3279, 3280, 7, 16, 0, 0, 3280, 538, 1, 0, 0, 0, 3281, 3282, 7, 7, 0, 0, 3282, 3283, 7, 19, 0, 0, 3283, 540, 1, 0, 0, 0, 3284, 3285, 7, 7, 0, 0, 3285, 3286, 7, 19, 0, 0, 3286, 3287, 7, 16, 0, 0, 3287, 3288, 7, 20, 0, 0, 3288, 3289, 7, 17, 0, 0, 3289, 3290, 7, 7, 0, 0, 3290, 3291, 7, 23, 0, 0, 3291, 542, 1, 0, 0, 0, 3292, 3293, 7, 7, 0, 0, 3293, 3294, 7, 19, 0, 0, 3294, 3295, 7, 16, 0, 0, 3295, 3296, 7, 17, 0, 0, 3296, 3297, 7, 25, 0, 0, 3297, 3298, 7, 8, 0, 0, 3298, 544, 1, 0, 0, 0, 3299, 3300, 7, 7, 0, 0, 3300, 3301, 7, 19, 0, 0, 3301, 3302, 7, 29, 0, 0, 3302, 3303, 7, 5, 0, 0, 3303, 3304, 7, 17, 0, 0, 3304, 3305, 7, 16, 0, 0, 3305, 546, 1, 0, 0, 0, 3306, 3307, 7, 7, 0, 0, 3307, 3308, 7, 22, 0, 0, 3308, 3309, 7, 6, 0, 0, 3309, 3310, 7, 6, 0, 0, 3310, 3311, 7, 9, 0, 0, 3311, 548, 1, 0, 0, 0, 3312, 3313, 7, 19, 0, 0, 3313, 3314, 7, 18, 0, 0, 3314, 3315, 7, 30, 0, 0, 3315, 3316, 7, 10, 0, 0, 3316, 3317, 7, 14, 0, 0, 3317, 3318, 7, 16, 0, 0, 3318, 550, 1, 0, 0, 0, 3319, 3320, 7, 19, 0, 0, 3320, 3321, 7, 25, 0, 0, 3321, 552, 1, 0, 0, 0, 3322, 3323, 7, 19, 0, 0, 3323, 3324, 7, 25, 0, 0, 3324, 3325, 7, 25, 0, 0, 3325, 554, 1, 0, 0, 0, 3326, 3327, 7, 19, 0, 0, 3327, 3328, 7, 17, 0, 0, 3328, 3329, 7, 12, 0, 0, 3329, 3330, 7, 9, 0, 0, 3330, 556, 1, 0, 0, 0, 3331, 3332, 7, 19, 0, 0, 3332, 3333, 7, 24, 0, 0, 3333, 3334, 7, 10, 0, 0, 3334, 3335, 7, 13, 0, 0, 3335, 3336, 7, 5, 0, 0, 3336, 3337, 7, 16, 0, 0, 3337, 3338, 7, 19, 0, 0, 3338, 3339, 7, 13, 0, 0, 3339, 558, 1, 0, 0, 0, 3340, 3341, 7, 19, 0, 0, 3341, 3342, 7, 24, 0, 0, 3342, 3343, 7, 16, 0, 0, 3343, 3344, 7, 17, 0, 0, 3344, 3345, 7, 19, 0, 0, 3345, 3346, 7, 7, 0, 0, 3346, 560, 1, 0, 0, 0, 3347, 3348, 7, 19, 0, 0, 3348, 3349, 7, 24, 0, 0, 3349, 3350, 7, 16, 0, 0, 3350, 3351, 7, 17, 0, 0, 3351, 3352, 7, 19, 0, 0, 3352, 3353, 7, 7, 0, 0, 3353, 3354, 7, 9, 0, 0, 3354, 562, 1, 0, 0, 0, 3355, 3356, 7, 19, 0, 0, 3356, 3357, 7, 29, 0, 0, 3357, 3358, 7, 7, 0, 0, 3358, 3359, 7, 10, 0, 0, 3359, 3360, 7, 12, 0, 0, 3360, 564, 1, 0, 0, 0, 3361, 3362, 7, 19, 0, 0, 3362, 3363, 7, 29, 0, 0, 3363, 3364, 7, 7, 0, 0, 3364, 3365, 7, 10, 0, 0, 3365, 3366, 7, 13, 0, 0, 3366, 566, 1, 0, 0, 0, 3367, 3368, 7, 24, 0, 0, 3368, 3369, 7, 5, 0, 0, 3369, 3370, 7, 13, 0, 0, 3370, 3371, 7, 9, 0, 0, 3371, 3372, 7, 10, 0, 0, 3372, 3373, 7, 13, 0, 0, 3373, 568, 1, 0, 0, 0, 3374, 3375, 7, 24, 0, 0, 3375, 3376, 7, 5, 0, 0, 3376, 3377, 7, 13, 0, 0, 3377, 3378, 7, 16, 0, 0, 3378, 3379, 7, 17, 0, 0, 3379, 3380, 7, 5, 0, 0, 3380, 3381, 7, 6, 0, 0, 3381, 570, 1, 0, 0, 0, 3382, 3383, 7, 24, 0, 0, 3383, 3384, 7, 5, 0, 0, 3384, 3385, 7, 13, 0, 0, 3385, 3386, 7, 16, 0, 0, 3386, 3387, 7, 17, 0, 0, 3387, 3388, 7, 16, 0, 0, 3388, 3389, 7, 17, 0, 0, 3389, 3390, 7, 19, 0, 0, 3390, 3391, 7, 7, 0, 0, 3391, 572, 1, 0, 0, 0, 3392, 3393, 7, 24, 0, 0, 3393, 3394, 7, 5, 0, 0, 3394, 3395, 7, 9, 0, 0, 3395, 3396, 7, 9, 0, 0, 3396, 3397, 7, 17, 0, 0, 3397, 3398, 7, 7, 0, 0, 3398, 3399, 7, 23, 0, 0, 3399, 574, 1, 0, 0, 0, 3400, 3401, 7, 24, 0, 0, 3401, 3402, 7, 5, 0, 0, 3402, 3403, 7, 9, 0, 0, 3403, 3404, 7, 9, 0, 0, 3404, 3405, 7, 29, 0, 0, 3405, 3406, 7, 19, 0, 0, 3406, 3407, 7, 13, 0, 0, 3407, 3408, 7, 12, 0, 0, 3408, 576, 1, 0, 0, 0, 3409, 3410, 7, 24, 0, 0, 3410, 3411, 7, 6, 0, 0, 3411, 3412, 7, 5, 0, 0, 3412, 3413, 7, 7, 0, 0, 3413, 3414, 7, 9, 0, 0, 3414, 578, 1, 0, 0, 0, 3415, 3416, 7, 24, 0, 0, 3416, 3417, 7, 13, 0, 0, 3417, 3418, 7, 10, 0, 0, 3418, 3419, 7, 14, 0, 0, 3419, 3420, 7, 10, 0, 0, 3420, 3421, 7, 12, 0, 0, 3421, 3422, 7, 17, 0, 0, 3422, 3423, 7, 7, 0, 0, 3423, 3424, 7, 23, 0, 0, 3424, 580, 1, 0, 0, 0, 3425, 3426, 7, 24, 0, 0, 3426, 3427, 7, 13, 0, 0, 3427, 3428, 7, 10, 0, 0, 3428, 3429, 7, 24, 0, 0, 3429, 3430, 7, 5, 0, 0, 3430, 3431, 7, 13, 0, 0, 3431, 3432, 7, 10, 0, 0, 3432, 582, 1, 0, 0, 0, 3433, 3434, 7, 24, 0, 0, 3434, 3435, 7, 13, 0, 0, 3435, 3436, 7, 10, 0, 0, 3436, 3437, 7, 24, 0, 0, 3437, 3438, 7, 5, 0, 0, 3438, 3439, 7, 13, 0, 0, 3439, 3440, 7, 10, 0, 0, 3440, 3441, 7, 12, 0, 0, 3441, 584, 1, 0, 0, 0, 3442, 3443, 7, 24, 0, 0, 3443, 3444, 7, 13, 0, 0, 3444, 3445, 7, 10, 0, 0, 3445, 3446, 7, 9, 0, 0, 3446, 3447, 7, 10, 0, 0, 3447, 3448, 7, 13, 0, 0, 3448, 3449, 7, 27, 0, 0, 3449, 3450, 7, 10, 0, 0, 3450, 586, 1, 0, 0, 0, 3451, 3452, 7, 24, 0, 0, 3452, 3453, 7, 13, 0, 0, 3453, 3454, 7, 17, 0, 0, 3454, 3455, 7, 19, 0, 0, 3455, 3456, 7, 13, 0, 0, 3456, 588, 1, 0, 0, 0, 3457, 3458, 7, 24, 0, 0, 3458, 3459, 7, 13, 0, 0, 3459, 3460, 7, 17, 0, 0, 3460, 3461, 7, 27, 0, 0, 3461, 3462, 7, 17, 0, 0, 3462, 3463, 7, 6, 0, 0, 3463, 3464, 7, 10, 0, 0, 3464, 3465, 7, 23, 0, 0, 3465, 3466, 7, 10, 0, 0, 3466, 3467, 7, 9, 0, 0, 3467, 590, 1, 0, 0, 0, 3468, 3469, 7, 24, 0, 0, 3469, 3470, 7, 13, 0, 0, 3470, 3471, 7, 19, 0, 0, 3471, 3472, 7, 14, 0, 0, 3472, 3473, 7, 10, 0, 0, 3473, 3474, 7, 12, 0, 0, 3474, 3475, 7, 22, 0, 0, 3475, 3476, 7, 13, 0, 0, 3476, 3477, 7, 5, 0, 0, 3477, 3478, 7, 6, 0, 0, 3478, 592, 1, 0, 0, 0, 3479, 3480, 7, 24, 0, 0, 3480, 3481, 7, 13, 0, 0, 3481, 3482, 7, 19, 0, 0, 3482, 3483, 7, 14, 0, 0, 3483, 3484, 7, 10, 0, 0, 3484, 3485, 7, 12, 0, 0, 3485, 3486, 7, 22, 0, 0, 3486, 3487, 7, 13, 0, 0, 3487, 3488, 7, 10, 0, 0, 3488, 594, 1, 0, 0, 0, 3489, 3490, 7, 24, 0, 0, 3490, 3491, 7, 13, 0, 0, 3491, 3492, 7, 19, 0, 0, 3492, 3493, 7, 23, 0, 0, 3493, 3494, 7, 13, 0, 0, 3494, 3495, 7, 5, 0, 0, 3495, 3496, 7, 15, 0, 0, 3496, 596, 1, 0, 0, 0, 3497, 3498, 7, 28, 0, 0, 3498, 3499, 7, 22, 0, 0, 3499, 3500, 7, 19, 0, 0, 3500, 3501, 7, 16, 0, 0, 3501, 3502, 7, 10, 0, 0, 3502, 598, 1, 0, 0, 0, 3503, 3504, 7, 13, 0, 0, 3504, 3505, 7, 5, 0, 0, 3505, 3506, 7, 7, 0, 0, 3506, 3507, 7, 23, 0, 0, 3507, 3508, 7, 10, 0, 0, 3508, 600, 1, 0, 0, 0, 3509, 3510, 7, 13, 0, 0, 3510, 3511, 7, 10, 0, 0, 3511, 3512, 7, 5, 0, 0, 3512, 3513, 7, 12, 0, 0, 3513, 602, 1, 0, 0, 0, 3514, 3515, 7, 13, 0, 0, 3515, 3516, 7, 10, 0, 0, 3516, 3517, 7, 5, 0, 0, 3517, 3518, 7, 9, 0, 0, 3518, 3519, 7, 9, 0, 0, 3519, 3520, 7, 17, 0, 0, 3520, 3521, 7, 23, 0, 0, 3521, 3522, 7, 7, 0, 0, 3522, 604, 1, 0, 0, 0, 3523, 3524, 7, 13, 0, 0, 3524, 3525, 7, 10, 0, 0, 3525, 3526, 7, 14, 0, 0, 3526, 3527, 7, 20, 0, 0, 3527, 3528, 7, 10, 0, 0, 3528, 3529, 7, 14, 0, 0, 3529, 3530, 7, 21, 0, 0, 3530, 606, 1, 0, 0, 0, 3531, 3532, 7, 13, 0, 0, 3532, 3533, 7, 10, 0, 0, 3533, 3534, 7, 14, 0, 0, 3534, 3535, 7, 22, 0, 0, 3535, 3536, 7, 13, 0, 0, 3536, 3537, 7, 9, 0, 0, 3537, 3538, 7, 17, 0, 0, 3538, 3539, 7, 27, 0, 0, 3539, 3540, 7, 10, 0, 0, 3540, 608, 1, 0, 0, 0, 3541, 3542, 7, 13, 0, 0, 3542, 3543, 7, 10, 0, 0, 3543, 3544, 7, 25, 0, 0, 3544, 610, 1, 0, 0, 0, 3545, 3546, 7, 13, 0, 0, 3546, 3547, 7, 10, 0, 0, 3547, 3548, 7, 25, 0, 0, 3548, 3549, 7, 13, 0, 0, 3549, 3550, 7, 10, 0, 0, 3550, 3551, 7, 9, 0, 0, 3551, 3552, 7, 20, 0, 0, 3552, 612, 1, 0, 0, 0, 3553, 3554, 7, 13, 0, 0, 3554, 3555, 7, 10, 0, 0, 3555, 3556, 7, 17, 0, 0, 3556, 3557, 7, 7, 0, 0, 3557, 3558, 7, 12, 0, 0, 3558, 3559, 7, 10, 0, 0, 3559, 3560, 7, 26, 0, 0, 3560, 614, 1, 0, 0, 0, 3561, 3562, 7, 13, 0, 0, 3562, 3563, 7, 10, 0, 0, 3563, 3564, 7, 6, 0, 0, 3564, 3565, 7, 5, 0, 0, 3565, 3566, 7, 16, 0, 0, 3566, 3567, 7, 17, 0, 0, 3567, 3568, 7, 27, 0, 0, 3568, 3569, 7, 10, 0, 0, 3569, 616, 1, 0, 0, 0, 3570, 3571, 7, 13, 0, 0, 3571, 3572, 7, 10, 0, 0, 3572, 3573, 7, 6, 0, 0, 3573, 3574, 7, 10, 0, 0, 3574, 3575, 7, 5, 0, 0, 3575, 3576, 7, 9, 0, 0, 3576, 3577, 7, 10, 0, 0, 3577, 618, 1, 0, 0, 0, 3578, 3579, 7, 13, 0, 0, 3579, 3580, 7, 10, 0, 0, 3580, 3581, 7, 7, 0, 0, 3581, 3582, 7, 5, 0, 0, 3582, 3583, 7, 15, 0, 0, 3583, 3584, 7, 10, 0, 0, 3584, 620, 1, 0, 0, 0, 3585, 3586, 7, 13, 0, 0, 3586, 3587, 7, 10, 0, 0, 3587, 3588, 7, 24, 0, 0, 3588, 3589, 7, 10, 0, 0, 3589, 3590, 7, 5, 0, 0, 3590, 3591, 7, 16, 0, 0, 3591, 3592, 7, 5, 0, 0, 3592, 3593, 7, 18, 0, 0, 3593, 3594, 7, 6, 0, 0, 3594, 3595, 7, 10, 0, 0, 3595, 622, 1, 0, 0, 0, 3596, 3597, 7, 13, 0, 0, 3597, 3598, 7, 10, 0, 0, 3598, 3599, 7, 24, 0, 0, 3599, 3600, 7, 6, 0, 0, 3600, 3601, 7, 5, 0, 0, 3601, 3602, 7, 14, 0, 0, 3602, 3603, 7, 10, 0, 0, 3603, 624, 1, 0, 0, 0, 3604, 3605, 7, 13, 0, 0, 3605, 3606, 7, 10, 0, 0, 3606, 3607, 7, 24, 0, 0, 3607, 3608, 7, 6, 0, 0, 3608, 3609, 7, 17, 0, 0, 3609, 3610, 7, 14, 0, 0, 3610, 3611, 7, 5, 0, 0, 3611, 626, 1, 0, 0, 0, 3612, 3613, 7, 13, 0, 0, 3613, 3614, 7, 10, 0, 0, 3614, 3615, 7, 9, 0, 0, 3615, 3616, 7, 10, 0, 0, 3616, 3617, 7, 16, 0, 0, 3617, 628, 1, 0, 0, 0, 3618, 3619, 7, 13, 0, 0, 3619, 3620, 7, 10, 0, 0, 3620, 3621, 7, 9, 0, 0, 3621, 3622, 7, 16, 0, 0, 3622, 3623, 7, 5, 0, 0, 3623, 3624, 7, 13, 0, 0, 3624, 3625, 7, 16, 0, 0, 3625, 630, 1, 0, 0, 0, 3626, 3627, 7, 13, 0, 0, 3627, 3628, 7, 10, 0, 0, 3628, 3629, 7, 9, 0, 0, 3629, 3630, 7, 16, 0, 0, 3630, 3631, 7, 13, 0, 0, 3631, 3632, 7, 17, 0, 0, 3632, 3633, 7, 14, 0, 0, 3633, 3634, 7, 16, 0, 0, 3634, 632, 1, 0, 0, 0, 3635, 3636, 7, 13, 0, 0, 3636, 3637, 7, 10, 0, 0, 3637, 3638, 7, 16, 0, 0, 3638, 3639, 7, 22, 0, 0, 3639, 3640, 7, 13, 0, 0, 3640, 3641, 7, 7, 0, 0, 3641, 3642, 7, 9, 0, 0, 3642, 634, 1, 0, 0, 0, 3643, 3644, 7, 13, 0, 0, 3644, 3645, 7, 10, 0, 0, 3645, 3646, 7, 27, 0, 0, 3646, 3647, 7, 19, 0, 0, 3647, 3648, 7, 21, 0, 0, 3648, 3649, 7, 10, 0, 0, 3649, 636, 1, 0, 0, 0, 3650, 3651, 7, 13, 0, 0, 3651, 3652, 7, 19, 0, 0, 3652, 3653, 7, 6, 0, 0, 3653, 3654, 7, 10, 0, 0, 3654, 638, 1, 0, 0, 0, 3655, 3656, 7, 13, 0, 0, 3656, 3657, 7, 19, 0, 0, 3657, 3658, 7, 6, 0, 0, 3658, 3659, 7, 6, 0, 0, 3659, 3660, 7, 18, 0, 0, 3660, 3661, 7, 5, 0, 0, 3661, 3662, 7, 14, 0, 0, 3662, 3663, 7, 21, 0, 0, 3663, 640, 1, 0, 0, 0, 3664, 3665, 7, 13, 0, 0, 3665, 3666, 7, 19, 0, 0, 3666, 3667, 7, 29, 0, 0, 3667, 3668, 7, 9, 0, 0, 3668, 642, 1, 0, 0, 0, 3669, 3670, 7, 13, 0, 0, 3670, 3671, 7, 22, 0, 0, 3671, 3672, 7, 6, 0, 0, 3672, 3673, 7, 10, 0, 0, 3673, 644, 1, 0, 0, 0, 3674, 3675, 7, 9, 0, 0, 3675, 3676, 7, 5, 0, 0, 3676, 3677, 7, 27, 0, 0, 3677, 3678, 7, 10, 0, 0, 3678, 3679, 7, 24, 0, 0, 3679, 3680, 7, 19, 0, 0, 3680, 3681, 7, 17, 0, 0, 3681, 3682, 7, 7, 0, 0, 3682, 3683, 7, 16, 0, 0, 3683, 646, 1, 0, 0, 0, 3684, 3685, 7, 9, 0, 0, 3685, 3686, 7, 14, 0, 0, 3686, 3687, 7, 20, 0, 0, 3687, 3688, 7, 10, 0, 0, 3688, 3689, 7, 15, 0, 0, 3689, 3690, 7, 5, 0, 0, 3690, 648, 1, 0, 0, 0, 3691, 3692, 7, 9, 0, 0, 3692, 3693, 7, 14, 0, 0, 3693, 3694, 7, 13, 0, 0, 3694, 3695, 7, 19, 0, 0, 3695, 3696, 7, 6, 0, 0, 3696, 3697, 7, 6, 0, 0, 3697, 650, 1, 0, 0, 0, 3698, 3699, 7, 9, 0, 0, 3699, 3700, 7, 10, 0, 0, 3700, 3701, 7, 5, 0, 0, 3701, 3702, 7, 13, 0, 0, 3702, 3703, 7, 14, 0, 0, 3703, 3704, 7, 20, 0, 0, 3704, 652, 1, 0, 0, 0, 3705, 3706, 7, 9, 0, 0, 3706, 3707, 7, 10, 0, 0, 3707, 3708, 7, 14, 0, 0, 3708, 3709, 7, 19, 0, 0, 3709, 3710, 7, 7, 0, 0, 3710, 3711, 7, 12, 0, 0, 3711, 654, 1, 0, 0, 0, 3712, 3713, 7, 9, 0, 0, 3713, 3714, 7, 10, 0, 0, 3714, 3715, 7, 14, 0, 0, 3715, 3716, 7, 22, 0, 0, 3716, 3717, 7, 13, 0, 0, 3717, 3718, 7, 17, 0, 0, 3718, 3719, 7, 16, 0, 0, 3719, 3720, 7, 8, 0, 0, 3720, 656, 1, 0, 0, 0, 3721, 3722, 7, 9, 0, 0, 3722, 3723, 7, 10, 0, 0, 3723, 3724, 7, 28, 0, 0, 3724, 3725, 7, 22, 0, 0, 3725, 3726, 7, 10, 0, 0, 3726, 3727, 7, 7, 0, 0, 3727, 3728, 7, 14, 0, 0, 3728, 3729, 7, 10, 0, 0, 3729, 658, 1, 0, 0, 0, 3730, 3731, 7, 9, 0, 0, 3731, 3732, 7, 10, 0, 0, 3732, 3733, 7, 28, 0, 0, 3733, 3734, 7, 22, 0, 0, 3734, 3735, 7, 10, 0, 0, 3735, 3736, 7, 7, 0, 0, 3736, 3737, 7, 14, 0, 0, 3737, 3738, 7, 10, 0, 0, 3738, 3739, 7, 9, 0, 0, 3739, 660, 1, 0, 0, 0, 3740, 3741, 7, 9, 0, 0, 3741, 3742, 7, 10, 0, 0, 3742, 3743, 7, 13, 0, 0, 3743, 3744, 7, 17, 0, 0, 3744, 3745, 7, 5, 0, 0, 3745, 3746, 7, 6, 0, 0, 3746, 3747, 7, 17, 0, 0, 3747, 3748, 7, 11, 0, 0, 3748, 3749, 7, 5, 0, 0, 3749, 3750, 7, 18, 0, 0, 3750, 3751, 7, 6, 0, 0, 3751, 3752, 7, 10, 0, 0, 3752, 662, 1, 0, 0, 0, 3753, 3754, 7, 9, 0, 0, 3754, 3755, 7, 10, 0, 0, 3755, 3756, 7, 13, 0, 0, 3756, 3757, 7, 27, 0, 0, 3757, 3758, 7, 10, 0, 0, 3758, 3759, 7, 13, 0, 0, 3759, 664, 1, 0, 0, 0, 3760, 3761, 7, 9, 0, 0, 3761, 3762, 7, 10, 0, 0, 3762, 3763, 7, 9, 0, 0, 3763, 3764, 7, 9, 0, 0, 3764, 3765, 7, 17, 0, 0, 3765, 3766, 7, 19, 0, 0, 3766, 3767, 7, 7, 0, 0, 3767, 666, 1, 0, 0, 0, 3768, 3769, 7, 9, 0, 0, 3769, 3770, 7, 10, 0, 0, 3770, 3771, 7, 16, 0, 0, 3771, 668, 1, 0, 0, 0, 3772, 3773, 7, 9, 0, 0, 3773, 3774, 7, 20, 0, 0, 3774, 3775, 7, 5, 0, 0, 3775, 3776, 7, 13, 0, 0, 3776, 3777, 7, 10, 0, 0, 3777, 670, 1, 0, 0, 0, 3778, 3779, 7, 9, 0, 0, 3779, 3780, 7, 20, 0, 0, 3780, 3781, 7, 19, 0, 0, 3781, 3782, 7, 29, 0, 0, 3782, 672, 1, 0, 0, 0, 3783, 3784, 7, 9, 0, 0, 3784, 3785, 7, 17, 0, 0, 3785, 3786, 7, 15, 0, 0, 3786, 3787, 7, 24, 0, 0, 3787, 3788, 7, 6, 0, 0, 3788, 3789, 7, 10, 0, 0, 3789, 674, 1, 0, 0, 0, 3790, 3791, 7, 9, 0, 0, 3791, 3792, 7, 7, 0, 0, 3792, 3793, 7, 5, 0, 0, 3793, 3794, 7, 24, 0, 0, 3794, 3795, 7, 9, 0, 0, 3795, 3796, 7, 20, 0, 0, 3796, 3797, 7, 19, 0, 0, 3797, 3798, 7, 16, 0, 0, 3798, 676, 1, 0, 0, 0, 3799, 3800, 7, 9, 0, 0, 3800, 3801, 7, 16, 0, 0, 3801, 3802, 7, 5, 0, 0, 3802, 3803, 7, 18, 0, 0, 3803, 3804, 7, 6, 0, 0, 3804, 3805, 7, 10, 0, 0, 3805, 678, 1, 0, 0, 0, 3806, 3807, 7, 9, 0, 0, 3807, 3808, 7, 16, 0, 0, 3808, 3809, 7, 5, 0, 0, 3809, 3810, 7, 7, 0, 0, 3810, 3811, 7, 12, 0, 0, 3811, 3812, 7, 5, 0, 0, 3812, 3813, 7, 6, 0, 0, 3813, 3814, 7, 19, 0, 0, 3814, 3815, 7, 7, 0, 0, 3815, 3816, 7, 10, 0, 0, 3816, 680, 1, 0, 0, 0, 3817, 3818, 7, 9, 0, 0, 3818, 3819, 7, 16, 0, 0, 3819, 3820, 7, 5, 0, 0, 3820, 3821, 7, 13, 0, 0, 3821, 3822, 7, 16, 0, 0, 3822, 682, 1, 0, 0, 0, 3823, 3824, 7, 9, 0, 0, 3824, 3825, 7, 16, 0, 0, 3825, 3826, 7, 5, 0, 0, 3826, 3827, 7, 16, 0, 0, 3827, 3828, 7, 10, 0, 0, 3828, 3829, 7, 15, 0, 0, 3829, 3830, 7, 10, 0, 0, 3830, 3831, 7, 7, 0, 0, 3831, 3832, 7, 16, 0, 0, 3832, 684, 1, 0, 0, 0, 3833, 3834, 7, 9, 0, 0, 3834, 3835, 7, 16, 0, 0, 3835, 3836, 7, 5, 0, 0, 3836, 3837, 7, 16, 0, 0, 3837, 3838, 7, 17, 0, 0, 3838, 3839, 7, 9, 0, 0, 3839, 3840, 7, 16, 0, 0, 3840, 3841, 7, 17, 0, 0, 3841, 3842, 7, 14, 0, 0, 3842, 3843, 7, 9, 0, 0, 3843, 686, 1, 0, 0, 0, 3844, 3845, 7, 9, 0, 0, 3845, 3846, 7, 16, 0, 0, 3846, 3847, 7, 12, 0, 0, 3847, 3848, 7, 17, 0, 0, 3848, 3849, 7, 7, 0, 0, 3849, 688, 1, 0, 0, 0, 3850, 3851, 7, 9, 0, 0, 3851, 3852, 7, 16, 0, 0, 3852, 3853, 7, 12, 0, 0, 3853, 3854, 7, 19, 0, 0, 3854, 3855, 7, 22, 0, 0, 3855, 3856, 7, 16, 0, 0, 3856, 690, 1, 0, 0, 0, 3857, 3858, 7, 9, 0, 0, 3858, 3859, 7, 16, 0, 0, 3859, 3860, 7, 19, 0, 0, 3860, 3861, 7, 13, 0, 0, 3861, 3862, 7, 5, 0, 0, 3862, 3863, 7, 23, 0, 0, 3863, 3864, 7, 10, 0, 0, 3864, 692, 1, 0, 0, 0, 3865, 3866, 7, 9, 0, 0, 3866, 3867, 7, 16, 0, 0, 3867, 3868, 7, 13, 0, 0, 3868, 3869, 7, 17, 0, 0, 3869, 3870, 7, 14, 0, 0, 3870, 3871, 7, 16, 0, 0, 3871, 694, 1, 0, 0, 0, 3872, 3873, 7, 9, 0, 0, 3873, 3874, 7, 16, 0, 0, 3874, 3875, 7, 13, 0, 0, 3875, 3876, 7, 17, 0, 0, 3876, 3877, 7, 24, 0, 0, 3877, 696, 1, 0, 0, 0, 3878, 3879, 7, 9, 0, 0, 3879, 3880, 7, 8, 0, 0, 3880, 3881, 7, 9, 0, 0, 3881, 3882, 7, 17, 0, 0, 3882, 3883, 7, 12, 0, 0, 3883, 698, 1, 0, 0, 0, 3884, 3885, 7, 9, 0, 0, 3885, 3886, 7, 8, 0, 0, 3886, 3887, 7, 9, 0, 0, 3887, 3888, 7, 16, 0, 0, 3888, 3889, 7, 10, 0, 0, 3889, 3890, 7, 15, 0, 0, 3890, 700, 1, 0, 0, 0, 3891, 3892, 7, 16, 0, 0, 3892, 3893, 7, 5, 0, 0, 3893, 3894, 7, 18, 0, 0, 3894, 3895, 7, 6, 0, 0, 3895, 3896, 7, 10, 0, 0, 3896, 3897, 7, 9, 0, 0, 3897, 702, 1, 0, 0, 0, 3898, 3899, 7, 16, 0, 0, 3899, 3900, 7, 5, 0, 0, 3900, 3901, 7, 18, 0, 0, 3901, 3902, 7, 6, 0, 0, 3902, 3903, 7, 10, 0, 0, 3903, 3904, 7, 9, 0, 0, 3904, 3905, 7, 24, 0, 0, 3905, 3906, 7, 5, 0, 0, 3906, 3907, 7, 14, 0, 0, 3907, 3908, 7, 10, 0, 0, 3908, 704, 1, 0, 0, 0, 3909, 3910, 7, 16, 0, 0, 3910, 3911, 7, 10, 0, 0, 3911, 3912, 7, 15, 0, 0, 3912, 3913, 7, 24, 0, 0, 3913, 706, 1, 0, 0, 0, 3914, 3915, 7, 16, 0, 0, 3915, 3916, 7, 10, 0, 0, 3916, 3917, 7, 15, 0, 0, 3917, 3918, 7, 24, 0, 0, 3918, 3919, 7, 6, 0, 0, 3919, 3920, 7, 5, 0, 0, 3920, 3921, 7, 16, 0, 0, 3921, 3922, 7, 10, 0, 0, 3922, 708, 1, 0, 0, 0, 3923, 3924, 7, 16, 0, 0, 3924, 3925, 7, 10, 0, 0, 3925, 3926, 7, 15, 0, 0, 3926, 3927, 7, 24, 0, 0, 3927, 3928, 7, 19, 0, 0, 3928, 3929, 7, 13, 0, 0, 3929, 3930, 7, 5, 0, 0, 3930, 3931, 7, 13, 0, 0, 3931, 3932, 7, 8, 0, 0, 3932, 710, 1, 0, 0, 0, 3933, 3934, 7, 16, 0, 0, 3934, 3935, 7, 10, 0, 0, 3935, 3936, 7, 26, 0, 0, 3936, 3937, 7, 16, 0, 0, 3937, 712, 1, 0, 0, 0, 3938, 3939, 7, 16, 0, 0, 3939, 3940, 7, 13, 0, 0, 3940, 3941, 7, 5, 0, 0, 3941, 3942, 7, 7, 0, 0, 3942, 3943, 7, 9, 0, 0, 3943, 3944, 7, 5, 0, 0, 3944, 3945, 7, 14, 0, 0, 3945, 3946, 7, 16, 0, 0, 3946, 3947, 7, 17, 0, 0, 3947, 3948, 7, 19, 0, 0, 3948, 3949, 7, 7, 0, 0, 3949, 714, 1, 0, 0, 0, 3950, 3951, 7, 16, 0, 0, 3951, 3952, 7, 13, 0, 0, 3952, 3953, 7, 17, 0, 0, 3953, 3954, 7, 23, 0, 0, 3954, 3955, 7, 23, 0, 0, 3955, 3956, 7, 10, 0, 0, 3956, 3957, 7, 13, 0, 0, 3957, 716, 1, 0, 0, 0, 3958, 3959, 7, 16, 0, 0, 3959, 3960, 7, 13, 0, 0, 3960, 3961, 7, 22, 0, 0, 3961, 3962, 7, 7, 0, 0, 3962, 3963, 7, 14, 0, 0, 3963, 3964, 7, 5, 0, 0, 3964, 3965, 7, 16, 0, 0, 3965, 3966, 7, 10, 0, 0, 3966, 718, 1, 0, 0, 0, 3967, 3968, 7, 16, 0, 0, 3968, 3969, 7, 13, 0, 0, 3969, 3970, 7, 22, 0, 0, 3970, 3971, 7, 9, 0, 0, 3971, 3972, 7, 16, 0, 0, 3972, 3973, 7, 10, 0, 0, 3973, 3974, 7, 12, 0, 0, 3974, 720, 1, 0, 0, 0, 3975, 3976, 7, 16, 0, 0, 3976, 3977, 7, 8, 0, 0, 3977, 3978, 7, 24, 0, 0, 3978, 3979, 7, 10, 0, 0, 3979, 722, 1, 0, 0, 0, 3980, 3981, 7, 16, 0, 0, 3981, 3982, 7, 8, 0, 0, 3982, 3983, 7, 24, 0, 0, 3983, 3984, 7, 10, 0, 0, 3984, 3985, 7, 9, 0, 0, 3985, 724, 1, 0, 0, 0, 3986, 3987, 7, 22, 0, 0, 3987, 3988, 7, 7, 0, 0, 3988, 3989, 7, 18, 0, 0, 3989, 3990, 7, 19, 0, 0, 3990, 3991, 7, 22, 0, 0, 3991, 3992, 7, 7, 0, 0, 3992, 3993, 7, 12, 0, 0, 3993, 3994, 7, 10, 0, 0, 3994, 3995, 7, 12, 0, 0, 3995, 726, 1, 0, 0, 0, 3996, 3997, 7, 22, 0, 0, 3997, 3998, 7, 7, 0, 0, 3998, 3999, 7, 14, 0, 0, 3999, 4000, 7, 19, 0, 0, 4000, 4001, 7, 15, 0, 0, 4001, 4002, 7, 15, 0, 0, 4002, 4003, 7, 17, 0, 0, 4003, 4004, 7, 16, 0, 0, 4004, 4005, 7, 16, 0, 0, 4005, 4006, 7, 10, 0, 0, 4006, 4007, 7, 12, 0, 0, 4007, 728, 1, 0, 0, 0, 4008, 4009, 7, 22, 0, 0, 4009, 4010, 7, 7, 0, 0, 4010, 4011, 7, 10, 0, 0, 4011, 4012, 7, 7, 0, 0, 4012, 4013, 7, 14, 0, 0, 4013, 4014, 7, 13, 0, 0, 4014, 4015, 7, 8, 0, 0, 4015, 4016, 7, 24, 0, 0, 4016, 4017, 7, 16, 0, 0, 4017, 4018, 7, 10, 0, 0, 4018, 4019, 7, 12, 0, 0, 4019, 730, 1, 0, 0, 0, 4020, 4021, 7, 22, 0, 0, 4021, 4022, 7, 7, 0, 0, 4022, 4023, 7, 21, 0, 0, 4023, 4024, 7, 7, 0, 0, 4024, 4025, 7, 19, 0, 0, 4025, 4026, 7, 29, 0, 0, 4026, 4027, 7, 7, 0, 0, 4027, 732, 1, 0, 0, 0, 4028, 4029, 7, 22, 0, 0, 4029, 4030, 7, 7, 0, 0, 4030, 4031, 7, 6, 0, 0, 4031, 4032, 7, 17, 0, 0, 4032, 4033, 7, 9, 0, 0, 4033, 4034, 7, 16, 0, 0, 4034, 4035, 7, 10, 0, 0, 4035, 4036, 7, 7, 0, 0, 4036, 734, 1, 0, 0, 0, 4037, 4038, 7, 22, 0, 0, 4038, 4039, 7, 7, 0, 0, 4039, 4040, 7, 6, 0, 0, 4040, 4041, 7, 19, 0, 0, 4041, 4042, 7, 23, 0, 0, 4042, 4043, 7, 23, 0, 0, 4043, 4044, 7, 10, 0, 0, 4044, 4045, 7, 12, 0, 0, 4045, 736, 1, 0, 0, 0, 4046, 4047, 7, 22, 0, 0, 4047, 4048, 7, 7, 0, 0, 4048, 4049, 7, 16, 0, 0, 4049, 4050, 7, 17, 0, 0, 4050, 4051, 7, 6, 0, 0, 4051, 738, 1, 0, 0, 0, 4052, 4053, 7, 22, 0, 0, 4053, 4054, 7, 24, 0, 0, 4054, 4055, 7, 12, 0, 0, 4055, 4056, 7, 5, 0, 0, 4056, 4057, 7, 16, 0, 0, 4057, 4058, 7, 10, 0, 0, 4058, 740, 1, 0, 0, 0, 4059, 4060, 7, 27, 0, 0, 4060, 4061, 7, 5, 0, 0, 4061, 4062, 7, 14, 0, 0, 4062, 4063, 7, 22, 0, 0, 4063, 4064, 7, 22, 0, 0, 4064, 4065, 7, 15, 0, 0, 4065, 742, 1, 0, 0, 0, 4066, 4067, 7, 27, 0, 0, 4067, 4068, 7, 5, 0, 0, 4068, 4069, 7, 6, 0, 0, 4069, 4070, 7, 17, 0, 0, 4070, 4071, 7, 12, 0, 0, 4071, 744, 1, 0, 0, 0, 4072, 4073, 7, 27, 0, 0, 4073, 4074, 7, 5, 0, 0, 4074, 4075, 7, 6, 0, 0, 4075, 4076, 7, 17, 0, 0, 4076, 4077, 7, 12, 0, 0, 4077, 4078, 7, 5, 0, 0, 4078, 4079, 7, 16, 0, 0, 4079, 4080, 7, 10, 0, 0, 4080, 746, 1, 0, 0, 0, 4081, 4082, 7, 27, 0, 0, 4082, 4083, 7, 5, 0, 0, 4083, 4084, 7, 6, 0, 0, 4084, 4085, 7, 17, 0, 0, 4085, 4086, 7, 12, 0, 0, 4086, 4087, 7, 5, 0, 0, 4087, 4088, 7, 16, 0, 0, 4088, 4089, 7, 19, 0, 0, 4089, 4090, 7, 13, 0, 0, 4090, 748, 1, 0, 0, 0, 4091, 4092, 7, 27, 0, 0, 4092, 4093, 7, 5, 0, 0, 4093, 4094, 7, 13, 0, 0, 4094, 4095, 7, 8, 0, 0, 4095, 4096, 7, 17, 0, 0, 4096, 4097, 7, 7, 0, 0, 4097, 4098, 7, 23, 0, 0, 4098, 750, 1, 0, 0, 0, 4099, 4100, 7, 27, 0, 0, 4100, 4101, 7, 10, 0, 0, 4101, 4102, 7, 13, 0, 0, 4102, 4103, 7, 9, 0, 0, 4103, 4104, 7, 17, 0, 0, 4104, 4105, 7, 19, 0, 0, 4105, 4106, 7, 7, 0, 0, 4106, 752, 1, 0, 0, 0, 4107, 4108, 7, 27, 0, 0, 4108, 4109, 7, 17, 0, 0, 4109, 4110, 7, 10, 0, 0, 4110, 4111, 7, 29, 0, 0, 4111, 754, 1, 0, 0, 0, 4112, 4113, 7, 27, 0, 0, 4113, 4114, 7, 19, 0, 0, 4114, 4115, 7, 6, 0, 0, 4115, 4116, 7, 5, 0, 0, 4116, 4117, 7, 16, 0, 0, 4117, 4118, 7, 17, 0, 0, 4118, 4119, 7, 6, 0, 0, 4119, 4120, 7, 10, 0, 0, 4120, 756, 1, 0, 0, 0, 4121, 4122, 7, 29, 0, 0, 4122, 4123, 7, 20, 0, 0, 4123, 4124, 7, 17, 0, 0, 4124, 4125, 7, 16, 0, 0, 4125, 4126, 7, 10, 0, 0, 4126, 4127, 7, 9, 0, 0, 4127, 4128, 7, 24, 0, 0, 4128, 4129, 7, 5, 0, 0, 4129, 4130, 7, 14, 0, 0, 4130, 4131, 7, 10, 0, 0, 4131, 758, 1, 0, 0, 0, 4132, 4133, 7, 29, 0, 0, 4133, 4134, 7, 17, 0, 0, 4134, 4135, 7, 16, 0, 0, 4135, 4136, 7, 20, 0, 0, 4136, 4137, 7, 19, 0, 0, 4137, 4138, 7, 22, 0, 0, 4138, 4139, 7, 16, 0, 0, 4139, 760, 1, 0, 0, 0, 4140, 4141, 7, 29, 0, 0, 4141, 4142, 7, 19, 0, 0, 4142, 4143, 7, 13, 0, 0, 4143, 4144, 7, 21, 0, 0, 4144, 762, 1, 0, 0, 0, 4145, 4146, 7, 29, 0, 0, 4146, 4147, 7, 13, 0, 0, 4147, 4148, 7, 5, 0, 0, 4148, 4149, 7, 24, 0, 0, 4149, 4150, 7, 24, 0, 0, 4150, 4151, 7, 10, 0, 0, 4151, 4152, 7, 13, 0, 0, 4152, 764, 1, 0, 0, 0, 4153, 4154, 7, 29, 0, 0, 4154, 4155, 7, 13, 0, 0, 4155, 4156, 7, 17, 0, 0, 4156, 4157, 7, 16, 0, 0, 4157, 4158, 7, 10, 0, 0, 4158, 766, 1, 0, 0, 0, 4159, 4160, 7, 26, 0, 0, 4160, 4161, 7, 15, 0, 0, 4161, 4162, 7, 6, 0, 0, 4162, 768, 1, 0, 0, 0, 4163, 4164, 7, 8, 0, 0, 4164, 4165, 7, 10, 0, 0, 4165, 4166, 7, 5, 0, 0, 4166, 4167, 7, 13, 0, 0, 4167, 770, 1, 0, 0, 0, 4168, 4169, 7, 8, 0, 0, 4169, 4170, 7, 10, 0, 0, 4170, 4171, 7, 9, 0, 0, 4171, 772, 1, 0, 0, 0, 4172, 4173, 7, 11, 0, 0, 4173, 4174, 7, 19, 0, 0, 4174, 4175, 7, 7, 0, 0, 4175, 4176, 7, 10, 0, 0, 4176, 774, 1, 0, 0, 0, 4177, 4178, 7, 18, 0, 0, 4178, 4179, 7, 10, 0, 0, 4179, 4180, 7, 16, 0, 0, 4180, 4181, 7, 29, 0, 0, 4181, 4182, 7, 10, 0, 0, 4182, 4183, 7, 10, 0, 0, 4183, 4184, 7, 7, 0, 0, 4184, 776, 1, 0, 0, 0, 4185, 4186, 7, 18, 0, 0, 4186, 4187, 7, 17, 0, 0, 4187, 4188, 7, 23, 0, 0, 4188, 4189, 7, 17, 0, 0, 4189, 4190, 7, 7, 0, 0, 4190, 4191, 7, 16, 0, 0, 4191, 778, 1, 0, 0, 0, 4192, 4193, 7, 18, 0, 0, 4193, 4194, 7, 17, 0, 0, 4194, 4195, 7, 16, 0, 0, 4195, 780, 1, 0, 0, 0, 4196, 4197, 7, 18, 0, 0, 4197, 4198, 7, 19, 0, 0, 4198, 4199, 7, 19, 0, 0, 4199, 4200, 7, 6, 0, 0, 4200, 4201, 7, 10, 0, 0, 4201, 4202, 7, 5, 0, 0, 4202, 4203, 7, 7, 0, 0, 4203, 782, 1, 0, 0, 0, 4204, 4205, 7, 14, 0, 0, 4205, 4206, 7, 20, 0, 0, 4206, 4207, 7, 5, 0, 0, 4207, 4208, 7, 13, 0, 0, 4208, 784, 1, 0, 0, 0, 4209, 4210, 7, 14, 0, 0, 4210, 4211, 7, 20, 0, 0, 4211, 4212, 7, 5, 0, 0, 4212, 4213, 7, 13, 0, 0, 4213, 4214, 7, 5, 0, 0, 4214, 4215, 7, 14, 0, 0, 4215, 4216, 7, 16, 0, 0, 4216, 4217, 7, 10, 0, 0, 4217, 4218, 7, 13, 0, 0, 4218, 786, 1, 0, 0, 0, 4219, 4220, 7, 14, 0, 0, 4220, 4221, 7, 19, 0, 0, 4221, 4222, 7, 5, 0, 0, 4222, 4223, 7, 6, 0, 0, 4223, 4224, 7, 10, 0, 0, 4224, 4225, 7, 9, 0, 0, 4225, 4226, 7, 14, 0, 0, 4226, 4227, 7, 10, 0, 0, 4227, 788, 1, 0, 0, 0, 4228, 4229, 7, 12, 0, 0, 4229, 4230, 7, 10, 0, 0, 4230, 4231, 7, 14, 0, 0, 4231, 790, 1, 0, 0, 0, 4232, 4233, 7, 12, 0, 0, 4233, 4234, 7, 10, 0, 0, 4234, 4235, 7, 14, 0, 0, 4235, 4236, 7, 17, 0, 0, 4236, 4237, 7, 15, 0, 0, 4237, 4238, 7, 5, 0, 0, 4238, 4239, 7, 6, 0, 0, 4239, 792, 1, 0, 0, 0, 4240, 4241, 7, 10, 0, 0, 4241, 4242, 7, 26, 0, 0, 4242, 4243, 7, 17, 0, 0, 4243, 4244, 7, 9, 0, 0, 4244, 4245, 7, 16, 0, 0, 4245, 4246, 7, 9, 0, 0, 4246, 794, 1, 0, 0, 0, 4247, 4248, 7, 10, 0, 0, 4248, 4249, 7, 26, 0, 0, 4249, 4250, 7, 16, 0, 0, 4250, 4251, 7, 13, 0, 0, 4251, 4252, 7, 5, 0, 0, 4252, 4253, 7, 14, 0, 0, 4253, 4254, 7, 16, 0, 0, 4254, 796, 1, 0, 0, 0, 4255, 4256, 7, 25, 0, 0, 4256, 4257, 7, 6, 0, 0, 4257, 4258, 7, 19, 0, 0, 4258, 4259, 7, 5, 0, 0, 4259, 4260, 7, 16, 0, 0, 4260, 798, 1, 0, 0, 0, 4261, 4262, 7, 23, 0, 0, 4262, 4263, 7, 13, 0, 0, 4263, 4264, 7, 10, 0, 0, 4264, 4265, 7, 5, 0, 0, 4265, 4266, 7, 16, 0, 0, 4266, 4267, 7, 10, 0, 0, 4267, 4268, 7, 9, 0, 0, 4268, 4269, 7, 16, 0, 0, 4269, 800, 1, 0, 0, 0, 4270, 4271, 7, 17, 0, 0, 4271, 4272, 7, 7, 0, 0, 4272, 4273, 7, 19, 0, 0, 4273, 4274, 7, 22, 0, 0, 4274, 4275, 7, 16, 0, 0, 4275, 802, 1, 0, 0, 0, 4276, 4277, 7, 17, 0, 0, 4277, 4278, 7, 7, 0, 0, 4278, 4279, 7, 16, 0, 0, 4279, 804, 1, 0, 0, 0, 4280, 4281, 7, 17, 0, 0, 4281, 4282, 7, 7, 0, 0, 4282, 4283, 7, 16, 0, 0, 4283, 4284, 7, 10, 0, 0, 4284, 4285, 7, 23, 0, 0, 4285, 4286, 7, 10, 0, 0, 4286, 4287, 7, 13, 0, 0, 4287, 806, 1, 0, 0, 0, 4288, 4289, 7, 17, 0, 0, 4289, 4290, 7, 7, 0, 0, 4290, 4291, 7, 16, 0, 0, 4291, 4292, 7, 10, 0, 0, 4292, 4293, 7, 13, 0, 0, 4293, 4294, 7, 27, 0, 0, 4294, 4295, 7, 5, 0, 0, 4295, 4296, 7, 6, 0, 0, 4296, 808, 1, 0, 0, 0, 4297, 4298, 7, 6, 0, 0, 4298, 4299, 7, 10, 0, 0, 4299, 4300, 7, 5, 0, 0, 4300, 4301, 7, 9, 0, 0, 4301, 4302, 7, 16, 0, 0, 4302, 810, 1, 0, 0, 0, 4303, 4304, 7, 7, 0, 0, 4304, 4305, 7, 5, 0, 0, 4305, 4306, 7, 16, 0, 0, 4306, 4307, 7, 17, 0, 0, 4307, 4308, 7, 19, 0, 0, 4308, 4309, 7, 7, 0, 0, 4309, 4310, 7, 5, 0, 0, 4310, 4311, 7, 6, 0, 0, 4311, 812, 1, 0, 0, 0, 4312, 4313, 7, 7, 0, 0, 4313, 4314, 7, 14, 0, 0, 4314, 4315, 7, 20, 0, 0, 4315, 4316, 7, 5, 0, 0, 4316, 4317, 7, 13, 0, 0, 4317, 814, 1, 0, 0, 0, 4318, 4319, 7, 7, 0, 0, 4319, 4320, 7, 19, 0, 0, 4320, 4321, 7, 7, 0, 0, 4321, 4322, 7, 10, 0, 0, 4322, 816, 1, 0, 0, 0, 4323, 4324, 7, 7, 0, 0, 4324, 4325, 7, 22, 0, 0, 4325, 4326, 7, 6, 0, 0, 4326, 4327, 7, 6, 0, 0, 4327, 4328, 7, 17, 0, 0, 4328, 4329, 7, 25, 0, 0, 4329, 818, 1, 0, 0, 0, 4330, 4331, 7, 7, 0, 0, 4331, 4332, 7, 22, 0, 0, 4332, 4333, 7, 15, 0, 0, 4333, 4334, 7, 10, 0, 0, 4334, 4335, 7, 13, 0, 0, 4335, 4336, 7, 17, 0, 0, 4336, 4337, 7, 14, 0, 0, 4337, 820, 1, 0, 0, 0, 4338, 4339, 7, 19, 0, 0, 4339, 4340, 7, 27, 0, 0, 4340, 4341, 7, 10, 0, 0, 4341, 4342, 7, 13, 0, 0, 4342, 4343, 7, 6, 0, 0, 4343, 4344, 7, 5, 0, 0, 4344, 4345, 7, 8, 0, 0, 4345, 822, 1, 0, 0, 0, 4346, 4347, 7, 24, 0, 0, 4347, 4348, 7, 19, 0, 0, 4348, 4349, 7, 9, 0, 0, 4349, 4350, 7, 17, 0, 0, 4350, 4351, 7, 16, 0, 0, 4351, 4352, 7, 17, 0, 0, 4352, 4353, 7, 19, 0, 0, 4353, 4354, 7, 7, 0, 0, 4354, 824, 1, 0, 0, 0, 4355, 4356, 7, 24, 0, 0, 4356, 4357, 7, 13, 0, 0, 4357, 4358, 7, 10, 0, 0, 4358, 4359, 7, 14, 0, 0, 4359, 4360, 7, 17, 0, 0, 4360, 4361, 7, 9, 0, 0, 4361, 4362, 7, 17, 0, 0, 4362, 4363, 7, 19, 0, 0, 4363, 4364, 7, 7, 0, 0, 4364, 826, 1, 0, 0, 0, 4365, 4366, 7, 13, 0, 0, 4366, 4367, 7, 10, 0, 0, 4367, 4368, 7, 5, 0, 0, 4368, 4369, 7, 6, 0, 0, 4369, 828, 1, 0, 0, 0, 4370, 4371, 7, 13, 0, 0, 4371, 4372, 7, 19, 0, 0, 4372, 4373, 7, 29, 0, 0, 4373, 830, 1, 0, 0, 0, 4374, 4375, 7, 9, 0, 0, 4375, 4376, 7, 10, 0, 0, 4376, 4377, 7, 16, 0, 0, 4377, 4378, 7, 19, 0, 0, 4378, 4379, 7, 25, 0, 0, 4379, 832, 1, 0, 0, 0, 4380, 4381, 7, 9, 0, 0, 4381, 4382, 7, 15, 0, 0, 4382, 4383, 7, 5, 0, 0, 4383, 4384, 7, 6, 0, 0, 4384, 4385, 7, 6, 0, 0, 4385, 4386, 7, 17, 0, 0, 4386, 4387, 7, 7, 0, 0, 4387, 4388, 7, 16, 0, 0, 4388, 834, 1, 0, 0, 0, 4389, 4390, 7, 9, 0, 0, 4390, 4391, 7, 22, 0, 0, 4391, 4392, 7, 18, 0, 0, 4392, 4393, 7, 9, 0, 0, 4393, 4394, 7, 16, 0, 0, 4394, 4395, 7, 13, 0, 0, 4395, 4396, 7, 17, 0, 0, 4396, 4397, 7, 7, 0, 0, 4397, 4398, 7, 23, 0, 0, 4398, 836, 1, 0, 0, 0, 4399, 4400, 7, 16, 0, 0, 4400, 4401, 7, 17, 0, 0, 4401, 4402, 7, 15, 0, 0, 4402, 4403, 7, 10, 0, 0, 4403, 838, 1, 0, 0, 0, 4404, 4405, 7, 16, 0, 0, 4405, 4406, 7, 17, 0, 0, 4406, 4407, 7, 15, 0, 0, 4407, 4408, 7, 10, 0, 0, 4408, 4409, 7, 9, 0, 0, 4409, 4410, 7, 16, 0, 0, 4410, 4411, 7, 5, 0, 0, 4411, 4412, 7, 15, 0, 0, 4412, 4413, 7, 24, 0, 0, 4413, 840, 1, 0, 0, 0, 4414, 4415, 7, 16, 0, 0, 4415, 4416, 7, 13, 0, 0, 4416, 4417, 7, 10, 0, 0, 4417, 4418, 7, 5, 0, 0, 4418, 4419, 7, 16, 0, 0, 4419, 842, 1, 0, 0, 0, 4420, 4421, 7, 16, 0, 0, 4421, 4422, 7, 13, 0, 0, 4422, 4423, 7, 17, 0, 0, 4423, 4424, 7, 15, 0, 0, 4424, 844, 1, 0, 0, 0, 4425, 4426, 7, 27, 0, 0, 4426, 4427, 7, 5, 0, 0, 4427, 4428, 7, 6, 0, 0, 4428, 4429, 7, 22, 0, 0, 4429, 4430, 7, 10, 0, 0, 4430, 4431, 7, 9, 0, 0, 4431, 846, 1, 0, 0, 0, 4432, 4433, 7, 27, 0, 0, 4433, 4434, 7, 5, 0, 0, 4434, 4435, 7, 13, 0, 0, 4435, 4436, 7, 14, 0, 0, 4436, 4437, 7, 20, 0, 0, 4437, 4438, 7, 5, 0, 0, 4438, 4439, 7, 13, 0, 0, 4439, 848, 1, 0, 0, 0, 4440, 4441, 7, 26, 0, 0, 4441, 4442, 7, 15, 0, 0, 4442, 4443, 7, 6, 0, 0, 4443, 4444, 7, 5, 0, 0, 4444, 4445, 7, 16, 0, 0, 4445, 4446, 7, 16, 0, 0, 4446, 4447, 7, 13, 0, 0, 4447, 4448, 7, 17, 0, 0, 4448, 4449, 7, 18, 0, 0, 4449, 4450, 7, 22, 0, 0, 4450, 4451, 7, 16, 0, 0, 4451, 4452, 7, 10, 0, 0, 4452, 4453, 7, 9, 0, 0, 4453, 850, 1, 0, 0, 0, 4454, 4455, 7, 26, 0, 0, 4455, 4456, 7, 15, 0, 0, 4456, 4457, 7, 6, 0, 0, 4457, 4458, 7, 14, 0, 0, 4458, 4459, 7, 19, 0, 0, 4459, 4460, 7, 15, 0, 0, 4460, 4461, 7, 15, 0, 0, 4461, 4462, 7, 10, 0, 0, 4462, 4463, 7, 7, 0, 0, 4463, 4464, 7, 16, 0, 0, 4464, 852, 1, 0, 0, 0, 4465, 4466, 7, 26, 0, 0, 4466, 4467, 7, 15, 0, 0, 4467, 4468, 7, 6, 0, 0, 4468, 4469, 7, 5, 0, 0, 4469, 4470, 7, 23, 0, 0, 4470, 4471, 7, 23, 0, 0, 4471, 854, 1, 0, 0, 0, 4472, 4473, 7, 26, 0, 0, 4473, 4474, 7, 15, 0, 0, 4474, 4475, 7, 6, 0, 0, 4475, 4476, 5, 95, 0, 0, 4476, 4477, 7, 17, 0, 0, 4477, 4478, 7, 9, 0, 0, 4478, 4479, 5, 95, 0, 0, 4479, 4480, 7, 29, 0, 0, 4480, 4481, 7, 10, 0, 0, 4481, 4482, 7, 6, 0, 0, 4482, 4483, 7, 6, 0, 0, 4483, 4484, 5, 95, 0, 0, 4484, 4485, 7, 25, 0, 0, 4485, 4486, 7, 19, 0, 0, 4486, 4487, 7, 13, 0, 0, 4487, 4488, 7, 15, 0, 0, 4488, 4489, 7, 10, 0, 0, 4489, 4490, 7, 12, 0, 0, 4490, 856, 1, 0, 0, 0, 4491, 4492, 7, 26, 0, 0, 4492, 4493, 7, 15, 0, 0, 4493, 4494, 7, 6, 0, 0, 4494, 4495, 5, 95, 0, 0, 4495, 4496, 7, 17, 0, 0, 4496, 4497, 7, 9, 0, 0, 4497, 4498, 5, 95, 0, 0, 4498, 4499, 7, 29, 0, 0, 4499, 4500, 7, 10, 0, 0, 4500, 4501, 7, 6, 0, 0, 4501, 4502, 7, 6, 0, 0, 4502, 4503, 5, 95, 0, 0, 4503, 4504, 7, 25, 0, 0, 4504, 4505, 7, 19, 0, 0, 4505, 4506, 7, 13, 0, 0, 4506, 4507, 7, 15, 0, 0, 4507, 4508, 7, 10, 0, 0, 4508, 4509, 7, 12, 0, 0, 4509, 4510, 5, 95, 0, 0, 4510, 4511, 7, 12, 0, 0, 4511, 4512, 7, 19, 0, 0, 4512, 4513, 7, 14, 0, 0, 4513, 4514, 7, 22, 0, 0, 4514, 4515, 7, 15, 0, 0, 4515, 4516, 7, 10, 0, 0, 4516, 4517, 7, 7, 0, 0, 4517, 4518, 7, 16, 0, 0, 4518, 858, 1, 0, 0, 0, 4519, 4520, 7, 26, 0, 0, 4520, 4521, 7, 15, 0, 0, 4521, 4522, 7, 6, 0, 0, 4522, 4523, 5, 95, 0, 0, 4523, 4524, 7, 17, 0, 0, 4524, 4525, 7, 9, 0, 0, 4525, 4526, 5, 95, 0, 0, 4526, 4527, 7, 29, 0, 0, 4527, 4528, 7, 10, 0, 0, 4528, 4529, 7, 6, 0, 0, 4529, 4530, 7, 6, 0, 0, 4530, 4531, 5, 95, 0, 0, 4531, 4532, 7, 25, 0, 0, 4532, 4533, 7, 19, 0, 0, 4533, 4534, 7, 13, 0, 0, 4534, 4535, 7, 15, 0, 0, 4535, 4536, 7, 10, 0, 0, 4536, 4537, 7, 12, 0, 0, 4537, 4538, 5, 95, 0, 0, 4538, 4539, 7, 14, 0, 0, 4539, 4540, 7, 19, 0, 0, 4540, 4541, 7, 7, 0, 0, 4541, 4542, 7, 16, 0, 0, 4542, 4543, 7, 10, 0, 0, 4543, 4544, 7, 7, 0, 0, 4544, 4545, 7, 16, 0, 0, 4545, 860, 1, 0, 0, 0, 4546, 4547, 7, 26, 0, 0, 4547, 4548, 7, 24, 0, 0, 4548, 4549, 7, 5, 0, 0, 4549, 4550, 7, 16, 0, 0, 4550, 4551, 7, 20, 0, 0, 4551, 862, 1, 0, 0, 0, 4552, 4553, 7, 26, 0, 0, 4553, 4554, 7, 24, 0, 0, 4554, 4555, 7, 5, 0, 0, 4555, 4556, 7, 16, 0, 0, 4556, 4557, 7, 20, 0, 0, 4557, 4558, 5, 95, 0, 0, 4558, 4559, 7, 10, 0, 0, 4559, 4560, 7, 26, 0, 0, 4560, 4561, 7, 17, 0, 0, 4561, 4562, 7, 9, 0, 0, 4562, 4563, 7, 16, 0, 0, 4563, 4564, 7, 9, 0, 0, 4564, 864, 1, 0, 0, 0, 4565, 4566, 7, 26, 0, 0, 4566, 4567, 7, 15, 0, 0, 4567, 4568, 7, 6, 0, 0, 4568, 4569, 7, 14, 0, 0, 4569, 4570, 7, 19, 0, 0, 4570, 4571, 7, 7, 0, 0, 4571, 4572, 7, 14, 0, 0, 4572, 4573, 7, 5, 0, 0, 4573, 4574, 7, 16, 0, 0, 4574, 866, 1, 0, 0, 0, 4575, 4576, 7, 26, 0, 0, 4576, 4577, 7, 15, 0, 0, 4577, 4578, 7, 6, 0, 0, 4578, 4579, 7, 10, 0, 0, 4579, 4580, 7, 6, 0, 0, 4580, 4581, 7, 10, 0, 0, 4581, 4582, 7, 15, 0, 0, 4582, 4583, 7, 10, 0, 0, 4583, 4584, 7, 7, 0, 0, 4584, 4585, 7, 16, 0, 0, 4585, 868, 1, 0, 0, 0, 4586, 4587, 7, 26, 0, 0, 4587, 4588, 7, 15, 0, 0, 4588, 4589, 7, 6, 0, 0, 4589, 4590, 7, 10, 0, 0, 4590, 4591, 7, 26, 0, 0, 4591, 4592, 7, 17, 0, 0, 4592, 4593, 7, 9, 0, 0, 4593, 4594, 7, 16, 0, 0, 4594, 4595, 7, 9, 0, 0, 4595, 870, 1, 0, 0, 0, 4596, 4597, 7, 26, 0, 0, 4597, 4598, 7, 15, 0, 0, 4598, 4599, 7, 6, 0, 0, 4599, 4600, 7, 25, 0, 0, 4600, 4601, 7, 19, 0, 0, 4601, 4602, 7, 13, 0, 0, 4602, 4603, 7, 10, 0, 0, 4603, 4604, 7, 9, 0, 0, 4604, 4605, 7, 16, 0, 0, 4605, 872, 1, 0, 0, 0, 4606, 4607, 7, 26, 0, 0, 4607, 4608, 7, 15, 0, 0, 4608, 4609, 7, 6, 0, 0, 4609, 4610, 7, 24, 0, 0, 4610, 4611, 7, 5, 0, 0, 4611, 4612, 7, 13, 0, 0, 4612, 4613, 7, 9, 0, 0, 4613, 4614, 7, 10, 0, 0, 4614, 874, 1, 0, 0, 0, 4615, 4616, 7, 26, 0, 0, 4616, 4617, 7, 15, 0, 0, 4617, 4618, 7, 6, 0, 0, 4618, 4619, 7, 24, 0, 0, 4619, 4620, 7, 17, 0, 0, 4620, 876, 1, 0, 0, 0, 4621, 4622, 7, 26, 0, 0, 4622, 4623, 7, 15, 0, 0, 4623, 4624, 7, 6, 0, 0, 4624, 4625, 7, 13, 0, 0, 4625, 4626, 7, 19, 0, 0, 4626, 4627, 7, 19, 0, 0, 4627, 4628, 7, 16, 0, 0, 4628, 878, 1, 0, 0, 0, 4629, 4630, 7, 26, 0, 0, 4630, 4631, 7, 15, 0, 0, 4631, 4632, 7, 6, 0, 0, 4632, 4633, 7, 9, 0, 0, 4633, 4634, 7, 10, 0, 0, 4634, 4635, 7, 13, 0, 0, 4635, 4636, 7, 17, 0, 0, 4636, 4637, 7, 5, 0, 0, 4637, 4638, 7, 6, 0, 0, 4638, 4639, 7, 17, 0, 0, 4639, 4640, 7, 11, 0, 0, 4640, 4641, 7, 10, 0, 0, 4641, 880, 1, 0, 0, 0, 4642, 4643, 7, 14, 0, 0, 4643, 4644, 7, 5, 0, 0, 4644, 4645, 7, 6, 0, 0, 4645, 4646, 7, 6, 0, 0, 4646, 882, 1, 0, 0, 0, 4647, 4648, 7, 14, 0, 0, 4648, 4649, 7, 22, 0, 0, 4649, 4650, 7, 13, 0, 0, 4650, 4651, 7, 13, 0, 0, 4651, 4652, 7, 10, 0, 0, 4652, 4653, 7, 7, 0, 0, 4653, 4654, 7, 16, 0, 0, 4654, 884, 1, 0, 0, 0, 4655, 4656, 7, 5, 0, 0, 4656, 4657, 7, 16, 0, 0, 4657, 4658, 7, 16, 0, 0, 4658, 4659, 7, 5, 0, 0, 4659, 4660, 7, 14, 0, 0, 4660, 4661, 7, 20, 0, 0, 4661, 886, 1, 0, 0, 0, 4662, 4663, 7, 12, 0, 0, 4663, 4664, 7, 10, 0, 0, 4664, 4665, 7, 16, 0, 0, 4665, 4666, 7, 5, 0, 0, 4666, 4667, 7, 14, 0, 0, 4667, 4668, 7, 20, 0, 0, 4668, 888, 1, 0, 0, 0, 4669, 4670, 7, 10, 0, 0, 4670, 4671, 7, 26, 0, 0, 4671, 4672, 7, 24, 0, 0, 4672, 4673, 7, 13, 0, 0, 4673, 4674, 7, 10, 0, 0, 4674, 4675, 7, 9, 0, 0, 4675, 4676, 7, 9, 0, 0, 4676, 4677, 7, 17, 0, 0, 4677, 4678, 7, 19, 0, 0, 4678, 4679, 7, 7, 0, 0, 4679, 890, 1, 0, 0, 0, 4680, 4681, 7, 23, 0, 0, 4681, 4682, 7, 10, 0, 0, 4682, 4683, 7, 7, 0, 0, 4683, 4684, 7, 10, 0, 0, 4684, 4685, 7, 13, 0, 0, 4685, 4686, 7, 5, 0, 0, 4686, 4687, 7, 16, 0, 0, 4687, 4688, 7, 10, 0, 0, 4688, 4689, 7, 12, 0, 0, 4689, 892, 1, 0, 0, 0, 4690, 4691, 7, 6, 0, 0, 4691, 4692, 7, 19, 0, 0, 4692, 4693, 7, 23, 0, 0, 4693, 4694, 7, 23, 0, 0, 4694, 4695, 7, 10, 0, 0, 4695, 4696, 7, 12, 0, 0, 4696, 894, 1, 0, 0, 0, 4697, 4698, 7, 9, 0, 0, 4698, 4699, 7, 16, 0, 0, 4699, 4700, 7, 19, 0, 0, 4700, 4701, 7, 13, 0, 0, 4701, 4702, 7, 10, 0, 0, 4702, 4703, 7, 12, 0, 0, 4703, 896, 1, 0, 0, 0, 4704, 4705, 7, 17, 0, 0, 4705, 4706, 7, 7, 0, 0, 4706, 4707, 7, 14, 0, 0, 4707, 4708, 7, 6, 0, 0, 4708, 4709, 7, 22, 0, 0, 4709, 4710, 7, 12, 0, 0, 4710, 4711, 7, 10, 0, 0, 4711, 898, 1, 0, 0, 0, 4712, 4713, 7, 13, 0, 0, 4713, 4714, 7, 19, 0, 0, 4714, 4715, 7, 22, 0, 0, 4715, 4716, 7, 16, 0, 0, 4716, 4717, 7, 17, 0, 0, 4717, 4718, 7, 7, 0, 0, 4718, 4719, 7, 10, 0, 0, 4719, 900, 1, 0, 0, 0, 4720, 4721, 7, 16, 0, 0, 4721, 4722, 7, 13, 0, 0, 4722, 4723, 7, 5, 0, 0, 4723, 4724, 7, 7, 0, 0, 4724, 4725, 7, 9, 0, 0, 4725, 4726, 7, 25, 0, 0, 4726, 4727, 7, 19, 0, 0, 4727, 4728, 7, 13, 0, 0, 4728, 4729, 7, 15, 0, 0, 4729, 902, 1, 0, 0, 0, 4730, 4731, 7, 17, 0, 0, 4731, 4732, 7, 15, 0, 0, 4732, 4733, 7, 24, 0, 0, 4733, 4734, 7, 19, 0, 0, 4734, 4735, 7, 13, 0, 0, 4735, 4736, 7, 16, 0, 0, 4736, 904, 1, 0, 0, 0, 4737, 4738, 7, 24, 0, 0, 4738, 4739, 7, 19, 0, 0, 4739, 4740, 7, 6, 0, 0, 4740, 4741, 7, 17, 0, 0, 4741, 4742, 7, 14, 0, 0, 4742, 4743, 7, 8, 0, 0, 4743, 906, 1, 0, 0, 0, 4744, 4745, 7, 15, 0, 0, 4745, 4746, 7, 10, 0, 0, 4746, 4747, 7, 16, 0, 0, 4747, 4748, 7, 20, 0, 0, 4748, 4749, 7, 19, 0, 0, 4749, 4750, 7, 12, 0, 0, 4750, 908, 1, 0, 0, 0, 4751, 4752, 7, 13, 0, 0, 4752, 4753, 7, 10, 0, 0, 4753, 4754, 7, 25, 0, 0, 4754, 4755, 7, 10, 0, 0, 4755, 4756, 7, 13, 0, 0, 4756, 4757, 7, 10, 0, 0, 4757, 4758, 7, 7, 0, 0, 4758, 4759, 7, 14, 0, 0, 4759, 4760, 7, 17, 0, 0, 4760, 4761, 7, 7, 0, 0, 4761, 4762, 7, 23, 0, 0, 4762, 910, 1, 0, 0, 0, 4763, 4764, 7, 7, 0, 0, 4764, 4765, 7, 10, 0, 0, 4765, 4766, 7, 29, 0, 0, 4766, 912, 1, 0, 0, 0, 4767, 4768, 7, 19, 0, 0, 4768, 4769, 7, 6, 0, 0, 4769, 4770, 7, 12, 0, 0, 4770, 914, 1, 0, 0, 0, 4771, 4772, 7, 27, 0, 0, 4772, 4773, 7, 5, 0, 0, 4773, 4774, 7, 6, 0, 0, 4774, 4775, 7, 22, 0, 0, 4775, 4776, 7, 10, 0, 0, 4776, 916, 1, 0, 0, 0, 4777, 4778, 7, 9, 0, 0, 4778, 4779, 7, 22, 0, 0, 4779, 4780, 7, 18, 0, 0, 4780, 4781, 7, 9, 0, 0, 4781, 4782, 7, 14, 0, 0, 4782, 4783, 7, 13, 0, 0, 4783, 4784, 7, 17, 0, 0, 4784, 4785, 7, 24, 0, 0, 4785, 4786, 7, 16, 0, 0, 4786, 4787, 7, 17, 0, 0, 4787, 4788, 7, 19, 0, 0, 4788, 4789, 7, 7, 0, 0, 4789, 918, 1, 0, 0, 0, 4790, 4791, 7, 24, 0, 0, 4791, 4792, 7, 22, 0, 0, 4792, 4793, 7, 18, 0, 0, 4793, 4794, 7, 6, 0, 0, 4794, 4795, 7, 17, 0, 0, 4795, 4796, 7, 14, 0, 0, 4796, 4797, 7, 5, 0, 0, 4797, 4798, 7, 16, 0, 0, 4798, 4799, 7, 17, 0, 0, 4799, 4800, 7, 19, 0, 0, 4800, 4801, 7, 7, 0, 0, 4801, 920, 1, 0, 0, 0, 4802, 4803, 7, 19, 0, 0, 4803, 4804, 7, 22, 0, 0, 4804, 4805, 7, 16, 0, 0, 4805, 922, 1, 0, 0, 0, 4806, 4807, 7, 10, 0, 0, 4807, 4808, 7, 7, 0, 0, 4808, 4809, 7, 12, 0, 0, 4809, 924, 1, 0, 0, 0, 4810, 4811, 7, 13, 0, 0, 4811, 4812, 7, 19, 0, 0, 4812, 4813, 7, 22, 0, 0, 4813, 4814, 7, 16, 0, 0, 4814, 4815, 7, 17, 0, 0, 4815, 4816, 7, 7, 0, 0, 4816, 4817, 7, 10, 0, 0, 4817, 4818, 7, 9, 0, 0, 4818, 926, 1, 0, 0, 0, 4819, 4820, 7, 9, 0, 0, 4820, 4821, 7, 14, 0, 0, 4821, 4822, 7, 20, 0, 0, 4822, 4823, 7, 10, 0, 0, 4823, 4824, 7, 15, 0, 0, 4824, 4825, 7, 5, 0, 0, 4825, 4826, 7, 9, 0, 0, 4826, 928, 1, 0, 0, 0, 4827, 4828, 7, 24, 0, 0, 4828, 4829, 7, 13, 0, 0, 4829, 4830, 7, 19, 0, 0, 4830, 4831, 7, 14, 0, 0, 4831, 4832, 7, 10, 0, 0, 4832, 4833, 7, 12, 0, 0, 4833, 4834, 7, 22, 0, 0, 4834, 4835, 7, 13, 0, 0, 4835, 4836, 7, 10, 0, 0, 4836, 4837, 7, 9, 0, 0, 4837, 930, 1, 0, 0, 0, 4838, 4839, 7, 17, 0, 0, 4839, 4840, 7, 7, 0, 0, 4840, 4841, 7, 24, 0, 0, 4841, 4842, 7, 22, 0, 0, 4842, 4843, 7, 16, 0, 0, 4843, 932, 1, 0, 0, 0, 4844, 4845, 7, 9, 0, 0, 4845, 4846, 7, 22, 0, 0, 4846, 4847, 7, 24, 0, 0, 4847, 4848, 7, 24, 0, 0, 4848, 4849, 7, 19, 0, 0, 4849, 4850, 7, 13, 0, 0, 4850, 4851, 7, 16, 0, 0, 4851, 934, 1, 0, 0, 0, 4852, 4853, 7, 24, 0, 0, 4853, 4854, 7, 5, 0, 0, 4854, 4855, 7, 13, 0, 0, 4855, 4856, 7, 5, 0, 0, 4856, 4857, 7, 6, 0, 0, 4857, 4858, 7, 6, 0, 0, 4858, 4859, 7, 10, 0, 0, 4859, 4860, 7, 6, 0, 0, 4860, 936, 1, 0, 0, 0, 4861, 4862, 7, 9, 0, 0, 4862, 4863, 7, 28, 0, 0, 4863, 4864, 7, 6, 0, 0, 4864, 938, 1, 0, 0, 0, 4865, 4866, 7, 12, 0, 0, 4866, 4867, 7, 10, 0, 0, 4867, 4868, 7, 24, 0, 0, 4868, 4869, 7, 10, 0, 0, 4869, 4870, 7, 7, 0, 0, 4870, 4871, 7, 12, 0, 0, 4871, 4872, 7, 9, 0, 0, 4872, 940, 1, 0, 0, 0, 4873, 4874, 7, 19, 0, 0, 4874, 4875, 7, 27, 0, 0, 4875, 4876, 7, 10, 0, 0, 4876, 4877, 7, 13, 0, 0, 4877, 4878, 7, 13, 0, 0, 4878, 4879, 7, 17, 0, 0, 4879, 4880, 7, 12, 0, 0, 4880, 4881, 7, 17, 0, 0, 4881, 4882, 7, 7, 0, 0, 4882, 4883, 7, 23, 0, 0, 4883, 942, 1, 0, 0, 0, 4884, 4885, 7, 14, 0, 0, 4885, 4886, 7, 19, 0, 0, 4886, 4887, 7, 7, 0, 0, 4887, 4888, 7, 25, 0, 0, 4888, 4889, 7, 6, 0, 0, 4889, 4890, 7, 17, 0, 0, 4890, 4891, 7, 14, 0, 0, 4891, 4892, 7, 16, 0, 0, 4892, 944, 1, 0, 0, 0, 4893, 4894, 7, 9, 0, 0, 4894, 4895, 7, 21, 0, 0, 4895, 4896, 7, 17, 0, 0, 4896, 4897, 7, 24, 0, 0, 4897, 946, 1, 0, 0, 0, 4898, 4899, 7, 6, 0, 0, 4899, 4900, 7, 19, 0, 0, 4900, 4901, 7, 14, 0, 0, 4901, 4902, 7, 21, 0, 0, 4902, 4903, 7, 10, 0, 0, 4903, 4904, 7, 12, 0, 0, 4904, 948, 1, 0, 0, 0, 4905, 4906, 7, 16, 0, 0, 4906, 4907, 7, 17, 0, 0, 4907, 4908, 7, 10, 0, 0, 4908, 4909, 7, 9, 0, 0, 4909, 950, 1, 0, 0, 0, 4910, 4911, 7, 13, 0, 0, 4911, 4912, 7, 19, 0, 0, 4912, 4913, 7, 6, 0, 0, 4913, 4914, 7, 6, 0, 0, 4914, 4915, 7, 22, 0, 0, 4915, 4916, 7, 24, 0, 0, 4916, 952, 1, 0, 0, 0, 4917, 4918, 7, 14, 0, 0, 4918, 4919, 7, 22, 0, 0, 4919, 4920, 7, 18, 0, 0, 4920, 4921, 7, 10, 0, 0, 4921, 954, 1, 0, 0, 0, 4922, 4923, 7, 23, 0, 0, 4923, 4924, 7, 13, 0, 0, 4924, 4925, 7, 19, 0, 0, 4925, 4926, 7, 22, 0, 0, 4926, 4927, 7, 24, 0, 0, 4927, 4928, 7, 17, 0, 0, 4928, 4929, 7, 7, 0, 0, 4929, 4930, 7, 23, 0, 0, 4930, 956, 1, 0, 0, 0, 4931, 4932, 7, 9, 0, 0, 4932, 4933, 7, 10, 0, 0, 4933, 4934, 7, 16, 0, 0, 4934, 4935, 7, 9, 0, 0, 4935, 958, 1, 0, 0, 0, 4936, 4937, 7, 16, 0, 0, 4937, 4938, 7, 5, 0, 0, 4938, 4939, 7, 18, 0, 0, 4939, 4940, 7, 6, 0, 0, 4940, 4941, 7, 10, 0, 0, 4941, 4942, 7, 9, 0, 0, 4942, 4943, 7, 5, 0, 0, 4943, 4944, 7, 15, 0, 0, 4944, 4945, 7, 24, 0, 0, 4945, 4946, 7, 6, 0, 0, 4946, 4947, 7, 10, 0, 0, 4947, 960, 1, 0, 0, 0, 4948, 4949, 7, 19, 0, 0, 4949, 4950, 7, 13, 0, 0, 4950, 4951, 7, 12, 0, 0, 4951, 4952, 7, 17, 0, 0, 4952, 4953, 7, 7, 0, 0, 4953, 4954, 7, 5, 0, 0, 4954, 4955, 7, 6, 0, 0, 4955, 4956, 7, 17, 0, 0, 4956, 4957, 7, 16, 0, 0, 4957, 4958, 7, 8, 0, 0, 4958, 962, 1, 0, 0, 0, 4959, 4960, 7, 26, 0, 0, 4960, 4961, 7, 15, 0, 0, 4961, 4962, 7, 6, 0, 0, 4962, 4963, 7, 16, 0, 0, 4963, 4964, 7, 5, 0, 0, 4964, 4965, 7, 18, 0, 0, 4965, 4966, 7, 6, 0, 0, 4966, 4967, 7, 10, 0, 0, 4967, 964, 1, 0, 0, 0, 4968, 4969, 7, 14, 0, 0, 4969, 4970, 7, 19, 0, 0, 4970, 4971, 7, 6, 0, 0, 4971, 4972, 7, 22, 0, 0, 4972, 4973, 7, 15, 0, 0, 4973, 4974, 7, 7, 0, 0, 4974, 4975, 7, 9, 0, 0, 4975, 966, 1, 0, 0, 0, 4976, 4977, 7, 26, 0, 0, 4977, 4978, 7, 15, 0, 0, 4978, 4979, 7, 6, 0, 0, 4979, 4980, 7, 7, 0, 0, 4980, 4981, 7, 5, 0, 0, 4981, 4982, 7, 15, 0, 0, 4982, 4983, 7, 10, 0, 0, 4983, 4984, 7, 9, 0, 0, 4984, 4985, 7, 24, 0, 0, 4985, 4986, 7, 5, 0, 0, 4986, 4987, 7, 14, 0, 0, 4987, 4988, 7, 10, 0, 0, 4988, 4989, 7, 9, 0, 0, 4989, 968, 1, 0, 0, 0, 4990, 4991, 7, 13, 0, 0, 4991, 4992, 7, 19, 0, 0, 4992, 4993, 7, 29, 0, 0, 4993, 4994, 7, 16, 0, 0, 4994, 4995, 7, 8, 0, 0, 4995, 4996, 7, 24, 0, 0, 4996, 4997, 7, 10, 0, 0, 4997, 970, 1, 0, 0, 0, 4998, 4999, 7, 7, 0, 0, 4999, 5000, 7, 19, 0, 0, 5000, 5001, 7, 13, 0, 0, 5001, 5002, 7, 15, 0, 0, 5002, 5003, 7, 5, 0, 0, 5003, 5004, 7, 6, 0, 0, 5004, 5005, 7, 17, 0, 0, 5005, 5006, 7, 11, 0, 0, 5006, 5007, 7, 10, 0, 0, 5007, 5008, 7, 12, 0, 0, 5008, 972, 1, 0, 0, 0, 5009, 5010, 7, 29, 0, 0, 5010, 5011, 7, 17, 0, 0, 5011, 5012, 7, 16, 0, 0, 5012, 5013, 7, 20, 0, 0, 5013, 5014, 7, 17, 0, 0, 5014, 5015, 7, 7, 0, 0, 5015, 974, 1, 0, 0, 0, 5016, 5017, 7, 25, 0, 0, 5017, 5018, 7, 17, 0, 0, 5018, 5019, 7, 6, 0, 0, 5019, 5020, 7, 16, 0, 0, 5020, 5021, 7, 10, 0, 0, 5021, 5022, 7, 13, 0, 0, 5022, 976, 1, 0, 0, 0, 5023, 5024, 7, 23, 0, 0, 5024, 5025, 7, 13, 0, 0, 5025, 5026, 7, 19, 0, 0, 5026, 5027, 7, 22, 0, 0, 5027, 5028, 7, 24, 0, 0, 5028, 5029, 7, 9, 0, 0, 5029, 978, 1, 0, 0, 0, 5030, 5031, 7, 19, 0, 0, 5031, 5032, 7, 16, 0, 0, 5032, 5033, 7, 20, 0, 0, 5033, 5034, 7, 10, 0, 0, 5034, 5035, 7, 13, 0, 0, 5035, 5036, 7, 9, 0, 0, 5036, 980, 1, 0, 0, 0, 5037, 5038, 7, 7, 0, 0, 5038, 5039, 7, 25, 0, 0, 5039, 5040, 7, 14, 0, 0, 5040, 982, 1, 0, 0, 0, 5041, 5042, 7, 7, 0, 0, 5042, 5043, 7, 25, 0, 0, 5043, 5044, 7, 12, 0, 0, 5044, 984, 1, 0, 0, 0, 5045, 5046, 7, 7, 0, 0, 5046, 5047, 7, 25, 0, 0, 5047, 5048, 7, 21, 0, 0, 5048, 5049, 7, 14, 0, 0, 5049, 986, 1, 0, 0, 0, 5050, 5051, 7, 7, 0, 0, 5051, 5052, 7, 25, 0, 0, 5052, 5053, 7, 21, 0, 0, 5053, 5054, 7, 12, 0, 0, 5054, 988, 1, 0, 0, 0, 5055, 5056, 7, 22, 0, 0, 5056, 5057, 7, 10, 0, 0, 5057, 5058, 7, 9, 0, 0, 5058, 5059, 7, 14, 0, 0, 5059, 5060, 7, 5, 0, 0, 5060, 5061, 7, 24, 0, 0, 5061, 5062, 7, 10, 0, 0, 5062, 990, 1, 0, 0, 0, 5063, 5064, 7, 27, 0, 0, 5064, 5065, 7, 17, 0, 0, 5065, 5066, 7, 10, 0, 0, 5066, 5067, 7, 29, 0, 0, 5067, 5068, 7, 9, 0, 0, 5068, 992, 1, 0, 0, 0, 5069, 5070, 7, 7, 0, 0, 5070, 5071, 7, 19, 0, 0, 5071, 5072, 7, 13, 0, 0, 5072, 5073, 7, 15, 0, 0, 5073, 5074, 7, 5, 0, 0, 5074, 5075, 7, 6, 0, 0, 5075, 5076, 7, 17, 0, 0, 5076, 5077, 7, 11, 0, 0, 5077, 5078, 7, 10, 0, 0, 5078, 994, 1, 0, 0, 0, 5079, 5080, 7, 12, 0, 0, 5080, 5081, 7, 22, 0, 0, 5081, 5082, 7, 15, 0, 0, 5082, 5083, 7, 24, 0, 0, 5083, 996, 1, 0, 0, 0, 5084, 5085, 7, 24, 0, 0, 5085, 5086, 7, 13, 0, 0, 5086, 5087, 7, 17, 0, 0, 5087, 5088, 7, 7, 0, 0, 5088, 5089, 7, 16, 0, 0, 5089, 5090, 5, 95, 0, 0, 5090, 5091, 7, 9, 0, 0, 5091, 5092, 7, 16, 0, 0, 5092, 5093, 7, 13, 0, 0, 5093, 5094, 7, 17, 0, 0, 5094, 5095, 7, 14, 0, 0, 5095, 5096, 7, 16, 0, 0, 5096, 5097, 5, 95, 0, 0, 5097, 5098, 7, 24, 0, 0, 5098, 5099, 7, 5, 0, 0, 5099, 5100, 7, 13, 0, 0, 5100, 5101, 7, 5, 0, 0, 5101, 5102, 7, 15, 0, 0, 5102, 5103, 7, 9, 0, 0, 5103, 998, 1, 0, 0, 0, 5104, 5105, 7, 27, 0, 0, 5105, 5106, 7, 5, 0, 0, 5106, 5107, 7, 13, 0, 0, 5107, 5108, 7, 17, 0, 0, 5108, 5109, 7, 5, 0, 0, 5109, 5110, 7, 18, 0, 0, 5110, 5111, 7, 6, 0, 0, 5111, 5112, 7, 10, 0, 0, 5112, 5113, 5, 95, 0, 0, 5113, 5114, 7, 14, 0, 0, 5114, 5115, 7, 19, 0, 0, 5115, 5116, 7, 7, 0, 0, 5116, 5117, 7, 25, 0, 0, 5117, 5118, 7, 6, 0, 0, 5118, 5119, 7, 17, 0, 0, 5119, 5120, 7, 14, 0, 0, 5120, 5121, 7, 16, 0, 0, 5121, 1000, 1, 0, 0, 0, 5122, 5123, 7, 10, 0, 0, 5123, 5124, 7, 13, 0, 0, 5124, 5125, 7, 13, 0, 0, 5125, 5126, 7, 19, 0, 0, 5126, 5127, 7, 13, 0, 0, 5127, 1002, 1, 0, 0, 0, 5128, 5129, 7, 22, 0, 0, 5129, 5130, 7, 9, 0, 0, 5130, 5131, 7, 10, 0, 0, 5131, 5132, 5, 95, 0, 0, 5132, 5133, 7, 27, 0, 0, 5133, 5134, 7, 5, 0, 0, 5134, 5135, 7, 13, 0, 0, 5135, 5136, 7, 17, 0, 0, 5136, 5137, 7, 5, 0, 0, 5137, 5138, 7, 18, 0, 0, 5138, 5139, 7, 6, 0, 0, 5139, 5140, 7, 10, 0, 0, 5140, 1004, 1, 0, 0, 0, 5141, 5142, 7, 22, 0, 0, 5142, 5143, 7, 9, 0, 0, 5143, 5144, 7, 10, 0, 0, 5144, 5145, 5, 95, 0, 0, 5145, 5146, 7, 14, 0, 0, 5146, 5147, 7, 19, 0, 0, 5147, 5148, 7, 6, 0, 0, 5148, 5149, 7, 22, 0, 0, 5149, 5150, 7, 15, 0, 0, 5150, 5151, 7, 7, 0, 0, 5151, 1006, 1, 0, 0, 0, 5152, 5153, 7, 5, 0, 0, 5153, 5154, 7, 6, 0, 0, 5154, 5155, 7, 17, 0, 0, 5155, 5156, 7, 5, 0, 0, 5156, 5157, 7, 9, 0, 0, 5157, 1008, 1, 0, 0, 0, 5158, 5159, 7, 14, 0, 0, 5159, 5160, 7, 19, 0, 0, 5160, 5161, 7, 7, 0, 0, 5161, 5162, 7, 9, 0, 0, 5162, 5163, 7, 16, 0, 0, 5163, 5164, 7, 5, 0, 0, 5164, 5165, 7, 7, 0, 0, 5165, 5166, 7, 16, 0, 0, 5166, 1010, 1, 0, 0, 0, 5167, 5168, 7, 24, 0, 0, 5168, 5169, 7, 10, 0, 0, 5169, 5170, 7, 13, 0, 0, 5170, 5171, 7, 25, 0, 0, 5171, 5172, 7, 19, 0, 0, 5172, 5173, 7, 13, 0, 0, 5173, 5174, 7, 15, 0, 0, 5174, 1012, 1, 0, 0, 0, 5175, 5176, 7, 23, 0, 0, 5176, 5177, 7, 10, 0, 0, 5177, 5178, 7, 16, 0, 0, 5178, 1014, 1, 0, 0, 0, 5179, 5180, 7, 12, 0, 0, 5180, 5181, 7, 17, 0, 0, 5181, 5182, 7, 5, 0, 0, 5182, 5183, 7, 23, 0, 0, 5183, 5184, 7, 7, 0, 0, 5184, 5185, 7, 19, 0, 0, 5185, 5186, 7, 9, 0, 0, 5186, 5187, 7, 16, 0, 0, 5187, 5188, 7, 17, 0, 0, 5188, 5189, 7, 14, 0, 0, 5189, 5190, 7, 9, 0, 0, 5190, 1016, 1, 0, 0, 0, 5191, 5192, 7, 9, 0, 0, 5192, 5193, 7, 16, 0, 0, 5193, 5194, 7, 5, 0, 0, 5194, 5195, 7, 14, 0, 0, 5195, 5196, 7, 21, 0, 0, 5196, 5197, 7, 10, 0, 0, 5197, 5198, 7, 12, 0, 0, 5198, 1018, 1, 0, 0, 0, 5199, 5200, 7, 10, 0, 0, 5200, 5201, 7, 6, 0, 0, 5201, 5202, 7, 9, 0, 0, 5202, 5203, 7, 17, 0, 0, 5203, 5204, 7, 25, 0, 0, 5204, 1020, 1, 0, 0, 0, 5205, 5206, 7, 29, 0, 0, 5206, 5207, 7, 20, 0, 0, 5207, 5208, 7, 17, 0, 0, 5208, 5209, 7, 6, 0, 0, 5209, 5210, 7, 10, 0, 0, 5210, 1022, 1, 0, 0, 0, 5211, 5212, 7, 13, 0, 0, 5212, 5213, 7, 10, 0, 0, 5213, 5214, 7, 27, 0, 0, 5214, 5215, 7, 10, 0, 0, 5215, 5216, 7, 13, 0, 0, 5216, 5217, 7, 9, 0, 0, 5217, 5218, 7, 10, 0, 0, 5218, 1024, 1, 0, 0, 0, 5219, 5220, 7, 25, 0, 0, 5220, 5221, 7, 19, 0, 0, 5221, 5222, 7, 13, 0, 0, 5222, 5223, 7, 10, 0, 0, 5223, 5224, 7, 5, 0, 0, 5224, 5225, 7, 14, 0, 0, 5225, 5226, 7, 20, 0, 0, 5226, 1026, 1, 0, 0, 0, 5227, 5228, 7, 9, 0, 0, 5228, 5229, 7, 6, 0, 0, 5229, 5230, 7, 17, 0, 0, 5230, 5231, 7, 14, 0, 0, 5231, 5232, 7, 10, 0, 0, 5232, 1028, 1, 0, 0, 0, 5233, 5234, 7, 10, 0, 0, 5234, 5235, 7, 26, 0, 0, 5235, 5236, 7, 17, 0, 0, 5236, 5237, 7, 16, 0, 0, 5237, 1030, 1, 0, 0, 0, 5238, 5239, 7, 13, 0, 0, 5239, 5240, 7, 10, 0, 0, 5240, 5241, 7, 16, 0, 0, 5241, 5242, 7, 22, 0, 0, 5242, 5243, 7, 13, 0, 0, 5243, 5244, 7, 7, 0, 0, 5244, 1032, 1, 0, 0, 0, 5245, 5246, 7, 28, 0, 0, 5246, 5247, 7, 22, 0, 0, 5247, 5248, 7, 10, 0, 0, 5248, 5249, 7, 13, 0, 0, 5249, 5250, 7, 8, 0, 0, 5250, 1034, 1, 0, 0, 0, 5251, 5252, 7, 13, 0, 0, 5252, 5253, 7, 5, 0, 0, 5253, 5254, 7, 17, 0, 0, 5254, 5255, 7, 9, 0, 0, 5255, 5256, 7, 10, 0, 0, 5256, 1036, 1, 0, 0, 0, 5257, 5258, 7, 9, 0, 0, 5258, 5259, 7, 28, 0, 0, 5259, 5260, 7, 6, 0, 0, 5260, 5261, 7, 9, 0, 0, 5261, 5262, 7, 16, 0, 0, 5262, 5263, 7, 5, 0, 0, 5263, 5264, 7, 16, 0, 0, 5264, 5265, 7, 10, 0, 0, 5265, 1038, 1, 0, 0, 0, 5266, 5267, 7, 12, 0, 0, 5267, 5268, 7, 10, 0, 0, 5268, 5269, 7, 18, 0, 0, 5269, 5270, 7, 22, 0, 0, 5270, 5271, 7, 23, 0, 0, 5271, 1040, 1, 0, 0, 0, 5272, 5273, 7, 6, 0, 0, 5273, 5274, 7, 19, 0, 0, 5274, 5275, 7, 23, 0, 0, 5275, 1042, 1, 0, 0, 0, 5276, 5277, 7, 17, 0, 0, 5277, 5278, 7, 7, 0, 0, 5278, 5279, 7, 25, 0, 0, 5279, 5280, 7, 19, 0, 0, 5280, 1044, 1, 0, 0, 0, 5281, 5282, 7, 7, 0, 0, 5282, 5283, 7, 19, 0, 0, 5283, 5284, 7, 16, 0, 0, 5284, 5285, 7, 17, 0, 0, 5285, 5286, 7, 14, 0, 0, 5286, 5287, 7, 10, 0, 0, 5287, 1046, 1, 0, 0, 0, 5288, 5289, 7, 29, 0, 0, 5289, 5290, 7, 5, 0, 0, 5290, 5291, 7, 13, 0, 0, 5291, 5292, 7, 7, 0, 0, 5292, 5293, 7, 17, 0, 0, 5293, 5294, 7, 7, 0, 0, 5294, 5295, 7, 23, 0, 0, 5295, 1048, 1, 0, 0, 0, 5296, 5297, 7, 10, 0, 0, 5297, 5298, 7, 26, 0, 0, 5298, 5299, 7, 14, 0, 0, 5299, 5300, 7, 10, 0, 0, 5300, 5301, 7, 24, 0, 0, 5301, 5302, 7, 16, 0, 0, 5302, 5303, 7, 17, 0, 0, 5303, 5304, 7, 19, 0, 0, 5304, 5305, 7, 7, 0, 0, 5305, 1050, 1, 0, 0, 0, 5306, 5307, 7, 5, 0, 0, 5307, 5308, 7, 9, 0, 0, 5308, 5309, 7, 9, 0, 0, 5309, 5310, 7, 10, 0, 0, 5310, 5311, 7, 13, 0, 0, 5311, 5312, 7, 16, 0, 0, 5312, 1052, 1, 0, 0, 0, 5313, 5314, 7, 6, 0, 0, 5314, 5315, 7, 19, 0, 0, 5315, 5316, 7, 19, 0, 0, 5316, 5317, 7, 24, 0, 0, 5317, 1054, 1, 0, 0, 0, 5318, 5319, 7, 19, 0, 0, 5319, 5320, 7, 24, 0, 0, 5320, 5321, 7, 10, 0, 0, 5321, 5322, 7, 7, 0, 0, 5322, 1056, 1, 0, 0, 0, 5323, 5324, 7, 5, 0, 0, 5324, 5325, 7, 18, 0, 0, 5325, 5326, 7, 9, 0, 0, 5326, 1058, 1, 0, 0, 0, 5327, 5328, 7, 14, 0, 0, 5328, 5329, 7, 18, 0, 0, 5329, 5330, 7, 13, 0, 0, 5330, 5331, 7, 16, 0, 0, 5331, 1060, 1, 0, 0, 0, 5332, 5333, 7, 14, 0, 0, 5333, 5334, 7, 10, 0, 0, 5334, 5335, 7, 17, 0, 0, 5335, 5336, 7, 6, 0, 0, 5336, 1062, 1, 0, 0, 0, 5337, 5338, 7, 14, 0, 0, 5338, 5339, 7, 10, 0, 0, 5339, 5340, 7, 17, 0, 0, 5340, 5341, 7, 6, 0, 0, 5341, 5342, 7, 17, 0, 0, 5342, 5343, 7, 7, 0, 0, 5343, 5344, 7, 23, 0, 0, 5344, 1064, 1, 0, 0, 0, 5345, 5346, 7, 12, 0, 0, 5346, 5347, 7, 10, 0, 0, 5347, 5348, 7, 23, 0, 0, 5348, 5349, 7, 13, 0, 0, 5349, 5350, 7, 10, 0, 0, 5350, 5351, 7, 10, 0, 0, 5351, 5352, 7, 9, 0, 0, 5352, 1066, 1, 0, 0, 0, 5353, 5354, 7, 12, 0, 0, 5354, 5355, 7, 17, 0, 0, 5355, 5356, 7, 27, 0, 0, 5356, 1068, 1, 0, 0, 0, 5357, 5358, 7, 10, 0, 0, 5358, 5359, 7, 26, 0, 0, 5359, 5360, 7, 24, 0, 0, 5360, 1070, 1, 0, 0, 0, 5361, 5362, 7, 25, 0, 0, 5362, 5363, 7, 5, 0, 0, 5363, 5364, 7, 14, 0, 0, 5364, 5365, 7, 16, 0, 0, 5365, 5366, 7, 19, 0, 0, 5366, 5367, 7, 13, 0, 0, 5367, 5368, 7, 17, 0, 0, 5368, 5369, 7, 5, 0, 0, 5369, 5370, 7, 6, 0, 0, 5370, 1072, 1, 0, 0, 0, 5371, 5372, 7, 25, 0, 0, 5372, 5373, 7, 6, 0, 0, 5373, 5374, 7, 19, 0, 0, 5374, 5375, 7, 19, 0, 0, 5375, 5376, 7, 13, 0, 0, 5376, 1074, 1, 0, 0, 0, 5377, 5378, 7, 23, 0, 0, 5378, 5379, 7, 14, 0, 0, 5379, 5380, 7, 12, 0, 0, 5380, 1076, 1, 0, 0, 0, 5381, 5382, 7, 6, 0, 0, 5382, 5383, 7, 14, 0, 0, 5383, 5384, 7, 15, 0, 0, 5384, 1078, 1, 0, 0, 0, 5385, 5386, 7, 6, 0, 0, 5386, 5387, 7, 7, 0, 0, 5387, 1080, 1, 0, 0, 0, 5388, 5389, 7, 6, 0, 0, 5389, 5390, 7, 19, 0, 0, 5390, 5391, 7, 23, 0, 0, 5391, 5392, 5, 49, 0, 0, 5392, 5393, 5, 48, 0, 0, 5393, 1082, 1, 0, 0, 0, 5394, 5395, 7, 15, 0, 0, 5395, 5396, 7, 17, 0, 0, 5396, 5397, 7, 7, 0, 0, 5397, 5398, 5, 95, 0, 0, 5398, 5399, 7, 9, 0, 0, 5399, 5400, 7, 14, 0, 0, 5400, 5401, 7, 5, 0, 0, 5401, 5402, 7, 6, 0, 0, 5402, 5403, 7, 10, 0, 0, 5403, 1084, 1, 0, 0, 0, 5404, 5405, 7, 15, 0, 0, 5405, 5406, 7, 19, 0, 0, 5406, 5407, 7, 12, 0, 0, 5407, 1086, 1, 0, 0, 0, 5408, 5409, 7, 24, 0, 0, 5409, 5410, 7, 17, 0, 0, 5410, 1088, 1, 0, 0, 0, 5411, 5412, 7, 24, 0, 0, 5412, 5413, 7, 19, 0, 0, 5413, 5414, 7, 29, 0, 0, 5414, 5415, 7, 10, 0, 0, 5415, 5416, 7, 13, 0, 0, 5416, 1090, 1, 0, 0, 0, 5417, 5418, 7, 13, 0, 0, 5418, 5419, 7, 5, 0, 0, 5419, 5420, 7, 12, 0, 0, 5420, 5421, 7, 17, 0, 0, 5421, 5422, 7, 5, 0, 0, 5422, 5423, 7, 7, 0, 0, 5423, 5424, 7, 9, 0, 0, 5424, 1092, 1, 0, 0, 0, 5425, 5426, 7, 13, 0, 0, 5426, 5427, 7, 19, 0, 0, 5427, 5428, 7, 22, 0, 0, 5428, 5429, 7, 7, 0, 0, 5429, 5430, 7, 12, 0, 0, 5430, 1094, 1, 0, 0, 0, 5431, 5432, 7, 9, 0, 0, 5432, 5433, 7, 14, 0, 0, 5433, 5434, 7, 5, 0, 0, 5434, 5435, 7, 6, 0, 0, 5435, 5436, 7, 10, 0, 0, 5436, 1096, 1, 0, 0, 0, 5437, 5438, 7, 9, 0, 0, 5438, 5439, 7, 17, 0, 0, 5439, 5440, 7, 23, 0, 0, 5440, 5441, 7, 7, 0, 0, 5441, 1098, 1, 0, 0, 0, 5442, 5443, 7, 9, 0, 0, 5443, 5444, 7, 28, 0, 0, 5444, 5445, 7, 13, 0, 0, 5445, 5446, 7, 16, 0, 0, 5446, 1100, 1, 0, 0, 0, 5447, 5448, 7, 16, 0, 0, 5448, 5449, 7, 13, 0, 0, 5449, 5450, 7, 17, 0, 0, 5450, 5451, 7, 15, 0, 0, 5451, 5452, 5, 95, 0, 0, 5452, 5453, 7, 9, 0, 0, 5453, 5454, 7, 14, 0, 0, 5454, 5455, 7, 5, 0, 0, 5455, 5456, 7, 6, 0, 0, 5456, 5457, 7, 10, 0, 0, 5457, 1102, 1, 0, 0, 0, 5458, 5459, 7, 16, 0, 0, 5459, 5460, 7, 13, 0, 0, 5460, 5461, 7, 22, 0, 0, 5461, 5462, 7, 7, 0, 0, 5462, 5463, 7, 14, 0, 0, 5463, 1104, 1, 0, 0, 0, 5464, 5465, 7, 29, 0, 0, 5465, 5466, 7, 17, 0, 0, 5466, 5467, 7, 12, 0, 0, 5467, 5468, 7, 16, 0, 0, 5468, 5469, 7, 20, 0, 0, 5469, 5470, 5, 95, 0, 0, 5470, 5471, 7, 18, 0, 0, 5471, 5472, 7, 22, 0, 0, 5472, 5473, 7, 14, 0, 0, 5473, 5474, 7, 21, 0, 0, 5474, 5475, 7, 10, 0, 0, 5475, 5476, 7, 16, 0, 0, 5476, 1106, 1, 0, 0, 0, 5477, 5478, 7, 13, 0, 0, 5478, 5479, 7, 5, 0, 0, 5479, 5480, 7, 7, 0, 0, 5480, 5481, 7, 12, 0, 0, 5481, 5482, 7, 19, 0, 0, 5482, 5483, 7, 15, 0, 0, 5483, 1108, 1, 0, 0, 0, 5484, 5485, 7, 9, 0, 0, 5485, 5486, 7, 10, 0, 0, 5486, 5487, 7, 16, 0, 0, 5487, 5488, 7, 9, 0, 0, 5488, 5489, 7, 10, 0, 0, 5489, 5490, 7, 10, 0, 0, 5490, 5491, 7, 12, 0, 0, 5491, 1110, 1, 0, 0, 0, 5492, 5493, 7, 5, 0, 0, 5493, 5494, 7, 14, 0, 0, 5494, 5495, 7, 19, 0, 0, 5495, 5496, 7, 9, 0, 0, 5496, 1112, 1, 0, 0, 0, 5497, 5498, 7, 5, 0, 0, 5498, 5499, 7, 14, 0, 0, 5499, 5500, 7, 19, 0, 0, 5500, 5501, 7, 9, 0, 0, 5501, 5502, 7, 12, 0, 0, 5502, 1114, 1, 0, 0, 0, 5503, 5504, 7, 5, 0, 0, 5504, 5505, 7, 9, 0, 0, 5505, 5506, 7, 17, 0, 0, 5506, 5507, 7, 7, 0, 0, 5507, 1116, 1, 0, 0, 0, 5508, 5509, 7, 5, 0, 0, 5509, 5510, 7, 9, 0, 0, 5510, 5511, 7, 17, 0, 0, 5511, 5512, 7, 7, 0, 0, 5512, 5513, 7, 12, 0, 0, 5513, 1118, 1, 0, 0, 0, 5514, 5515, 7, 5, 0, 0, 5515, 5516, 7, 16, 0, 0, 5516, 5517, 7, 5, 0, 0, 5517, 5518, 7, 7, 0, 0, 5518, 1120, 1, 0, 0, 0, 5519, 5520, 7, 5, 0, 0, 5520, 5521, 7, 16, 0, 0, 5521, 5522, 7, 5, 0, 0, 5522, 5523, 7, 7, 0, 0, 5523, 5524, 7, 12, 0, 0, 5524, 1122, 1, 0, 0, 0, 5525, 5526, 7, 5, 0, 0, 5526, 5527, 7, 16, 0, 0, 5527, 5528, 7, 5, 0, 0, 5528, 5529, 7, 7, 0, 0, 5529, 5530, 5, 50, 0, 0, 5530, 1124, 1, 0, 0, 0, 5531, 5532, 7, 5, 0, 0, 5532, 5533, 7, 16, 0, 0, 5533, 5534, 7, 5, 0, 0, 5534, 5535, 7, 7, 0, 0, 5535, 5536, 5, 50, 0, 0, 5536, 5537, 7, 12, 0, 0, 5537, 1126, 1, 0, 0, 0, 5538, 5539, 7, 14, 0, 0, 5539, 5540, 7, 19, 0, 0, 5540, 5541, 7, 9, 0, 0, 5541, 1128, 1, 0, 0, 0, 5542, 5543, 7, 14, 0, 0, 5543, 5544, 7, 19, 0, 0, 5544, 5545, 7, 9, 0, 0, 5545, 5546, 7, 12, 0, 0, 5546, 1130, 1, 0, 0, 0, 5547, 5548, 7, 14, 0, 0, 5548, 5549, 7, 19, 0, 0, 5549, 5550, 7, 16, 0, 0, 5550, 1132, 1, 0, 0, 0, 5551, 5552, 7, 14, 0, 0, 5552, 5553, 7, 19, 0, 0, 5553, 5554, 7, 16, 0, 0, 5554, 5555, 7, 12, 0, 0, 5555, 1134, 1, 0, 0, 0, 5556, 5557, 7, 9, 0, 0, 5557, 5558, 7, 17, 0, 0, 5558, 5559, 7, 7, 0, 0, 5559, 1136, 1, 0, 0, 0, 5560, 5561, 7, 9, 0, 0, 5561, 5562, 7, 17, 0, 0, 5562, 5563, 7, 7, 0, 0, 5563, 5564, 7, 12, 0, 0, 5564, 1138, 1, 0, 0, 0, 5565, 5566, 7, 16, 0, 0, 5566, 5567, 7, 5, 0, 0, 5567, 5568, 7, 7, 0, 0, 5568, 1140, 1, 0, 0, 0, 5569, 5570, 7, 16, 0, 0, 5570, 5571, 7, 5, 0, 0, 5571, 5572, 7, 7, 0, 0, 5572, 5573, 7, 12, 0, 0, 5573, 1142, 1, 0, 0, 0, 5574, 5575, 7, 9, 0, 0, 5575, 5576, 7, 17, 0, 0, 5576, 5577, 7, 7, 0, 0, 5577, 5578, 7, 20, 0, 0, 5578, 1144, 1, 0, 0, 0, 5579, 5580, 7, 14, 0, 0, 5580, 5581, 7, 19, 0, 0, 5581, 5582, 7, 9, 0, 0, 5582, 5583, 7, 20, 0, 0, 5583, 1146, 1, 0, 0, 0, 5584, 5585, 7, 16, 0, 0, 5585, 5586, 7, 5, 0, 0, 5586, 5587, 7, 7, 0, 0, 5587, 5588, 7, 20, 0, 0, 5588, 1148, 1, 0, 0, 0, 5589, 5590, 7, 5, 0, 0, 5590, 5591, 7, 9, 0, 0, 5591, 5592, 7, 17, 0, 0, 5592, 5593, 7, 7, 0, 0, 5593, 5594, 7, 20, 0, 0, 5594, 1150, 1, 0, 0, 0, 5595, 5596, 7, 5, 0, 0, 5596, 5597, 7, 14, 0, 0, 5597, 5598, 7, 19, 0, 0, 5598, 5599, 7, 9, 0, 0, 5599, 5600, 7, 20, 0, 0, 5600, 1152, 1, 0, 0, 0, 5601, 5602, 7, 5, 0, 0, 5602, 5603, 7, 16, 0, 0, 5603, 5604, 7, 5, 0, 0, 5604, 5605, 7, 7, 0, 0, 5605, 5606, 7, 20, 0, 0, 5606, 1154, 1, 0, 0, 0, 5607, 5608, 7, 18, 0, 0, 5608, 5609, 7, 17, 0, 0, 5609, 5610, 7, 16, 0, 0, 5610, 5611, 5, 95, 0, 0, 5611, 5612, 7, 6, 0, 0, 5612, 5613, 7, 10, 0, 0, 5613, 5614, 7, 7, 0, 0, 5614, 5615, 7, 23, 0, 0, 5615, 5616, 7, 16, 0, 0, 5616, 5617, 7, 20, 0, 0, 5617, 1156, 1, 0, 0, 0, 5618, 5619, 7, 14, 0, 0, 5619, 5620, 7, 20, 0, 0, 5620, 5621, 7, 5, 0, 0, 5621, 5622, 7, 13, 0, 0, 5622, 5623, 5, 95, 0, 0, 5623, 5624, 7, 6, 0, 0, 5624, 5625, 7, 10, 0, 0, 5625, 5626, 7, 7, 0, 0, 5626, 5627, 7, 23, 0, 0, 5627, 5628, 7, 16, 0, 0, 5628, 5629, 7, 20, 0, 0, 5629, 1158, 1, 0, 0, 0, 5630, 5631, 7, 14, 0, 0, 5631, 5632, 7, 20, 0, 0, 5632, 5633, 7, 5, 0, 0, 5633, 5634, 7, 13, 0, 0, 5634, 5635, 7, 5, 0, 0, 5635, 5636, 7, 14, 0, 0, 5636, 5637, 7, 16, 0, 0, 5637, 5638, 7, 10, 0, 0, 5638, 5639, 7, 13, 0, 0, 5639, 5640, 5, 95, 0, 0, 5640, 5641, 7, 6, 0, 0, 5641, 5642, 7, 10, 0, 0, 5642, 5643, 7, 7, 0, 0, 5643, 5644, 7, 23, 0, 0, 5644, 5645, 7, 16, 0, 0, 5645, 5646, 7, 20, 0, 0, 5646, 1160, 1, 0, 0, 0, 5647, 5648, 7, 6, 0, 0, 5648, 5649, 7, 19, 0, 0, 5649, 5650, 7, 29, 0, 0, 5650, 5651, 7, 10, 0, 0, 5651, 5652, 7, 13, 0, 0, 5652, 1162, 1, 0, 0, 0, 5653, 5654, 7, 19, 0, 0, 5654, 5655, 7, 14, 0, 0, 5655, 5656, 7, 16, 0, 0, 5656, 5657, 7, 10, 0, 0, 5657, 5658, 7, 16, 0, 0, 5658, 5659, 5, 95, 0, 0, 5659, 5660, 7, 6, 0, 0, 5660, 5661, 7, 10, 0, 0, 5661, 5662, 7, 7, 0, 0, 5662, 5663, 7, 23, 0, 0, 5663, 5664, 7, 16, 0, 0, 5664, 5665, 7, 20, 0, 0, 5665, 1164, 1, 0, 0, 0, 5666, 5667, 7, 22, 0, 0, 5667, 5668, 7, 24, 0, 0, 5668, 5669, 7, 24, 0, 0, 5669, 5670, 7, 10, 0, 0, 5670, 5671, 7, 13, 0, 0, 5671, 1166, 1, 0, 0, 0, 5672, 5673, 7, 5, 0, 0, 5673, 5674, 7, 9, 0, 0, 5674, 5675, 7, 14, 0, 0, 5675, 5676, 7, 17, 0, 0, 5676, 5677, 7, 17, 0, 0, 5677, 1168, 1, 0, 0, 0, 5678, 5679, 7, 18, 0, 0, 5679, 5680, 7, 16, 0, 0, 5680, 5681, 7, 13, 0, 0, 5681, 5682, 7, 17, 0, 0, 5682, 5683, 7, 15, 0, 0, 5683, 1170, 1, 0, 0, 0, 5684, 5685, 7, 14, 0, 0, 5685, 5686, 7, 20, 0, 0, 5686, 5687, 7, 13, 0, 0, 5687, 1172, 1, 0, 0, 0, 5688, 5689, 7, 14, 0, 0, 5689, 5690, 7, 19, 0, 0, 5690, 5691, 7, 7, 0, 0, 5691, 5692, 7, 14, 0, 0, 5692, 5693, 7, 5, 0, 0, 5693, 5694, 7, 16, 0, 0, 5694, 1174, 1, 0, 0, 0, 5695, 5696, 7, 14, 0, 0, 5696, 5697, 7, 19, 0, 0, 5697, 5698, 7, 7, 0, 0, 5698, 5699, 7, 14, 0, 0, 5699, 5700, 7, 5, 0, 0, 5700, 5701, 7, 16, 0, 0, 5701, 5702, 5, 95, 0, 0, 5702, 5703, 7, 29, 0, 0, 5703, 5704, 7, 9, 0, 0, 5704, 1176, 1, 0, 0, 0, 5705, 5706, 7, 25, 0, 0, 5706, 5707, 7, 19, 0, 0, 5707, 5708, 7, 13, 0, 0, 5708, 5709, 7, 15, 0, 0, 5709, 5710, 7, 5, 0, 0, 5710, 5711, 7, 16, 0, 0, 5711, 1178, 1, 0, 0, 0, 5712, 5713, 7, 17, 0, 0, 5713, 5714, 7, 7, 0, 0, 5714, 5715, 7, 17, 0, 0, 5715, 5716, 7, 16, 0, 0, 5716, 5717, 7, 14, 0, 0, 5717, 5718, 7, 5, 0, 0, 5718, 5719, 7, 24, 0, 0, 5719, 1180, 1, 0, 0, 0, 5720, 5721, 7, 6, 0, 0, 5721, 5722, 7, 10, 0, 0, 5722, 5723, 7, 7, 0, 0, 5723, 5724, 7, 23, 0, 0, 5724, 5725, 7, 16, 0, 0, 5725, 5726, 7, 20, 0, 0, 5726, 1182, 1, 0, 0, 0, 5727, 5728, 7, 6, 0, 0, 5728, 5729, 7, 24, 0, 0, 5729, 5730, 7, 5, 0, 0, 5730, 5731, 7, 12, 0, 0, 5731, 1184, 1, 0, 0, 0, 5732, 5733, 7, 6, 0, 0, 5733, 5734, 7, 16, 0, 0, 5734, 5735, 7, 13, 0, 0, 5735, 5736, 7, 17, 0, 0, 5736, 5737, 7, 15, 0, 0, 5737, 1186, 1, 0, 0, 0, 5738, 5739, 7, 15, 0, 0, 5739, 5740, 7, 12, 0, 0, 5740, 5741, 5, 53, 0, 0, 5741, 1188, 1, 0, 0, 0, 5742, 5743, 7, 24, 0, 0, 5743, 5744, 7, 5, 0, 0, 5744, 5745, 7, 13, 0, 0, 5745, 5746, 7, 9, 0, 0, 5746, 5747, 7, 10, 0, 0, 5747, 5748, 5, 95, 0, 0, 5748, 5749, 7, 17, 0, 0, 5749, 5750, 7, 12, 0, 0, 5750, 5751, 7, 10, 0, 0, 5751, 5752, 7, 7, 0, 0, 5752, 5753, 7, 16, 0, 0, 5753, 1190, 1, 0, 0, 0, 5754, 5755, 7, 24, 0, 0, 5755, 5756, 7, 23, 0, 0, 5756, 5757, 5, 95, 0, 0, 5757, 5758, 7, 14, 0, 0, 5758, 5759, 7, 6, 0, 0, 5759, 5760, 7, 17, 0, 0, 5760, 5761, 7, 10, 0, 0, 5761, 5762, 7, 7, 0, 0, 5762, 5763, 7, 16, 0, 0, 5763, 5764, 5, 95, 0, 0, 5764, 5765, 7, 10, 0, 0, 5765, 5766, 7, 7, 0, 0, 5766, 5767, 7, 14, 0, 0, 5767, 5768, 7, 19, 0, 0, 5768, 5769, 7, 12, 0, 0, 5769, 5770, 7, 17, 0, 0, 5770, 5771, 7, 7, 0, 0, 5771, 5772, 7, 23, 0, 0, 5772, 1192, 1, 0, 0, 0, 5773, 5774, 7, 28, 0, 0, 5774, 5775, 7, 22, 0, 0, 5775, 5776, 7, 19, 0, 0, 5776, 5777, 7, 16, 0, 0, 5777, 5778, 7, 10, 0, 0, 5778, 5779, 5, 95, 0, 0, 5779, 5780, 7, 17, 0, 0, 5780, 5781, 7, 12, 0, 0, 5781, 5782, 7, 10, 0, 0, 5782, 5783, 7, 7, 0, 0, 5783, 5784, 7, 16, 0, 0, 5784, 1194, 1, 0, 0, 0, 5785, 5786, 7, 28, 0, 0, 5786, 5787, 7, 22, 0, 0, 5787, 5788, 7, 19, 0, 0, 5788, 5789, 7, 16, 0, 0, 5789, 5790, 7, 10, 0, 0, 5790, 5791, 5, 95, 0, 0, 5791, 5792, 7, 6, 0, 0, 5792, 5793, 7, 17, 0, 0, 5793, 5794, 7, 16, 0, 0, 5794, 5795, 7, 10, 0, 0, 5795, 5796, 7, 13, 0, 0, 5796, 5797, 7, 5, 0, 0, 5797, 5798, 7, 6, 0, 0, 5798, 1196, 1, 0, 0, 0, 5799, 5800, 7, 28, 0, 0, 5800, 5801, 7, 22, 0, 0, 5801, 5802, 7, 19, 0, 0, 5802, 5803, 7, 16, 0, 0, 5803, 5804, 7, 10, 0, 0, 5804, 5805, 5, 95, 0, 0, 5805, 5806, 7, 7, 0, 0, 5806, 5807, 7, 22, 0, 0, 5807, 5808, 7, 6, 0, 0, 5808, 5809, 7, 6, 0, 0, 5809, 5810, 7, 5, 0, 0, 5810, 5811, 7, 18, 0, 0, 5811, 5812, 7, 6, 0, 0, 5812, 5813, 7, 10, 0, 0, 5813, 1198, 1, 0, 0, 0, 5814, 5815, 7, 13, 0, 0, 5815, 5816, 7, 10, 0, 0, 5816, 5817, 7, 23, 0, 0, 5817, 5818, 7, 10, 0, 0, 5818, 5819, 7, 26, 0, 0, 5819, 5820, 7, 24, 0, 0, 5820, 5821, 5, 95, 0, 0, 5821, 5822, 7, 14, 0, 0, 5822, 5823, 7, 19, 0, 0, 5823, 5824, 7, 22, 0, 0, 5824, 5825, 7, 7, 0, 0, 5825, 5826, 7, 16, 0, 0, 5826, 1200, 1, 0, 0, 0, 5827, 5828, 7, 13, 0, 0, 5828, 5829, 7, 10, 0, 0, 5829, 5830, 7, 23, 0, 0, 5830, 5831, 7, 10, 0, 0, 5831, 5832, 7, 26, 0, 0, 5832, 5833, 7, 24, 0, 0, 5833, 5834, 5, 95, 0, 0, 5834, 5835, 7, 17, 0, 0, 5835, 5836, 7, 7, 0, 0, 5836, 5837, 7, 9, 0, 0, 5837, 5838, 7, 16, 0, 0, 5838, 5839, 7, 13, 0, 0, 5839, 1202, 1, 0, 0, 0, 5840, 5841, 7, 13, 0, 0, 5841, 5842, 7, 10, 0, 0, 5842, 5843, 7, 23, 0, 0, 5843, 5844, 7, 10, 0, 0, 5844, 5845, 7, 26, 0, 0, 5845, 5846, 7, 24, 0, 0, 5846, 5847, 5, 95, 0, 0, 5847, 5848, 7, 6, 0, 0, 5848, 5849, 7, 17, 0, 0, 5849, 5850, 7, 21, 0, 0, 5850, 5851, 7, 10, 0, 0, 5851, 1204, 1, 0, 0, 0, 5852, 5853, 7, 13, 0, 0, 5853, 5854, 7, 10, 0, 0, 5854, 5855, 7, 23, 0, 0, 5855, 5856, 7, 10, 0, 0, 5856, 5857, 7, 26, 0, 0, 5857, 5858, 7, 24, 0, 0, 5858, 5859, 5, 95, 0, 0, 5859, 5860, 7, 15, 0, 0, 5860, 5861, 7, 5, 0, 0, 5861, 5862, 7, 16, 0, 0, 5862, 5863, 7, 14, 0, 0, 5863, 5864, 7, 20, 0, 0, 5864, 1206, 1, 0, 0, 0, 5865, 5866, 7, 13, 0, 0, 5866, 5867, 7, 10, 0, 0, 5867, 5868, 7, 23, 0, 0, 5868, 5869, 7, 10, 0, 0, 5869, 5870, 7, 26, 0, 0, 5870, 5871, 7, 24, 0, 0, 5871, 5872, 5, 95, 0, 0, 5872, 5873, 7, 15, 0, 0, 5873, 5874, 7, 5, 0, 0, 5874, 5875, 7, 16, 0, 0, 5875, 5876, 7, 14, 0, 0, 5876, 5877, 7, 20, 0, 0, 5877, 5878, 7, 10, 0, 0, 5878, 5879, 7, 9, 0, 0, 5879, 1208, 1, 0, 0, 0, 5880, 5881, 7, 13, 0, 0, 5881, 5882, 7, 10, 0, 0, 5882, 5883, 7, 23, 0, 0, 5883, 5884, 7, 10, 0, 0, 5884, 5885, 7, 26, 0, 0, 5885, 5886, 7, 24, 0, 0, 5886, 5887, 5, 95, 0, 0, 5887, 5888, 7, 13, 0, 0, 5888, 5889, 7, 10, 0, 0, 5889, 5890, 7, 24, 0, 0, 5890, 5891, 7, 6, 0, 0, 5891, 5892, 7, 5, 0, 0, 5892, 5893, 7, 14, 0, 0, 5893, 5894, 7, 10, 0, 0, 5894, 1210, 1, 0, 0, 0, 5895, 5896, 7, 13, 0, 0, 5896, 5897, 7, 10, 0, 0, 5897, 5898, 7, 23, 0, 0, 5898, 5899, 7, 10, 0, 0, 5899, 5900, 7, 26, 0, 0, 5900, 5901, 7, 24, 0, 0, 5901, 5902, 5, 95, 0, 0, 5902, 5903, 7, 9, 0, 0, 5903, 5904, 7, 24, 0, 0, 5904, 5905, 7, 6, 0, 0, 5905, 5906, 7, 17, 0, 0, 5906, 5907, 7, 16, 0, 0, 5907, 5908, 5, 95, 0, 0, 5908, 5909, 7, 16, 0, 0, 5909, 5910, 7, 19, 0, 0, 5910, 5911, 5, 95, 0, 0, 5911, 5912, 7, 5, 0, 0, 5912, 5913, 7, 13, 0, 0, 5913, 5914, 7, 13, 0, 0, 5914, 5915, 7, 5, 0, 0, 5915, 5916, 7, 8, 0, 0, 5916, 1212, 1, 0, 0, 0, 5917, 5918, 7, 13, 0, 0, 5918, 5919, 7, 10, 0, 0, 5919, 5920, 7, 23, 0, 0, 5920, 5921, 7, 10, 0, 0, 5921, 5922, 7, 26, 0, 0, 5922, 5923, 7, 24, 0, 0, 5923, 5924, 5, 95, 0, 0, 5924, 5925, 7, 9, 0, 0, 5925, 5926, 7, 24, 0, 0, 5926, 5927, 7, 6, 0, 0, 5927, 5928, 7, 17, 0, 0, 5928, 5929, 7, 16, 0, 0, 5929, 5930, 5, 95, 0, 0, 5930, 5931, 7, 16, 0, 0, 5931, 5932, 7, 19, 0, 0, 5932, 5933, 5, 95, 0, 0, 5933, 5934, 7, 16, 0, 0, 5934, 5935, 7, 5, 0, 0, 5935, 5936, 7, 18, 0, 0, 5936, 5937, 7, 6, 0, 0, 5937, 5938, 7, 10, 0, 0, 5938, 1214, 1, 0, 0, 0, 5939, 5940, 7, 13, 0, 0, 5940, 5941, 7, 10, 0, 0, 5941, 5942, 7, 23, 0, 0, 5942, 5943, 7, 10, 0, 0, 5943, 5944, 7, 26, 0, 0, 5944, 5945, 7, 24, 0, 0, 5945, 5946, 5, 95, 0, 0, 5946, 5947, 7, 9, 0, 0, 5947, 5948, 7, 22, 0, 0, 5948, 5949, 7, 18, 0, 0, 5949, 5950, 7, 9, 0, 0, 5950, 5951, 7, 16, 0, 0, 5951, 5952, 7, 13, 0, 0, 5952, 1216, 1, 0, 0, 0, 5953, 5954, 7, 13, 0, 0, 5954, 5955, 7, 10, 0, 0, 5955, 5956, 7, 24, 0, 0, 5956, 5957, 7, 10, 0, 0, 5957, 5958, 7, 5, 0, 0, 5958, 5959, 7, 16, 0, 0, 5959, 1218, 1, 0, 0, 0, 5960, 5961, 7, 13, 0, 0, 5961, 5962, 7, 24, 0, 0, 5962, 5963, 7, 5, 0, 0, 5963, 5964, 7, 12, 0, 0, 5964, 1220, 1, 0, 0, 0, 5965, 5966, 7, 13, 0, 0, 5966, 5967, 7, 16, 0, 0, 5967, 5968, 7, 13, 0, 0, 5968, 5969, 7, 17, 0, 0, 5969, 5970, 7, 15, 0, 0, 5970, 1222, 1, 0, 0, 0, 5971, 5972, 7, 9, 0, 0, 5972, 5973, 7, 24, 0, 0, 5973, 5974, 7, 6, 0, 0, 5974, 5975, 7, 17, 0, 0, 5975, 5976, 7, 16, 0, 0, 5976, 5977, 5, 95, 0, 0, 5977, 5978, 7, 24, 0, 0, 5978, 5979, 7, 5, 0, 0, 5979, 5980, 7, 13, 0, 0, 5980, 5981, 7, 16, 0, 0, 5981, 1224, 1, 0, 0, 0, 5982, 5983, 7, 9, 0, 0, 5983, 5984, 7, 16, 0, 0, 5984, 5985, 7, 5, 0, 0, 5985, 5986, 7, 13, 0, 0, 5986, 5987, 7, 16, 0, 0, 5987, 5988, 7, 9, 0, 0, 5988, 5989, 5, 95, 0, 0, 5989, 5990, 7, 29, 0, 0, 5990, 5991, 7, 17, 0, 0, 5991, 5992, 7, 16, 0, 0, 5992, 5993, 7, 20, 0, 0, 5993, 1226, 1, 0, 0, 0, 5994, 5995, 7, 9, 0, 0, 5995, 5996, 7, 16, 0, 0, 5996, 5997, 7, 13, 0, 0, 5997, 5998, 7, 17, 0, 0, 5998, 5999, 7, 7, 0, 0, 5999, 6000, 7, 23, 0, 0, 6000, 6001, 5, 95, 0, 0, 6001, 6002, 7, 16, 0, 0, 6002, 6003, 7, 19, 0, 0, 6003, 6004, 5, 95, 0, 0, 6004, 6005, 7, 5, 0, 0, 6005, 6006, 7, 13, 0, 0, 6006, 6007, 7, 13, 0, 0, 6007, 6008, 7, 5, 0, 0, 6008, 6009, 7, 8, 0, 0, 6009, 1228, 1, 0, 0, 0, 6010, 6011, 7, 9, 0, 0, 6011, 6012, 7, 16, 0, 0, 6012, 6013, 7, 13, 0, 0, 6013, 6014, 7, 17, 0, 0, 6014, 6015, 7, 7, 0, 0, 6015, 6016, 7, 23, 0, 0, 6016, 6017, 5, 95, 0, 0, 6017, 6018, 7, 16, 0, 0, 6018, 6019, 7, 19, 0, 0, 6019, 6020, 5, 95, 0, 0, 6020, 6021, 7, 16, 0, 0, 6021, 6022, 7, 5, 0, 0, 6022, 6023, 7, 18, 0, 0, 6023, 6024, 7, 6, 0, 0, 6024, 6025, 7, 10, 0, 0, 6025, 1230, 1, 0, 0, 0, 6026, 6027, 7, 9, 0, 0, 6027, 6028, 7, 16, 0, 0, 6028, 6029, 7, 13, 0, 0, 6029, 6030, 7, 24, 0, 0, 6030, 6031, 7, 19, 0, 0, 6031, 6032, 7, 9, 0, 0, 6032, 1232, 1, 0, 0, 0, 6033, 6034, 7, 9, 0, 0, 6034, 6035, 7, 22, 0, 0, 6035, 6036, 7, 18, 0, 0, 6036, 6037, 7, 9, 0, 0, 6037, 6038, 7, 16, 0, 0, 6038, 6039, 7, 13, 0, 0, 6039, 1234, 1, 0, 0, 0, 6040, 6041, 7, 16, 0, 0, 6041, 6042, 7, 19, 0, 0, 6042, 6043, 5, 95, 0, 0, 6043, 6044, 7, 5, 0, 0, 6044, 6045, 7, 9, 0, 0, 6045, 6046, 7, 14, 0, 0, 6046, 6047, 7, 17, 0, 0, 6047, 6048, 7, 17, 0, 0, 6048, 1236, 1, 0, 0, 0, 6049, 6050, 7, 16, 0, 0, 6050, 6051, 7, 19, 0, 0, 6051, 6052, 5, 95, 0, 0, 6052, 6053, 7, 20, 0, 0, 6053, 6054, 7, 10, 0, 0, 6054, 6055, 7, 26, 0, 0, 6055, 1238, 1, 0, 0, 0, 6056, 6057, 7, 16, 0, 0, 6057, 6058, 7, 13, 0, 0, 6058, 6059, 7, 5, 0, 0, 6059, 6060, 7, 7, 0, 0, 6060, 6061, 7, 9, 0, 0, 6061, 6062, 7, 6, 0, 0, 6062, 6063, 7, 5, 0, 0, 6063, 6064, 7, 16, 0, 0, 6064, 6065, 7, 10, 0, 0, 6065, 1240, 1, 0, 0, 0, 6066, 6067, 7, 22, 0, 0, 6067, 6068, 7, 7, 0, 0, 6068, 6069, 7, 17, 0, 0, 6069, 6070, 7, 9, 0, 0, 6070, 6071, 7, 16, 0, 0, 6071, 6072, 7, 13, 0, 0, 6072, 1242, 1, 0, 0, 0, 6073, 6074, 7, 5, 0, 0, 6074, 6075, 7, 23, 0, 0, 6075, 6076, 7, 10, 0, 0, 6076, 1244, 1, 0, 0, 0, 6077, 6078, 7, 14, 0, 0, 6078, 6079, 7, 6, 0, 0, 6079, 6080, 7, 19, 0, 0, 6080, 6081, 7, 14, 0, 0, 6081, 6082, 7, 21, 0, 0, 6082, 6083, 5, 95, 0, 0, 6083, 6084, 7, 16, 0, 0, 6084, 6085, 7, 17, 0, 0, 6085, 6086, 7, 15, 0, 0, 6086, 6087, 7, 10, 0, 0, 6087, 6088, 7, 9, 0, 0, 6088, 6089, 7, 16, 0, 0, 6089, 6090, 7, 5, 0, 0, 6090, 6091, 7, 15, 0, 0, 6091, 6092, 7, 24, 0, 0, 6092, 1246, 1, 0, 0, 0, 6093, 6094, 7, 12, 0, 0, 6094, 6095, 7, 5, 0, 0, 6095, 6096, 7, 16, 0, 0, 6096, 6097, 7, 10, 0, 0, 6097, 6098, 5, 95, 0, 0, 6098, 6099, 7, 18, 0, 0, 6099, 6100, 7, 17, 0, 0, 6100, 6101, 7, 7, 0, 0, 6101, 1248, 1, 0, 0, 0, 6102, 6103, 7, 12, 0, 0, 6103, 6104, 7, 5, 0, 0, 6104, 6105, 7, 16, 0, 0, 6105, 6106, 7, 10, 0, 0, 6106, 6107, 5, 95, 0, 0, 6107, 6108, 7, 24, 0, 0, 6108, 6109, 7, 5, 0, 0, 6109, 6110, 7, 13, 0, 0, 6110, 6111, 7, 16, 0, 0, 6111, 1250, 1, 0, 0, 0, 6112, 6113, 7, 12, 0, 0, 6113, 6114, 7, 5, 0, 0, 6114, 6115, 7, 16, 0, 0, 6115, 6116, 7, 10, 0, 0, 6116, 6117, 5, 95, 0, 0, 6117, 6118, 7, 16, 0, 0, 6118, 6119, 7, 13, 0, 0, 6119, 6120, 7, 22, 0, 0, 6120, 6121, 7, 7, 0, 0, 6121, 6122, 7, 14, 0, 0, 6122, 1252, 1, 0, 0, 0, 6123, 6124, 7, 17, 0, 0, 6124, 6125, 7, 9, 0, 0, 6125, 6126, 7, 25, 0, 0, 6126, 6127, 7, 17, 0, 0, 6127, 6128, 7, 7, 0, 0, 6128, 6129, 7, 17, 0, 0, 6129, 6130, 7, 16, 0, 0, 6130, 6131, 7, 10, 0, 0, 6131, 1254, 1, 0, 0, 0, 6132, 6133, 7, 30, 0, 0, 6133, 6134, 7, 22, 0, 0, 6134, 6135, 7, 9, 0, 0, 6135, 6136, 7, 16, 0, 0, 6136, 6137, 7, 17, 0, 0, 6137, 6138, 7, 25, 0, 0, 6138, 6139, 7, 8, 0, 0, 6139, 6140, 5, 95, 0, 0, 6140, 6141, 7, 12, 0, 0, 6141, 6142, 7, 5, 0, 0, 6142, 6143, 7, 8, 0, 0, 6143, 6144, 7, 9, 0, 0, 6144, 1256, 1, 0, 0, 0, 6145, 6146, 7, 30, 0, 0, 6146, 6147, 7, 22, 0, 0, 6147, 6148, 7, 9, 0, 0, 6148, 6149, 7, 16, 0, 0, 6149, 6150, 7, 17, 0, 0, 6150, 6151, 7, 25, 0, 0, 6151, 6152, 7, 8, 0, 0, 6152, 6153, 5, 95, 0, 0, 6153, 6154, 7, 20, 0, 0, 6154, 6155, 7, 19, 0, 0, 6155, 6156, 7, 22, 0, 0, 6156, 6157, 7, 13, 0, 0, 6157, 6158, 7, 9, 0, 0, 6158, 1258, 1, 0, 0, 0, 6159, 6160, 7, 30, 0, 0, 6160, 6161, 7, 22, 0, 0, 6161, 6162, 7, 9, 0, 0, 6162, 6163, 7, 16, 0, 0, 6163, 6164, 7, 17, 0, 0, 6164, 6165, 7, 25, 0, 0, 6165, 6166, 7, 8, 0, 0, 6166, 6167, 5, 95, 0, 0, 6167, 6168, 7, 17, 0, 0, 6168, 6169, 7, 7, 0, 0, 6169, 6170, 7, 16, 0, 0, 6170, 6171, 7, 10, 0, 0, 6171, 6172, 7, 13, 0, 0, 6172, 6173, 7, 27, 0, 0, 6173, 6174, 7, 5, 0, 0, 6174, 6175, 7, 6, 0, 0, 6175, 1260, 1, 0, 0, 0, 6176, 6177, 7, 15, 0, 0, 6177, 6178, 7, 5, 0, 0, 6178, 6179, 7, 21, 0, 0, 6179, 6180, 7, 10, 0, 0, 6180, 6181, 5, 95, 0, 0, 6181, 6182, 7, 12, 0, 0, 6182, 6183, 7, 5, 0, 0, 6183, 6184, 7, 16, 0, 0, 6184, 6185, 7, 10, 0, 0, 6185, 1262, 1, 0, 0, 0, 6186, 6187, 7, 15, 0, 0, 6187, 6188, 7, 5, 0, 0, 6188, 6189, 7, 21, 0, 0, 6189, 6190, 7, 10, 0, 0, 6190, 6191, 5, 95, 0, 0, 6191, 6192, 7, 17, 0, 0, 6192, 6193, 7, 7, 0, 0, 6193, 6194, 7, 16, 0, 0, 6194, 6195, 7, 10, 0, 0, 6195, 6196, 7, 13, 0, 0, 6196, 6197, 7, 27, 0, 0, 6197, 6198, 7, 5, 0, 0, 6198, 6199, 7, 6, 0, 0, 6199, 1264, 1, 0, 0, 0, 6200, 6201, 7, 15, 0, 0, 6201, 6202, 7, 5, 0, 0, 6202, 6203, 7, 21, 0, 0, 6203, 6204, 7, 10, 0, 0, 6204, 6205, 5, 95, 0, 0, 6205, 6206, 7, 16, 0, 0, 6206, 6207, 7, 17, 0, 0, 6207, 6208, 7, 15, 0, 0, 6208, 6209, 7, 10, 0, 0, 6209, 1266, 1, 0, 0, 0, 6210, 6211, 7, 15, 0, 0, 6211, 6212, 7, 5, 0, 0, 6212, 6213, 7, 21, 0, 0, 6213, 6214, 7, 10, 0, 0, 6214, 6215, 5, 95, 0, 0, 6215, 6216, 7, 16, 0, 0, 6216, 6217, 7, 17, 0, 0, 6217, 6218, 7, 15, 0, 0, 6218, 6219, 7, 10, 0, 0, 6219, 6220, 7, 9, 0, 0, 6220, 6221, 7, 16, 0, 0, 6221, 6222, 7, 5, 0, 0, 6222, 6223, 7, 15, 0, 0, 6223, 6224, 7, 24, 0, 0, 6224, 1268, 1, 0, 0, 0, 6225, 6226, 7, 15, 0, 0, 6226, 6227, 7, 5, 0, 0, 6227, 6228, 7, 21, 0, 0, 6228, 6229, 7, 10, 0, 0, 6229, 6230, 5, 95, 0, 0, 6230, 6231, 7, 16, 0, 0, 6231, 6232, 7, 17, 0, 0, 6232, 6233, 7, 15, 0, 0, 6233, 6234, 7, 10, 0, 0, 6234, 6235, 7, 9, 0, 0, 6235, 6236, 7, 16, 0, 0, 6236, 6237, 7, 5, 0, 0, 6237, 6238, 7, 15, 0, 0, 6238, 6239, 7, 24, 0, 0, 6239, 6240, 7, 16, 0, 0, 6240, 6241, 7, 11, 0, 0, 6241, 1270, 1, 0, 0, 0, 6242, 6243, 7, 7, 0, 0, 6243, 6244, 7, 19, 0, 0, 6244, 6245, 7, 29, 0, 0, 6245, 1272, 1, 0, 0, 0, 6246, 6247, 7, 9, 0, 0, 6247, 6248, 7, 16, 0, 0, 6248, 6249, 7, 5, 0, 0, 6249, 6250, 7, 16, 0, 0, 6250, 6251, 7, 10, 0, 0, 6251, 6252, 7, 15, 0, 0, 6252, 6253, 7, 10, 0, 0, 6253, 6254, 7, 7, 0, 0, 6254, 6255, 7, 16, 0, 0, 6255, 6256, 5, 95, 0, 0, 6256, 6257, 7, 16, 0, 0, 6257, 6258, 7, 17, 0, 0, 6258, 6259, 7, 15, 0, 0, 6259, 6260, 7, 10, 0, 0, 6260, 6261, 7, 9, 0, 0, 6261, 6262, 7, 16, 0, 0, 6262, 6263, 7, 5, 0, 0, 6263, 6264, 7, 15, 0, 0, 6264, 6265, 7, 24, 0, 0, 6265, 1274, 1, 0, 0, 0, 6266, 6267, 7, 16, 0, 0, 6267, 6268, 7, 17, 0, 0, 6268, 6269, 7, 15, 0, 0, 6269, 6270, 7, 10, 0, 0, 6270, 6271, 7, 19, 0, 0, 6271, 6272, 7, 25, 0, 0, 6272, 6273, 7, 12, 0, 0, 6273, 6274, 7, 5, 0, 0, 6274, 6275, 7, 8, 0, 0, 6275, 1276, 1, 0, 0, 0, 6276, 6277, 7, 16, 0, 0, 6277, 6278, 7, 13, 0, 0, 6278, 6279, 7, 5, 0, 0, 6279, 6280, 7, 7, 0, 0, 6280, 6281, 7, 9, 0, 0, 6281, 6282, 7, 5, 0, 0, 6282, 6283, 7, 14, 0, 0, 6283, 6284, 7, 16, 0, 0, 6284, 6285, 7, 17, 0, 0, 6285, 6286, 7, 19, 0, 0, 6286, 6287, 7, 7, 0, 0, 6287, 6288, 5, 95, 0, 0, 6288, 6289, 7, 16, 0, 0, 6289, 6290, 7, 17, 0, 0, 6290, 6291, 7, 15, 0, 0, 6291, 6292, 7, 10, 0, 0, 6292, 6293, 7, 9, 0, 0, 6293, 6294, 7, 16, 0, 0, 6294, 6295, 7, 5, 0, 0, 6295, 6296, 7, 15, 0, 0, 6296, 6297, 7, 24, 0, 0, 6297, 1278, 1, 0, 0, 0, 6298, 6299, 7, 16, 0, 0, 6299, 6300, 7, 19, 0, 0, 6300, 6301, 5, 95, 0, 0, 6301, 6302, 7, 16, 0, 0, 6302, 6303, 7, 17, 0, 0, 6303, 6304, 7, 15, 0, 0, 6304, 6305, 7, 10, 0, 0, 6305, 6306, 7, 9, 0, 0, 6306, 6307, 7, 16, 0, 0, 6307, 6308, 7, 5, 0, 0, 6308, 6309, 7, 15, 0, 0, 6309, 6310, 7, 24, 0, 0, 6310, 1280, 1, 0, 0, 0, 6311, 6312, 7, 16, 0, 0, 6312, 6313, 7, 19, 0, 0, 6313, 6314, 5, 95, 0, 0, 6314, 6315, 7, 14, 0, 0, 6315, 6316, 7, 20, 0, 0, 6316, 6317, 7, 5, 0, 0, 6317, 6318, 7, 13, 0, 0, 6318, 1282, 1, 0, 0, 0, 6319, 6320, 7, 16, 0, 0, 6320, 6321, 7, 19, 0, 0, 6321, 6322, 5, 95, 0, 0, 6322, 6323, 7, 12, 0, 0, 6323, 6324, 7, 5, 0, 0, 6324, 6325, 7, 16, 0, 0, 6325, 6326, 7, 10, 0, 0, 6326, 1284, 1, 0, 0, 0, 6327, 6328, 7, 16, 0, 0, 6328, 6329, 7, 19, 0, 0, 6329, 6330, 5, 95, 0, 0, 6330, 6331, 7, 7, 0, 0, 6331, 6332, 7, 22, 0, 0, 6332, 6333, 7, 15, 0, 0, 6333, 6334, 7, 18, 0, 0, 6334, 6335, 7, 10, 0, 0, 6335, 6336, 7, 13, 0, 0, 6336, 1286, 1, 0, 0, 0, 6337, 6341, 3, 1289, 642, 0, 6338, 6340, 3, 1291, 643, 0, 6339, 6338, 1, 0, 0, 0, 6340, 6343, 1, 0, 0, 0, 6341, 6339, 1, 0, 0, 0, 6341, 6342, 1, 0, 0, 0, 6342, 1288, 1, 0, 0, 0, 6343, 6341, 1, 0, 0, 0, 6344, 6351, 7, 31, 0, 0, 6345, 6346, 7, 32, 0, 0, 6346, 6351, 4, 642, 6, 0, 6347, 6348, 7, 33, 0, 0, 6348, 6349, 7, 34, 0, 0, 6349, 6351, 4, 642, 7, 0, 6350, 6344, 1, 0, 0, 0, 6350, 6345, 1, 0, 0, 0, 6350, 6347, 1, 0, 0, 0, 6351, 1290, 1, 0, 0, 0, 6352, 6355, 3, 1293, 644, 0, 6353, 6355, 5, 36, 0, 0, 6354, 6352, 1, 0, 0, 0, 6354, 6353, 1, 0, 0, 0, 6355, 1292, 1, 0, 0, 0, 6356, 6359, 3, 1289, 642, 0, 6357, 6359, 7, 0, 0, 0, 6358, 6356, 1, 0, 0, 0, 6358, 6357, 1, 0, 0, 0, 6359, 1294, 1, 0, 0, 0, 6360, 6361, 3, 1297, 646, 0, 6361, 6362, 5, 34, 0, 0, 6362, 1296, 1, 0, 0, 0, 6363, 6369, 5, 34, 0, 0, 6364, 6365, 5, 34, 0, 0, 6365, 6368, 5, 34, 0, 0, 6366, 6368, 8, 35, 0, 0, 6367, 6364, 1, 0, 0, 0, 6367, 6366, 1, 0, 0, 0, 6368, 6371, 1, 0, 0, 0, 6369, 6367, 1, 0, 0, 0, 6369, 6370, 1, 0, 0, 0, 6370, 1298, 1, 0, 0, 0, 6371, 6369, 1, 0, 0, 0, 6372, 6373, 3, 1301, 648, 0, 6373, 6374, 5, 34, 0, 0, 6374, 1300, 1, 0, 0, 0, 6375, 6381, 5, 34, 0, 0, 6376, 6377, 5, 34, 0, 0, 6377, 6380, 5, 34, 0, 0, 6378, 6380, 8, 36, 0, 0, 6379, 6376, 1, 0, 0, 0, 6379, 6378, 1, 0, 0, 0, 6380, 6383, 1, 0, 0, 0, 6381, 6379, 1, 0, 0, 0, 6381, 6382, 1, 0, 0, 0, 6382, 1302, 1, 0, 0, 0, 6383, 6381, 1, 0, 0, 0, 6384, 6385, 7, 22, 0, 0, 6385, 6386, 5, 38, 0, 0, 6386, 6387, 3, 1295, 645, 0, 6387, 1304, 1, 0, 0, 0, 6388, 6389, 7, 22, 0, 0, 6389, 6390, 5, 38, 0, 0, 6390, 6391, 3, 1297, 646, 0, 6391, 1306, 1, 0, 0, 0, 6392, 6393, 7, 22, 0, 0, 6393, 6394, 5, 38, 0, 0, 6394, 6395, 3, 1299, 647, 0, 6395, 1308, 1, 0, 0, 0, 6396, 6397, 7, 22, 0, 0, 6397, 6398, 5, 38, 0, 0, 6398, 6399, 3, 1301, 648, 0, 6399, 1310, 1, 0, 0, 0, 6400, 6401, 3, 1313, 654, 0, 6401, 6402, 5, 39, 0, 0, 6402, 1312, 1, 0, 0, 0, 6403, 6409, 5, 39, 0, 0, 6404, 6405, 5, 39, 0, 0, 6405, 6408, 5, 39, 0, 0, 6406, 6408, 8, 37, 0, 0, 6407, 6404, 1, 0, 0, 0, 6407, 6406, 1, 0, 0, 0, 6408, 6411, 1, 0, 0, 0, 6409, 6407, 1, 0, 0, 0, 6409, 6410, 1, 0, 0, 0, 6410, 1314, 1, 0, 0, 0, 6411, 6409, 1, 0, 0, 0, 6412, 6413, 7, 10, 0, 0, 6413, 6414, 5, 39, 0, 0, 6414, 6415, 1, 0, 0, 0, 6415, 6416, 6, 655, 2, 0, 6416, 6417, 6, 655, 3, 0, 6417, 1316, 1, 0, 0, 0, 6418, 6419, 3, 1319, 657, 0, 6419, 6420, 5, 39, 0, 0, 6420, 1318, 1, 0, 0, 0, 6421, 6422, 7, 22, 0, 0, 6422, 6423, 5, 38, 0, 0, 6423, 6424, 3, 1313, 654, 0, 6424, 1320, 1, 0, 0, 0, 6425, 6427, 5, 36, 0, 0, 6426, 6428, 3, 1323, 659, 0, 6427, 6426, 1, 0, 0, 0, 6427, 6428, 1, 0, 0, 0, 6428, 6429, 1, 0, 0, 0, 6429, 6430, 5, 36, 0, 0, 6430, 6431, 6, 658, 4, 0, 6431, 6432, 1, 0, 0, 0, 6432, 6433, 6, 658, 5, 0, 6433, 1322, 1, 0, 0, 0, 6434, 6438, 3, 1289, 642, 0, 6435, 6437, 3, 1293, 644, 0, 6436, 6435, 1, 0, 0, 0, 6437, 6440, 1, 0, 0, 0, 6438, 6436, 1, 0, 0, 0, 6438, 6439, 1, 0, 0, 0, 6439, 1324, 1, 0, 0, 0, 6440, 6438, 1, 0, 0, 0, 6441, 6442, 3, 1327, 661, 0, 6442, 6443, 5, 39, 0, 0, 6443, 1326, 1, 0, 0, 0, 6444, 6445, 7, 18, 0, 0, 6445, 6449, 5, 39, 0, 0, 6446, 6448, 7, 38, 0, 0, 6447, 6446, 1, 0, 0, 0, 6448, 6451, 1, 0, 0, 0, 6449, 6447, 1, 0, 0, 0, 6449, 6450, 1, 0, 0, 0, 6450, 1328, 1, 0, 0, 0, 6451, 6449, 1, 0, 0, 0, 6452, 6453, 3, 1331, 663, 0, 6453, 6454, 5, 39, 0, 0, 6454, 1330, 1, 0, 0, 0, 6455, 6456, 7, 18, 0, 0, 6456, 6457, 3, 1313, 654, 0, 6457, 1332, 1, 0, 0, 0, 6458, 6459, 3, 1335, 665, 0, 6459, 6460, 5, 39, 0, 0, 6460, 1334, 1, 0, 0, 0, 6461, 6462, 7, 26, 0, 0, 6462, 6466, 5, 39, 0, 0, 6463, 6465, 7, 39, 0, 0, 6464, 6463, 1, 0, 0, 0, 6465, 6468, 1, 0, 0, 0, 6466, 6464, 1, 0, 0, 0, 6466, 6467, 1, 0, 0, 0, 6467, 1336, 1, 0, 0, 0, 6468, 6466, 1, 0, 0, 0, 6469, 6470, 3, 1339, 667, 0, 6470, 6471, 5, 39, 0, 0, 6471, 1338, 1, 0, 0, 0, 6472, 6473, 7, 26, 0, 0, 6473, 6474, 3, 1313, 654, 0, 6474, 1340, 1, 0, 0, 0, 6475, 6476, 3, 1347, 671, 0, 6476, 1342, 1, 0, 0, 0, 6477, 6478, 3, 1347, 671, 0, 6478, 6479, 5, 46, 0, 0, 6479, 6480, 5, 46, 0, 0, 6480, 6481, 1, 0, 0, 0, 6481, 6482, 6, 669, 6, 0, 6482, 1344, 1, 0, 0, 0, 6483, 6484, 3, 1347, 671, 0, 6484, 6486, 5, 46, 0, 0, 6485, 6487, 3, 1347, 671, 0, 6486, 6485, 1, 0, 0, 0, 6486, 6487, 1, 0, 0, 0, 6487, 6493, 1, 0, 0, 0, 6488, 6490, 7, 10, 0, 0, 6489, 6491, 7, 1, 0, 0, 6490, 6489, 1, 0, 0, 0, 6490, 6491, 1, 0, 0, 0, 6491, 6492, 1, 0, 0, 0, 6492, 6494, 3, 1347, 671, 0, 6493, 6488, 1, 0, 0, 0, 6493, 6494, 1, 0, 0, 0, 6494, 6512, 1, 0, 0, 0, 6495, 6496, 5, 46, 0, 0, 6496, 6502, 3, 1347, 671, 0, 6497, 6499, 7, 10, 0, 0, 6498, 6500, 7, 1, 0, 0, 6499, 6498, 1, 0, 0, 0, 6499, 6500, 1, 0, 0, 0, 6500, 6501, 1, 0, 0, 0, 6501, 6503, 3, 1347, 671, 0, 6502, 6497, 1, 0, 0, 0, 6502, 6503, 1, 0, 0, 0, 6503, 6512, 1, 0, 0, 0, 6504, 6505, 3, 1347, 671, 0, 6505, 6507, 7, 10, 0, 0, 6506, 6508, 7, 1, 0, 0, 6507, 6506, 1, 0, 0, 0, 6507, 6508, 1, 0, 0, 0, 6508, 6509, 1, 0, 0, 0, 6509, 6510, 3, 1347, 671, 0, 6510, 6512, 1, 0, 0, 0, 6511, 6483, 1, 0, 0, 0, 6511, 6495, 1, 0, 0, 0, 6511, 6504, 1, 0, 0, 0, 6512, 1346, 1, 0, 0, 0, 6513, 6515, 7, 0, 0, 0, 6514, 6513, 1, 0, 0, 0, 6515, 6516, 1, 0, 0, 0, 6516, 6514, 1, 0, 0, 0, 6516, 6517, 1, 0, 0, 0, 6517, 1348, 1, 0, 0, 0, 6518, 6519, 5, 58, 0, 0, 6519, 6523, 7, 40, 0, 0, 6520, 6522, 7, 41, 0, 0, 6521, 6520, 1, 0, 0, 0, 6522, 6525, 1, 0, 0, 0, 6523, 6521, 1, 0, 0, 0, 6523, 6524, 1, 0, 0, 0, 6524, 1350, 1, 0, 0, 0, 6525, 6523, 1, 0, 0, 0, 6526, 6527, 5, 58, 0, 0, 6527, 6528, 5, 34, 0, 0, 6528, 6536, 1, 0, 0, 0, 6529, 6530, 5, 92, 0, 0, 6530, 6535, 9, 0, 0, 0, 6531, 6532, 5, 34, 0, 0, 6532, 6535, 5, 34, 0, 0, 6533, 6535, 8, 42, 0, 0, 6534, 6529, 1, 0, 0, 0, 6534, 6531, 1, 0, 0, 0, 6534, 6533, 1, 0, 0, 0, 6535, 6538, 1, 0, 0, 0, 6536, 6534, 1, 0, 0, 0, 6536, 6537, 1, 0, 0, 0, 6537, 6539, 1, 0, 0, 0, 6538, 6536, 1, 0, 0, 0, 6539, 6540, 5, 34, 0, 0, 6540, 1352, 1, 0, 0, 0, 6541, 6543, 7, 43, 0, 0, 6542, 6541, 1, 0, 0, 0, 6543, 6544, 1, 0, 0, 0, 6544, 6542, 1, 0, 0, 0, 6544, 6545, 1, 0, 0, 0, 6545, 6546, 1, 0, 0, 0, 6546, 6547, 6, 674, 7, 0, 6547, 1354, 1, 0, 0, 0, 6548, 6550, 5, 13, 0, 0, 6549, 6551, 5, 10, 0, 0, 6550, 6549, 1, 0, 0, 0, 6550, 6551, 1, 0, 0, 0, 6551, 6554, 1, 0, 0, 0, 6552, 6554, 5, 10, 0, 0, 6553, 6548, 1, 0, 0, 0, 6553, 6552, 1, 0, 0, 0, 6554, 6555, 1, 0, 0, 0, 6555, 6556, 6, 675, 7, 0, 6556, 1356, 1, 0, 0, 0, 6557, 6558, 5, 45, 0, 0, 6558, 6559, 5, 45, 0, 0, 6559, 6563, 1, 0, 0, 0, 6560, 6562, 8, 44, 0, 0, 6561, 6560, 1, 0, 0, 0, 6562, 6565, 1, 0, 0, 0, 6563, 6561, 1, 0, 0, 0, 6563, 6564, 1, 0, 0, 0, 6564, 6566, 1, 0, 0, 0, 6565, 6563, 1, 0, 0, 0, 6566, 6567, 6, 676, 7, 0, 6567, 1358, 1, 0, 0, 0, 6568, 6569, 5, 47, 0, 0, 6569, 6570, 5, 42, 0, 0, 6570, 6593, 1, 0, 0, 0, 6571, 6573, 5, 47, 0, 0, 6572, 6571, 1, 0, 0, 0, 6573, 6576, 1, 0, 0, 0, 6574, 6572, 1, 0, 0, 0, 6574, 6575, 1, 0, 0, 0, 6575, 6577, 1, 0, 0, 0, 6576, 6574, 1, 0, 0, 0, 6577, 6592, 3, 1359, 677, 0, 6578, 6592, 8, 45, 0, 0, 6579, 6581, 5, 47, 0, 0, 6580, 6579, 1, 0, 0, 0, 6581, 6582, 1, 0, 0, 0, 6582, 6580, 1, 0, 0, 0, 6582, 6583, 1, 0, 0, 0, 6583, 6584, 1, 0, 0, 0, 6584, 6592, 8, 45, 0, 0, 6585, 6587, 5, 42, 0, 0, 6586, 6585, 1, 0, 0, 0, 6587, 6588, 1, 0, 0, 0, 6588, 6586, 1, 0, 0, 0, 6588, 6589, 1, 0, 0, 0, 6589, 6590, 1, 0, 0, 0, 6590, 6592, 8, 45, 0, 0, 6591, 6574, 1, 0, 0, 0, 6591, 6578, 1, 0, 0, 0, 6591, 6580, 1, 0, 0, 0, 6591, 6586, 1, 0, 0, 0, 6592, 6595, 1, 0, 0, 0, 6593, 6591, 1, 0, 0, 0, 6593, 6594, 1, 0, 0, 0, 6594, 6599, 1, 0, 0, 0, 6595, 6593, 1, 0, 0, 0, 6596, 6598, 5, 42, 0, 0, 6597, 6596, 1, 0, 0, 0, 6598, 6601, 1, 0, 0, 0, 6599, 6597, 1, 0, 0, 0, 6599, 6600, 1, 0, 0, 0, 6600, 6602, 1, 0, 0, 0, 6601, 6599, 1, 0, 0, 0, 6602, 6603, 5, 42, 0, 0, 6603, 6604, 5, 47, 0, 0, 6604, 6605, 1, 0, 0, 0, 6605, 6606, 6, 677, 7, 0, 6606, 1360, 1, 0, 0, 0, 6607, 6608, 5, 47, 0, 0, 6608, 6609, 5, 42, 0, 0, 6609, 6634, 1, 0, 0, 0, 6610, 6612, 5, 47, 0, 0, 6611, 6610, 1, 0, 0, 0, 6612, 6615, 1, 0, 0, 0, 6613, 6611, 1, 0, 0, 0, 6613, 6614, 1, 0, 0, 0, 6614, 6616, 1, 0, 0, 0, 6615, 6613, 1, 0, 0, 0, 6616, 6633, 3, 1359, 677, 0, 6617, 6633, 8, 45, 0, 0, 6618, 6620, 5, 47, 0, 0, 6619, 6618, 1, 0, 0, 0, 6620, 6621, 1, 0, 0, 0, 6621, 6619, 1, 0, 0, 0, 6621, 6622, 1, 0, 0, 0, 6622, 6623, 1, 0, 0, 0, 6623, 6631, 8, 45, 0, 0, 6624, 6626, 5, 42, 0, 0, 6625, 6624, 1, 0, 0, 0, 6626, 6627, 1, 0, 0, 0, 6627, 6625, 1, 0, 0, 0, 6627, 6628, 1, 0, 0, 0, 6628, 6629, 1, 0, 0, 0, 6629, 6631, 8, 45, 0, 0, 6630, 6619, 1, 0, 0, 0, 6630, 6625, 1, 0, 0, 0, 6631, 6633, 1, 0, 0, 0, 6632, 6613, 1, 0, 0, 0, 6632, 6617, 1, 0, 0, 0, 6632, 6630, 1, 0, 0, 0, 6633, 6636, 1, 0, 0, 0, 6634, 6632, 1, 0, 0, 0, 6634, 6635, 1, 0, 0, 0, 6635, 6654, 1, 0, 0, 0, 6636, 6634, 1, 0, 0, 0, 6637, 6639, 5, 47, 0, 0, 6638, 6637, 1, 0, 0, 0, 6639, 6640, 1, 0, 0, 0, 6640, 6638, 1, 0, 0, 0, 6640, 6641, 1, 0, 0, 0, 6641, 6655, 1, 0, 0, 0, 6642, 6644, 5, 42, 0, 0, 6643, 6642, 1, 0, 0, 0, 6644, 6645, 1, 0, 0, 0, 6645, 6643, 1, 0, 0, 0, 6645, 6646, 1, 0, 0, 0, 6646, 6655, 1, 0, 0, 0, 6647, 6649, 5, 47, 0, 0, 6648, 6647, 1, 0, 0, 0, 6649, 6652, 1, 0, 0, 0, 6650, 6648, 1, 0, 0, 0, 6650, 6651, 1, 0, 0, 0, 6651, 6653, 1, 0, 0, 0, 6652, 6650, 1, 0, 0, 0, 6653, 6655, 3, 1361, 678, 0, 6654, 6638, 1, 0, 0, 0, 6654, 6643, 1, 0, 0, 0, 6654, 6650, 1, 0, 0, 0, 6654, 6655, 1, 0, 0, 0, 6655, 6656, 1, 0, 0, 0, 6656, 6657, 6, 678, 8, 0, 6657, 1362, 1, 0, 0, 0, 6658, 6670, 5, 92, 0, 0, 6659, 6669, 8, 46, 0, 0, 6660, 6664, 5, 34, 0, 0, 6661, 6663, 8, 47, 0, 0, 6662, 6661, 1, 0, 0, 0, 6663, 6666, 1, 0, 0, 0, 6664, 6662, 1, 0, 0, 0, 6664, 6665, 1, 0, 0, 0, 6665, 6667, 1, 0, 0, 0, 6666, 6664, 1, 0, 0, 0, 6667, 6669, 5, 34, 0, 0, 6668, 6659, 1, 0, 0, 0, 6668, 6660, 1, 0, 0, 0, 6669, 6672, 1, 0, 0, 0, 6670, 6668, 1, 0, 0, 0, 6670, 6671, 1, 0, 0, 0, 6671, 6680, 1, 0, 0, 0, 6672, 6670, 1, 0, 0, 0, 6673, 6677, 5, 34, 0, 0, 6674, 6676, 8, 47, 0, 0, 6675, 6674, 1, 0, 0, 0, 6676, 6679, 1, 0, 0, 0, 6677, 6675, 1, 0, 0, 0, 6677, 6678, 1, 0, 0, 0, 6678, 6681, 1, 0, 0, 0, 6679, 6677, 1, 0, 0, 0, 6680, 6673, 1, 0, 0, 0, 6680, 6681, 1, 0, 0, 0, 6681, 1364, 1, 0, 0, 0, 6682, 6683, 5, 92, 0, 0, 6683, 6684, 5, 92, 0, 0, 6684, 1366, 1, 0, 0, 0, 6685, 6686, 9, 0, 0, 0, 6686, 1368, 1, 0, 0, 0, 6687, 6688, 3, 1373, 684, 0, 6688, 6689, 5, 39, 0, 0, 6689, 6690, 1, 0, 0, 0, 6690, 6691, 6, 682, 9, 0, 6691, 1370, 1, 0, 0, 0, 6692, 6694, 3, 1373, 684, 0, 6693, 6695, 5, 92, 0, 0, 6694, 6693, 1, 0, 0, 0, 6694, 6695, 1, 0, 0, 0, 6695, 6696, 1, 0, 0, 0, 6696, 6697, 5, 0, 0, 1, 6697, 1372, 1, 0, 0, 0, 6698, 6699, 5, 39, 0, 0, 6699, 6722, 5, 39, 0, 0, 6700, 6718, 5, 92, 0, 0, 6701, 6702, 5, 120, 0, 0, 6702, 6719, 7, 39, 0, 0, 6703, 6704, 5, 117, 0, 0, 6704, 6705, 7, 39, 0, 0, 6705, 6706, 7, 39, 0, 0, 6706, 6707, 7, 39, 0, 0, 6707, 6719, 7, 39, 0, 0, 6708, 6709, 5, 85, 0, 0, 6709, 6710, 7, 39, 0, 0, 6710, 6711, 7, 39, 0, 0, 6711, 6712, 7, 39, 0, 0, 6712, 6713, 7, 39, 0, 0, 6713, 6714, 7, 39, 0, 0, 6714, 6715, 7, 39, 0, 0, 6715, 6716, 7, 39, 0, 0, 6716, 6719, 7, 39, 0, 0, 6717, 6719, 8, 48, 0, 0, 6718, 6701, 1, 0, 0, 0, 6718, 6703, 1, 0, 0, 0, 6718, 6708, 1, 0, 0, 0, 6718, 6717, 1, 0, 0, 0, 6719, 6722, 1, 0, 0, 0, 6720, 6722, 8, 49, 0, 0, 6721, 6698, 1, 0, 0, 0, 6721, 6700, 1, 0, 0, 0, 6721, 6720, 1, 0, 0, 0, 6722, 6725, 1, 0, 0, 0, 6723, 6721, 1, 0, 0, 0, 6723, 6724, 1, 0, 0, 0, 6724, 1374, 1, 0, 0, 0, 6725, 6723, 1, 0, 0, 0, 6726, 6727, 3, 1379, 687, 0, 6727, 6728, 5, 39, 0, 0, 6728, 6729, 1, 0, 0, 0, 6729, 6730, 6, 685, 9, 0, 6730, 1376, 1, 0, 0, 0, 6731, 6733, 3, 1379, 687, 0, 6732, 6734, 5, 92, 0, 0, 6733, 6732, 1, 0, 0, 0, 6733, 6734, 1, 0, 0, 0, 6734, 6735, 1, 0, 0, 0, 6735, 6736, 5, 0, 0, 1, 6736, 1378, 1, 0, 0, 0, 6737, 6738, 5, 39, 0, 0, 6738, 6743, 5, 39, 0, 0, 6739, 6740, 5, 92, 0, 0, 6740, 6743, 9, 0, 0, 0, 6741, 6743, 8, 49, 0, 0, 6742, 6737, 1, 0, 0, 0, 6742, 6739, 1, 0, 0, 0, 6742, 6741, 1, 0, 0, 0, 6743, 6746, 1, 0, 0, 0, 6744, 6742, 1, 0, 0, 0, 6744, 6745, 1, 0, 0, 0, 6745, 1380, 1, 0, 0, 0, 6746, 6744, 1, 0, 0, 0, 6747, 6748, 3, 1353, 674, 0, 6748, 6749, 1, 0, 0, 0, 6749, 6750, 6, 688, 10, 0, 6750, 6751, 6, 688, 7, 0, 6751, 1382, 1, 0, 0, 0, 6752, 6753, 3, 1355, 675, 0, 6753, 6754, 1, 0, 0, 0, 6754, 6755, 6, 689, 11, 0, 6755, 6756, 6, 689, 7, 0, 6756, 6757, 6, 689, 12, 0, 6757, 1384, 1, 0, 0, 0, 6758, 6759, 6, 690, 13, 0, 6759, 6760, 1, 0, 0, 0, 6760, 6761, 6, 690, 14, 0, 6761, 6762, 6, 690, 15, 0, 6762, 1386, 1, 0, 0, 0, 6763, 6764, 3, 1353, 674, 0, 6764, 6765, 1, 0, 0, 0, 6765, 6766, 6, 691, 10, 0, 6766, 6767, 6, 691, 7, 0, 6767, 1388, 1, 0, 0, 0, 6768, 6769, 3, 1355, 675, 0, 6769, 6770, 1, 0, 0, 0, 6770, 6771, 6, 692, 11, 0, 6771, 6772, 6, 692, 7, 0, 6772, 1390, 1, 0, 0, 0, 6773, 6774, 5, 39, 0, 0, 6774, 6775, 1, 0, 0, 0, 6775, 6776, 6, 693, 2, 0, 6776, 6777, 6, 693, 16, 0, 6777, 1392, 1, 0, 0, 0, 6778, 6779, 6, 694, 17, 0, 6779, 6780, 1, 0, 0, 0, 6780, 6781, 6, 694, 14, 0, 6781, 6782, 6, 694, 15, 0, 6782, 1394, 1, 0, 0, 0, 6783, 6785, 8, 50, 0, 0, 6784, 6783, 1, 0, 0, 0, 6785, 6786, 1, 0, 0, 0, 6786, 6784, 1, 0, 0, 0, 6786, 6787, 1, 0, 0, 0, 6787, 6796, 1, 0, 0, 0, 6788, 6792, 5, 36, 0, 0, 6789, 6791, 8, 50, 0, 0, 6790, 6789, 1, 0, 0, 0, 6791, 6794, 1, 0, 0, 0, 6792, 6790, 1, 0, 0, 0, 6792, 6793, 1, 0, 0, 0, 6793, 6796, 1, 0, 0, 0, 6794, 6792, 1, 0, 0, 0, 6795, 6784, 1, 0, 0, 0, 6795, 6788, 1, 0, 0, 0, 6796, 1396, 1, 0, 0, 0, 6797, 6799, 5, 36, 0, 0, 6798, 6800, 3, 1323, 659, 0, 6799, 6798, 1, 0, 0, 0, 6799, 6800, 1, 0, 0, 0, 6800, 6801, 1, 0, 0, 0, 6801, 6802, 5, 36, 0, 0, 6802, 6803, 1, 0, 0, 0, 6803, 6804, 4, 696, 8, 0, 6804, 6805, 6, 696, 18, 0, 6805, 6806, 1, 0, 0, 0, 6806, 6807, 6, 696, 15, 0, 6807, 1398, 1, 0, 0, 0, 78, 0, 1, 2, 3, 4, 1466, 1472, 1474, 1479, 1483, 1485, 1488, 1497, 1499, 1504, 1509, 1511, 6341, 6350, 6354, 6358, 6367, 6369, 6379, 6381, 6407, 6409, 6427, 6438, 6449, 6466, 6486, 6490, 6493, 6499, 6502, 6507, 6511, 6516, 6523, 6534, 6536, 6544, 6550, 6553, 6563, 6574, 6582, 6588, 6591, 6593, 6599, 6613, 6621, 6627, 6630, 6632, 6634, 6640, 6645, 6650, 6654, 6664, 6668, 6670, 6677, 6680, 6694, 6718, 6721, 6723, 6733, 6742, 6744, 6786, 6792, 6795, 6799, 19, 1, 28, 0, 7, 29, 0, 3, 0, 0, 5, 1, 0, 1, 658, 1, 5, 4, 0, 1, 669, 2, 0, 1, 0, 1, 678, 3, 2, 2, 0, 7, 665, 0, 7, 666, 0, 2, 3, 0, 1, 690, 4, 6, 0, 0, 4, 0, 0, 2, 1, 0, 1, 694, 5, 1, 696, 6] \ No newline at end of file diff --git a/incubator/binding-pgsql/gen/PostgreSqlLexer.java b/incubator/binding-pgsql/gen/PostgreSqlLexer.java index 5c68e526f7..c22b0570b7 100644 --- a/incubator/binding-pgsql/gen/PostgreSqlLexer.java +++ b/incubator/binding-pgsql/gen/PostgreSqlLexer.java @@ -32,116 +32,116 @@ public class PostgreSqlLexer extends PostgreSqlLexerBase { INTO=71, LATERAL_P=72, LEADING=73, LIMIT=74, LOCALTIME=75, LOCALTIMESTAMP=76, NOT=77, NULL_P=78, OFFSET=79, ON=80, ONLY=81, OR=82, ORDER=83, PLACING=84, PRIMARY=85, REFERENCES=86, RETURNING=87, SELECT=88, SESSION_USER=89, SOME=90, - SYMMETRIC=91, TABLE=92, THEN=93, TO=94, TRAILING=95, TRUE_P=96, UNION=97, - UNIQUE=98, USER=99, USING=100, VARIADIC=101, WHEN=102, WHERE=103, WINDOW=104, - WITH=105, AUTHORIZATION=106, BINARY=107, COLLATION=108, CONCURRENTLY=109, - CROSS=110, CURRENT_SCHEMA=111, FREEZE=112, FULL=113, ILIKE=114, INNER_P=115, - IS=116, ISNULL=117, JOIN=118, LEFT=119, LIKE=120, NATURAL=121, NOTNULL=122, - OUTER_P=123, OVER=124, OVERLAPS=125, RIGHT=126, SIMILAR=127, VERBOSE=128, - ABORT_P=129, ABSOLUTE_P=130, ACCESS=131, ACTION=132, ADD_P=133, ADMIN=134, - AFTER=135, AGGREGATE=136, ALSO=137, ALTER=138, ALWAYS=139, ASSERTION=140, - ASSIGNMENT=141, AT=142, ATTRIBUTE=143, BACKWARD=144, BEFORE=145, BEGIN_P=146, - BY=147, CACHE=148, CALLED=149, CASCADE=150, CASCADED=151, CATALOG=152, - CHAIN=153, CHARACTERISTICS=154, CHECKPOINT=155, CLASS=156, CLOSE=157, - CLUSTER=158, COMMENT=159, COMMENTS=160, COMMIT=161, COMMITTED=162, CONFIGURATION=163, - CONNECTION=164, CONSTRAINTS=165, CONTENT_P=166, CONTINUE_P=167, CONVERSION_P=168, - COPY=169, COST=170, CSV=171, CURSOR=172, CYCLE=173, DATA_P=174, DATABASE=175, - DAY_P=176, DEALLOCATE=177, DECLARE=178, DEFAULTS=179, DEFERRED=180, DEFINER=181, - DELETE_P=182, DELIMITER=183, DELIMITERS=184, DICTIONARY=185, DISABLE_P=186, - DISCARD=187, DOCUMENT_P=188, DOMAIN_P=189, DOUBLE_P=190, DROP=191, EACH=192, - ENABLE_P=193, ENCODING=194, ENCRYPTED=195, ENUM_P=196, ESCAPE=197, EVENT=198, - EXCLUDE=199, EXCLUDING=200, EXCLUSIVE=201, EXECUTE=202, EXPLAIN=203, EXTENSION=204, - EXTERNAL=205, FAMILY=206, FIRST_P=207, FOLLOWING=208, FORCE=209, FORWARD=210, - FUNCTION=211, FUNCTIONS=212, GLOBAL=213, GRANTED=214, HANDLER=215, HEADER_P=216, - HOLD=217, HOUR_P=218, IDENTITY_P=219, IF_P=220, IMMEDIATE=221, IMMUTABLE=222, - IMPLICIT_P=223, INCLUDING=224, INCREMENT=225, INDEX=226, INDEXES=227, - INHERIT=228, INHERITS=229, INLINE_P=230, INSENSITIVE=231, INSERT=232, - INSTEAD=233, INVOKER=234, ISOLATION=235, KEY=236, LABEL=237, LANGUAGE=238, - LARGE_P=239, LAST_P=240, LEAKPROOF=241, LEVEL=242, LISTEN=243, LOAD=244, - LOCAL=245, LOCATION=246, LOCK_P=247, MAPPING=248, MATCH=249, MATCHED=250, - MATERIALIZED=251, MAXVALUE=252, MERGE=253, MINUTE_P=254, MINVALUE=255, - MODE=256, MONTH_P=257, MOVE=258, NAME_P=259, NAMES=260, NEXT=261, NO=262, - NOTHING=263, NOTIFY=264, NOWAIT=265, NULLS_P=266, OBJECT_P=267, OF=268, - OFF=269, OIDS=270, OPERATOR=271, OPTION=272, OPTIONS=273, OWNED=274, OWNER=275, - PARSER=276, PARTIAL=277, PARTITION=278, PASSING=279, PASSWORD=280, PLANS=281, - PRECEDING=282, PREPARE=283, PREPARED=284, PRESERVE=285, PRIOR=286, PRIVILEGES=287, - PROCEDURAL=288, PROCEDURE=289, PROGRAM=290, QUOTE=291, RANGE=292, READ=293, - REASSIGN=294, RECHECK=295, RECURSIVE=296, REF=297, REFRESH=298, REINDEX=299, - RELATIVE_P=300, RELEASE=301, RENAME=302, REPEATABLE=303, REPLACE=304, - REPLICA=305, RESET=306, RESTART=307, RESTRICT=308, RETURNS=309, REVOKE=310, - ROLE=311, ROLLBACK=312, ROWS=313, RULE=314, SAVEPOINT=315, SCHEMA=316, - SCROLL=317, SEARCH=318, SECOND_P=319, SECURITY=320, SEQUENCE=321, SEQUENCES=322, - SERIALIZABLE=323, SERVER=324, SESSION=325, SET=326, SHARE=327, SHOW=328, - SIMPLE=329, SNAPSHOT=330, STABLE=331, STANDALONE_P=332, START=333, STATEMENT=334, - STATISTICS=335, STDIN=336, STDOUT=337, STORAGE=338, STRICT_P=339, STRIP_P=340, - SYSID=341, SYSTEM_P=342, TABLES=343, TABLESPACE=344, TEMP=345, TEMPLATE=346, - TEMPORARY=347, TEXT_P=348, TRANSACTION=349, TRIGGER=350, TRUNCATE=351, - TRUSTED=352, TYPE_P=353, TYPES_P=354, UNBOUNDED=355, UNCOMMITTED=356, - UNENCRYPTED=357, UNKNOWN=358, UNLISTEN=359, UNLOGGED=360, UNTIL=361, UPDATE=362, - VACUUM=363, VALID=364, VALIDATE=365, VALIDATOR=366, VARYING=367, VERSION_P=368, - VIEW=369, VOLATILE=370, WHITESPACE_P=371, WITHOUT=372, WORK=373, WRAPPER=374, - WRITE=375, XML_P=376, YEAR_P=377, YES_P=378, ZONE=379, BETWEEN=380, BIGINT=381, - BIT=382, BOOLEAN_P=383, CHAR_P=384, CHARACTER=385, COALESCE=386, DEC=387, - DECIMAL_P=388, EXISTS=389, EXTRACT=390, FLOAT_P=391, GREATEST=392, INOUT=393, - INT_P=394, INTEGER=395, INTERVAL=396, LEAST=397, NATIONAL=398, NCHAR=399, - NONE=400, NULLIF=401, NUMERIC=402, OVERLAY=403, POSITION=404, PRECISION=405, - REAL=406, ROW=407, SETOF=408, SMALLINT=409, SUBSTRING=410, TIME=411, TIMESTAMP=412, - TREAT=413, TRIM=414, VALUES=415, VARCHAR=416, XMLATTRIBUTES=417, XMLCOMMENT=418, - XMLAGG=419, XML_IS_WELL_FORMED=420, XML_IS_WELL_FORMED_DOCUMENT=421, XML_IS_WELL_FORMED_CONTENT=422, - XPATH=423, XPATH_EXISTS=424, XMLCONCAT=425, XMLELEMENT=426, XMLEXISTS=427, - XMLFOREST=428, XMLPARSE=429, XMLPI=430, XMLROOT=431, XMLSERIALIZE=432, - CALL=433, CURRENT_P=434, ATTACH=435, DETACH=436, EXPRESSION=437, GENERATED=438, - LOGGED=439, STORED=440, INCLUDE=441, ROUTINE=442, TRANSFORM=443, IMPORT_P=444, - POLICY=445, METHOD=446, REFERENCING=447, NEW=448, OLD=449, VALUE_P=450, - SUBSCRIPTION=451, PUBLICATION=452, OUT_P=453, END_P=454, ROUTINES=455, - SCHEMAS=456, PROCEDURES=457, INPUT_P=458, SUPPORT=459, PARALLEL=460, SQL_P=461, - DEPENDS=462, OVERRIDING=463, CONFLICT=464, SKIP_P=465, LOCKED=466, TIES=467, - ROLLUP=468, CUBE=469, GROUPING=470, SETS=471, TABLESAMPLE=472, ORDINALITY=473, - XMLTABLE=474, COLUMNS=475, XMLNAMESPACES=476, ROWTYPE=477, NORMALIZED=478, - WITHIN=479, FILTER=480, GROUPS=481, OTHERS=482, NFC=483, NFD=484, NFKC=485, - NFKD=486, UESCAPE=487, VIEWS=488, NORMALIZE=489, DUMP=490, PRINT_STRICT_PARAMS=491, - VARIABLE_CONFLICT=492, ERROR=493, USE_VARIABLE=494, USE_COLUMN=495, ALIAS=496, - CONSTANT=497, PERFORM=498, GET=499, DIAGNOSTICS=500, STACKED=501, ELSIF=502, - WHILE=503, REVERSE=504, FOREACH=505, SLICE=506, EXIT=507, RETURN=508, - QUERY=509, RAISE=510, SQLSTATE=511, DEBUG=512, LOG=513, INFO=514, NOTICE=515, - WARNING=516, EXCEPTION=517, ASSERT=518, LOOP=519, OPEN=520, ABS=521, CBRT=522, - CEIL=523, CEILING=524, DEGREES=525, DIV=526, EXP=527, FACTORIAL=528, FLOOR=529, - GCD=530, LCM=531, LN=532, LOG10=533, MIN_SCALE=534, MOD=535, PI=536, POWER=537, - RADIANS=538, ROUND=539, SCALE=540, SIGN=541, SQRT=542, TRIM_SCALE=543, - TRUNC=544, WIDTH_BUCKET=545, RANDOM=546, SETSEED=547, ACOS=548, ACOSD=549, - ASIN=550, ASIND=551, ATAN=552, ATAND=553, ATAN2=554, ATAN2D=555, COS=556, - COSD=557, COT=558, COTD=559, SIN=560, SIND=561, TAN=562, TAND=563, SINH=564, - COSH=565, TANH=566, ASINH=567, ACOSH=568, ATANH=569, BIT_LENGTH=570, CHAR_LENGTH=571, - CHARACTER_LENGTH=572, LOWER=573, OCTET_LENGTH=574, UPPER=575, ASCII=576, - BTRIM=577, CHR=578, CONCAT=579, CONCAT_WS=580, FORMAT=581, INITCAP=582, - LENGTH=583, LPAD=584, LTRIM=585, MD5=586, PARSE_IDENT=587, PG_CLIENT_ENCODING=588, - QUOTE_IDENT=589, QUOTE_LITERAL=590, QUOTE_NULLABLE=591, REGEXP_COUNT=592, - REGEXP_INSTR=593, REGEXP_LIKE=594, REGEXP_MATCH=595, REGEXP_MATCHES=596, - REGEXP_REPLACE=597, REGEXP_SPLIT_TO_ARRAY=598, REGEXP_SPLIT_TO_TABLE=599, - REGEXP_SUBSTR=600, REPEAT=601, RPAD=602, RTRIM=603, SPLIT_PART=604, STARTS_WITH=605, - STRING_TO_ARRAY=606, STRING_TO_TABLE=607, STRPOS=608, SUBSTR=609, TO_ASCII=610, - TO_HEX=611, TRANSLATE=612, UNISTR=613, AGE=614, CLOCK_TIMESTAMP=615, DATE_BIN=616, - DATE_PART=617, DATE_TRUNC=618, ISFINITE=619, JUSTIFY_DAYS=620, JUSTIFY_HOURS=621, - JUSTIFY_INTERVAL=622, MAKE_DATE=623, MAKE_INTERVAL=624, MAKE_TIME=625, - MAKE_TIMESTAMP=626, MAKE_TIMESTAMPTZ=627, NOW=628, STATEMENT_TIMESTAMP=629, - TIMEOFDAY=630, TRANSACTION_TIMESTAMP=631, TO_TIMESTAMP=632, TO_CHAR=633, - TO_DATE=634, TO_NUMBER=635, Identifier=636, QuotedIdentifier=637, UnterminatedQuotedIdentifier=638, - InvalidQuotedIdentifier=639, InvalidUnterminatedQuotedIdentifier=640, - UnicodeQuotedIdentifier=641, UnterminatedUnicodeQuotedIdentifier=642, - InvalidUnicodeQuotedIdentifier=643, InvalidUnterminatedUnicodeQuotedIdentifier=644, - StringConstant=645, UnterminatedStringConstant=646, UnicodeEscapeStringConstant=647, - UnterminatedUnicodeEscapeStringConstant=648, BeginDollarStringConstant=649, - BinaryStringConstant=650, UnterminatedBinaryStringConstant=651, InvalidBinaryStringConstant=652, - InvalidUnterminatedBinaryStringConstant=653, HexadecimalStringConstant=654, - UnterminatedHexadecimalStringConstant=655, InvalidHexadecimalStringConstant=656, - InvalidUnterminatedHexadecimalStringConstant=657, Integral=658, NumericFail=659, - Numeric=660, PLSQLVARIABLENAME=661, PLSQLIDENTIFIER=662, Whitespace=663, - Newline=664, LineComment=665, BlockComment=666, UnterminatedBlockComment=667, - MetaCommand=668, EndMetaCommand=669, ErrorCharacter=670, EscapeStringConstant=671, - UnterminatedEscapeStringConstant=672, InvalidEscapeStringConstant=673, - InvalidUnterminatedEscapeStringConstant=674, AfterEscapeStringConstantMode_NotContinued=675, - AfterEscapeStringConstantWithNewlineMode_NotContinued=676, DollarText=677, - EndDollarStringConstant=678, AfterEscapeStringConstantWithNewlineMode_Continued=679; + SYMMETRIC=91, TABLE=92, THEN=93, TO=94, TOPIC=95, STREAM=96, TRAILING=97, + TRUE_P=98, UNION=99, UNIQUE=100, USER=101, USING=102, VARIADIC=103, WHEN=104, + WHERE=105, WINDOW=106, WITH=107, AUTHORIZATION=108, BINARY=109, COLLATION=110, + CONCURRENTLY=111, CROSS=112, CURRENT_SCHEMA=113, FREEZE=114, FULL=115, + ILIKE=116, INNER_P=117, IS=118, ISNULL=119, JOIN=120, LEFT=121, LIKE=122, + NATURAL=123, NOTNULL=124, OUTER_P=125, OVER=126, OVERLAPS=127, RIGHT=128, + SIMILAR=129, VERBOSE=130, ABORT_P=131, ABSOLUTE_P=132, ACCESS=133, ACTION=134, + ADD_P=135, ADMIN=136, AFTER=137, AGGREGATE=138, ALSO=139, ALTER=140, ALWAYS=141, + ASSERTION=142, ASSIGNMENT=143, AT=144, ATTRIBUTE=145, BACKWARD=146, BEFORE=147, + BEGIN_P=148, BY=149, CACHE=150, CALLED=151, CASCADE=152, CASCADED=153, + CATALOG=154, CHAIN=155, CHARACTERISTICS=156, CHECKPOINT=157, CLASS=158, + CLOSE=159, CLUSTER=160, COMMENT=161, COMMENTS=162, COMMIT=163, COMMITTED=164, + CONFIGURATION=165, CONNECTION=166, CONSTRAINTS=167, CONTENT_P=168, CONTINUE_P=169, + CONVERSION_P=170, COPY=171, COST=172, CSV=173, CURSOR=174, CYCLE=175, + DATA_P=176, DATABASE=177, DAY_P=178, DEALLOCATE=179, DECLARE=180, DEFAULTS=181, + DEFERRED=182, DEFINER=183, DELETE_P=184, DELIMITER=185, DELIMITERS=186, + DICTIONARY=187, DISABLE_P=188, DISCARD=189, DOCUMENT_P=190, DOMAIN_P=191, + DOUBLE_P=192, DROP=193, EACH=194, ENABLE_P=195, ENCODING=196, ENCRYPTED=197, + ENUM_P=198, ESCAPE=199, EVENT=200, EXCLUDE=201, EXCLUDING=202, EXCLUSIVE=203, + EXECUTE=204, EXPLAIN=205, EXTENSION=206, EXTERNAL=207, FAMILY=208, FIRST_P=209, + FOLLOWING=210, FORCE=211, FORWARD=212, FUNCTION=213, FUNCTIONS=214, GLOBAL=215, + GRANTED=216, HANDLER=217, HEADER_P=218, HOLD=219, HOUR_P=220, IDENTITY_P=221, + IF_P=222, IMMEDIATE=223, IMMUTABLE=224, IMPLICIT_P=225, INCLUDING=226, + INCREMENT=227, INDEX=228, INDEXES=229, INHERIT=230, INHERITS=231, INLINE_P=232, + INSENSITIVE=233, INSERT=234, INSTEAD=235, INVOKER=236, ISOLATION=237, + KEY=238, LABEL=239, LANGUAGE=240, LARGE_P=241, LAST_P=242, LEAKPROOF=243, + LEVEL=244, LISTEN=245, LOAD=246, LOCAL=247, LOCATION=248, LOCK_P=249, + MAPPING=250, MATCH=251, MATCHED=252, MATERIALIZED=253, MAXVALUE=254, MERGE=255, + MINUTE_P=256, MINVALUE=257, MODE=258, MONTH_P=259, MOVE=260, NAME_P=261, + NAMES=262, NEXT=263, NO=264, NOTHING=265, NOTIFY=266, NOWAIT=267, NULLS_P=268, + OBJECT_P=269, OF=270, OFF=271, OIDS=272, OPERATOR=273, OPTION=274, OPTIONS=275, + OWNED=276, OWNER=277, PARSER=278, PARTIAL=279, PARTITION=280, PASSING=281, + PASSWORD=282, PLANS=283, PRECEDING=284, PREPARE=285, PREPARED=286, PRESERVE=287, + PRIOR=288, PRIVILEGES=289, PROCEDURAL=290, PROCEDURE=291, PROGRAM=292, + QUOTE=293, RANGE=294, READ=295, REASSIGN=296, RECHECK=297, RECURSIVE=298, + REF=299, REFRESH=300, REINDEX=301, RELATIVE_P=302, RELEASE=303, RENAME=304, + REPEATABLE=305, REPLACE=306, REPLICA=307, RESET=308, RESTART=309, RESTRICT=310, + RETURNS=311, REVOKE=312, ROLE=313, ROLLBACK=314, ROWS=315, RULE=316, SAVEPOINT=317, + SCHEMA=318, SCROLL=319, SEARCH=320, SECOND_P=321, SECURITY=322, SEQUENCE=323, + SEQUENCES=324, SERIALIZABLE=325, SERVER=326, SESSION=327, SET=328, SHARE=329, + SHOW=330, SIMPLE=331, SNAPSHOT=332, STABLE=333, STANDALONE_P=334, START=335, + STATEMENT=336, STATISTICS=337, STDIN=338, STDOUT=339, STORAGE=340, STRICT_P=341, + STRIP_P=342, SYSID=343, SYSTEM_P=344, TABLES=345, TABLESPACE=346, TEMP=347, + TEMPLATE=348, TEMPORARY=349, TEXT_P=350, TRANSACTION=351, TRIGGER=352, + TRUNCATE=353, TRUSTED=354, TYPE_P=355, TYPES_P=356, UNBOUNDED=357, UNCOMMITTED=358, + UNENCRYPTED=359, UNKNOWN=360, UNLISTEN=361, UNLOGGED=362, UNTIL=363, UPDATE=364, + VACUUM=365, VALID=366, VALIDATE=367, VALIDATOR=368, VARYING=369, VERSION_P=370, + VIEW=371, VOLATILE=372, WHITESPACE_P=373, WITHOUT=374, WORK=375, WRAPPER=376, + WRITE=377, XML_P=378, YEAR_P=379, YES_P=380, ZONE=381, BETWEEN=382, BIGINT=383, + BIT=384, BOOLEAN_P=385, CHAR_P=386, CHARACTER=387, COALESCE=388, DEC=389, + DECIMAL_P=390, EXISTS=391, EXTRACT=392, FLOAT_P=393, GREATEST=394, INOUT=395, + INT_P=396, INTEGER=397, INTERVAL=398, LEAST=399, NATIONAL=400, NCHAR=401, + NONE=402, NULLIF=403, NUMERIC=404, OVERLAY=405, POSITION=406, PRECISION=407, + REAL=408, ROW=409, SETOF=410, SMALLINT=411, SUBSTRING=412, TIME=413, TIMESTAMP=414, + TREAT=415, TRIM=416, VALUES=417, VARCHAR=418, XMLATTRIBUTES=419, XMLCOMMENT=420, + XMLAGG=421, XML_IS_WELL_FORMED=422, XML_IS_WELL_FORMED_DOCUMENT=423, XML_IS_WELL_FORMED_CONTENT=424, + XPATH=425, XPATH_EXISTS=426, XMLCONCAT=427, XMLELEMENT=428, XMLEXISTS=429, + XMLFOREST=430, XMLPARSE=431, XMLPI=432, XMLROOT=433, XMLSERIALIZE=434, + CALL=435, CURRENT_P=436, ATTACH=437, DETACH=438, EXPRESSION=439, GENERATED=440, + LOGGED=441, STORED=442, INCLUDE=443, ROUTINE=444, TRANSFORM=445, IMPORT_P=446, + POLICY=447, METHOD=448, REFERENCING=449, NEW=450, OLD=451, VALUE_P=452, + SUBSCRIPTION=453, PUBLICATION=454, OUT_P=455, END_P=456, ROUTINES=457, + SCHEMAS=458, PROCEDURES=459, INPUT_P=460, SUPPORT=461, PARALLEL=462, SQL_P=463, + DEPENDS=464, OVERRIDING=465, CONFLICT=466, SKIP_P=467, LOCKED=468, TIES=469, + ROLLUP=470, CUBE=471, GROUPING=472, SETS=473, TABLESAMPLE=474, ORDINALITY=475, + XMLTABLE=476, COLUMNS=477, XMLNAMESPACES=478, ROWTYPE=479, NORMALIZED=480, + WITHIN=481, FILTER=482, GROUPS=483, OTHERS=484, NFC=485, NFD=486, NFKC=487, + NFKD=488, UESCAPE=489, VIEWS=490, NORMALIZE=491, DUMP=492, PRINT_STRICT_PARAMS=493, + VARIABLE_CONFLICT=494, ERROR=495, USE_VARIABLE=496, USE_COLUMN=497, ALIAS=498, + CONSTANT=499, PERFORM=500, GET=501, DIAGNOSTICS=502, STACKED=503, ELSIF=504, + WHILE=505, REVERSE=506, FOREACH=507, SLICE=508, EXIT=509, RETURN=510, + QUERY=511, RAISE=512, SQLSTATE=513, DEBUG=514, LOG=515, INFO=516, NOTICE=517, + WARNING=518, EXCEPTION=519, ASSERT=520, LOOP=521, OPEN=522, ABS=523, CBRT=524, + CEIL=525, CEILING=526, DEGREES=527, DIV=528, EXP=529, FACTORIAL=530, FLOOR=531, + GCD=532, LCM=533, LN=534, LOG10=535, MIN_SCALE=536, MOD=537, PI=538, POWER=539, + RADIANS=540, ROUND=541, SCALE=542, SIGN=543, SQRT=544, TRIM_SCALE=545, + TRUNC=546, WIDTH_BUCKET=547, RANDOM=548, SETSEED=549, ACOS=550, ACOSD=551, + ASIN=552, ASIND=553, ATAN=554, ATAND=555, ATAN2=556, ATAN2D=557, COS=558, + COSD=559, COT=560, COTD=561, SIN=562, SIND=563, TAN=564, TAND=565, SINH=566, + COSH=567, TANH=568, ASINH=569, ACOSH=570, ATANH=571, BIT_LENGTH=572, CHAR_LENGTH=573, + CHARACTER_LENGTH=574, LOWER=575, OCTET_LENGTH=576, UPPER=577, ASCII=578, + BTRIM=579, CHR=580, CONCAT=581, CONCAT_WS=582, FORMAT=583, INITCAP=584, + LENGTH=585, LPAD=586, LTRIM=587, MD5=588, PARSE_IDENT=589, PG_CLIENT_ENCODING=590, + QUOTE_IDENT=591, QUOTE_LITERAL=592, QUOTE_NULLABLE=593, REGEXP_COUNT=594, + REGEXP_INSTR=595, REGEXP_LIKE=596, REGEXP_MATCH=597, REGEXP_MATCHES=598, + REGEXP_REPLACE=599, REGEXP_SPLIT_TO_ARRAY=600, REGEXP_SPLIT_TO_TABLE=601, + REGEXP_SUBSTR=602, REPEAT=603, RPAD=604, RTRIM=605, SPLIT_PART=606, STARTS_WITH=607, + STRING_TO_ARRAY=608, STRING_TO_TABLE=609, STRPOS=610, SUBSTR=611, TO_ASCII=612, + TO_HEX=613, TRANSLATE=614, UNISTR=615, AGE=616, CLOCK_TIMESTAMP=617, DATE_BIN=618, + DATE_PART=619, DATE_TRUNC=620, ISFINITE=621, JUSTIFY_DAYS=622, JUSTIFY_HOURS=623, + JUSTIFY_INTERVAL=624, MAKE_DATE=625, MAKE_INTERVAL=626, MAKE_TIME=627, + MAKE_TIMESTAMP=628, MAKE_TIMESTAMPTZ=629, NOW=630, STATEMENT_TIMESTAMP=631, + TIMEOFDAY=632, TRANSACTION_TIMESTAMP=633, TO_TIMESTAMP=634, TO_CHAR=635, + TO_DATE=636, TO_NUMBER=637, Identifier=638, QuotedIdentifier=639, UnterminatedQuotedIdentifier=640, + InvalidQuotedIdentifier=641, InvalidUnterminatedQuotedIdentifier=642, + UnicodeQuotedIdentifier=643, UnterminatedUnicodeQuotedIdentifier=644, + InvalidUnicodeQuotedIdentifier=645, InvalidUnterminatedUnicodeQuotedIdentifier=646, + StringConstant=647, UnterminatedStringConstant=648, UnicodeEscapeStringConstant=649, + UnterminatedUnicodeEscapeStringConstant=650, BeginDollarStringConstant=651, + BinaryStringConstant=652, UnterminatedBinaryStringConstant=653, InvalidBinaryStringConstant=654, + InvalidUnterminatedBinaryStringConstant=655, HexadecimalStringConstant=656, + UnterminatedHexadecimalStringConstant=657, InvalidHexadecimalStringConstant=658, + InvalidUnterminatedHexadecimalStringConstant=659, Integral=660, NumericFail=661, + Numeric=662, PLSQLVARIABLENAME=663, PLSQLIDENTIFIER=664, Whitespace=665, + Newline=666, LineComment=667, BlockComment=668, UnterminatedBlockComment=669, + MetaCommand=670, EndMetaCommand=671, ErrorCharacter=672, EscapeStringConstant=673, + UnterminatedEscapeStringConstant=674, InvalidEscapeStringConstant=675, + InvalidUnterminatedEscapeStringConstant=676, AfterEscapeStringConstantMode_NotContinued=677, + AfterEscapeStringConstantWithNewlineMode_NotContinued=678, DollarText=679, + EndDollarStringConstant=680, AfterEscapeStringConstantWithNewlineMode_Continued=681; public static final int EscapeStringConstantMode=1, AfterEscapeStringConstantMode=2, AfterEscapeStringConstantWithNewlineMode=3, DollarQuotedStringMode=4; @@ -171,23 +171,23 @@ private static String[] makeRuleNames() { "LIMIT", "LOCALTIME", "LOCALTIMESTAMP", "NOT", "NULL_P", "OFFSET", "ON", "ONLY", "OR", "ORDER", "PLACING", "PRIMARY", "REFERENCES", "RETURNING", "SELECT", "SESSION_USER", "SOME", "SYMMETRIC", "TABLE", "THEN", "TO", - "TRAILING", "TRUE_P", "UNION", "UNIQUE", "USER", "USING", "VARIADIC", - "WHEN", "WHERE", "WINDOW", "WITH", "AUTHORIZATION", "BINARY", "COLLATION", - "CONCURRENTLY", "CROSS", "CURRENT_SCHEMA", "FREEZE", "FULL", "ILIKE", - "INNER_P", "IS", "ISNULL", "JOIN", "LEFT", "LIKE", "NATURAL", "NOTNULL", - "OUTER_P", "OVER", "OVERLAPS", "RIGHT", "SIMILAR", "VERBOSE", "ABORT_P", - "ABSOLUTE_P", "ACCESS", "ACTION", "ADD_P", "ADMIN", "AFTER", "AGGREGATE", - "ALSO", "ALTER", "ALWAYS", "ASSERTION", "ASSIGNMENT", "AT", "ATTRIBUTE", - "BACKWARD", "BEFORE", "BEGIN_P", "BY", "CACHE", "CALLED", "CASCADE", - "CASCADED", "CATALOG", "CHAIN", "CHARACTERISTICS", "CHECKPOINT", "CLASS", - "CLOSE", "CLUSTER", "COMMENT", "COMMENTS", "COMMIT", "COMMITTED", "CONFIGURATION", - "CONNECTION", "CONSTRAINTS", "CONTENT_P", "CONTINUE_P", "CONVERSION_P", - "COPY", "COST", "CSV", "CURSOR", "CYCLE", "DATA_P", "DATABASE", "DAY_P", - "DEALLOCATE", "DECLARE", "DEFAULTS", "DEFERRED", "DEFINER", "DELETE_P", - "DELIMITER", "DELIMITERS", "DICTIONARY", "DISABLE_P", "DISCARD", "DOCUMENT_P", - "DOMAIN_P", "DOUBLE_P", "DROP", "EACH", "ENABLE_P", "ENCODING", "ENCRYPTED", - "ENUM_P", "ESCAPE", "EVENT", "EXCLUDE", "EXCLUDING", "EXCLUSIVE", "EXECUTE", - "EXPLAIN", "EXTENSION", "EXTERNAL", "FAMILY", "FIRST_P", "FOLLOWING", + "TOPIC", "STREAM", "TRAILING", "TRUE_P", "UNION", "UNIQUE", "USER", "USING", + "VARIADIC", "WHEN", "WHERE", "WINDOW", "WITH", "AUTHORIZATION", "BINARY", + "COLLATION", "CONCURRENTLY", "CROSS", "CURRENT_SCHEMA", "FREEZE", "FULL", + "ILIKE", "INNER_P", "IS", "ISNULL", "JOIN", "LEFT", "LIKE", "NATURAL", + "NOTNULL", "OUTER_P", "OVER", "OVERLAPS", "RIGHT", "SIMILAR", "VERBOSE", + "ABORT_P", "ABSOLUTE_P", "ACCESS", "ACTION", "ADD_P", "ADMIN", "AFTER", + "AGGREGATE", "ALSO", "ALTER", "ALWAYS", "ASSERTION", "ASSIGNMENT", "AT", + "ATTRIBUTE", "BACKWARD", "BEFORE", "BEGIN_P", "BY", "CACHE", "CALLED", + "CASCADE", "CASCADED", "CATALOG", "CHAIN", "CHARACTERISTICS", "CHECKPOINT", + "CLASS", "CLOSE", "CLUSTER", "COMMENT", "COMMENTS", "COMMIT", "COMMITTED", + "CONFIGURATION", "CONNECTION", "CONSTRAINTS", "CONTENT_P", "CONTINUE_P", + "CONVERSION_P", "COPY", "COST", "CSV", "CURSOR", "CYCLE", "DATA_P", "DATABASE", + "DAY_P", "DEALLOCATE", "DECLARE", "DEFAULTS", "DEFERRED", "DEFINER", + "DELETE_P", "DELIMITER", "DELIMITERS", "DICTIONARY", "DISABLE_P", "DISCARD", + "DOCUMENT_P", "DOMAIN_P", "DOUBLE_P", "DROP", "EACH", "ENABLE_P", "ENCODING", + "ENCRYPTED", "ENUM_P", "ESCAPE", "EVENT", "EXCLUDE", "EXCLUDING", "EXCLUSIVE", + "EXECUTE", "EXPLAIN", "EXTENSION", "EXTERNAL", "FAMILY", "FIRST_P", "FOLLOWING", "FORCE", "FORWARD", "FUNCTION", "FUNCTIONS", "GLOBAL", "GRANTED", "HANDLER", "HEADER_P", "HOLD", "HOUR_P", "IDENTITY_P", "IF_P", "IMMEDIATE", "IMMUTABLE", "IMPLICIT_P", "INCLUDING", "INCREMENT", "INDEX", "INDEXES", "INHERIT", @@ -291,25 +291,25 @@ private static String[] makeLiteralNames() { "'INTO'", "'LATERAL'", "'LEADING'", "'LIMIT'", "'LOCALTIME'", "'LOCALTIMESTAMP'", "'NOT'", "'NULL'", "'OFFSET'", "'ON'", "'ONLY'", "'OR'", "'ORDER'", "'PLACING'", "'PRIMARY'", "'REFERENCES'", "'RETURNING'", "'SELECT'", "'SESSION_USER'", - "'SOME'", "'SYMMETRIC'", "'TABLE'", "'THEN'", "'TO'", "'TRAILING'", "'TRUE'", - "'UNION'", "'UNIQUE'", "'USER'", "'USING'", "'VARIADIC'", "'WHEN'", "'WHERE'", - "'WINDOW'", "'WITH'", "'AUTHORIZATION'", "'BINARY'", "'COLLATION'", "'CONCURRENTLY'", - "'CROSS'", "'CURRENT_SCHEMA'", "'FREEZE'", "'FULL'", "'ILIKE'", "'INNER'", - "'IS'", "'ISNULL'", "'JOIN'", "'LEFT'", "'LIKE'", "'NATURAL'", "'NOTNULL'", - "'OUTER'", "'OVER'", "'OVERLAPS'", "'RIGHT'", "'SIMILAR'", "'VERBOSE'", - "'ABORT'", "'ABSOLUTE'", "'ACCESS'", "'ACTION'", "'ADD'", "'ADMIN'", - "'AFTER'", "'AGGREGATE'", "'ALSO'", "'ALTER'", "'ALWAYS'", "'ASSERTION'", - "'ASSIGNMENT'", "'AT'", "'ATTRIBUTE'", "'BACKWARD'", "'BEFORE'", "'BEGIN'", - "'BY'", "'CACHE'", "'CALLED'", "'CASCADE'", "'CASCADED'", "'CATALOG'", - "'CHAIN'", "'CHARACTERISTICS'", "'CHECKPOINT'", "'CLASS'", "'CLOSE'", - "'CLUSTER'", "'COMMENT'", "'COMMENTS'", "'COMMIT'", "'COMMITTED'", "'CONFIGURATION'", - "'CONNECTION'", "'CONSTRAINTS'", "'CONTENT'", "'CONTINUE'", "'CONVERSION'", - "'COPY'", "'COST'", "'CSV'", "'CURSOR'", "'CYCLE'", "'DATA'", "'DATABASE'", - "'DAY'", "'DEALLOCATE'", "'DECLARE'", "'DEFAULTS'", "'DEFERRED'", "'DEFINER'", - "'DELETE'", "'DELIMITER'", "'DELIMITERS'", "'DICTIONARY'", "'DISABLE'", - "'DISCARD'", "'DOCUMENT'", "'DOMAIN'", "'DOUBLE'", "'DROP'", "'EACH'", - "'ENABLE'", "'ENCODING'", "'ENCRYPTED'", "'ENUM'", "'ESCAPE'", "'EVENT'", - "'EXCLUDE'", "'EXCLUDING'", "'EXCLUSIVE'", "'EXECUTE'", "'EXPLAIN'", + "'SOME'", "'SYMMETRIC'", "'TABLE'", "'THEN'", "'TO'", "'TOPIC'", "'STREAM'", + "'TRAILING'", "'TRUE'", "'UNION'", "'UNIQUE'", "'USER'", "'USING'", "'VARIADIC'", + "'WHEN'", "'WHERE'", "'WINDOW'", "'WITH'", "'AUTHORIZATION'", "'BINARY'", + "'COLLATION'", "'CONCURRENTLY'", "'CROSS'", "'CURRENT_SCHEMA'", "'FREEZE'", + "'FULL'", "'ILIKE'", "'INNER'", "'IS'", "'ISNULL'", "'JOIN'", "'LEFT'", + "'LIKE'", "'NATURAL'", "'NOTNULL'", "'OUTER'", "'OVER'", "'OVERLAPS'", + "'RIGHT'", "'SIMILAR'", "'VERBOSE'", "'ABORT'", "'ABSOLUTE'", "'ACCESS'", + "'ACTION'", "'ADD'", "'ADMIN'", "'AFTER'", "'AGGREGATE'", "'ALSO'", "'ALTER'", + "'ALWAYS'", "'ASSERTION'", "'ASSIGNMENT'", "'AT'", "'ATTRIBUTE'", "'BACKWARD'", + "'BEFORE'", "'BEGIN'", "'BY'", "'CACHE'", "'CALLED'", "'CASCADE'", "'CASCADED'", + "'CATALOG'", "'CHAIN'", "'CHARACTERISTICS'", "'CHECKPOINT'", "'CLASS'", + "'CLOSE'", "'CLUSTER'", "'COMMENT'", "'COMMENTS'", "'COMMIT'", "'COMMITTED'", + "'CONFIGURATION'", "'CONNECTION'", "'CONSTRAINTS'", "'CONTENT'", "'CONTINUE'", + "'CONVERSION'", "'COPY'", "'COST'", "'CSV'", "'CURSOR'", "'CYCLE'", "'DATA'", + "'DATABASE'", "'DAY'", "'DEALLOCATE'", "'DECLARE'", "'DEFAULTS'", "'DEFERRED'", + "'DEFINER'", "'DELETE'", "'DELIMITER'", "'DELIMITERS'", "'DICTIONARY'", + "'DISABLE'", "'DISCARD'", "'DOCUMENT'", "'DOMAIN'", "'DOUBLE'", "'DROP'", + "'EACH'", "'ENABLE'", "'ENCODING'", "'ENCRYPTED'", "'ENUM'", "'ESCAPE'", + "'EVENT'", "'EXCLUDE'", "'EXCLUDING'", "'EXCLUSIVE'", "'EXECUTE'", "'EXPLAIN'", "'EXTENSION'", "'EXTERNAL'", "'FAMILY'", "'FIRST'", "'FOLLOWING'", "'FORCE'", "'FORWARD'", "'FUNCTION'", "'FUNCTIONS'", "'GLOBAL'", "'GRANTED'", "'HANDLER'", "'HEADER'", "'HOLD'", "'HOUR'", "'IDENTITY'", "'IF'", "'IMMEDIATE'", @@ -409,23 +409,23 @@ private static String[] makeSymbolicNames() { "LIMIT", "LOCALTIME", "LOCALTIMESTAMP", "NOT", "NULL_P", "OFFSET", "ON", "ONLY", "OR", "ORDER", "PLACING", "PRIMARY", "REFERENCES", "RETURNING", "SELECT", "SESSION_USER", "SOME", "SYMMETRIC", "TABLE", "THEN", "TO", - "TRAILING", "TRUE_P", "UNION", "UNIQUE", "USER", "USING", "VARIADIC", - "WHEN", "WHERE", "WINDOW", "WITH", "AUTHORIZATION", "BINARY", "COLLATION", - "CONCURRENTLY", "CROSS", "CURRENT_SCHEMA", "FREEZE", "FULL", "ILIKE", - "INNER_P", "IS", "ISNULL", "JOIN", "LEFT", "LIKE", "NATURAL", "NOTNULL", - "OUTER_P", "OVER", "OVERLAPS", "RIGHT", "SIMILAR", "VERBOSE", "ABORT_P", - "ABSOLUTE_P", "ACCESS", "ACTION", "ADD_P", "ADMIN", "AFTER", "AGGREGATE", - "ALSO", "ALTER", "ALWAYS", "ASSERTION", "ASSIGNMENT", "AT", "ATTRIBUTE", - "BACKWARD", "BEFORE", "BEGIN_P", "BY", "CACHE", "CALLED", "CASCADE", - "CASCADED", "CATALOG", "CHAIN", "CHARACTERISTICS", "CHECKPOINT", "CLASS", - "CLOSE", "CLUSTER", "COMMENT", "COMMENTS", "COMMIT", "COMMITTED", "CONFIGURATION", - "CONNECTION", "CONSTRAINTS", "CONTENT_P", "CONTINUE_P", "CONVERSION_P", - "COPY", "COST", "CSV", "CURSOR", "CYCLE", "DATA_P", "DATABASE", "DAY_P", - "DEALLOCATE", "DECLARE", "DEFAULTS", "DEFERRED", "DEFINER", "DELETE_P", - "DELIMITER", "DELIMITERS", "DICTIONARY", "DISABLE_P", "DISCARD", "DOCUMENT_P", - "DOMAIN_P", "DOUBLE_P", "DROP", "EACH", "ENABLE_P", "ENCODING", "ENCRYPTED", - "ENUM_P", "ESCAPE", "EVENT", "EXCLUDE", "EXCLUDING", "EXCLUSIVE", "EXECUTE", - "EXPLAIN", "EXTENSION", "EXTERNAL", "FAMILY", "FIRST_P", "FOLLOWING", + "TOPIC", "STREAM", "TRAILING", "TRUE_P", "UNION", "UNIQUE", "USER", "USING", + "VARIADIC", "WHEN", "WHERE", "WINDOW", "WITH", "AUTHORIZATION", "BINARY", + "COLLATION", "CONCURRENTLY", "CROSS", "CURRENT_SCHEMA", "FREEZE", "FULL", + "ILIKE", "INNER_P", "IS", "ISNULL", "JOIN", "LEFT", "LIKE", "NATURAL", + "NOTNULL", "OUTER_P", "OVER", "OVERLAPS", "RIGHT", "SIMILAR", "VERBOSE", + "ABORT_P", "ABSOLUTE_P", "ACCESS", "ACTION", "ADD_P", "ADMIN", "AFTER", + "AGGREGATE", "ALSO", "ALTER", "ALWAYS", "ASSERTION", "ASSIGNMENT", "AT", + "ATTRIBUTE", "BACKWARD", "BEFORE", "BEGIN_P", "BY", "CACHE", "CALLED", + "CASCADE", "CASCADED", "CATALOG", "CHAIN", "CHARACTERISTICS", "CHECKPOINT", + "CLASS", "CLOSE", "CLUSTER", "COMMENT", "COMMENTS", "COMMIT", "COMMITTED", + "CONFIGURATION", "CONNECTION", "CONSTRAINTS", "CONTENT_P", "CONTINUE_P", + "CONVERSION_P", "COPY", "COST", "CSV", "CURSOR", "CYCLE", "DATA_P", "DATABASE", + "DAY_P", "DEALLOCATE", "DECLARE", "DEFAULTS", "DEFERRED", "DEFINER", + "DELETE_P", "DELIMITER", "DELIMITERS", "DICTIONARY", "DISABLE_P", "DISCARD", + "DOCUMENT_P", "DOMAIN_P", "DOUBLE_P", "DROP", "EACH", "ENABLE_P", "ENCODING", + "ENCRYPTED", "ENUM_P", "ESCAPE", "EVENT", "EXCLUDE", "EXCLUDING", "EXCLUSIVE", + "EXECUTE", "EXPLAIN", "EXTENSION", "EXTERNAL", "FAMILY", "FIRST_P", "FOLLOWING", "FORCE", "FORWARD", "FUNCTION", "FUNCTIONS", "GLOBAL", "GRANTED", "HANDLER", "HEADER_P", "HOLD", "HOUR_P", "IDENTITY_P", "IF_P", "IMMEDIATE", "IMMUTABLE", "IMPLICIT_P", "INCLUDING", "INCREMENT", "INDEX", "INDEXES", "INHERIT", @@ -575,22 +575,22 @@ public void action(RuleContext _localctx, int ruleIndex, int actionIndex) { case 28: Operator_action((RuleContext)_localctx, actionIndex); break; - case 656: + case 658: BeginDollarStringConstant_action((RuleContext)_localctx, actionIndex); break; - case 667: + case 669: NumericFail_action((RuleContext)_localctx, actionIndex); break; - case 676: + case 678: UnterminatedBlockComment_action((RuleContext)_localctx, actionIndex); break; - case 688: + case 690: AfterEscapeStringConstantMode_NotContinued_action((RuleContext)_localctx, actionIndex); break; - case 692: + case 694: AfterEscapeStringConstantWithNewlineMode_NotContinued_action((RuleContext)_localctx, actionIndex); break; - case 694: + case 696: EndDollarStringConstant_action((RuleContext)_localctx, actionIndex); break; } @@ -653,9 +653,9 @@ public boolean sempred(RuleContext _localctx, int ruleIndex, int predIndex) { return Operator_sempred((RuleContext)_localctx, predIndex); case 29: return OperatorEndingWithPlusMinus_sempred((RuleContext)_localctx, predIndex); - case 640: + case 642: return IdentifierStartChar_sempred((RuleContext)_localctx, predIndex); - case 694: + case 696: return EndDollarStringConstant_sempred((RuleContext)_localctx, predIndex); } return true; @@ -702,7 +702,7 @@ private boolean EndDollarStringConstant_sempred(RuleContext _localctx, int predI } private static final String _serializedATNSegment0 = - "\u0004\u0000\u02a7\u1a87\u0006\uffff\uffff\u0006\uffff\uffff\u0006\uffff"+ + "\u0004\u0000\u02a9\u1a98\u0006\uffff\uffff\u0006\uffff\uffff\u0006\uffff"+ "\uffff\u0006\uffff\uffff\u0006\uffff\uffff\u0002\u0000\u0007\u0000\u0002"+ "\u0001\u0007\u0001\u0002\u0002\u0007\u0002\u0002\u0003\u0007\u0003\u0002"+ "\u0004\u0007\u0004\u0002\u0005\u0007\u0005\u0002\u0006\u0007\u0006\u0002"+ @@ -922,860 +922,863 @@ private boolean EndDollarStringConstant_sempred(RuleContext _localctx, int predI "\u0002\u02ae\u0007\u02ae\u0002\u02af\u0007\u02af\u0002\u02b0\u0007\u02b0"+ "\u0002\u02b1\u0007\u02b1\u0002\u02b2\u0007\u02b2\u0002\u02b3\u0007\u02b3"+ "\u0002\u02b4\u0007\u02b4\u0002\u02b5\u0007\u02b5\u0002\u02b6\u0007\u02b6"+ - "\u0001\u0000\u0001\u0000\u0001\u0001\u0001\u0001\u0001\u0002\u0001\u0002"+ - "\u0001\u0003\u0001\u0003\u0001\u0004\u0001\u0004\u0001\u0005\u0001\u0005"+ - "\u0001\u0006\u0001\u0006\u0001\u0007\u0001\u0007\u0001\b\u0001\b\u0001"+ - "\t\u0001\t\u0001\n\u0001\n\u0001\u000b\u0001\u000b\u0001\f\u0001\f\u0001"+ - "\r\u0001\r\u0001\u000e\u0001\u000e\u0001\u000f\u0001\u000f\u0001\u0010"+ - "\u0001\u0010\u0001\u0011\u0001\u0011\u0001\u0011\u0001\u0012\u0001\u0012"+ - "\u0001\u0012\u0001\u0013\u0001\u0013\u0001\u0013\u0001\u0014\u0001\u0014"+ - "\u0001\u0014\u0001\u0015\u0001\u0015\u0001\u0015\u0001\u0016\u0001\u0016"+ - "\u0001\u0016\u0001\u0017\u0001\u0017\u0001\u0017\u0001\u0018\u0001\u0018"+ - "\u0001\u0018\u0001\u0019\u0001\u0019\u0001\u0019\u0001\u001a\u0001\u001a"+ - "\u0001\u001b\u0001\u001b\u0004\u001b\u05b5\b\u001b\u000b\u001b\f\u001b"+ - "\u05b6\u0001\u001c\u0001\u001c\u0001\u001c\u0001\u001c\u0004\u001c\u05bd"+ - "\b\u001c\u000b\u001c\f\u001c\u05be\u0001\u001c\u0001\u001c\u0001\u001c"+ - "\u0003\u001c\u05c4\b\u001c\u0001\u001c\u0001\u001c\u0004\u001c\u05c8\b"+ - "\u001c\u000b\u001c\f\u001c\u05c9\u0001\u001c\u0003\u001c\u05cd\b\u001c"+ - "\u0001\u001c\u0001\u001c\u0001\u001d\u0001\u001d\u0001\u001d\u0001\u001d"+ - "\u0001\u001d\u0005\u001d\u05d6\b\u001d\n\u001d\f\u001d\u05d9\t\u001d\u0001"+ - "\u001d\u0001\u001d\u0003\u001d\u05dd\b\u001d\u0001\u001d\u0001\u001d\u0001"+ - "\u001d\u0004\u001d\u05e2\b\u001d\u000b\u001d\f\u001d\u05e3\u0001\u001d"+ - "\u0001\u001d\u0001\u001e\u0001\u001e\u0001\u001f\u0001\u001f\u0001 \u0001"+ - " \u0001!\u0001!\u0001!\u0001!\u0001\"\u0001\"\u0001\"\u0001\"\u0001\""+ - "\u0001\"\u0001\"\u0001\"\u0001#\u0001#\u0001#\u0001#\u0001#\u0001#\u0001"+ - "#\u0001#\u0001$\u0001$\u0001$\u0001$\u0001%\u0001%\u0001%\u0001%\u0001"+ - "&\u0001&\u0001&\u0001&\u0001&\u0001&\u0001\'\u0001\'\u0001\'\u0001(\u0001"+ - "(\u0001(\u0001(\u0001)\u0001)\u0001)\u0001)\u0001)\u0001)\u0001)\u0001"+ - ")\u0001)\u0001)\u0001)\u0001*\u0001*\u0001*\u0001*\u0001*\u0001+\u0001"+ - "+\u0001+\u0001+\u0001+\u0001,\u0001,\u0001,\u0001,\u0001,\u0001-\u0001"+ - "-\u0001-\u0001-\u0001-\u0001-\u0001.\u0001.\u0001.\u0001.\u0001.\u0001"+ - ".\u0001.\u0001.\u0001/\u0001/\u0001/\u0001/\u0001/\u0001/\u0001/\u0001"+ - "0\u00010\u00010\u00010\u00010\u00010\u00010\u00010\u00010\u00010\u0001"+ - "0\u00011\u00011\u00011\u00011\u00011\u00011\u00011\u00012\u00012\u0001"+ + "\u0002\u02b7\u0007\u02b7\u0002\u02b8\u0007\u02b8\u0001\u0000\u0001\u0000"+ + "\u0001\u0001\u0001\u0001\u0001\u0002\u0001\u0002\u0001\u0003\u0001\u0003"+ + "\u0001\u0004\u0001\u0004\u0001\u0005\u0001\u0005\u0001\u0006\u0001\u0006"+ + "\u0001\u0007\u0001\u0007\u0001\b\u0001\b\u0001\t\u0001\t\u0001\n\u0001"+ + "\n\u0001\u000b\u0001\u000b\u0001\f\u0001\f\u0001\r\u0001\r\u0001\u000e"+ + "\u0001\u000e\u0001\u000f\u0001\u000f\u0001\u0010\u0001\u0010\u0001\u0011"+ + "\u0001\u0011\u0001\u0011\u0001\u0012\u0001\u0012\u0001\u0012\u0001\u0013"+ + "\u0001\u0013\u0001\u0013\u0001\u0014\u0001\u0014\u0001\u0014\u0001\u0015"+ + "\u0001\u0015\u0001\u0015\u0001\u0016\u0001\u0016\u0001\u0016\u0001\u0017"+ + "\u0001\u0017\u0001\u0017\u0001\u0018\u0001\u0018\u0001\u0018\u0001\u0019"+ + "\u0001\u0019\u0001\u0019\u0001\u001a\u0001\u001a\u0001\u001b\u0001\u001b"+ + "\u0004\u001b\u05b9\b\u001b\u000b\u001b\f\u001b\u05ba\u0001\u001c\u0001"+ + "\u001c\u0001\u001c\u0001\u001c\u0004\u001c\u05c1\b\u001c\u000b\u001c\f"+ + "\u001c\u05c2\u0001\u001c\u0001\u001c\u0001\u001c\u0003\u001c\u05c8\b\u001c"+ + "\u0001\u001c\u0001\u001c\u0004\u001c\u05cc\b\u001c\u000b\u001c\f\u001c"+ + "\u05cd\u0001\u001c\u0003\u001c\u05d1\b\u001c\u0001\u001c\u0001\u001c\u0001"+ + "\u001d\u0001\u001d\u0001\u001d\u0001\u001d\u0001\u001d\u0005\u001d\u05da"+ + "\b\u001d\n\u001d\f\u001d\u05dd\t\u001d\u0001\u001d\u0001\u001d\u0003\u001d"+ + "\u05e1\b\u001d\u0001\u001d\u0001\u001d\u0001\u001d\u0004\u001d\u05e6\b"+ + "\u001d\u000b\u001d\f\u001d\u05e7\u0001\u001d\u0001\u001d\u0001\u001e\u0001"+ + "\u001e\u0001\u001f\u0001\u001f\u0001 \u0001 \u0001!\u0001!\u0001!\u0001"+ + "!\u0001\"\u0001\"\u0001\"\u0001\"\u0001\"\u0001\"\u0001\"\u0001\"\u0001"+ + "#\u0001#\u0001#\u0001#\u0001#\u0001#\u0001#\u0001#\u0001$\u0001$\u0001"+ + "$\u0001$\u0001%\u0001%\u0001%\u0001%\u0001&\u0001&\u0001&\u0001&\u0001"+ + "&\u0001&\u0001\'\u0001\'\u0001\'\u0001(\u0001(\u0001(\u0001(\u0001)\u0001"+ + ")\u0001)\u0001)\u0001)\u0001)\u0001)\u0001)\u0001)\u0001)\u0001)\u0001"+ + "*\u0001*\u0001*\u0001*\u0001*\u0001+\u0001+\u0001+\u0001+\u0001+\u0001"+ + ",\u0001,\u0001,\u0001,\u0001,\u0001-\u0001-\u0001-\u0001-\u0001-\u0001"+ + "-\u0001.\u0001.\u0001.\u0001.\u0001.\u0001.\u0001.\u0001.\u0001/\u0001"+ + "/\u0001/\u0001/\u0001/\u0001/\u0001/\u00010\u00010\u00010\u00010\u0001"+ + "0\u00010\u00010\u00010\u00010\u00010\u00010\u00011\u00011\u00011\u0001"+ + "1\u00011\u00011\u00011\u00012\u00012\u00012\u00012\u00012\u00012\u0001"+ "2\u00012\u00012\u00012\u00012\u00012\u00012\u00012\u00012\u00012\u0001"+ - "2\u00012\u00012\u00012\u00013\u00013\u00013\u00013\u00013\u00013\u0001"+ - "3\u00013\u00013\u00013\u00013\u00013\u00013\u00014\u00014\u00014\u0001"+ - "4\u00014\u00014\u00014\u00014\u00014\u00014\u00014\u00014\u00014\u0001"+ - "5\u00015\u00015\u00015\u00015\u00015\u00015\u00015\u00015\u00015\u0001"+ - "5\u00015\u00015\u00016\u00016\u00016\u00016\u00016\u00016\u00016\u0001"+ + "3\u00013\u00013\u00013\u00013\u00013\u00013\u00013\u00013\u00013\u0001"+ + "3\u00013\u00013\u00014\u00014\u00014\u00014\u00014\u00014\u00014\u0001"+ + "4\u00014\u00014\u00014\u00014\u00014\u00015\u00015\u00015\u00015\u0001"+ + "5\u00015\u00015\u00015\u00015\u00015\u00015\u00015\u00015\u00016\u0001"+ "6\u00016\u00016\u00016\u00016\u00016\u00016\u00016\u00016\u00016\u0001"+ - "6\u00017\u00017\u00017\u00017\u00017\u00017\u00017\u00017\u00017\u0001"+ - "7\u00017\u00017\u00017\u00018\u00018\u00018\u00018\u00018\u00018\u0001"+ - "8\u00018\u00019\u00019\u00019\u00019\u00019\u00019\u00019\u00019\u0001"+ - "9\u00019\u00019\u0001:\u0001:\u0001:\u0001:\u0001:\u0001;\u0001;\u0001"+ - ";\u0001;\u0001;\u0001;\u0001;\u0001;\u0001;\u0001<\u0001<\u0001<\u0001"+ - "=\u0001=\u0001=\u0001=\u0001=\u0001>\u0001>\u0001>\u0001>\u0001>\u0001"+ - ">\u0001>\u0001?\u0001?\u0001?\u0001?\u0001?\u0001?\u0001@\u0001@\u0001"+ - "@\u0001@\u0001@\u0001@\u0001A\u0001A\u0001A\u0001A\u0001B\u0001B\u0001"+ - "B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001C\u0001C\u0001C\u0001C\u0001"+ - "C\u0001D\u0001D\u0001D\u0001D\u0001D\u0001D\u0001E\u0001E\u0001E\u0001"+ - "E\u0001E\u0001E\u0001F\u0001F\u0001F\u0001F\u0001F\u0001F\u0001F\u0001"+ - "G\u0001G\u0001G\u0001H\u0001H\u0001H\u0001H\u0001H\u0001H\u0001H\u0001"+ - "H\u0001H\u0001H\u0001I\u0001I\u0001I\u0001I\u0001I\u0001I\u0001I\u0001"+ - "I\u0001I\u0001I\u0001J\u0001J\u0001J\u0001J\u0001J\u0001K\u0001K\u0001"+ - "K\u0001K\u0001K\u0001K\u0001K\u0001K\u0001L\u0001L\u0001L\u0001L\u0001"+ - "L\u0001L\u0001L\u0001L\u0001M\u0001M\u0001M\u0001M\u0001M\u0001M\u0001"+ - "N\u0001N\u0001N\u0001N\u0001N\u0001N\u0001N\u0001N\u0001N\u0001N\u0001"+ + "6\u00016\u00016\u00016\u00016\u00016\u00016\u00017\u00017\u00017\u0001"+ + "7\u00017\u00017\u00017\u00017\u00017\u00017\u00017\u00017\u00017\u0001"+ + "8\u00018\u00018\u00018\u00018\u00018\u00018\u00018\u00019\u00019\u0001"+ + "9\u00019\u00019\u00019\u00019\u00019\u00019\u00019\u00019\u0001:\u0001"+ + ":\u0001:\u0001:\u0001:\u0001;\u0001;\u0001;\u0001;\u0001;\u0001;\u0001"+ + ";\u0001;\u0001;\u0001<\u0001<\u0001<\u0001=\u0001=\u0001=\u0001=\u0001"+ + "=\u0001>\u0001>\u0001>\u0001>\u0001>\u0001>\u0001>\u0001?\u0001?\u0001"+ + "?\u0001?\u0001?\u0001?\u0001@\u0001@\u0001@\u0001@\u0001@\u0001@\u0001"+ + "A\u0001A\u0001A\u0001A\u0001B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001"+ + "B\u0001B\u0001C\u0001C\u0001C\u0001C\u0001C\u0001D\u0001D\u0001D\u0001"+ + "D\u0001D\u0001D\u0001E\u0001E\u0001E\u0001E\u0001E\u0001E\u0001F\u0001"+ + "F\u0001F\u0001F\u0001F\u0001F\u0001F\u0001G\u0001G\u0001G\u0001H\u0001"+ + "H\u0001H\u0001H\u0001H\u0001H\u0001H\u0001H\u0001H\u0001H\u0001I\u0001"+ + "I\u0001I\u0001I\u0001I\u0001I\u0001I\u0001I\u0001I\u0001I\u0001J\u0001"+ + "J\u0001J\u0001J\u0001J\u0001K\u0001K\u0001K\u0001K\u0001K\u0001K\u0001"+ + "K\u0001K\u0001L\u0001L\u0001L\u0001L\u0001L\u0001L\u0001L\u0001L\u0001"+ + "M\u0001M\u0001M\u0001M\u0001M\u0001M\u0001N\u0001N\u0001N\u0001N\u0001"+ + "N\u0001N\u0001N\u0001N\u0001N\u0001N\u0001O\u0001O\u0001O\u0001O\u0001"+ "O\u0001O\u0001O\u0001O\u0001O\u0001O\u0001O\u0001O\u0001O\u0001O\u0001"+ - "O\u0001O\u0001O\u0001O\u0001O\u0001P\u0001P\u0001P\u0001P\u0001Q\u0001"+ - "Q\u0001Q\u0001Q\u0001Q\u0001R\u0001R\u0001R\u0001R\u0001R\u0001R\u0001"+ - "R\u0001S\u0001S\u0001S\u0001T\u0001T\u0001T\u0001T\u0001T\u0001U\u0001"+ - "U\u0001U\u0001V\u0001V\u0001V\u0001V\u0001V\u0001V\u0001W\u0001W\u0001"+ - "W\u0001W\u0001W\u0001W\u0001W\u0001W\u0001X\u0001X\u0001X\u0001X\u0001"+ - "X\u0001X\u0001X\u0001X\u0001Y\u0001Y\u0001Y\u0001Y\u0001Y\u0001Y\u0001"+ - "Y\u0001Y\u0001Y\u0001Y\u0001Y\u0001Z\u0001Z\u0001Z\u0001Z\u0001Z\u0001"+ - "Z\u0001Z\u0001Z\u0001Z\u0001Z\u0001[\u0001[\u0001[\u0001[\u0001[\u0001"+ - "[\u0001[\u0001\\\u0001\\\u0001\\\u0001\\\u0001\\\u0001\\\u0001\\\u0001"+ - "\\\u0001\\\u0001\\\u0001\\\u0001\\\u0001\\\u0001]\u0001]\u0001]\u0001"+ - "]\u0001]\u0001^\u0001^\u0001^\u0001^\u0001^\u0001^\u0001^\u0001^\u0001"+ - "^\u0001^\u0001_\u0001_\u0001_\u0001_\u0001_\u0001_\u0001`\u0001`\u0001"+ - "`\u0001`\u0001`\u0001a\u0001a\u0001a\u0001b\u0001b\u0001b\u0001b\u0001"+ - "b\u0001b\u0001b\u0001b\u0001b\u0001c\u0001c\u0001c\u0001c\u0001c\u0001"+ - "d\u0001d\u0001d\u0001d\u0001d\u0001d\u0001e\u0001e\u0001e\u0001e\u0001"+ - "e\u0001e\u0001e\u0001f\u0001f\u0001f\u0001f\u0001f\u0001g\u0001g\u0001"+ - "g\u0001g\u0001g\u0001g\u0001h\u0001h\u0001h\u0001h\u0001h\u0001h\u0001"+ - "h\u0001h\u0001h\u0001i\u0001i\u0001i\u0001i\u0001i\u0001j\u0001j\u0001"+ - "j\u0001j\u0001j\u0001j\u0001k\u0001k\u0001k\u0001k\u0001k\u0001k\u0001"+ - "k\u0001l\u0001l\u0001l\u0001l\u0001l\u0001m\u0001m\u0001m\u0001m\u0001"+ - "m\u0001m\u0001m\u0001m\u0001m\u0001m\u0001m\u0001m\u0001m\u0001m\u0001"+ - "n\u0001n\u0001n\u0001n\u0001n\u0001n\u0001n\u0001o\u0001o\u0001o\u0001"+ - "o\u0001o\u0001o\u0001o\u0001o\u0001o\u0001o\u0001p\u0001p\u0001p\u0001"+ - "p\u0001p\u0001p\u0001p\u0001p\u0001p\u0001p\u0001p\u0001p\u0001p\u0001"+ - "q\u0001q\u0001q\u0001q\u0001q\u0001q\u0001r\u0001r\u0001r\u0001r\u0001"+ - "r\u0001r\u0001r\u0001r\u0001r\u0001r\u0001r\u0001r\u0001r\u0001r\u0001"+ - "r\u0001s\u0001s\u0001s\u0001s\u0001s\u0001s\u0001s\u0001t\u0001t\u0001"+ - "t\u0001t\u0001t\u0001u\u0001u\u0001u\u0001u\u0001u\u0001u\u0001v\u0001"+ - "v\u0001v\u0001v\u0001v\u0001v\u0001w\u0001w\u0001w\u0001x\u0001x\u0001"+ - "x\u0001x\u0001x\u0001x\u0001x\u0001y\u0001y\u0001y\u0001y\u0001y\u0001"+ - "z\u0001z\u0001z\u0001z\u0001z\u0001{\u0001{\u0001{\u0001{\u0001{\u0001"+ - "|\u0001|\u0001|\u0001|\u0001|\u0001|\u0001|\u0001|\u0001}\u0001}\u0001"+ - "}\u0001}\u0001}\u0001}\u0001}\u0001}\u0001~\u0001~\u0001~\u0001~\u0001"+ - "~\u0001~\u0001\u007f\u0001\u007f\u0001\u007f\u0001\u007f\u0001\u007f\u0001"+ - "\u0080\u0001\u0080\u0001\u0080\u0001\u0080\u0001\u0080\u0001\u0080\u0001"+ - "\u0080\u0001\u0080\u0001\u0080\u0001\u0081\u0001\u0081\u0001\u0081\u0001"+ - "\u0081\u0001\u0081\u0001\u0081\u0001\u0082\u0001\u0082\u0001\u0082\u0001"+ - "\u0082\u0001\u0082\u0001\u0082\u0001\u0082\u0001\u0082\u0001\u0083\u0001"+ - "\u0083\u0001\u0083\u0001\u0083\u0001\u0083\u0001\u0083\u0001\u0083\u0001"+ - "\u0083\u0001\u0084\u0001\u0084\u0001\u0084\u0001\u0084\u0001\u0084\u0001"+ - "\u0084\u0001\u0085\u0001\u0085\u0001\u0085\u0001\u0085\u0001\u0085\u0001"+ - "\u0085\u0001\u0085\u0001\u0085\u0001\u0085\u0001\u0086\u0001\u0086\u0001"+ - "\u0086\u0001\u0086\u0001\u0086\u0001\u0086\u0001\u0086\u0001\u0087\u0001"+ - "\u0087\u0001\u0087\u0001\u0087\u0001\u0087\u0001\u0087\u0001\u0087\u0001"+ - "\u0088\u0001\u0088\u0001\u0088\u0001\u0088\u0001\u0089\u0001\u0089\u0001"+ - "\u0089\u0001\u0089\u0001\u0089\u0001\u0089\u0001\u008a\u0001\u008a\u0001"+ - "\u008a\u0001\u008a\u0001\u008a\u0001\u008a\u0001\u008b\u0001\u008b\u0001"+ - "\u008b\u0001\u008b\u0001\u008b\u0001\u008b\u0001\u008b\u0001\u008b\u0001"+ - "\u008b\u0001\u008b\u0001\u008c\u0001\u008c\u0001\u008c\u0001\u008c\u0001"+ - "\u008c\u0001\u008d\u0001\u008d\u0001\u008d\u0001\u008d\u0001\u008d\u0001"+ - "\u008d\u0001\u008e\u0001\u008e\u0001\u008e\u0001\u008e\u0001\u008e\u0001"+ - "\u008e\u0001\u008e\u0001\u008f\u0001\u008f\u0001\u008f\u0001\u008f\u0001"+ - "\u008f\u0001\u008f\u0001\u008f\u0001\u008f\u0001\u008f\u0001\u008f\u0001"+ - "\u0090\u0001\u0090\u0001\u0090\u0001\u0090\u0001\u0090\u0001\u0090\u0001"+ - "\u0090\u0001\u0090\u0001\u0090\u0001\u0090\u0001\u0090\u0001\u0091\u0001"+ - "\u0091\u0001\u0091\u0001\u0092\u0001\u0092\u0001\u0092\u0001\u0092\u0001"+ - "\u0092\u0001\u0092\u0001\u0092\u0001\u0092\u0001\u0092\u0001\u0092\u0001"+ - "\u0093\u0001\u0093\u0001\u0093\u0001\u0093\u0001\u0093\u0001\u0093\u0001"+ - "\u0093\u0001\u0093\u0001\u0093\u0001\u0094\u0001\u0094\u0001\u0094\u0001"+ - "\u0094\u0001\u0094\u0001\u0094\u0001\u0094\u0001\u0095\u0001\u0095\u0001"+ - "\u0095\u0001\u0095\u0001\u0095\u0001\u0095\u0001\u0096\u0001\u0096\u0001"+ - "\u0096\u0001\u0097\u0001\u0097\u0001\u0097\u0001\u0097\u0001\u0097\u0001"+ - "\u0097\u0001\u0098\u0001\u0098\u0001\u0098\u0001\u0098\u0001\u0098\u0001"+ - "\u0098\u0001\u0098\u0001\u0099\u0001\u0099\u0001\u0099\u0001\u0099\u0001"+ - "\u0099\u0001\u0099\u0001\u0099\u0001\u0099\u0001\u009a\u0001\u009a\u0001"+ - "\u009a\u0001\u009a\u0001\u009a\u0001\u009a\u0001\u009a\u0001\u009a\u0001"+ - "\u009a\u0001\u009b\u0001\u009b\u0001\u009b\u0001\u009b\u0001\u009b\u0001"+ - "\u009b\u0001\u009b\u0001\u009b\u0001\u009c\u0001\u009c\u0001\u009c\u0001"+ - "\u009c\u0001\u009c\u0001\u009c\u0001\u009d\u0001\u009d\u0001\u009d\u0001"+ - "\u009d\u0001\u009d\u0001\u009d\u0001\u009d\u0001\u009d\u0001\u009d\u0001"+ - "\u009d\u0001\u009d\u0001\u009d\u0001\u009d\u0001\u009d\u0001\u009d\u0001"+ - "\u009d\u0001\u009e\u0001\u009e\u0001\u009e\u0001\u009e\u0001\u009e\u0001"+ - "\u009e\u0001\u009e\u0001\u009e\u0001\u009e\u0001\u009e\u0001\u009e\u0001"+ - "\u009f\u0001\u009f\u0001\u009f\u0001\u009f\u0001\u009f\u0001\u009f\u0001"+ - "\u00a0\u0001\u00a0\u0001\u00a0\u0001\u00a0\u0001\u00a0\u0001\u00a0\u0001"+ - "\u00a1\u0001\u00a1\u0001\u00a1\u0001\u00a1\u0001\u00a1\u0001\u00a1\u0001"+ - "\u00a1\u0001\u00a1\u0001\u00a2\u0001\u00a2\u0001\u00a2\u0001\u00a2\u0001"+ - "\u00a2\u0001\u00a2\u0001\u00a2\u0001\u00a2\u0001\u00a3\u0001\u00a3\u0001"+ - "\u00a3\u0001\u00a3\u0001\u00a3\u0001\u00a3\u0001\u00a3\u0001\u00a3\u0001"+ - "\u00a3\u0001\u00a4\u0001\u00a4\u0001\u00a4\u0001\u00a4\u0001\u00a4\u0001"+ - "\u00a4\u0001\u00a4\u0001\u00a5\u0001\u00a5\u0001\u00a5\u0001\u00a5\u0001"+ - "\u00a5\u0001\u00a5\u0001\u00a5\u0001\u00a5\u0001\u00a5\u0001\u00a5\u0001"+ - "\u00a6\u0001\u00a6\u0001\u00a6\u0001\u00a6\u0001\u00a6\u0001\u00a6\u0001"+ - "\u00a6\u0001\u00a6\u0001\u00a6\u0001\u00a6\u0001\u00a6\u0001\u00a6\u0001"+ - "\u00a6\u0001\u00a6\u0001\u00a7\u0001\u00a7\u0001\u00a7\u0001\u00a7\u0001"+ - "\u00a7\u0001\u00a7\u0001\u00a7\u0001\u00a7\u0001\u00a7\u0001\u00a7\u0001"+ - "\u00a7\u0001\u00a8\u0001\u00a8\u0001\u00a8\u0001\u00a8\u0001\u00a8\u0001"+ - "\u00a8\u0001\u00a8\u0001\u00a8\u0001\u00a8\u0001\u00a8\u0001\u00a8\u0001"+ - "\u00a8\u0001\u00a9\u0001\u00a9\u0001\u00a9\u0001\u00a9\u0001\u00a9\u0001"+ - "\u00a9\u0001\u00a9\u0001\u00a9\u0001\u00aa\u0001\u00aa\u0001\u00aa\u0001"+ - "\u00aa\u0001\u00aa\u0001\u00aa\u0001\u00aa\u0001\u00aa\u0001\u00aa\u0001"+ - "\u00ab\u0001\u00ab\u0001\u00ab\u0001\u00ab\u0001\u00ab\u0001\u00ab\u0001"+ - "\u00ab\u0001\u00ab\u0001\u00ab\u0001\u00ab\u0001\u00ab\u0001\u00ac\u0001"+ - "\u00ac\u0001\u00ac\u0001\u00ac\u0001\u00ac\u0001\u00ad\u0001\u00ad\u0001"+ - "\u00ad\u0001\u00ad\u0001\u00ad\u0001\u00ae\u0001\u00ae\u0001\u00ae\u0001"+ - "\u00ae\u0001\u00af\u0001\u00af\u0001\u00af\u0001\u00af\u0001\u00af\u0001"+ - "\u00af\u0001\u00af\u0001\u00b0\u0001\u00b0\u0001\u00b0\u0001\u00b0\u0001"+ - "\u00b0\u0001\u00b0\u0001\u00b1\u0001\u00b1\u0001\u00b1\u0001\u00b1\u0001"+ - "\u00b1\u0001\u00b2\u0001\u00b2\u0001\u00b2\u0001\u00b2\u0001\u00b2\u0001"+ - "\u00b2\u0001\u00b2\u0001\u00b2\u0001\u00b2\u0001\u00b3\u0001\u00b3\u0001"+ - "\u00b3\u0001\u00b3\u0001\u00b4\u0001\u00b4\u0001\u00b4\u0001\u00b4\u0001"+ - "\u00b4\u0001\u00b4\u0001\u00b4\u0001\u00b4\u0001\u00b4\u0001\u00b4\u0001"+ - "\u00b4\u0001\u00b5\u0001\u00b5\u0001\u00b5\u0001\u00b5\u0001\u00b5\u0001"+ - "\u00b5\u0001\u00b5\u0001\u00b5\u0001\u00b6\u0001\u00b6\u0001\u00b6\u0001"+ - "\u00b6\u0001\u00b6\u0001\u00b6\u0001\u00b6\u0001\u00b6\u0001\u00b6\u0001"+ - "\u00b7\u0001\u00b7\u0001\u00b7\u0001\u00b7\u0001\u00b7\u0001\u00b7\u0001"+ - "\u00b7\u0001\u00b7\u0001\u00b7\u0001\u00b8\u0001\u00b8\u0001\u00b8\u0001"+ - "\u00b8\u0001\u00b8\u0001\u00b8\u0001\u00b8\u0001\u00b8\u0001\u00b9\u0001"+ - "\u00b9\u0001\u00b9\u0001\u00b9\u0001\u00b9\u0001\u00b9\u0001\u00b9\u0001"+ - "\u00ba\u0001\u00ba\u0001\u00ba\u0001\u00ba\u0001\u00ba\u0001\u00ba\u0001"+ - "\u00ba\u0001\u00ba\u0001\u00ba\u0001\u00ba\u0001\u00bb\u0001\u00bb\u0001"+ - "\u00bb\u0001\u00bb\u0001\u00bb\u0001\u00bb\u0001\u00bb\u0001\u00bb\u0001"+ - "\u00bb\u0001\u00bb\u0001\u00bb\u0001\u00bc\u0001\u00bc\u0001\u00bc\u0001"+ - "\u00bc\u0001\u00bc\u0001\u00bc\u0001\u00bc\u0001\u00bc\u0001\u00bc\u0001"+ - "\u00bc\u0001\u00bc\u0001\u00bd\u0001\u00bd\u0001\u00bd\u0001\u00bd\u0001"+ - "\u00bd\u0001\u00bd\u0001\u00bd\u0001\u00bd\u0001\u00be\u0001\u00be\u0001"+ - "\u00be\u0001\u00be\u0001\u00be\u0001\u00be\u0001\u00be\u0001\u00be\u0001"+ - "\u00bf\u0001\u00bf\u0001\u00bf\u0001\u00bf\u0001\u00bf\u0001\u00bf\u0001"+ - "\u00bf\u0001\u00bf\u0001\u00bf\u0001\u00c0\u0001\u00c0\u0001\u00c0\u0001"+ - "\u00c0\u0001\u00c0\u0001\u00c0\u0001\u00c0\u0001\u00c1\u0001\u00c1\u0001"+ - "\u00c1\u0001\u00c1\u0001\u00c1\u0001\u00c1\u0001\u00c1\u0001\u00c2\u0001"+ - "\u00c2\u0001\u00c2\u0001\u00c2\u0001\u00c2\u0001\u00c3\u0001\u00c3\u0001"+ - "\u00c3\u0001\u00c3\u0001\u00c3\u0001\u00c4\u0001\u00c4\u0001\u00c4\u0001"+ - "\u00c4\u0001\u00c4\u0001\u00c4\u0001\u00c4\u0001\u00c5\u0001\u00c5\u0001"+ - "\u00c5\u0001\u00c5\u0001\u00c5\u0001\u00c5\u0001\u00c5\u0001\u00c5\u0001"+ - "\u00c5\u0001\u00c6\u0001\u00c6\u0001\u00c6\u0001\u00c6\u0001\u00c6\u0001"+ - "\u00c6\u0001\u00c6\u0001\u00c6\u0001\u00c6\u0001\u00c6\u0001\u00c7\u0001"+ - "\u00c7\u0001\u00c7\u0001\u00c7\u0001\u00c7\u0001\u00c8\u0001\u00c8\u0001"+ - "\u00c8\u0001\u00c8\u0001\u00c8\u0001\u00c8\u0001\u00c8\u0001\u00c9\u0001"+ - "\u00c9\u0001\u00c9\u0001\u00c9\u0001\u00c9\u0001\u00c9\u0001\u00ca\u0001"+ - "\u00ca\u0001\u00ca\u0001\u00ca\u0001\u00ca\u0001\u00ca\u0001\u00ca\u0001"+ - "\u00ca\u0001\u00cb\u0001\u00cb\u0001\u00cb\u0001\u00cb\u0001\u00cb\u0001"+ - "\u00cb\u0001\u00cb\u0001\u00cb\u0001\u00cb\u0001\u00cb\u0001\u00cc\u0001"+ - "\u00cc\u0001\u00cc\u0001\u00cc\u0001\u00cc\u0001\u00cc\u0001\u00cc\u0001"+ - "\u00cc\u0001\u00cc\u0001\u00cc\u0001\u00cd\u0001\u00cd\u0001\u00cd\u0001"+ - "\u00cd\u0001\u00cd\u0001\u00cd\u0001\u00cd\u0001\u00cd\u0001\u00ce\u0001"+ - "\u00ce\u0001\u00ce\u0001\u00ce\u0001\u00ce\u0001\u00ce\u0001\u00ce\u0001"+ - "\u00ce\u0001\u00cf\u0001\u00cf\u0001\u00cf\u0001\u00cf\u0001\u00cf\u0001"+ - "\u00cf\u0001\u00cf\u0001\u00cf\u0001\u00cf\u0001\u00cf\u0001\u00d0\u0001"+ - "\u00d0\u0001\u00d0\u0001\u00d0\u0001\u00d0\u0001\u00d0\u0001\u00d0\u0001"+ - "\u00d0\u0001\u00d0\u0001\u00d1\u0001\u00d1\u0001\u00d1\u0001\u00d1\u0001"+ - "\u00d1\u0001\u00d1\u0001\u00d1\u0001\u00d2\u0001\u00d2\u0001\u00d2\u0001"+ - "\u00d2\u0001\u00d2\u0001\u00d2\u0001\u00d3\u0001\u00d3\u0001\u00d3\u0001"+ - "\u00d3\u0001\u00d3\u0001\u00d3\u0001\u00d3\u0001\u00d3\u0001\u00d3\u0001"+ - "\u00d3\u0001\u00d4\u0001\u00d4\u0001\u00d4\u0001\u00d4\u0001\u00d4\u0001"+ - "\u00d4\u0001\u00d5\u0001\u00d5\u0001\u00d5\u0001\u00d5\u0001\u00d5\u0001"+ - "\u00d5\u0001\u00d5\u0001\u00d5\u0001\u00d6\u0001\u00d6\u0001\u00d6\u0001"+ - "\u00d6\u0001\u00d6\u0001\u00d6\u0001\u00d6\u0001\u00d6\u0001\u00d6\u0001"+ - "\u00d7\u0001\u00d7\u0001\u00d7\u0001\u00d7\u0001\u00d7\u0001\u00d7\u0001"+ - "\u00d7\u0001\u00d7\u0001\u00d7\u0001\u00d7\u0001\u00d8\u0001\u00d8\u0001"+ - "\u00d8\u0001\u00d8\u0001\u00d8\u0001\u00d8\u0001\u00d8\u0001\u00d9\u0001"+ - "\u00d9\u0001\u00d9\u0001\u00d9\u0001\u00d9\u0001\u00d9\u0001\u00d9\u0001"+ - "\u00d9\u0001\u00da\u0001\u00da\u0001\u00da\u0001\u00da\u0001\u00da\u0001"+ - "\u00da\u0001\u00da\u0001\u00da\u0001\u00db\u0001\u00db\u0001\u00db\u0001"+ - "\u00db\u0001\u00db\u0001\u00db\u0001\u00db\u0001\u00dc\u0001\u00dc\u0001"+ - "\u00dc\u0001\u00dc\u0001\u00dc\u0001\u00dd\u0001\u00dd\u0001\u00dd\u0001"+ - "\u00dd\u0001\u00dd\u0001\u00de\u0001\u00de\u0001\u00de\u0001\u00de\u0001"+ - "\u00de\u0001\u00de\u0001\u00de\u0001\u00de\u0001\u00de\u0001\u00df\u0001"+ - "\u00df\u0001\u00df\u0001\u00e0\u0001\u00e0\u0001\u00e0\u0001\u00e0\u0001"+ - "\u00e0\u0001\u00e0\u0001\u00e0\u0001\u00e0\u0001\u00e0\u0001\u00e0\u0001"+ - "\u00e1\u0001\u00e1\u0001\u00e1\u0001\u00e1\u0001\u00e1\u0001\u00e1\u0001"+ - "\u00e1\u0001\u00e1\u0001\u00e1\u0001\u00e1\u0001\u00e2\u0001\u00e2\u0001"+ - "\u00e2\u0001\u00e2\u0001\u00e2\u0001\u00e2\u0001\u00e2\u0001\u00e2\u0001"+ - "\u00e2\u0001\u00e3\u0001\u00e3\u0001\u00e3\u0001\u00e3\u0001\u00e3\u0001"+ - "\u00e3\u0001\u00e3\u0001\u00e3\u0001\u00e3\u0001\u00e3\u0001\u00e4\u0001"+ - "\u00e4\u0001\u00e4\u0001\u00e4\u0001\u00e4\u0001\u00e4\u0001\u00e4\u0001"+ - "\u00e4\u0001\u00e4\u0001\u00e4\u0001\u00e5\u0001\u00e5\u0001\u00e5\u0001"+ - "\u00e5\u0001\u00e5\u0001\u00e5\u0001\u00e6\u0001\u00e6\u0001\u00e6\u0001"+ - "\u00e6\u0001\u00e6\u0001\u00e6\u0001\u00e6\u0001\u00e6\u0001\u00e7\u0001"+ - "\u00e7\u0001\u00e7\u0001\u00e7\u0001\u00e7\u0001\u00e7\u0001\u00e7\u0001"+ - "\u00e7\u0001\u00e8\u0001\u00e8\u0001\u00e8\u0001\u00e8\u0001\u00e8\u0001"+ - "\u00e8\u0001\u00e8\u0001\u00e8\u0001\u00e8\u0001\u00e9\u0001\u00e9\u0001"+ - "\u00e9\u0001\u00e9\u0001\u00e9\u0001\u00e9\u0001\u00e9\u0001\u00ea\u0001"+ - "\u00ea\u0001\u00ea\u0001\u00ea\u0001\u00ea\u0001\u00ea\u0001\u00ea\u0001"+ - "\u00ea\u0001\u00ea\u0001\u00ea\u0001\u00ea\u0001\u00ea\u0001\u00eb\u0001"+ - "\u00eb\u0001\u00eb\u0001\u00eb\u0001\u00eb\u0001\u00eb\u0001\u00eb\u0001"+ - "\u00ec\u0001\u00ec\u0001\u00ec\u0001\u00ec\u0001\u00ec\u0001\u00ec\u0001"+ - "\u00ec\u0001\u00ec\u0001\u00ed\u0001\u00ed\u0001\u00ed\u0001\u00ed\u0001"+ - "\u00ed\u0001\u00ed\u0001\u00ed\u0001\u00ed\u0001\u00ee\u0001\u00ee\u0001"+ - "\u00ee\u0001\u00ee\u0001\u00ee\u0001\u00ee\u0001\u00ee\u0001\u00ee\u0001"+ - "\u00ee\u0001\u00ee\u0001\u00ef\u0001\u00ef\u0001\u00ef\u0001\u00ef\u0001"+ - "\u00f0\u0001\u00f0\u0001\u00f0\u0001\u00f0\u0001\u00f0\u0001\u00f0\u0001"+ - "\u00f1\u0001\u00f1\u0001\u00f1\u0001\u00f1\u0001\u00f1\u0001\u00f1\u0001"+ - "\u00f1\u0001\u00f1\u0001\u00f1\u0001\u00f2\u0001\u00f2\u0001\u00f2\u0001"+ - "\u00f2\u0001\u00f2\u0001\u00f2\u0001\u00f3\u0001\u00f3\u0001\u00f3\u0001"+ - "\u00f3\u0001\u00f3\u0001\u00f4\u0001\u00f4\u0001\u00f4\u0001\u00f4\u0001"+ - "\u00f4\u0001\u00f4\u0001\u00f4\u0001\u00f4\u0001\u00f4\u0001\u00f4\u0001"+ - "\u00f5\u0001\u00f5\u0001\u00f5\u0001\u00f5\u0001\u00f5\u0001\u00f5\u0001"+ - "\u00f6\u0001\u00f6\u0001\u00f6\u0001\u00f6\u0001\u00f6\u0001\u00f6\u0001"+ - "\u00f6\u0001\u00f7\u0001\u00f7\u0001\u00f7\u0001\u00f7\u0001\u00f7\u0001"+ - "\u00f8\u0001\u00f8\u0001\u00f8\u0001\u00f8\u0001\u00f8\u0001\u00f8\u0001"+ - "\u00f9\u0001\u00f9\u0001\u00f9\u0001\u00f9\u0001\u00f9\u0001\u00f9\u0001"+ - "\u00f9\u0001\u00f9\u0001\u00f9\u0001\u00fa\u0001\u00fa\u0001\u00fa\u0001"+ - "\u00fa\u0001\u00fa\u0001\u00fb\u0001\u00fb\u0001\u00fb\u0001\u00fb\u0001"+ - "\u00fb\u0001\u00fb\u0001\u00fb\u0001\u00fb\u0001\u00fc\u0001\u00fc\u0001"+ - "\u00fc\u0001\u00fc\u0001\u00fc\u0001\u00fc\u0001\u00fd\u0001\u00fd\u0001"+ - "\u00fd\u0001\u00fd\u0001\u00fd\u0001\u00fd\u0001\u00fd\u0001\u00fd\u0001"+ - "\u00fe\u0001\u00fe\u0001\u00fe\u0001\u00fe\u0001\u00fe\u0001\u00fe\u0001"+ - "\u00fe\u0001\u00fe\u0001\u00fe\u0001\u00fe\u0001\u00fe\u0001\u00fe\u0001"+ - "\u00fe\u0001\u00ff\u0001\u00ff\u0001\u00ff\u0001\u00ff\u0001\u00ff\u0001"+ - "\u00ff\u0001\u00ff\u0001\u00ff\u0001\u00ff\u0001\u0100\u0001\u0100\u0001"+ - "\u0100\u0001\u0100\u0001\u0100\u0001\u0100\u0001\u0101\u0001\u0101\u0001"+ - "\u0101\u0001\u0101\u0001\u0101\u0001\u0101\u0001\u0101\u0001\u0102\u0001"+ - "\u0102\u0001\u0102\u0001\u0102\u0001\u0102\u0001\u0102\u0001\u0102\u0001"+ - "\u0102\u0001\u0102\u0001\u0103\u0001\u0103\u0001\u0103\u0001\u0103\u0001"+ - "\u0103\u0001\u0104\u0001\u0104\u0001\u0104\u0001\u0104\u0001\u0104\u0001"+ - "\u0104\u0001\u0105\u0001\u0105\u0001\u0105\u0001\u0105\u0001\u0105\u0001"+ - "\u0106\u0001\u0106\u0001\u0106\u0001\u0106\u0001\u0106\u0001\u0107\u0001"+ - "\u0107\u0001\u0107\u0001\u0107\u0001\u0107\u0001\u0107\u0001\u0108\u0001"+ - "\u0108\u0001\u0108\u0001\u0108\u0001\u0108\u0001\u0109\u0001\u0109\u0001"+ - "\u0109\u0001\u010a\u0001\u010a\u0001\u010a\u0001\u010a\u0001\u010a\u0001"+ - "\u010a\u0001\u010a\u0001\u010a\u0001\u010b\u0001\u010b\u0001\u010b\u0001"+ - "\u010b\u0001\u010b\u0001\u010b\u0001\u010b\u0001\u010c\u0001\u010c\u0001"+ - "\u010c\u0001\u010c\u0001\u010c\u0001\u010c\u0001\u010c\u0001\u010d\u0001"+ - "\u010d\u0001\u010d\u0001\u010d\u0001\u010d\u0001\u010d\u0001\u010e\u0001"+ - "\u010e\u0001\u010e\u0001\u010e\u0001\u010e\u0001\u010e\u0001\u010e\u0001"+ - "\u010f\u0001\u010f\u0001\u010f\u0001\u0110\u0001\u0110\u0001\u0110\u0001"+ - "\u0110\u0001\u0111\u0001\u0111\u0001\u0111\u0001\u0111\u0001\u0111\u0001"+ - "\u0112\u0001\u0112\u0001\u0112\u0001\u0112\u0001\u0112\u0001\u0112\u0001"+ - "\u0112\u0001\u0112\u0001\u0112\u0001\u0113\u0001\u0113\u0001\u0113\u0001"+ - "\u0113\u0001\u0113\u0001\u0113\u0001\u0113\u0001\u0114\u0001\u0114\u0001"+ - "\u0114\u0001\u0114\u0001\u0114\u0001\u0114\u0001\u0114\u0001\u0114\u0001"+ - "\u0115\u0001\u0115\u0001\u0115\u0001\u0115\u0001\u0115\u0001\u0115\u0001"+ - "\u0116\u0001\u0116\u0001\u0116\u0001\u0116\u0001\u0116\u0001\u0116\u0001"+ - "\u0117\u0001\u0117\u0001\u0117\u0001\u0117\u0001\u0117\u0001\u0117\u0001"+ - "\u0117\u0001\u0118\u0001\u0118\u0001\u0118\u0001\u0118\u0001\u0118\u0001"+ - "\u0118\u0001\u0118\u0001\u0118\u0001\u0119\u0001\u0119\u0001\u0119\u0001"+ - "\u0119\u0001\u0119\u0001\u0119\u0001\u0119\u0001\u0119\u0001\u0119\u0001"+ - "\u0119\u0001\u011a\u0001\u011a\u0001\u011a\u0001\u011a\u0001\u011a\u0001"+ - "\u011a\u0001\u011a\u0001\u011a\u0001\u011b\u0001\u011b\u0001\u011b\u0001"+ - "\u011b\u0001\u011b\u0001\u011b\u0001\u011b\u0001\u011b\u0001\u011b\u0001"+ - "\u011c\u0001\u011c\u0001\u011c\u0001\u011c\u0001\u011c\u0001\u011c\u0001"+ - "\u011d\u0001\u011d\u0001\u011d\u0001\u011d\u0001\u011d\u0001\u011d\u0001"+ - "\u011d\u0001\u011d\u0001\u011d\u0001\u011d\u0001\u011e\u0001\u011e\u0001"+ - "\u011e\u0001\u011e\u0001\u011e\u0001\u011e\u0001\u011e\u0001\u011e\u0001"+ - "\u011f\u0001\u011f\u0001\u011f\u0001\u011f\u0001\u011f\u0001\u011f\u0001"+ - "\u011f\u0001\u011f\u0001\u011f\u0001\u0120\u0001\u0120\u0001\u0120\u0001"+ - "\u0120\u0001\u0120\u0001\u0120\u0001\u0120\u0001\u0120\u0001\u0120\u0001"+ - "\u0121\u0001\u0121\u0001\u0121\u0001\u0121\u0001\u0121\u0001\u0121\u0001"+ - "\u0122\u0001\u0122\u0001\u0122\u0001\u0122\u0001\u0122\u0001\u0122\u0001"+ - "\u0122\u0001\u0122\u0001\u0122\u0001\u0122\u0001\u0122\u0001\u0123\u0001"+ - "\u0123\u0001\u0123\u0001\u0123\u0001\u0123\u0001\u0123\u0001\u0123\u0001"+ - "\u0123\u0001\u0123\u0001\u0123\u0001\u0123\u0001\u0124\u0001\u0124\u0001"+ - "\u0124\u0001\u0124\u0001\u0124\u0001\u0124\u0001\u0124\u0001\u0124\u0001"+ - "\u0124\u0001\u0124\u0001\u0125\u0001\u0125\u0001\u0125\u0001\u0125\u0001"+ - "\u0125\u0001\u0125\u0001\u0125\u0001\u0125\u0001\u0126\u0001\u0126\u0001"+ - "\u0126\u0001\u0126\u0001\u0126\u0001\u0126\u0001\u0127\u0001\u0127\u0001"+ - "\u0127\u0001\u0127\u0001\u0127\u0001\u0127\u0001\u0128\u0001\u0128\u0001"+ - "\u0128\u0001\u0128\u0001\u0128\u0001\u0129\u0001\u0129\u0001\u0129\u0001"+ - "\u0129\u0001\u0129\u0001\u0129\u0001\u0129\u0001\u0129\u0001\u0129\u0001"+ - "\u012a\u0001\u012a\u0001\u012a\u0001\u012a\u0001\u012a\u0001\u012a\u0001"+ - "\u012a\u0001\u012a\u0001\u012b\u0001\u012b\u0001\u012b\u0001\u012b\u0001"+ - "\u012b\u0001\u012b\u0001\u012b\u0001\u012b\u0001\u012b\u0001\u012b\u0001"+ - "\u012c\u0001\u012c\u0001\u012c\u0001\u012c\u0001\u012d\u0001\u012d\u0001"+ - "\u012d\u0001\u012d\u0001\u012d\u0001\u012d\u0001\u012d\u0001\u012d\u0001"+ - "\u012e\u0001\u012e\u0001\u012e\u0001\u012e\u0001\u012e\u0001\u012e\u0001"+ - "\u012e\u0001\u012e\u0001\u012f\u0001\u012f\u0001\u012f\u0001\u012f\u0001"+ - "\u012f\u0001\u012f\u0001\u012f\u0001\u012f\u0001\u012f\u0001\u0130\u0001"+ - "\u0130\u0001\u0130\u0001\u0130\u0001\u0130\u0001\u0130\u0001\u0130\u0001"+ - "\u0130\u0001\u0131\u0001\u0131\u0001\u0131\u0001\u0131\u0001\u0131\u0001"+ - "\u0131\u0001\u0131\u0001\u0132\u0001\u0132\u0001\u0132\u0001\u0132\u0001"+ - "\u0132\u0001\u0132\u0001\u0132\u0001\u0132\u0001\u0132\u0001\u0132\u0001"+ - "\u0132\u0001\u0133\u0001\u0133\u0001\u0133\u0001\u0133\u0001\u0133\u0001"+ - "\u0133\u0001\u0133\u0001\u0133\u0001\u0134\u0001\u0134\u0001\u0134\u0001"+ - "\u0134\u0001\u0134\u0001\u0134\u0001\u0134\u0001\u0134\u0001\u0135\u0001"+ - "\u0135\u0001\u0135\u0001\u0135\u0001\u0135\u0001\u0135\u0001\u0136\u0001"+ - "\u0136\u0001\u0136\u0001\u0136\u0001\u0136\u0001\u0136\u0001\u0136\u0001"+ - "\u0136\u0001\u0137\u0001\u0137\u0001\u0137\u0001\u0137\u0001\u0137\u0001"+ - "\u0137\u0001\u0137\u0001\u0137\u0001\u0137\u0001\u0138\u0001\u0138\u0001"+ - "\u0138\u0001\u0138\u0001\u0138\u0001\u0138\u0001\u0138\u0001\u0138\u0001"+ - "\u0139\u0001\u0139\u0001\u0139\u0001\u0139\u0001\u0139\u0001\u0139\u0001"+ - "\u0139\u0001\u013a\u0001\u013a\u0001\u013a\u0001\u013a\u0001\u013a\u0001"+ - "\u013b\u0001\u013b\u0001\u013b\u0001\u013b\u0001\u013b\u0001\u013b\u0001"+ - "\u013b\u0001\u013b\u0001\u013b\u0001\u013c\u0001\u013c\u0001\u013c\u0001"+ - "\u013c\u0001\u013c\u0001\u013d\u0001\u013d\u0001\u013d\u0001\u013d\u0001"+ - "\u013d\u0001\u013e\u0001\u013e\u0001\u013e\u0001\u013e\u0001\u013e\u0001"+ - "\u013e\u0001\u013e\u0001\u013e\u0001\u013e\u0001\u013e\u0001\u013f\u0001"+ - "\u013f\u0001\u013f\u0001\u013f\u0001\u013f\u0001\u013f\u0001\u013f\u0001"+ - "\u0140\u0001\u0140\u0001\u0140\u0001\u0140\u0001\u0140\u0001\u0140\u0001"+ - "\u0140\u0001\u0141\u0001\u0141\u0001\u0141\u0001\u0141\u0001\u0141\u0001"+ - "\u0141\u0001\u0141\u0001\u0142\u0001\u0142\u0001\u0142\u0001\u0142\u0001"+ - "\u0142\u0001\u0142\u0001\u0142\u0001\u0143\u0001\u0143\u0001\u0143\u0001"+ - "\u0143\u0001\u0143\u0001\u0143\u0001\u0143\u0001\u0143\u0001\u0143\u0001"+ - "\u0144\u0001\u0144\u0001\u0144\u0001\u0144\u0001\u0144\u0001\u0144\u0001"+ - "\u0144\u0001\u0144\u0001\u0144\u0001\u0145\u0001\u0145\u0001\u0145\u0001"+ - "\u0145\u0001\u0145\u0001\u0145\u0001\u0145\u0001\u0145\u0001\u0145\u0001"+ - "\u0145\u0001\u0146\u0001\u0146\u0001\u0146\u0001\u0146\u0001\u0146\u0001"+ - "\u0146\u0001\u0146\u0001\u0146\u0001\u0146\u0001\u0146\u0001\u0146\u0001"+ - "\u0146\u0001\u0146\u0001\u0147\u0001\u0147\u0001\u0147\u0001\u0147\u0001"+ - "\u0147\u0001\u0147\u0001\u0147\u0001\u0148\u0001\u0148\u0001\u0148\u0001"+ - "\u0148\u0001\u0148\u0001\u0148\u0001\u0148\u0001\u0148\u0001\u0149\u0001"+ - "\u0149\u0001\u0149\u0001\u0149\u0001\u014a\u0001\u014a\u0001\u014a\u0001"+ - "\u014a\u0001\u014a\u0001\u014a\u0001\u014b\u0001\u014b\u0001\u014b\u0001"+ - "\u014b\u0001\u014b\u0001\u014c\u0001\u014c\u0001\u014c\u0001\u014c\u0001"+ - "\u014c\u0001\u014c\u0001\u014c\u0001\u014d\u0001\u014d\u0001\u014d\u0001"+ - "\u014d\u0001\u014d\u0001\u014d\u0001\u014d\u0001\u014d\u0001\u014d\u0001"+ - "\u014e\u0001\u014e\u0001\u014e\u0001\u014e\u0001\u014e\u0001\u014e\u0001"+ - "\u014e\u0001\u014f\u0001\u014f\u0001\u014f\u0001\u014f\u0001\u014f\u0001"+ - "\u014f\u0001\u014f\u0001\u014f\u0001\u014f\u0001\u014f\u0001\u014f\u0001"+ - "\u0150\u0001\u0150\u0001\u0150\u0001\u0150\u0001\u0150\u0001\u0150\u0001"+ - "\u0151\u0001\u0151\u0001\u0151\u0001\u0151\u0001\u0151\u0001\u0151\u0001"+ - "\u0151\u0001\u0151\u0001\u0151\u0001\u0151\u0001\u0152\u0001\u0152\u0001"+ - "\u0152\u0001\u0152\u0001\u0152\u0001\u0152\u0001\u0152\u0001\u0152\u0001"+ - "\u0152\u0001\u0152\u0001\u0152\u0001\u0153\u0001\u0153\u0001\u0153\u0001"+ - "\u0153\u0001\u0153\u0001\u0153\u0001\u0154\u0001\u0154\u0001\u0154\u0001"+ - "\u0154\u0001\u0154\u0001\u0154\u0001\u0154\u0001\u0155\u0001\u0155\u0001"+ - "\u0155\u0001\u0155\u0001\u0155\u0001\u0155\u0001\u0155\u0001\u0155\u0001"+ - "\u0156\u0001\u0156\u0001\u0156\u0001\u0156\u0001\u0156\u0001\u0156\u0001"+ - "\u0156\u0001\u0157\u0001\u0157\u0001\u0157\u0001\u0157\u0001\u0157\u0001"+ - "\u0157\u0001\u0158\u0001\u0158\u0001\u0158\u0001\u0158\u0001\u0158\u0001"+ - "\u0158\u0001\u0159\u0001\u0159\u0001\u0159\u0001\u0159\u0001\u0159\u0001"+ - "\u0159\u0001\u0159\u0001\u015a\u0001\u015a\u0001\u015a\u0001\u015a\u0001"+ - "\u015a\u0001\u015a\u0001\u015a\u0001\u015b\u0001\u015b\u0001\u015b\u0001"+ - "\u015b\u0001\u015b\u0001\u015b\u0001\u015b\u0001\u015b\u0001\u015b\u0001"+ - "\u015b\u0001\u015b\u0001\u015c\u0001\u015c\u0001\u015c\u0001\u015c\u0001"+ - "\u015c\u0001\u015d\u0001\u015d\u0001\u015d\u0001\u015d\u0001\u015d\u0001"+ - "\u015d\u0001\u015d\u0001\u015d\u0001\u015d\u0001\u015e\u0001\u015e\u0001"+ - "\u015e\u0001\u015e\u0001\u015e\u0001\u015e\u0001\u015e\u0001\u015e\u0001"+ - "\u015e\u0001\u015e\u0001\u015f\u0001\u015f\u0001\u015f\u0001\u015f\u0001"+ - "\u015f\u0001\u0160\u0001\u0160\u0001\u0160\u0001\u0160\u0001\u0160\u0001"+ - "\u0160\u0001\u0160\u0001\u0160\u0001\u0160\u0001\u0160\u0001\u0160\u0001"+ - "\u0160\u0001\u0161\u0001\u0161\u0001\u0161\u0001\u0161\u0001\u0161\u0001"+ - "\u0161\u0001\u0161\u0001\u0161\u0001\u0162\u0001\u0162\u0001\u0162\u0001"+ - "\u0162\u0001\u0162\u0001\u0162\u0001\u0162\u0001\u0162\u0001\u0162\u0001"+ - "\u0163\u0001\u0163\u0001\u0163\u0001\u0163\u0001\u0163\u0001\u0163\u0001"+ - "\u0163\u0001\u0163\u0001\u0164\u0001\u0164\u0001\u0164\u0001\u0164\u0001"+ - "\u0164\u0001\u0165\u0001\u0165\u0001\u0165\u0001\u0165\u0001\u0165\u0001"+ - "\u0165\u0001\u0166\u0001\u0166\u0001\u0166\u0001\u0166\u0001\u0166\u0001"+ - "\u0166\u0001\u0166\u0001\u0166\u0001\u0166\u0001\u0166\u0001\u0167\u0001"+ - "\u0167\u0001\u0167\u0001\u0167\u0001\u0167\u0001\u0167\u0001\u0167\u0001"+ - "\u0167\u0001\u0167\u0001\u0167\u0001\u0167\u0001\u0167\u0001\u0168\u0001"+ - "\u0168\u0001\u0168\u0001\u0168\u0001\u0168\u0001\u0168\u0001\u0168\u0001"+ - "\u0168\u0001\u0168\u0001\u0168\u0001\u0168\u0001\u0168\u0001\u0169\u0001"+ - "\u0169\u0001\u0169\u0001\u0169\u0001\u0169\u0001\u0169\u0001\u0169\u0001"+ - "\u0169\u0001\u016a\u0001\u016a\u0001\u016a\u0001\u016a\u0001\u016a\u0001"+ - "\u016a\u0001\u016a\u0001\u016a\u0001\u016a\u0001\u016b\u0001\u016b\u0001"+ - "\u016b\u0001\u016b\u0001\u016b\u0001\u016b\u0001\u016b\u0001\u016b\u0001"+ - "\u016b\u0001\u016c\u0001\u016c\u0001\u016c\u0001\u016c\u0001\u016c\u0001"+ - "\u016c\u0001\u016d\u0001\u016d\u0001\u016d\u0001\u016d\u0001\u016d\u0001"+ - "\u016d\u0001\u016d\u0001\u016e\u0001\u016e\u0001\u016e\u0001\u016e\u0001"+ - "\u016e\u0001\u016e\u0001\u016e\u0001\u016f\u0001\u016f\u0001\u016f\u0001"+ - "\u016f\u0001\u016f\u0001\u016f\u0001\u0170\u0001\u0170\u0001\u0170\u0001"+ - "\u0170\u0001\u0170\u0001\u0170\u0001\u0170\u0001\u0170\u0001\u0170\u0001"+ - "\u0171\u0001\u0171\u0001\u0171\u0001\u0171\u0001\u0171\u0001\u0171\u0001"+ - "\u0171\u0001\u0171\u0001\u0171\u0001\u0171\u0001\u0172\u0001\u0172\u0001"+ - "\u0172\u0001\u0172\u0001\u0172\u0001\u0172\u0001\u0172\u0001\u0172\u0001"+ - "\u0173\u0001\u0173\u0001\u0173\u0001\u0173\u0001\u0173\u0001\u0173\u0001"+ - "\u0173\u0001\u0173\u0001\u0174\u0001\u0174\u0001\u0174\u0001\u0174\u0001"+ - "\u0174\u0001\u0175\u0001\u0175\u0001\u0175\u0001\u0175\u0001\u0175\u0001"+ - "\u0175\u0001\u0175\u0001\u0175\u0001\u0175\u0001\u0176\u0001\u0176\u0001"+ - "\u0176\u0001\u0176\u0001\u0176\u0001\u0176\u0001\u0176\u0001\u0176\u0001"+ - "\u0176\u0001\u0176\u0001\u0176\u0001\u0177\u0001\u0177\u0001\u0177\u0001"+ - "\u0177\u0001\u0177\u0001\u0177\u0001\u0177\u0001\u0177\u0001\u0178\u0001"+ - "\u0178\u0001\u0178\u0001\u0178\u0001\u0178\u0001\u0179\u0001\u0179\u0001"+ - "\u0179\u0001\u0179\u0001\u0179\u0001\u0179\u0001\u0179\u0001\u0179\u0001"+ - "\u017a\u0001\u017a\u0001\u017a\u0001\u017a\u0001\u017a\u0001\u017a\u0001"+ - "\u017b\u0001\u017b\u0001\u017b\u0001\u017b\u0001\u017c\u0001\u017c\u0001"+ - "\u017c\u0001\u017c\u0001\u017c\u0001\u017d\u0001\u017d\u0001\u017d\u0001"+ - "\u017d\u0001\u017e\u0001\u017e\u0001\u017e\u0001\u017e\u0001\u017e\u0001"+ - "\u017f\u0001\u017f\u0001\u017f\u0001\u017f\u0001\u017f\u0001\u017f\u0001"+ - "\u017f\u0001\u017f\u0001\u0180\u0001\u0180\u0001\u0180\u0001\u0180\u0001"+ - "\u0180\u0001\u0180\u0001\u0180\u0001\u0181\u0001\u0181\u0001\u0181\u0001"+ - "\u0181\u0001\u0182\u0001\u0182\u0001\u0182\u0001\u0182\u0001\u0182\u0001"+ - "\u0182\u0001\u0182\u0001\u0182\u0001\u0183\u0001\u0183\u0001\u0183\u0001"+ - "\u0183\u0001\u0183\u0001\u0184\u0001\u0184\u0001\u0184\u0001\u0184\u0001"+ - "\u0184\u0001\u0184\u0001\u0184\u0001\u0184\u0001\u0184\u0001\u0184\u0001"+ - "\u0185\u0001\u0185\u0001\u0185\u0001\u0185\u0001\u0185\u0001\u0185\u0001"+ - "\u0185\u0001\u0185\u0001\u0185\u0001\u0186\u0001\u0186\u0001\u0186\u0001"+ - "\u0186\u0001\u0187\u0001\u0187\u0001\u0187\u0001\u0187\u0001\u0187\u0001"+ - "\u0187\u0001\u0187\u0001\u0187\u0001\u0188\u0001\u0188\u0001\u0188\u0001"+ - "\u0188\u0001\u0188\u0001\u0188\u0001\u0188\u0001\u0189\u0001\u0189\u0001"+ - "\u0189\u0001\u0189\u0001\u0189\u0001\u0189\u0001\u0189\u0001\u0189\u0001"+ - "\u018a\u0001\u018a\u0001\u018a\u0001\u018a\u0001\u018a\u0001\u018a\u0001"+ - "\u018b\u0001\u018b\u0001\u018b\u0001\u018b\u0001\u018b\u0001\u018b\u0001"+ - "\u018b\u0001\u018b\u0001\u018b\u0001\u018c\u0001\u018c\u0001\u018c\u0001"+ - "\u018c\u0001\u018c\u0001\u018c\u0001\u018d\u0001\u018d\u0001\u018d\u0001"+ - "\u018d\u0001\u018e\u0001\u018e\u0001\u018e\u0001\u018e\u0001\u018e\u0001"+ - "\u018e\u0001\u018e\u0001\u018e\u0001\u018f\u0001\u018f\u0001\u018f\u0001"+ - "\u018f\u0001\u018f\u0001\u018f\u0001\u018f\u0001\u018f\u0001\u018f\u0001"+ - "\u0190\u0001\u0190\u0001\u0190\u0001\u0190\u0001\u0190\u0001\u0190\u0001"+ - "\u0191\u0001\u0191\u0001\u0191\u0001\u0191\u0001\u0191\u0001\u0191\u0001"+ - "\u0191\u0001\u0191\u0001\u0191\u0001\u0192\u0001\u0192\u0001\u0192\u0001"+ - "\u0192\u0001\u0192\u0001\u0192\u0001\u0193\u0001\u0193\u0001\u0193\u0001"+ - "\u0193\u0001\u0193\u0001\u0194\u0001\u0194\u0001\u0194\u0001\u0194\u0001"+ - "\u0194\u0001\u0194\u0001\u0194\u0001\u0195\u0001\u0195\u0001\u0195\u0001"+ - "\u0195\u0001\u0195\u0001\u0195\u0001\u0195\u0001\u0195\u0001\u0196\u0001"+ - "\u0196\u0001\u0196\u0001\u0196\u0001\u0196\u0001\u0196\u0001\u0196\u0001"+ - "\u0196\u0001\u0197\u0001\u0197\u0001\u0197\u0001\u0197\u0001\u0197\u0001"+ - "\u0197\u0001\u0197\u0001\u0197\u0001\u0197\u0001\u0198\u0001\u0198\u0001"+ - "\u0198\u0001\u0198\u0001\u0198\u0001\u0198\u0001\u0198\u0001\u0198\u0001"+ - "\u0198\u0001\u0198\u0001\u0199\u0001\u0199\u0001\u0199\u0001\u0199\u0001"+ - "\u0199\u0001\u019a\u0001\u019a\u0001\u019a\u0001\u019a\u0001\u019b\u0001"+ - "\u019b\u0001\u019b\u0001\u019b\u0001\u019b\u0001\u019b\u0001\u019c\u0001"+ - "\u019c\u0001\u019c\u0001\u019c\u0001\u019c\u0001\u019c\u0001\u019c\u0001"+ - "\u019c\u0001\u019c\u0001\u019d\u0001\u019d\u0001\u019d\u0001\u019d\u0001"+ - "\u019d\u0001\u019d\u0001\u019d\u0001\u019d\u0001\u019d\u0001\u019d\u0001"+ - "\u019e\u0001\u019e\u0001\u019e\u0001\u019e\u0001\u019e\u0001\u019f\u0001"+ - "\u019f\u0001\u019f\u0001\u019f\u0001\u019f\u0001\u019f\u0001\u019f\u0001"+ - "\u019f\u0001\u019f\u0001\u019f\u0001\u01a0\u0001\u01a0\u0001\u01a0\u0001"+ - "\u01a0\u0001\u01a0\u0001\u01a0\u0001\u01a1\u0001\u01a1\u0001\u01a1\u0001"+ - "\u01a1\u0001\u01a1\u0001\u01a2\u0001\u01a2\u0001\u01a2\u0001\u01a2\u0001"+ - "\u01a2\u0001\u01a2\u0001\u01a2\u0001\u01a3\u0001\u01a3\u0001\u01a3\u0001"+ - "\u01a3\u0001\u01a3\u0001\u01a3\u0001\u01a3\u0001\u01a3\u0001\u01a4\u0001"+ - "\u01a4\u0001\u01a4\u0001\u01a4\u0001\u01a4\u0001\u01a4\u0001\u01a4\u0001"+ - "\u01a4\u0001\u01a4\u0001\u01a4\u0001\u01a4\u0001\u01a4\u0001\u01a4\u0001"+ - "\u01a4\u0001\u01a5\u0001\u01a5\u0001\u01a5\u0001\u01a5\u0001\u01a5\u0001"+ - "\u01a5\u0001\u01a5\u0001\u01a5\u0001\u01a5\u0001\u01a5\u0001\u01a5\u0001"+ - "\u01a6\u0001\u01a6\u0001\u01a6\u0001\u01a6\u0001\u01a6\u0001\u01a6\u0001"+ - "\u01a6\u0001\u01a7\u0001\u01a7\u0001\u01a7\u0001\u01a7\u0001\u01a7\u0001"+ - "\u01a7\u0001\u01a7\u0001\u01a7\u0001\u01a7\u0001\u01a7\u0001\u01a7\u0001"+ - "\u01a7\u0001\u01a7\u0001\u01a7\u0001\u01a7\u0001\u01a7\u0001\u01a7\u0001"+ - "\u01a7\u0001\u01a7\u0001\u01a8\u0001\u01a8\u0001\u01a8\u0001\u01a8\u0001"+ - "\u01a8\u0001\u01a8\u0001\u01a8\u0001\u01a8\u0001\u01a8\u0001\u01a8\u0001"+ - "\u01a8\u0001\u01a8\u0001\u01a8\u0001\u01a8\u0001\u01a8\u0001\u01a8\u0001"+ - "\u01a8\u0001\u01a8\u0001\u01a8\u0001\u01a8\u0001\u01a8\u0001\u01a8\u0001"+ - "\u01a8\u0001\u01a8\u0001\u01a8\u0001\u01a8\u0001\u01a8\u0001\u01a8\u0001"+ - "\u01a9\u0001\u01a9\u0001\u01a9\u0001\u01a9\u0001\u01a9\u0001\u01a9\u0001"+ - "\u01a9\u0001\u01a9\u0001\u01a9\u0001\u01a9\u0001\u01a9\u0001\u01a9\u0001"+ - "\u01a9\u0001\u01a9\u0001\u01a9\u0001\u01a9\u0001\u01a9\u0001\u01a9\u0001"+ - "\u01a9\u0001\u01a9\u0001\u01a9\u0001\u01a9\u0001\u01a9\u0001\u01a9\u0001"+ - "\u01a9\u0001\u01a9\u0001\u01a9\u0001\u01aa\u0001\u01aa\u0001\u01aa\u0001"+ - "\u01aa\u0001\u01aa\u0001\u01aa\u0001\u01ab\u0001\u01ab\u0001\u01ab\u0001"+ - "\u01ab\u0001\u01ab\u0001\u01ab\u0001\u01ab\u0001\u01ab\u0001\u01ab\u0001"+ - "\u01ab\u0001\u01ab\u0001\u01ab\u0001\u01ab\u0001\u01ac\u0001\u01ac\u0001"+ - "\u01ac\u0001\u01ac\u0001\u01ac\u0001\u01ac\u0001\u01ac\u0001\u01ac\u0001"+ - "\u01ac\u0001\u01ac\u0001\u01ad\u0001\u01ad\u0001\u01ad\u0001\u01ad\u0001"+ - "\u01ad\u0001\u01ad\u0001\u01ad\u0001\u01ad\u0001\u01ad\u0001\u01ad\u0001"+ - "\u01ad\u0001\u01ae\u0001\u01ae\u0001\u01ae\u0001\u01ae\u0001\u01ae\u0001"+ - "\u01ae\u0001\u01ae\u0001\u01ae\u0001\u01ae\u0001\u01ae\u0001\u01af\u0001"+ - "\u01af\u0001\u01af\u0001\u01af\u0001\u01af\u0001\u01af\u0001\u01af\u0001"+ - "\u01af\u0001\u01af\u0001\u01af\u0001\u01b0\u0001\u01b0\u0001\u01b0\u0001"+ - "\u01b0\u0001\u01b0\u0001\u01b0\u0001\u01b0\u0001\u01b0\u0001\u01b0\u0001"+ - "\u01b1\u0001\u01b1\u0001\u01b1\u0001\u01b1\u0001\u01b1\u0001\u01b1\u0001"+ - "\u01b2\u0001\u01b2\u0001\u01b2\u0001\u01b2\u0001\u01b2\u0001\u01b2\u0001"+ - "\u01b2\u0001\u01b2\u0001\u01b3\u0001\u01b3\u0001\u01b3\u0001\u01b3\u0001"+ - "\u01b3\u0001\u01b3\u0001\u01b3\u0001\u01b3\u0001\u01b3\u0001\u01b3\u0001"+ - "\u01b3\u0001\u01b3\u0001\u01b3\u0001\u01b4\u0001\u01b4\u0001\u01b4\u0001"+ - "\u01b4\u0001\u01b4\u0001\u01b5\u0001\u01b5\u0001\u01b5\u0001\u01b5\u0001"+ - "\u01b5\u0001\u01b5\u0001\u01b5\u0001\u01b5\u0001\u01b6\u0001\u01b6\u0001"+ - "\u01b6\u0001\u01b6\u0001\u01b6\u0001\u01b6\u0001\u01b6\u0001\u01b7\u0001"+ - "\u01b7\u0001\u01b7\u0001\u01b7\u0001\u01b7\u0001\u01b7\u0001\u01b7\u0001"+ - "\u01b8\u0001\u01b8\u0001\u01b8\u0001\u01b8\u0001\u01b8\u0001\u01b8\u0001"+ - "\u01b8\u0001\u01b8\u0001\u01b8\u0001\u01b8\u0001\u01b8\u0001\u01b9\u0001"+ - "\u01b9\u0001\u01b9\u0001\u01b9\u0001\u01b9\u0001\u01b9\u0001\u01b9\u0001"+ - "\u01b9\u0001\u01b9\u0001\u01b9\u0001\u01ba\u0001\u01ba\u0001\u01ba\u0001"+ - "\u01ba\u0001\u01ba\u0001\u01ba\u0001\u01ba\u0001\u01bb\u0001\u01bb\u0001"+ - "\u01bb\u0001\u01bb\u0001\u01bb\u0001\u01bb\u0001\u01bb\u0001\u01bc\u0001"+ - "\u01bc\u0001\u01bc\u0001\u01bc\u0001\u01bc\u0001\u01bc\u0001\u01bc\u0001"+ - "\u01bc\u0001\u01bd\u0001\u01bd\u0001\u01bd\u0001\u01bd\u0001\u01bd\u0001"+ - "\u01bd\u0001\u01bd\u0001\u01bd\u0001\u01be\u0001\u01be\u0001\u01be\u0001"+ - "\u01be\u0001\u01be\u0001\u01be\u0001\u01be\u0001\u01be\u0001\u01be\u0001"+ - "\u01be\u0001\u01bf\u0001\u01bf\u0001\u01bf\u0001\u01bf\u0001\u01bf\u0001"+ - "\u01bf\u0001\u01bf\u0001\u01c0\u0001\u01c0\u0001\u01c0\u0001\u01c0\u0001"+ - "\u01c0\u0001\u01c0\u0001\u01c0\u0001\u01c1\u0001\u01c1\u0001\u01c1\u0001"+ - "\u01c1\u0001\u01c1\u0001\u01c1\u0001\u01c1\u0001\u01c2\u0001\u01c2\u0001"+ - "\u01c2\u0001\u01c2\u0001\u01c2\u0001\u01c2\u0001\u01c2\u0001\u01c2\u0001"+ - "\u01c2\u0001\u01c2\u0001\u01c2\u0001\u01c2\u0001\u01c3\u0001\u01c3\u0001"+ - "\u01c3\u0001\u01c3\u0001\u01c4\u0001\u01c4\u0001\u01c4\u0001\u01c4\u0001"+ - "\u01c5\u0001\u01c5\u0001\u01c5\u0001\u01c5\u0001\u01c5\u0001\u01c5\u0001"+ - "\u01c6\u0001\u01c6\u0001\u01c6\u0001\u01c6\u0001\u01c6\u0001\u01c6\u0001"+ - "\u01c6\u0001\u01c6\u0001\u01c6\u0001\u01c6\u0001\u01c6\u0001\u01c6\u0001"+ - "\u01c6\u0001\u01c7\u0001\u01c7\u0001\u01c7\u0001\u01c7\u0001\u01c7\u0001"+ - "\u01c7\u0001\u01c7\u0001\u01c7\u0001\u01c7\u0001\u01c7\u0001\u01c7\u0001"+ - "\u01c7\u0001\u01c8\u0001\u01c8\u0001\u01c8\u0001\u01c8\u0001\u01c9\u0001"+ - "\u01c9\u0001\u01c9\u0001\u01c9\u0001\u01ca\u0001\u01ca\u0001\u01ca\u0001"+ - "\u01ca\u0001\u01ca\u0001\u01ca\u0001\u01ca\u0001\u01ca\u0001\u01ca\u0001"+ - "\u01cb\u0001\u01cb\u0001\u01cb\u0001\u01cb\u0001\u01cb\u0001\u01cb\u0001"+ - "\u01cb\u0001\u01cb\u0001\u01cc\u0001\u01cc\u0001\u01cc\u0001\u01cc\u0001"+ - "\u01cc\u0001\u01cc\u0001\u01cc\u0001\u01cc\u0001\u01cc\u0001\u01cc\u0001"+ - "\u01cc\u0001\u01cd\u0001\u01cd\u0001\u01cd\u0001\u01cd\u0001\u01cd\u0001"+ - "\u01cd\u0001\u01ce\u0001\u01ce\u0001\u01ce\u0001\u01ce\u0001\u01ce\u0001"+ - "\u01ce\u0001\u01ce\u0001\u01ce\u0001\u01cf\u0001\u01cf\u0001\u01cf\u0001"+ - "\u01cf\u0001\u01cf\u0001\u01cf\u0001\u01cf\u0001\u01cf\u0001\u01cf\u0001"+ - "\u01d0\u0001\u01d0\u0001\u01d0\u0001\u01d0\u0001\u01d1\u0001\u01d1\u0001"+ - "\u01d1\u0001\u01d1\u0001\u01d1\u0001\u01d1\u0001\u01d1\u0001\u01d1\u0001"+ - "\u01d2\u0001\u01d2\u0001\u01d2\u0001\u01d2\u0001\u01d2\u0001\u01d2\u0001"+ - "\u01d2\u0001\u01d2\u0001\u01d2\u0001\u01d2\u0001\u01d2\u0001\u01d3\u0001"+ - "\u01d3\u0001\u01d3\u0001\u01d3\u0001\u01d3\u0001\u01d3\u0001\u01d3\u0001"+ - "\u01d3\u0001\u01d3\u0001\u01d4\u0001\u01d4\u0001\u01d4\u0001\u01d4\u0001"+ - "\u01d4\u0001\u01d5\u0001\u01d5\u0001\u01d5\u0001\u01d5\u0001\u01d5\u0001"+ - "\u01d5\u0001\u01d5\u0001\u01d6\u0001\u01d6\u0001\u01d6\u0001\u01d6\u0001"+ - "\u01d6\u0001\u01d7\u0001\u01d7\u0001\u01d7\u0001\u01d7\u0001\u01d7\u0001"+ - "\u01d7\u0001\u01d7\u0001\u01d8\u0001\u01d8\u0001\u01d8\u0001\u01d8\u0001"+ - "\u01d8\u0001\u01d9\u0001\u01d9\u0001\u01d9\u0001\u01d9\u0001\u01d9\u0001"+ - "\u01d9\u0001\u01d9\u0001\u01d9\u0001\u01d9\u0001\u01da\u0001\u01da\u0001"+ - "\u01da\u0001\u01da\u0001\u01da\u0001\u01db\u0001\u01db\u0001\u01db\u0001"+ - "\u01db\u0001\u01db\u0001\u01db\u0001\u01db\u0001\u01db\u0001\u01db\u0001"+ - "\u01db\u0001\u01db\u0001\u01db\u0001\u01dc\u0001\u01dc\u0001\u01dc\u0001"+ - "\u01dc\u0001\u01dc\u0001\u01dc\u0001\u01dc\u0001\u01dc\u0001\u01dc\u0001"+ - "\u01dc\u0001\u01dc\u0001\u01dd\u0001\u01dd\u0001\u01dd\u0001\u01dd\u0001"+ - "\u01dd\u0001\u01dd\u0001\u01dd\u0001\u01dd\u0001\u01dd\u0001\u01de\u0001"+ - "\u01de\u0001\u01de\u0001\u01de\u0001\u01de\u0001\u01de\u0001\u01de\u0001"+ - "\u01de\u0001\u01df\u0001\u01df\u0001\u01df\u0001\u01df\u0001\u01df\u0001"+ - "\u01df\u0001\u01df\u0001\u01df\u0001\u01df\u0001\u01df\u0001\u01df\u0001"+ - "\u01df\u0001\u01df\u0001\u01df\u0001\u01e0\u0001\u01e0\u0001\u01e0\u0001"+ - "\u01e0\u0001\u01e0\u0001\u01e0\u0001\u01e0\u0001\u01e0\u0001\u01e1\u0001"+ - "\u01e1\u0001\u01e1\u0001\u01e1\u0001\u01e1\u0001\u01e1\u0001\u01e1\u0001"+ - "\u01e1\u0001\u01e1\u0001\u01e1\u0001\u01e1\u0001\u01e2\u0001\u01e2\u0001"+ - "\u01e2\u0001\u01e2\u0001\u01e2\u0001\u01e2\u0001\u01e2\u0001\u01e3\u0001"+ - "\u01e3\u0001\u01e3\u0001\u01e3\u0001\u01e3\u0001\u01e3\u0001\u01e3\u0001"+ - "\u01e4\u0001\u01e4\u0001\u01e4\u0001\u01e4\u0001\u01e4\u0001\u01e4\u0001"+ - "\u01e4\u0001\u01e5\u0001\u01e5\u0001\u01e5\u0001\u01e5\u0001\u01e5\u0001"+ - "\u01e5\u0001\u01e5\u0001\u01e6\u0001\u01e6\u0001\u01e6\u0001\u01e6\u0001"+ - "\u01e7\u0001\u01e7\u0001\u01e7\u0001\u01e7\u0001\u01e8\u0001\u01e8\u0001"+ - "\u01e8\u0001\u01e8\u0001\u01e8\u0001\u01e9\u0001\u01e9\u0001\u01e9\u0001"+ - "\u01e9\u0001\u01e9\u0001\u01ea\u0001\u01ea\u0001\u01ea\u0001\u01ea\u0001"+ - "\u01ea\u0001\u01ea\u0001\u01ea\u0001\u01ea\u0001\u01eb\u0001\u01eb\u0001"+ - "\u01eb\u0001\u01eb\u0001\u01eb\u0001\u01eb\u0001\u01ec\u0001\u01ec\u0001"+ - "\u01ec\u0001\u01ec\u0001\u01ec\u0001\u01ec\u0001\u01ec\u0001\u01ec\u0001"+ - "\u01ec\u0001\u01ec\u0001\u01ed\u0001\u01ed\u0001\u01ed\u0001\u01ed\u0001"+ - "\u01ed\u0001\u01ee\u0001\u01ee\u0001\u01ee\u0001\u01ee\u0001\u01ee\u0001"+ - "\u01ee\u0001\u01ee\u0001\u01ee\u0001\u01ee\u0001\u01ee\u0001\u01ee\u0001"+ - "\u01ee\u0001\u01ee\u0001\u01ee\u0001\u01ee\u0001\u01ee\u0001\u01ee\u0001"+ - "\u01ee\u0001\u01ee\u0001\u01ee\u0001\u01ef\u0001\u01ef\u0001\u01ef\u0001"+ - "\u01ef\u0001\u01ef\u0001\u01ef\u0001\u01ef\u0001\u01ef\u0001\u01ef\u0001"+ - "\u01ef\u0001\u01ef\u0001\u01ef\u0001\u01ef\u0001\u01ef\u0001\u01ef\u0001"+ - "\u01ef\u0001\u01ef\u0001\u01ef\u0001\u01f0\u0001\u01f0\u0001\u01f0\u0001"+ - "\u01f0\u0001\u01f0\u0001\u01f0\u0001\u01f1\u0001\u01f1\u0001\u01f1\u0001"+ - "\u01f1\u0001\u01f1\u0001\u01f1\u0001\u01f1\u0001\u01f1\u0001\u01f1\u0001"+ - "\u01f1\u0001\u01f1\u0001\u01f1\u0001\u01f1\u0001\u01f2\u0001\u01f2\u0001"+ - "\u01f2\u0001\u01f2\u0001\u01f2\u0001\u01f2\u0001\u01f2\u0001\u01f2\u0001"+ - "\u01f2\u0001\u01f2\u0001\u01f2\u0001\u01f3\u0001\u01f3\u0001\u01f3\u0001"+ - "\u01f3\u0001\u01f3\u0001\u01f3\u0001\u01f4\u0001\u01f4\u0001\u01f4\u0001"+ - "\u01f4\u0001\u01f4\u0001\u01f4\u0001\u01f4\u0001\u01f4\u0001\u01f4\u0001"+ - "\u01f5\u0001\u01f5\u0001\u01f5\u0001\u01f5\u0001\u01f5\u0001\u01f5\u0001"+ - "\u01f5\u0001\u01f5\u0001\u01f6\u0001\u01f6\u0001\u01f6\u0001\u01f6\u0001"+ - "\u01f7\u0001\u01f7\u0001\u01f7\u0001\u01f7\u0001\u01f7\u0001\u01f7\u0001"+ - "\u01f7\u0001\u01f7\u0001\u01f7\u0001\u01f7\u0001\u01f7\u0001\u01f7\u0001"+ - "\u01f8\u0001\u01f8\u0001\u01f8\u0001\u01f8\u0001\u01f8\u0001\u01f8\u0001"+ - "\u01f8\u0001\u01f8\u0001\u01f9\u0001\u01f9\u0001\u01f9\u0001\u01f9\u0001"+ - "\u01f9\u0001\u01f9\u0001\u01fa\u0001\u01fa\u0001\u01fa\u0001\u01fa\u0001"+ - "\u01fa\u0001\u01fa\u0001\u01fb\u0001\u01fb\u0001\u01fb\u0001\u01fb\u0001"+ - "\u01fb\u0001\u01fb\u0001\u01fb\u0001\u01fb\u0001\u01fc\u0001\u01fc\u0001"+ - "\u01fc\u0001\u01fc\u0001\u01fc\u0001\u01fc\u0001\u01fc\u0001\u01fc\u0001"+ - "\u01fd\u0001\u01fd\u0001\u01fd\u0001\u01fd\u0001\u01fd\u0001\u01fd\u0001"+ - "\u01fe\u0001\u01fe\u0001\u01fe\u0001\u01fe\u0001\u01fe\u0001\u01ff\u0001"+ - "\u01ff\u0001\u01ff\u0001\u01ff\u0001\u01ff\u0001\u01ff\u0001\u01ff\u0001"+ - "\u0200\u0001\u0200\u0001\u0200\u0001\u0200\u0001\u0200\u0001\u0200\u0001"+ - "\u0201\u0001\u0201\u0001\u0201\u0001\u0201\u0001\u0201\u0001\u0201\u0001"+ - "\u0202\u0001\u0202\u0001\u0202\u0001\u0202\u0001\u0202\u0001\u0202\u0001"+ - "\u0202\u0001\u0202\u0001\u0202\u0001\u0203\u0001\u0203\u0001\u0203\u0001"+ - "\u0203\u0001\u0203\u0001\u0203\u0001\u0204\u0001\u0204\u0001\u0204\u0001"+ - "\u0204\u0001\u0205\u0001\u0205\u0001\u0205\u0001\u0205\u0001\u0205\u0001"+ - "\u0206\u0001\u0206\u0001\u0206\u0001\u0206\u0001\u0206\u0001\u0206\u0001"+ - "\u0206\u0001\u0207\u0001\u0207\u0001\u0207\u0001\u0207\u0001\u0207\u0001"+ - "\u0207\u0001\u0207\u0001\u0207\u0001\u0208\u0001\u0208\u0001\u0208\u0001"+ - "\u0208\u0001\u0208\u0001\u0208\u0001\u0208\u0001\u0208\u0001\u0208\u0001"+ - "\u0208\u0001\u0209\u0001\u0209\u0001\u0209\u0001\u0209\u0001\u0209\u0001"+ - "\u0209\u0001\u0209\u0001\u020a\u0001\u020a\u0001\u020a\u0001\u020a\u0001"+ - "\u020a\u0001\u020b\u0001\u020b\u0001\u020b\u0001\u020b\u0001\u020b\u0001"+ - "\u020c\u0001\u020c\u0001\u020c\u0001\u020c\u0001\u020d\u0001\u020d\u0001"+ - "\u020d\u0001\u020d\u0001\u020d\u0001\u020e\u0001\u020e\u0001\u020e\u0001"+ - "\u020e\u0001\u020e\u0001\u020f\u0001\u020f\u0001\u020f\u0001\u020f\u0001"+ - "\u020f\u0001\u020f\u0001\u020f\u0001\u020f\u0001\u0210\u0001\u0210\u0001"+ - "\u0210\u0001\u0210\u0001\u0210\u0001\u0210\u0001\u0210\u0001\u0210\u0001"+ - "\u0211\u0001\u0211\u0001\u0211\u0001\u0211\u0001\u0212\u0001\u0212\u0001"+ - "\u0212\u0001\u0212\u0001\u0213\u0001\u0213\u0001\u0213\u0001\u0213\u0001"+ - "\u0213\u0001\u0213\u0001\u0213\u0001\u0213\u0001\u0213\u0001\u0213\u0001"+ - "\u0214\u0001\u0214\u0001\u0214\u0001\u0214\u0001\u0214\u0001\u0214\u0001"+ - "\u0215\u0001\u0215\u0001\u0215\u0001\u0215\u0001\u0216\u0001\u0216\u0001"+ - "\u0216\u0001\u0216\u0001\u0217\u0001\u0217\u0001\u0217\u0001\u0218\u0001"+ - "\u0218\u0001\u0218\u0001\u0218\u0001\u0218\u0001\u0218\u0001\u0219\u0001"+ - "\u0219\u0001\u0219\u0001\u0219\u0001\u0219\u0001\u0219\u0001\u0219\u0001"+ - "\u0219\u0001\u0219\u0001\u0219\u0001\u021a\u0001\u021a\u0001\u021a\u0001"+ - "\u021a\u0001\u021b\u0001\u021b\u0001\u021b\u0001\u021c\u0001\u021c\u0001"+ - "\u021c\u0001\u021c\u0001\u021c\u0001\u021c\u0001\u021d\u0001\u021d\u0001"+ - "\u021d\u0001\u021d\u0001\u021d\u0001\u021d\u0001\u021d\u0001\u021d\u0001"+ - "\u021e\u0001\u021e\u0001\u021e\u0001\u021e\u0001\u021e\u0001\u021e\u0001"+ - "\u021f\u0001\u021f\u0001\u021f\u0001\u021f\u0001\u021f\u0001\u021f\u0001"+ - "\u0220\u0001\u0220\u0001\u0220\u0001\u0220\u0001\u0220\u0001\u0221\u0001"+ - "\u0221\u0001\u0221\u0001\u0221\u0001\u0221\u0001\u0222\u0001\u0222\u0001"+ - "\u0222\u0001\u0222\u0001\u0222\u0001\u0222\u0001\u0222\u0001\u0222\u0001"+ - "\u0222\u0001\u0222\u0001\u0222\u0001\u0223\u0001\u0223\u0001\u0223\u0001"+ - "\u0223\u0001\u0223\u0001\u0223\u0001\u0224\u0001\u0224\u0001\u0224\u0001"+ - "\u0224\u0001\u0224\u0001\u0224\u0001\u0224\u0001\u0224\u0001\u0224\u0001"+ - "\u0224\u0001\u0224\u0001\u0224\u0001\u0224\u0001\u0225\u0001\u0225\u0001"+ - "\u0225\u0001\u0225\u0001\u0225\u0001\u0225\u0001\u0225\u0001\u0226\u0001"+ - "\u0226\u0001\u0226\u0001\u0226\u0001\u0226\u0001\u0226\u0001\u0226\u0001"+ - "\u0226\u0001\u0227\u0001\u0227\u0001\u0227\u0001\u0227\u0001\u0227\u0001"+ - "\u0228\u0001\u0228\u0001\u0228\u0001\u0228\u0001\u0228\u0001\u0228\u0001"+ - "\u0229\u0001\u0229\u0001\u0229\u0001\u0229\u0001\u0229\u0001\u022a\u0001"+ - "\u022a\u0001\u022a\u0001\u022a\u0001\u022a\u0001\u022a\u0001\u022b\u0001"+ - "\u022b\u0001\u022b\u0001\u022b\u0001\u022b\u0001\u022c\u0001\u022c\u0001"+ - "\u022c\u0001\u022c\u0001\u022c\u0001\u022c\u0001\u022d\u0001\u022d\u0001"+ - "\u022d\u0001\u022d\u0001\u022d\u0001\u022d\u0001\u022e\u0001\u022e\u0001"+ - "\u022e\u0001\u022e\u0001\u022e\u0001\u022e\u0001\u022e\u0001\u022f\u0001"+ - "\u022f\u0001\u022f\u0001\u022f\u0001\u0230\u0001\u0230\u0001\u0230\u0001"+ - "\u0230\u0001\u0230\u0001\u0231\u0001\u0231\u0001\u0231\u0001\u0231\u0001"+ - "\u0232\u0001\u0232\u0001\u0232\u0001\u0232\u0001\u0232\u0001\u0233\u0001"+ - "\u0233\u0001\u0233\u0001\u0233\u0001\u0234\u0001\u0234\u0001\u0234\u0001"+ - "\u0234\u0001\u0234\u0001\u0235\u0001\u0235\u0001\u0235\u0001\u0235\u0001"+ - "\u0236\u0001\u0236\u0001\u0236\u0001\u0236\u0001\u0236\u0001\u0237\u0001"+ - "\u0237\u0001\u0237\u0001\u0237\u0001\u0237\u0001\u0238\u0001\u0238\u0001"+ - "\u0238\u0001\u0238\u0001\u0238\u0001\u0239\u0001\u0239\u0001\u0239\u0001"+ - "\u0239\u0001\u0239\u0001\u023a\u0001\u023a\u0001\u023a\u0001\u023a\u0001"+ - "\u023a\u0001\u023a\u0001\u023b\u0001\u023b\u0001\u023b\u0001\u023b\u0001"+ - "\u023b\u0001\u023b\u0001\u023c\u0001\u023c\u0001\u023c\u0001\u023c\u0001"+ - "\u023c\u0001\u023c\u0001\u023d\u0001\u023d\u0001\u023d\u0001\u023d\u0001"+ - "\u023d\u0001\u023d\u0001\u023d\u0001\u023d\u0001\u023d\u0001\u023d\u0001"+ - "\u023d\u0001\u023e\u0001\u023e\u0001\u023e\u0001\u023e\u0001\u023e\u0001"+ - "\u023e\u0001\u023e\u0001\u023e\u0001\u023e\u0001\u023e\u0001\u023e\u0001"+ - "\u023e\u0001\u023f\u0001\u023f\u0001\u023f\u0001\u023f\u0001\u023f\u0001"+ - "\u023f\u0001\u023f\u0001\u023f\u0001\u023f\u0001\u023f\u0001\u023f\u0001"+ - "\u023f\u0001\u023f\u0001\u023f\u0001\u023f\u0001\u023f\u0001\u023f\u0001"+ - "\u0240\u0001\u0240\u0001\u0240\u0001\u0240\u0001\u0240\u0001\u0240\u0001"+ - "\u0241\u0001\u0241\u0001\u0241\u0001\u0241\u0001\u0241\u0001\u0241\u0001"+ - "\u0241\u0001\u0241\u0001\u0241\u0001\u0241\u0001\u0241\u0001\u0241\u0001"+ - "\u0241\u0001\u0242\u0001\u0242\u0001\u0242\u0001\u0242\u0001\u0242\u0001"+ - "\u0242\u0001\u0243\u0001\u0243\u0001\u0243\u0001\u0243\u0001\u0243\u0001"+ - "\u0243\u0001\u0244\u0001\u0244\u0001\u0244\u0001\u0244\u0001\u0244\u0001"+ - "\u0244\u0001\u0245\u0001\u0245\u0001\u0245\u0001\u0245\u0001\u0246\u0001"+ - "\u0246\u0001\u0246\u0001\u0246\u0001\u0246\u0001\u0246\u0001\u0246\u0001"+ - "\u0247\u0001\u0247\u0001\u0247\u0001\u0247\u0001\u0247\u0001\u0247\u0001"+ - "\u0247\u0001\u0247\u0001\u0247\u0001\u0247\u0001\u0248\u0001\u0248\u0001"+ - "\u0248\u0001\u0248\u0001\u0248\u0001\u0248\u0001\u0248\u0001\u0249\u0001"+ - "\u0249\u0001\u0249\u0001\u0249\u0001\u0249\u0001\u0249\u0001\u0249\u0001"+ - "\u0249\u0001\u024a\u0001\u024a\u0001\u024a\u0001\u024a\u0001\u024a\u0001"+ - "\u024a\u0001\u024a\u0001\u024b\u0001\u024b\u0001\u024b\u0001\u024b\u0001"+ - "\u024b\u0001\u024c\u0001\u024c\u0001\u024c\u0001\u024c\u0001\u024c\u0001"+ - "\u024c\u0001\u024d\u0001\u024d\u0001\u024d\u0001\u024d\u0001\u024e\u0001"+ - "\u024e\u0001\u024e\u0001\u024e\u0001\u024e\u0001\u024e\u0001\u024e\u0001"+ - "\u024e\u0001\u024e\u0001\u024e\u0001\u024e\u0001\u024e\u0001\u024f\u0001"+ - "\u024f\u0001\u024f\u0001\u024f\u0001\u024f\u0001\u024f\u0001\u024f\u0001"+ - "\u024f\u0001\u024f\u0001\u024f\u0001\u024f\u0001\u024f\u0001\u024f\u0001"+ - "\u024f\u0001\u024f\u0001\u024f\u0001\u024f\u0001\u024f\u0001\u024f\u0001"+ - "\u0250\u0001\u0250\u0001\u0250\u0001\u0250\u0001\u0250\u0001\u0250\u0001"+ - "\u0250\u0001\u0250\u0001\u0250\u0001\u0250\u0001\u0250\u0001\u0250\u0001"+ - "\u0251\u0001\u0251\u0001\u0251\u0001\u0251\u0001\u0251\u0001\u0251\u0001"+ - "\u0251\u0001\u0251\u0001\u0251\u0001\u0251\u0001\u0251\u0001\u0251\u0001"+ - "\u0251\u0001\u0251\u0001\u0252\u0001\u0252\u0001\u0252\u0001\u0252\u0001"+ - "\u0252\u0001\u0252\u0001\u0252\u0001\u0252\u0001\u0252\u0001\u0252\u0001"+ - "\u0252\u0001\u0252\u0001\u0252\u0001\u0252\u0001\u0252\u0001\u0253\u0001"+ - "\u0253\u0001\u0253\u0001\u0253\u0001\u0253\u0001\u0253\u0001\u0253\u0001"+ - "\u0253\u0001\u0253\u0001\u0253\u0001\u0253\u0001\u0253\u0001\u0253\u0001"+ - "\u0254\u0001\u0254\u0001\u0254\u0001\u0254\u0001\u0254\u0001\u0254\u0001"+ - "\u0254\u0001\u0254\u0001\u0254\u0001\u0254\u0001\u0254\u0001\u0254\u0001"+ - "\u0254\u0001\u0255\u0001\u0255\u0001\u0255\u0001\u0255\u0001\u0255\u0001"+ - "\u0255\u0001\u0255\u0001\u0255\u0001\u0255\u0001\u0255\u0001\u0255\u0001"+ - "\u0255\u0001\u0256\u0001\u0256\u0001\u0256\u0001\u0256\u0001\u0256\u0001"+ - "\u0256\u0001\u0256\u0001\u0256\u0001\u0256\u0001\u0256\u0001\u0256\u0001"+ - "\u0256\u0001\u0256\u0001\u0257\u0001\u0257\u0001\u0257\u0001\u0257\u0001"+ - "\u0257\u0001\u0257\u0001\u0257\u0001\u0257\u0001\u0257\u0001\u0257\u0001"+ - "\u0257\u0001\u0257\u0001\u0257\u0001\u0257\u0001\u0257\u0001\u0258\u0001"+ - "\u0258\u0001\u0258\u0001\u0258\u0001\u0258\u0001\u0258\u0001\u0258\u0001"+ - "\u0258\u0001\u0258\u0001\u0258\u0001\u0258\u0001\u0258\u0001\u0258\u0001"+ - "\u0258\u0001\u0258\u0001\u0259\u0001\u0259\u0001\u0259\u0001\u0259\u0001"+ - "\u0259\u0001\u0259\u0001\u0259\u0001\u0259\u0001\u0259\u0001\u0259\u0001"+ - "\u0259\u0001\u0259\u0001\u0259\u0001\u0259\u0001\u0259\u0001\u0259\u0001"+ - "\u0259\u0001\u0259\u0001\u0259\u0001\u0259\u0001\u0259\u0001\u0259\u0001"+ - "\u025a\u0001\u025a\u0001\u025a\u0001\u025a\u0001\u025a\u0001\u025a\u0001"+ - "\u025a\u0001\u025a\u0001\u025a\u0001\u025a\u0001\u025a\u0001\u025a\u0001"+ - "\u025a\u0001\u025a\u0001\u025a\u0001\u025a\u0001\u025a\u0001\u025a\u0001"+ - "\u025a\u0001\u025a\u0001\u025a\u0001\u025a\u0001\u025b\u0001\u025b\u0001"+ - "\u025b\u0001\u025b\u0001\u025b\u0001\u025b\u0001\u025b\u0001\u025b\u0001"+ - "\u025b\u0001\u025b\u0001\u025b\u0001\u025b\u0001\u025b\u0001\u025b\u0001"+ - "\u025c\u0001\u025c\u0001\u025c\u0001\u025c\u0001\u025c\u0001\u025c\u0001"+ - "\u025c\u0001\u025d\u0001\u025d\u0001\u025d\u0001\u025d\u0001\u025d\u0001"+ - "\u025e\u0001\u025e\u0001\u025e\u0001\u025e\u0001\u025e\u0001\u025e\u0001"+ - "\u025f\u0001\u025f\u0001\u025f\u0001\u025f\u0001\u025f\u0001\u025f\u0001"+ - "\u025f\u0001\u025f\u0001\u025f\u0001\u025f\u0001\u025f\u0001\u0260\u0001"+ - "\u0260\u0001\u0260\u0001\u0260\u0001\u0260\u0001\u0260\u0001\u0260\u0001"+ - "\u0260\u0001\u0260\u0001\u0260\u0001\u0260\u0001\u0260\u0001\u0261\u0001"+ - "\u0261\u0001\u0261\u0001\u0261\u0001\u0261\u0001\u0261\u0001\u0261\u0001"+ - "\u0261\u0001\u0261\u0001\u0261\u0001\u0261\u0001\u0261\u0001\u0261\u0001"+ - "\u0261\u0001\u0261\u0001\u0261\u0001\u0262\u0001\u0262\u0001\u0262\u0001"+ - "\u0262\u0001\u0262\u0001\u0262\u0001\u0262\u0001\u0262\u0001\u0262\u0001"+ - "\u0262\u0001\u0262\u0001\u0262\u0001\u0262\u0001\u0262\u0001\u0262\u0001"+ - "\u0262\u0001\u0263\u0001\u0263\u0001\u0263\u0001\u0263\u0001\u0263\u0001"+ - "\u0263\u0001\u0263\u0001\u0264\u0001\u0264\u0001\u0264\u0001\u0264\u0001"+ - "\u0264\u0001\u0264\u0001\u0264\u0001\u0265\u0001\u0265\u0001\u0265\u0001"+ - "\u0265\u0001\u0265\u0001\u0265\u0001\u0265\u0001\u0265\u0001\u0265\u0001"+ - "\u0266\u0001\u0266\u0001\u0266\u0001\u0266\u0001\u0266\u0001\u0266\u0001"+ - "\u0266\u0001\u0267\u0001\u0267\u0001\u0267\u0001\u0267\u0001\u0267\u0001"+ - "\u0267\u0001\u0267\u0001\u0267\u0001\u0267\u0001\u0267\u0001\u0268\u0001"+ - "\u0268\u0001\u0268\u0001\u0268\u0001\u0268\u0001\u0268\u0001\u0268\u0001"+ - "\u0269\u0001\u0269\u0001\u0269\u0001\u0269\u0001\u026a\u0001\u026a\u0001"+ - "\u026a\u0001\u026a\u0001\u026a\u0001\u026a\u0001\u026a\u0001\u026a\u0001"+ - "\u026a\u0001\u026a\u0001\u026a\u0001\u026a\u0001\u026a\u0001\u026a\u0001"+ - "\u026a\u0001\u026a\u0001\u026b\u0001\u026b\u0001\u026b\u0001\u026b\u0001"+ - "\u026b\u0001\u026b\u0001\u026b\u0001\u026b\u0001\u026b\u0001\u026c\u0001"+ - "\u026c\u0001\u026c\u0001\u026c\u0001\u026c\u0001\u026c\u0001\u026c\u0001"+ - "\u026c\u0001\u026c\u0001\u026c\u0001\u026d\u0001\u026d\u0001\u026d\u0001"+ - "\u026d\u0001\u026d\u0001\u026d\u0001\u026d\u0001\u026d\u0001\u026d\u0001"+ - "\u026d\u0001\u026d\u0001\u026e\u0001\u026e\u0001\u026e\u0001\u026e\u0001"+ - "\u026e\u0001\u026e\u0001\u026e\u0001\u026e\u0001\u026e\u0001\u026f\u0001"+ - "\u026f\u0001\u026f\u0001\u026f\u0001\u026f\u0001\u026f\u0001\u026f\u0001"+ - "\u026f\u0001\u026f\u0001\u026f\u0001\u026f\u0001\u026f\u0001\u026f\u0001"+ - "\u0270\u0001\u0270\u0001\u0270\u0001\u0270\u0001\u0270\u0001\u0270\u0001"+ - "\u0270\u0001\u0270\u0001\u0270\u0001\u0270\u0001\u0270\u0001\u0270\u0001"+ - "\u0270\u0001\u0270\u0001\u0271\u0001\u0271\u0001\u0271\u0001\u0271\u0001"+ - "\u0271\u0001\u0271\u0001\u0271\u0001\u0271\u0001\u0271\u0001\u0271\u0001"+ - "\u0271\u0001\u0271\u0001\u0271\u0001\u0271\u0001\u0271\u0001\u0271\u0001"+ - "\u0271\u0001\u0272\u0001\u0272\u0001\u0272\u0001\u0272\u0001\u0272\u0001"+ - "\u0272\u0001\u0272\u0001\u0272\u0001\u0272\u0001\u0272\u0001\u0273\u0001"+ - "\u0273\u0001\u0273\u0001\u0273\u0001\u0273\u0001\u0273\u0001\u0273\u0001"+ - "\u0273\u0001\u0273\u0001\u0273\u0001\u0273\u0001\u0273\u0001\u0273\u0001"+ - "\u0273\u0001\u0274\u0001\u0274\u0001\u0274\u0001\u0274\u0001\u0274\u0001"+ - "\u0274\u0001\u0274\u0001\u0274\u0001\u0274\u0001\u0274\u0001\u0275\u0001"+ - "\u0275\u0001\u0275\u0001\u0275\u0001\u0275\u0001\u0275\u0001\u0275\u0001"+ - "\u0275\u0001\u0275\u0001\u0275\u0001\u0275\u0001\u0275\u0001\u0275\u0001"+ - "\u0275\u0001\u0275\u0001\u0276\u0001\u0276\u0001\u0276\u0001\u0276\u0001"+ - "\u0276\u0001\u0276\u0001\u0276\u0001\u0276\u0001\u0276\u0001\u0276\u0001"+ - "\u0276\u0001\u0276\u0001\u0276\u0001\u0276\u0001\u0276\u0001\u0276\u0001"+ - "\u0276\u0001\u0277\u0001\u0277\u0001\u0277\u0001\u0277\u0001\u0278\u0001"+ - "\u0278\u0001\u0278\u0001\u0278\u0001\u0278\u0001\u0278\u0001\u0278\u0001"+ - "\u0278\u0001\u0278\u0001\u0278\u0001\u0278\u0001\u0278\u0001\u0278\u0001"+ - "\u0278\u0001\u0278\u0001\u0278\u0001\u0278\u0001\u0278\u0001\u0278\u0001"+ - "\u0278\u0001\u0279\u0001\u0279\u0001\u0279\u0001\u0279\u0001\u0279\u0001"+ - "\u0279\u0001\u0279\u0001\u0279\u0001\u0279\u0001\u0279\u0001\u027a\u0001"+ - "\u027a\u0001\u027a\u0001\u027a\u0001\u027a\u0001\u027a\u0001\u027a\u0001"+ - "\u027a\u0001\u027a\u0001\u027a\u0001\u027a\u0001\u027a\u0001\u027a\u0001"+ - "\u027a\u0001\u027a\u0001\u027a\u0001\u027a\u0001\u027a\u0001\u027a\u0001"+ - "\u027a\u0001\u027a\u0001\u027a\u0001\u027b\u0001\u027b\u0001\u027b\u0001"+ - "\u027b\u0001\u027b\u0001\u027b\u0001\u027b\u0001\u027b\u0001\u027b\u0001"+ - "\u027b\u0001\u027b\u0001\u027b\u0001\u027b\u0001\u027c\u0001\u027c\u0001"+ - "\u027c\u0001\u027c\u0001\u027c\u0001\u027c\u0001\u027c\u0001\u027c\u0001"+ - "\u027d\u0001\u027d\u0001\u027d\u0001\u027d\u0001\u027d\u0001\u027d\u0001"+ - "\u027d\u0001\u027d\u0001\u027e\u0001\u027e\u0001\u027e\u0001\u027e\u0001"+ - "\u027e\u0001\u027e\u0001\u027e\u0001\u027e\u0001\u027e\u0001\u027e\u0001"+ - "\u027f\u0001\u027f\u0005\u027f\u18b3\b\u027f\n\u027f\f\u027f\u18b6\t\u027f"+ + "O\u0001P\u0001P\u0001P\u0001P\u0001Q\u0001Q\u0001Q\u0001Q\u0001Q\u0001"+ + "R\u0001R\u0001R\u0001R\u0001R\u0001R\u0001R\u0001S\u0001S\u0001S\u0001"+ + "T\u0001T\u0001T\u0001T\u0001T\u0001U\u0001U\u0001U\u0001V\u0001V\u0001"+ + "V\u0001V\u0001V\u0001V\u0001W\u0001W\u0001W\u0001W\u0001W\u0001W\u0001"+ + "W\u0001W\u0001X\u0001X\u0001X\u0001X\u0001X\u0001X\u0001X\u0001X\u0001"+ + "Y\u0001Y\u0001Y\u0001Y\u0001Y\u0001Y\u0001Y\u0001Y\u0001Y\u0001Y\u0001"+ + "Y\u0001Z\u0001Z\u0001Z\u0001Z\u0001Z\u0001Z\u0001Z\u0001Z\u0001Z\u0001"+ + "Z\u0001[\u0001[\u0001[\u0001[\u0001[\u0001[\u0001[\u0001\\\u0001\\\u0001"+ + "\\\u0001\\\u0001\\\u0001\\\u0001\\\u0001\\\u0001\\\u0001\\\u0001\\\u0001"+ + "\\\u0001\\\u0001]\u0001]\u0001]\u0001]\u0001]\u0001^\u0001^\u0001^\u0001"+ + "^\u0001^\u0001^\u0001^\u0001^\u0001^\u0001^\u0001_\u0001_\u0001_\u0001"+ + "_\u0001_\u0001_\u0001`\u0001`\u0001`\u0001`\u0001`\u0001a\u0001a\u0001"+ + "a\u0001b\u0001b\u0001b\u0001b\u0001b\u0001b\u0001c\u0001c\u0001c\u0001"+ + "c\u0001c\u0001c\u0001c\u0001d\u0001d\u0001d\u0001d\u0001d\u0001d\u0001"+ + "d\u0001d\u0001d\u0001e\u0001e\u0001e\u0001e\u0001e\u0001f\u0001f\u0001"+ + "f\u0001f\u0001f\u0001f\u0001g\u0001g\u0001g\u0001g\u0001g\u0001g\u0001"+ + "g\u0001h\u0001h\u0001h\u0001h\u0001h\u0001i\u0001i\u0001i\u0001i\u0001"+ + "i\u0001i\u0001j\u0001j\u0001j\u0001j\u0001j\u0001j\u0001j\u0001j\u0001"+ + "j\u0001k\u0001k\u0001k\u0001k\u0001k\u0001l\u0001l\u0001l\u0001l\u0001"+ + "l\u0001l\u0001m\u0001m\u0001m\u0001m\u0001m\u0001m\u0001m\u0001n\u0001"+ + "n\u0001n\u0001n\u0001n\u0001o\u0001o\u0001o\u0001o\u0001o\u0001o\u0001"+ + "o\u0001o\u0001o\u0001o\u0001o\u0001o\u0001o\u0001o\u0001p\u0001p\u0001"+ + "p\u0001p\u0001p\u0001p\u0001p\u0001q\u0001q\u0001q\u0001q\u0001q\u0001"+ + "q\u0001q\u0001q\u0001q\u0001q\u0001r\u0001r\u0001r\u0001r\u0001r\u0001"+ + "r\u0001r\u0001r\u0001r\u0001r\u0001r\u0001r\u0001r\u0001s\u0001s\u0001"+ + "s\u0001s\u0001s\u0001s\u0001t\u0001t\u0001t\u0001t\u0001t\u0001t\u0001"+ + "t\u0001t\u0001t\u0001t\u0001t\u0001t\u0001t\u0001t\u0001t\u0001u\u0001"+ + "u\u0001u\u0001u\u0001u\u0001u\u0001u\u0001v\u0001v\u0001v\u0001v\u0001"+ + "v\u0001w\u0001w\u0001w\u0001w\u0001w\u0001w\u0001x\u0001x\u0001x\u0001"+ + "x\u0001x\u0001x\u0001y\u0001y\u0001y\u0001z\u0001z\u0001z\u0001z\u0001"+ + "z\u0001z\u0001z\u0001{\u0001{\u0001{\u0001{\u0001{\u0001|\u0001|\u0001"+ + "|\u0001|\u0001|\u0001}\u0001}\u0001}\u0001}\u0001}\u0001~\u0001~\u0001"+ + "~\u0001~\u0001~\u0001~\u0001~\u0001~\u0001\u007f\u0001\u007f\u0001\u007f"+ + "\u0001\u007f\u0001\u007f\u0001\u007f\u0001\u007f\u0001\u007f\u0001\u0080"+ + "\u0001\u0080\u0001\u0080\u0001\u0080\u0001\u0080\u0001\u0080\u0001\u0081"+ + "\u0001\u0081\u0001\u0081\u0001\u0081\u0001\u0081\u0001\u0082\u0001\u0082"+ + "\u0001\u0082\u0001\u0082\u0001\u0082\u0001\u0082\u0001\u0082\u0001\u0082"+ + "\u0001\u0082\u0001\u0083\u0001\u0083\u0001\u0083\u0001\u0083\u0001\u0083"+ + "\u0001\u0083\u0001\u0084\u0001\u0084\u0001\u0084\u0001\u0084\u0001\u0084"+ + "\u0001\u0084\u0001\u0084\u0001\u0084\u0001\u0085\u0001\u0085\u0001\u0085"+ + "\u0001\u0085\u0001\u0085\u0001\u0085\u0001\u0085\u0001\u0085\u0001\u0086"+ + "\u0001\u0086\u0001\u0086\u0001\u0086\u0001\u0086\u0001\u0086\u0001\u0087"+ + "\u0001\u0087\u0001\u0087\u0001\u0087\u0001\u0087\u0001\u0087\u0001\u0087"+ + "\u0001\u0087\u0001\u0087\u0001\u0088\u0001\u0088\u0001\u0088\u0001\u0088"+ + "\u0001\u0088\u0001\u0088\u0001\u0088\u0001\u0089\u0001\u0089\u0001\u0089"+ + "\u0001\u0089\u0001\u0089\u0001\u0089\u0001\u0089\u0001\u008a\u0001\u008a"+ + "\u0001\u008a\u0001\u008a\u0001\u008b\u0001\u008b\u0001\u008b\u0001\u008b"+ + "\u0001\u008b\u0001\u008b\u0001\u008c\u0001\u008c\u0001\u008c\u0001\u008c"+ + "\u0001\u008c\u0001\u008c\u0001\u008d\u0001\u008d\u0001\u008d\u0001\u008d"+ + "\u0001\u008d\u0001\u008d\u0001\u008d\u0001\u008d\u0001\u008d\u0001\u008d"+ + "\u0001\u008e\u0001\u008e\u0001\u008e\u0001\u008e\u0001\u008e\u0001\u008f"+ + "\u0001\u008f\u0001\u008f\u0001\u008f\u0001\u008f\u0001\u008f\u0001\u0090"+ + "\u0001\u0090\u0001\u0090\u0001\u0090\u0001\u0090\u0001\u0090\u0001\u0090"+ + "\u0001\u0091\u0001\u0091\u0001\u0091\u0001\u0091\u0001\u0091\u0001\u0091"+ + "\u0001\u0091\u0001\u0091\u0001\u0091\u0001\u0091\u0001\u0092\u0001\u0092"+ + "\u0001\u0092\u0001\u0092\u0001\u0092\u0001\u0092\u0001\u0092\u0001\u0092"+ + "\u0001\u0092\u0001\u0092\u0001\u0092\u0001\u0093\u0001\u0093\u0001\u0093"+ + "\u0001\u0094\u0001\u0094\u0001\u0094\u0001\u0094\u0001\u0094\u0001\u0094"+ + "\u0001\u0094\u0001\u0094\u0001\u0094\u0001\u0094\u0001\u0095\u0001\u0095"+ + "\u0001\u0095\u0001\u0095\u0001\u0095\u0001\u0095\u0001\u0095\u0001\u0095"+ + "\u0001\u0095\u0001\u0096\u0001\u0096\u0001\u0096\u0001\u0096\u0001\u0096"+ + "\u0001\u0096\u0001\u0096\u0001\u0097\u0001\u0097\u0001\u0097\u0001\u0097"+ + "\u0001\u0097\u0001\u0097\u0001\u0098\u0001\u0098\u0001\u0098\u0001\u0099"+ + "\u0001\u0099\u0001\u0099\u0001\u0099\u0001\u0099\u0001\u0099\u0001\u009a"+ + "\u0001\u009a\u0001\u009a\u0001\u009a\u0001\u009a\u0001\u009a\u0001\u009a"+ + "\u0001\u009b\u0001\u009b\u0001\u009b\u0001\u009b\u0001\u009b\u0001\u009b"+ + "\u0001\u009b\u0001\u009b\u0001\u009c\u0001\u009c\u0001\u009c\u0001\u009c"+ + "\u0001\u009c\u0001\u009c\u0001\u009c\u0001\u009c\u0001\u009c\u0001\u009d"+ + "\u0001\u009d\u0001\u009d\u0001\u009d\u0001\u009d\u0001\u009d\u0001\u009d"+ + "\u0001\u009d\u0001\u009e\u0001\u009e\u0001\u009e\u0001\u009e\u0001\u009e"+ + "\u0001\u009e\u0001\u009f\u0001\u009f\u0001\u009f\u0001\u009f\u0001\u009f"+ + "\u0001\u009f\u0001\u009f\u0001\u009f\u0001\u009f\u0001\u009f\u0001\u009f"+ + "\u0001\u009f\u0001\u009f\u0001\u009f\u0001\u009f\u0001\u009f\u0001\u00a0"+ + "\u0001\u00a0\u0001\u00a0\u0001\u00a0\u0001\u00a0\u0001\u00a0\u0001\u00a0"+ + "\u0001\u00a0\u0001\u00a0\u0001\u00a0\u0001\u00a0\u0001\u00a1\u0001\u00a1"+ + "\u0001\u00a1\u0001\u00a1\u0001\u00a1\u0001\u00a1\u0001\u00a2\u0001\u00a2"+ + "\u0001\u00a2\u0001\u00a2\u0001\u00a2\u0001\u00a2\u0001\u00a3\u0001\u00a3"+ + "\u0001\u00a3\u0001\u00a3\u0001\u00a3\u0001\u00a3\u0001\u00a3\u0001\u00a3"+ + "\u0001\u00a4\u0001\u00a4\u0001\u00a4\u0001\u00a4\u0001\u00a4\u0001\u00a4"+ + "\u0001\u00a4\u0001\u00a4\u0001\u00a5\u0001\u00a5\u0001\u00a5\u0001\u00a5"+ + "\u0001\u00a5\u0001\u00a5\u0001\u00a5\u0001\u00a5\u0001\u00a5\u0001\u00a6"+ + "\u0001\u00a6\u0001\u00a6\u0001\u00a6\u0001\u00a6\u0001\u00a6\u0001\u00a6"+ + "\u0001\u00a7\u0001\u00a7\u0001\u00a7\u0001\u00a7\u0001\u00a7\u0001\u00a7"+ + "\u0001\u00a7\u0001\u00a7\u0001\u00a7\u0001\u00a7\u0001\u00a8\u0001\u00a8"+ + "\u0001\u00a8\u0001\u00a8\u0001\u00a8\u0001\u00a8\u0001\u00a8\u0001\u00a8"+ + "\u0001\u00a8\u0001\u00a8\u0001\u00a8\u0001\u00a8\u0001\u00a8\u0001\u00a8"+ + "\u0001\u00a9\u0001\u00a9\u0001\u00a9\u0001\u00a9\u0001\u00a9\u0001\u00a9"+ + "\u0001\u00a9\u0001\u00a9\u0001\u00a9\u0001\u00a9\u0001\u00a9\u0001\u00aa"+ + "\u0001\u00aa\u0001\u00aa\u0001\u00aa\u0001\u00aa\u0001\u00aa\u0001\u00aa"+ + "\u0001\u00aa\u0001\u00aa\u0001\u00aa\u0001\u00aa\u0001\u00aa\u0001\u00ab"+ + "\u0001\u00ab\u0001\u00ab\u0001\u00ab\u0001\u00ab\u0001\u00ab\u0001\u00ab"+ + "\u0001\u00ab\u0001\u00ac\u0001\u00ac\u0001\u00ac\u0001\u00ac\u0001\u00ac"+ + "\u0001\u00ac\u0001\u00ac\u0001\u00ac\u0001\u00ac\u0001\u00ad\u0001\u00ad"+ + "\u0001\u00ad\u0001\u00ad\u0001\u00ad\u0001\u00ad\u0001\u00ad\u0001\u00ad"+ + "\u0001\u00ad\u0001\u00ad\u0001\u00ad\u0001\u00ae\u0001\u00ae\u0001\u00ae"+ + "\u0001\u00ae\u0001\u00ae\u0001\u00af\u0001\u00af\u0001\u00af\u0001\u00af"+ + "\u0001\u00af\u0001\u00b0\u0001\u00b0\u0001\u00b0\u0001\u00b0\u0001\u00b1"+ + "\u0001\u00b1\u0001\u00b1\u0001\u00b1\u0001\u00b1\u0001\u00b1\u0001\u00b1"+ + "\u0001\u00b2\u0001\u00b2\u0001\u00b2\u0001\u00b2\u0001\u00b2\u0001\u00b2"+ + "\u0001\u00b3\u0001\u00b3\u0001\u00b3\u0001\u00b3\u0001\u00b3\u0001\u00b4"+ + "\u0001\u00b4\u0001\u00b4\u0001\u00b4\u0001\u00b4\u0001\u00b4\u0001\u00b4"+ + "\u0001\u00b4\u0001\u00b4\u0001\u00b5\u0001\u00b5\u0001\u00b5\u0001\u00b5"+ + "\u0001\u00b6\u0001\u00b6\u0001\u00b6\u0001\u00b6\u0001\u00b6\u0001\u00b6"+ + "\u0001\u00b6\u0001\u00b6\u0001\u00b6\u0001\u00b6\u0001\u00b6\u0001\u00b7"+ + "\u0001\u00b7\u0001\u00b7\u0001\u00b7\u0001\u00b7\u0001\u00b7\u0001\u00b7"+ + "\u0001\u00b7\u0001\u00b8\u0001\u00b8\u0001\u00b8\u0001\u00b8\u0001\u00b8"+ + "\u0001\u00b8\u0001\u00b8\u0001\u00b8\u0001\u00b8\u0001\u00b9\u0001\u00b9"+ + "\u0001\u00b9\u0001\u00b9\u0001\u00b9\u0001\u00b9\u0001\u00b9\u0001\u00b9"+ + "\u0001\u00b9\u0001\u00ba\u0001\u00ba\u0001\u00ba\u0001\u00ba\u0001\u00ba"+ + "\u0001\u00ba\u0001\u00ba\u0001\u00ba\u0001\u00bb\u0001\u00bb\u0001\u00bb"+ + "\u0001\u00bb\u0001\u00bb\u0001\u00bb\u0001\u00bb\u0001\u00bc\u0001\u00bc"+ + "\u0001\u00bc\u0001\u00bc\u0001\u00bc\u0001\u00bc\u0001\u00bc\u0001\u00bc"+ + "\u0001\u00bc\u0001\u00bc\u0001\u00bd\u0001\u00bd\u0001\u00bd\u0001\u00bd"+ + "\u0001\u00bd\u0001\u00bd\u0001\u00bd\u0001\u00bd\u0001\u00bd\u0001\u00bd"+ + "\u0001\u00bd\u0001\u00be\u0001\u00be\u0001\u00be\u0001\u00be\u0001\u00be"+ + "\u0001\u00be\u0001\u00be\u0001\u00be\u0001\u00be\u0001\u00be\u0001\u00be"+ + "\u0001\u00bf\u0001\u00bf\u0001\u00bf\u0001\u00bf\u0001\u00bf\u0001\u00bf"+ + "\u0001\u00bf\u0001\u00bf\u0001\u00c0\u0001\u00c0\u0001\u00c0\u0001\u00c0"+ + "\u0001\u00c0\u0001\u00c0\u0001\u00c0\u0001\u00c0\u0001\u00c1\u0001\u00c1"+ + "\u0001\u00c1\u0001\u00c1\u0001\u00c1\u0001\u00c1\u0001\u00c1\u0001\u00c1"+ + "\u0001\u00c1\u0001\u00c2\u0001\u00c2\u0001\u00c2\u0001\u00c2\u0001\u00c2"+ + "\u0001\u00c2\u0001\u00c2\u0001\u00c3\u0001\u00c3\u0001\u00c3\u0001\u00c3"+ + "\u0001\u00c3\u0001\u00c3\u0001\u00c3\u0001\u00c4\u0001\u00c4\u0001\u00c4"+ + "\u0001\u00c4\u0001\u00c4\u0001\u00c5\u0001\u00c5\u0001\u00c5\u0001\u00c5"+ + "\u0001\u00c5\u0001\u00c6\u0001\u00c6\u0001\u00c6\u0001\u00c6\u0001\u00c6"+ + "\u0001\u00c6\u0001\u00c6\u0001\u00c7\u0001\u00c7\u0001\u00c7\u0001\u00c7"+ + "\u0001\u00c7\u0001\u00c7\u0001\u00c7\u0001\u00c7\u0001\u00c7\u0001\u00c8"+ + "\u0001\u00c8\u0001\u00c8\u0001\u00c8\u0001\u00c8\u0001\u00c8\u0001\u00c8"+ + "\u0001\u00c8\u0001\u00c8\u0001\u00c8\u0001\u00c9\u0001\u00c9\u0001\u00c9"+ + "\u0001\u00c9\u0001\u00c9\u0001\u00ca\u0001\u00ca\u0001\u00ca\u0001\u00ca"+ + "\u0001\u00ca\u0001\u00ca\u0001\u00ca\u0001\u00cb\u0001\u00cb\u0001\u00cb"+ + "\u0001\u00cb\u0001\u00cb\u0001\u00cb\u0001\u00cc\u0001\u00cc\u0001\u00cc"+ + "\u0001\u00cc\u0001\u00cc\u0001\u00cc\u0001\u00cc\u0001\u00cc\u0001\u00cd"+ + "\u0001\u00cd\u0001\u00cd\u0001\u00cd\u0001\u00cd\u0001\u00cd\u0001\u00cd"+ + "\u0001\u00cd\u0001\u00cd\u0001\u00cd\u0001\u00ce\u0001\u00ce\u0001\u00ce"+ + "\u0001\u00ce\u0001\u00ce\u0001\u00ce\u0001\u00ce\u0001\u00ce\u0001\u00ce"+ + "\u0001\u00ce\u0001\u00cf\u0001\u00cf\u0001\u00cf\u0001\u00cf\u0001\u00cf"+ + "\u0001\u00cf\u0001\u00cf\u0001\u00cf\u0001\u00d0\u0001\u00d0\u0001\u00d0"+ + "\u0001\u00d0\u0001\u00d0\u0001\u00d0\u0001\u00d0\u0001\u00d0\u0001\u00d1"+ + "\u0001\u00d1\u0001\u00d1\u0001\u00d1\u0001\u00d1\u0001\u00d1\u0001\u00d1"+ + "\u0001\u00d1\u0001\u00d1\u0001\u00d1\u0001\u00d2\u0001\u00d2\u0001\u00d2"+ + "\u0001\u00d2\u0001\u00d2\u0001\u00d2\u0001\u00d2\u0001\u00d2\u0001\u00d2"+ + "\u0001\u00d3\u0001\u00d3\u0001\u00d3\u0001\u00d3\u0001\u00d3\u0001\u00d3"+ + "\u0001\u00d3\u0001\u00d4\u0001\u00d4\u0001\u00d4\u0001\u00d4\u0001\u00d4"+ + "\u0001\u00d4\u0001\u00d5\u0001\u00d5\u0001\u00d5\u0001\u00d5\u0001\u00d5"+ + "\u0001\u00d5\u0001\u00d5\u0001\u00d5\u0001\u00d5\u0001\u00d5\u0001\u00d6"+ + "\u0001\u00d6\u0001\u00d6\u0001\u00d6\u0001\u00d6\u0001\u00d6\u0001\u00d7"+ + "\u0001\u00d7\u0001\u00d7\u0001\u00d7\u0001\u00d7\u0001\u00d7\u0001\u00d7"+ + "\u0001\u00d7\u0001\u00d8\u0001\u00d8\u0001\u00d8\u0001\u00d8\u0001\u00d8"+ + "\u0001\u00d8\u0001\u00d8\u0001\u00d8\u0001\u00d8\u0001\u00d9\u0001\u00d9"+ + "\u0001\u00d9\u0001\u00d9\u0001\u00d9\u0001\u00d9\u0001\u00d9\u0001\u00d9"+ + "\u0001\u00d9\u0001\u00d9\u0001\u00da\u0001\u00da\u0001\u00da\u0001\u00da"+ + "\u0001\u00da\u0001\u00da\u0001\u00da\u0001\u00db\u0001\u00db\u0001\u00db"+ + "\u0001\u00db\u0001\u00db\u0001\u00db\u0001\u00db\u0001\u00db\u0001\u00dc"+ + "\u0001\u00dc\u0001\u00dc\u0001\u00dc\u0001\u00dc\u0001\u00dc\u0001\u00dc"+ + "\u0001\u00dc\u0001\u00dd\u0001\u00dd\u0001\u00dd\u0001\u00dd\u0001\u00dd"+ + "\u0001\u00dd\u0001\u00dd\u0001\u00de\u0001\u00de\u0001\u00de\u0001\u00de"+ + "\u0001\u00de\u0001\u00df\u0001\u00df\u0001\u00df\u0001\u00df\u0001\u00df"+ + "\u0001\u00e0\u0001\u00e0\u0001\u00e0\u0001\u00e0\u0001\u00e0\u0001\u00e0"+ + "\u0001\u00e0\u0001\u00e0\u0001\u00e0\u0001\u00e1\u0001\u00e1\u0001\u00e1"+ + "\u0001\u00e2\u0001\u00e2\u0001\u00e2\u0001\u00e2\u0001\u00e2\u0001\u00e2"+ + "\u0001\u00e2\u0001\u00e2\u0001\u00e2\u0001\u00e2\u0001\u00e3\u0001\u00e3"+ + "\u0001\u00e3\u0001\u00e3\u0001\u00e3\u0001\u00e3\u0001\u00e3\u0001\u00e3"+ + "\u0001\u00e3\u0001\u00e3\u0001\u00e4\u0001\u00e4\u0001\u00e4\u0001\u00e4"+ + "\u0001\u00e4\u0001\u00e4\u0001\u00e4\u0001\u00e4\u0001\u00e4\u0001\u00e5"+ + "\u0001\u00e5\u0001\u00e5\u0001\u00e5\u0001\u00e5\u0001\u00e5\u0001\u00e5"+ + "\u0001\u00e5\u0001\u00e5\u0001\u00e5\u0001\u00e6\u0001\u00e6\u0001\u00e6"+ + "\u0001\u00e6\u0001\u00e6\u0001\u00e6\u0001\u00e6\u0001\u00e6\u0001\u00e6"+ + "\u0001\u00e6\u0001\u00e7\u0001\u00e7\u0001\u00e7\u0001\u00e7\u0001\u00e7"+ + "\u0001\u00e7\u0001\u00e8\u0001\u00e8\u0001\u00e8\u0001\u00e8\u0001\u00e8"+ + "\u0001\u00e8\u0001\u00e8\u0001\u00e8\u0001\u00e9\u0001\u00e9\u0001\u00e9"+ + "\u0001\u00e9\u0001\u00e9\u0001\u00e9\u0001\u00e9\u0001\u00e9\u0001\u00ea"+ + "\u0001\u00ea\u0001\u00ea\u0001\u00ea\u0001\u00ea\u0001\u00ea\u0001\u00ea"+ + "\u0001\u00ea\u0001\u00ea\u0001\u00eb\u0001\u00eb\u0001\u00eb\u0001\u00eb"+ + "\u0001\u00eb\u0001\u00eb\u0001\u00eb\u0001\u00ec\u0001\u00ec\u0001\u00ec"+ + "\u0001\u00ec\u0001\u00ec\u0001\u00ec\u0001\u00ec\u0001\u00ec\u0001\u00ec"+ + "\u0001\u00ec\u0001\u00ec\u0001\u00ec\u0001\u00ed\u0001\u00ed\u0001\u00ed"+ + "\u0001\u00ed\u0001\u00ed\u0001\u00ed\u0001\u00ed\u0001\u00ee\u0001\u00ee"+ + "\u0001\u00ee\u0001\u00ee\u0001\u00ee\u0001\u00ee\u0001\u00ee\u0001\u00ee"+ + "\u0001\u00ef\u0001\u00ef\u0001\u00ef\u0001\u00ef\u0001\u00ef\u0001\u00ef"+ + "\u0001\u00ef\u0001\u00ef\u0001\u00f0\u0001\u00f0\u0001\u00f0\u0001\u00f0"+ + "\u0001\u00f0\u0001\u00f0\u0001\u00f0\u0001\u00f0\u0001\u00f0\u0001\u00f0"+ + "\u0001\u00f1\u0001\u00f1\u0001\u00f1\u0001\u00f1\u0001\u00f2\u0001\u00f2"+ + "\u0001\u00f2\u0001\u00f2\u0001\u00f2\u0001\u00f2\u0001\u00f3\u0001\u00f3"+ + "\u0001\u00f3\u0001\u00f3\u0001\u00f3\u0001\u00f3\u0001\u00f3\u0001\u00f3"+ + "\u0001\u00f3\u0001\u00f4\u0001\u00f4\u0001\u00f4\u0001\u00f4\u0001\u00f4"+ + "\u0001\u00f4\u0001\u00f5\u0001\u00f5\u0001\u00f5\u0001\u00f5\u0001\u00f5"+ + "\u0001\u00f6\u0001\u00f6\u0001\u00f6\u0001\u00f6\u0001\u00f6\u0001\u00f6"+ + "\u0001\u00f6\u0001\u00f6\u0001\u00f6\u0001\u00f6\u0001\u00f7\u0001\u00f7"+ + "\u0001\u00f7\u0001\u00f7\u0001\u00f7\u0001\u00f7\u0001\u00f8\u0001\u00f8"+ + "\u0001\u00f8\u0001\u00f8\u0001\u00f8\u0001\u00f8\u0001\u00f8\u0001\u00f9"+ + "\u0001\u00f9\u0001\u00f9\u0001\u00f9\u0001\u00f9\u0001\u00fa\u0001\u00fa"+ + "\u0001\u00fa\u0001\u00fa\u0001\u00fa\u0001\u00fa\u0001\u00fb\u0001\u00fb"+ + "\u0001\u00fb\u0001\u00fb\u0001\u00fb\u0001\u00fb\u0001\u00fb\u0001\u00fb"+ + "\u0001\u00fb\u0001\u00fc\u0001\u00fc\u0001\u00fc\u0001\u00fc\u0001\u00fc"+ + "\u0001\u00fd\u0001\u00fd\u0001\u00fd\u0001\u00fd\u0001\u00fd\u0001\u00fd"+ + "\u0001\u00fd\u0001\u00fd\u0001\u00fe\u0001\u00fe\u0001\u00fe\u0001\u00fe"+ + "\u0001\u00fe\u0001\u00fe\u0001\u00ff\u0001\u00ff\u0001\u00ff\u0001\u00ff"+ + "\u0001\u00ff\u0001\u00ff\u0001\u00ff\u0001\u00ff\u0001\u0100\u0001\u0100"+ + "\u0001\u0100\u0001\u0100\u0001\u0100\u0001\u0100\u0001\u0100\u0001\u0100"+ + "\u0001\u0100\u0001\u0100\u0001\u0100\u0001\u0100\u0001\u0100\u0001\u0101"+ + "\u0001\u0101\u0001\u0101\u0001\u0101\u0001\u0101\u0001\u0101\u0001\u0101"+ + "\u0001\u0101\u0001\u0101\u0001\u0102\u0001\u0102\u0001\u0102\u0001\u0102"+ + "\u0001\u0102\u0001\u0102\u0001\u0103\u0001\u0103\u0001\u0103\u0001\u0103"+ + "\u0001\u0103\u0001\u0103\u0001\u0103\u0001\u0104\u0001\u0104\u0001\u0104"+ + "\u0001\u0104\u0001\u0104\u0001\u0104\u0001\u0104\u0001\u0104\u0001\u0104"+ + "\u0001\u0105\u0001\u0105\u0001\u0105\u0001\u0105\u0001\u0105\u0001\u0106"+ + "\u0001\u0106\u0001\u0106\u0001\u0106\u0001\u0106\u0001\u0106\u0001\u0107"+ + "\u0001\u0107\u0001\u0107\u0001\u0107\u0001\u0107\u0001\u0108\u0001\u0108"+ + "\u0001\u0108\u0001\u0108\u0001\u0108\u0001\u0109\u0001\u0109\u0001\u0109"+ + "\u0001\u0109\u0001\u0109\u0001\u0109\u0001\u010a\u0001\u010a\u0001\u010a"+ + "\u0001\u010a\u0001\u010a\u0001\u010b\u0001\u010b\u0001\u010b\u0001\u010c"+ + "\u0001\u010c\u0001\u010c\u0001\u010c\u0001\u010c\u0001\u010c\u0001\u010c"+ + "\u0001\u010c\u0001\u010d\u0001\u010d\u0001\u010d\u0001\u010d\u0001\u010d"+ + "\u0001\u010d\u0001\u010d\u0001\u010e\u0001\u010e\u0001\u010e\u0001\u010e"+ + "\u0001\u010e\u0001\u010e\u0001\u010e\u0001\u010f\u0001\u010f\u0001\u010f"+ + "\u0001\u010f\u0001\u010f\u0001\u010f\u0001\u0110\u0001\u0110\u0001\u0110"+ + "\u0001\u0110\u0001\u0110\u0001\u0110\u0001\u0110\u0001\u0111\u0001\u0111"+ + "\u0001\u0111\u0001\u0112\u0001\u0112\u0001\u0112\u0001\u0112\u0001\u0113"+ + "\u0001\u0113\u0001\u0113\u0001\u0113\u0001\u0113\u0001\u0114\u0001\u0114"+ + "\u0001\u0114\u0001\u0114\u0001\u0114\u0001\u0114\u0001\u0114\u0001\u0114"+ + "\u0001\u0114\u0001\u0115\u0001\u0115\u0001\u0115\u0001\u0115\u0001\u0115"+ + "\u0001\u0115\u0001\u0115\u0001\u0116\u0001\u0116\u0001\u0116\u0001\u0116"+ + "\u0001\u0116\u0001\u0116\u0001\u0116\u0001\u0116\u0001\u0117\u0001\u0117"+ + "\u0001\u0117\u0001\u0117\u0001\u0117\u0001\u0117\u0001\u0118\u0001\u0118"+ + "\u0001\u0118\u0001\u0118\u0001\u0118\u0001\u0118\u0001\u0119\u0001\u0119"+ + "\u0001\u0119\u0001\u0119\u0001\u0119\u0001\u0119\u0001\u0119\u0001\u011a"+ + "\u0001\u011a\u0001\u011a\u0001\u011a\u0001\u011a\u0001\u011a\u0001\u011a"+ + "\u0001\u011a\u0001\u011b\u0001\u011b\u0001\u011b\u0001\u011b\u0001\u011b"+ + "\u0001\u011b\u0001\u011b\u0001\u011b\u0001\u011b\u0001\u011b\u0001\u011c"+ + "\u0001\u011c\u0001\u011c\u0001\u011c\u0001\u011c\u0001\u011c\u0001\u011c"+ + "\u0001\u011c\u0001\u011d\u0001\u011d\u0001\u011d\u0001\u011d\u0001\u011d"+ + "\u0001\u011d\u0001\u011d\u0001\u011d\u0001\u011d\u0001\u011e\u0001\u011e"+ + "\u0001\u011e\u0001\u011e\u0001\u011e\u0001\u011e\u0001\u011f\u0001\u011f"+ + "\u0001\u011f\u0001\u011f\u0001\u011f\u0001\u011f\u0001\u011f\u0001\u011f"+ + "\u0001\u011f\u0001\u011f\u0001\u0120\u0001\u0120\u0001\u0120\u0001\u0120"+ + "\u0001\u0120\u0001\u0120\u0001\u0120\u0001\u0120\u0001\u0121\u0001\u0121"+ + "\u0001\u0121\u0001\u0121\u0001\u0121\u0001\u0121\u0001\u0121\u0001\u0121"+ + "\u0001\u0121\u0001\u0122\u0001\u0122\u0001\u0122\u0001\u0122\u0001\u0122"+ + "\u0001\u0122\u0001\u0122\u0001\u0122\u0001\u0122\u0001\u0123\u0001\u0123"+ + "\u0001\u0123\u0001\u0123\u0001\u0123\u0001\u0123\u0001\u0124\u0001\u0124"+ + "\u0001\u0124\u0001\u0124\u0001\u0124\u0001\u0124\u0001\u0124\u0001\u0124"+ + "\u0001\u0124\u0001\u0124\u0001\u0124\u0001\u0125\u0001\u0125\u0001\u0125"+ + "\u0001\u0125\u0001\u0125\u0001\u0125\u0001\u0125\u0001\u0125\u0001\u0125"+ + "\u0001\u0125\u0001\u0125\u0001\u0126\u0001\u0126\u0001\u0126\u0001\u0126"+ + "\u0001\u0126\u0001\u0126\u0001\u0126\u0001\u0126\u0001\u0126\u0001\u0126"+ + "\u0001\u0127\u0001\u0127\u0001\u0127\u0001\u0127\u0001\u0127\u0001\u0127"+ + "\u0001\u0127\u0001\u0127\u0001\u0128\u0001\u0128\u0001\u0128\u0001\u0128"+ + "\u0001\u0128\u0001\u0128\u0001\u0129\u0001\u0129\u0001\u0129\u0001\u0129"+ + "\u0001\u0129\u0001\u0129\u0001\u012a\u0001\u012a\u0001\u012a\u0001\u012a"+ + "\u0001\u012a\u0001\u012b\u0001\u012b\u0001\u012b\u0001\u012b\u0001\u012b"+ + "\u0001\u012b\u0001\u012b\u0001\u012b\u0001\u012b\u0001\u012c\u0001\u012c"+ + "\u0001\u012c\u0001\u012c\u0001\u012c\u0001\u012c\u0001\u012c\u0001\u012c"+ + "\u0001\u012d\u0001\u012d\u0001\u012d\u0001\u012d\u0001\u012d\u0001\u012d"+ + "\u0001\u012d\u0001\u012d\u0001\u012d\u0001\u012d\u0001\u012e\u0001\u012e"+ + "\u0001\u012e\u0001\u012e\u0001\u012f\u0001\u012f\u0001\u012f\u0001\u012f"+ + "\u0001\u012f\u0001\u012f\u0001\u012f\u0001\u012f\u0001\u0130\u0001\u0130"+ + "\u0001\u0130\u0001\u0130\u0001\u0130\u0001\u0130\u0001\u0130\u0001\u0130"+ + "\u0001\u0131\u0001\u0131\u0001\u0131\u0001\u0131\u0001\u0131\u0001\u0131"+ + "\u0001\u0131\u0001\u0131\u0001\u0131\u0001\u0132\u0001\u0132\u0001\u0132"+ + "\u0001\u0132\u0001\u0132\u0001\u0132\u0001\u0132\u0001\u0132\u0001\u0133"+ + "\u0001\u0133\u0001\u0133\u0001\u0133\u0001\u0133\u0001\u0133\u0001\u0133"+ + "\u0001\u0134\u0001\u0134\u0001\u0134\u0001\u0134\u0001\u0134\u0001\u0134"+ + "\u0001\u0134\u0001\u0134\u0001\u0134\u0001\u0134\u0001\u0134\u0001\u0135"+ + "\u0001\u0135\u0001\u0135\u0001\u0135\u0001\u0135\u0001\u0135\u0001\u0135"+ + "\u0001\u0135\u0001\u0136\u0001\u0136\u0001\u0136\u0001\u0136\u0001\u0136"+ + "\u0001\u0136\u0001\u0136\u0001\u0136\u0001\u0137\u0001\u0137\u0001\u0137"+ + "\u0001\u0137\u0001\u0137\u0001\u0137\u0001\u0138\u0001\u0138\u0001\u0138"+ + "\u0001\u0138\u0001\u0138\u0001\u0138\u0001\u0138\u0001\u0138\u0001\u0139"+ + "\u0001\u0139\u0001\u0139\u0001\u0139\u0001\u0139\u0001\u0139\u0001\u0139"+ + "\u0001\u0139\u0001\u0139\u0001\u013a\u0001\u013a\u0001\u013a\u0001\u013a"+ + "\u0001\u013a\u0001\u013a\u0001\u013a\u0001\u013a\u0001\u013b\u0001\u013b"+ + "\u0001\u013b\u0001\u013b\u0001\u013b\u0001\u013b\u0001\u013b\u0001\u013c"+ + "\u0001\u013c\u0001\u013c\u0001\u013c\u0001\u013c\u0001\u013d\u0001\u013d"+ + "\u0001\u013d\u0001\u013d\u0001\u013d\u0001\u013d\u0001\u013d\u0001\u013d"+ + "\u0001\u013d\u0001\u013e\u0001\u013e\u0001\u013e\u0001\u013e\u0001\u013e"+ + "\u0001\u013f\u0001\u013f\u0001\u013f\u0001\u013f\u0001\u013f\u0001\u0140"+ + "\u0001\u0140\u0001\u0140\u0001\u0140\u0001\u0140\u0001\u0140\u0001\u0140"+ + "\u0001\u0140\u0001\u0140\u0001\u0140\u0001\u0141\u0001\u0141\u0001\u0141"+ + "\u0001\u0141\u0001\u0141\u0001\u0141\u0001\u0141\u0001\u0142\u0001\u0142"+ + "\u0001\u0142\u0001\u0142\u0001\u0142\u0001\u0142\u0001\u0142\u0001\u0143"+ + "\u0001\u0143\u0001\u0143\u0001\u0143\u0001\u0143\u0001\u0143\u0001\u0143"+ + "\u0001\u0144\u0001\u0144\u0001\u0144\u0001\u0144\u0001\u0144\u0001\u0144"+ + "\u0001\u0144\u0001\u0145\u0001\u0145\u0001\u0145\u0001\u0145\u0001\u0145"+ + "\u0001\u0145\u0001\u0145\u0001\u0145\u0001\u0145\u0001\u0146\u0001\u0146"+ + "\u0001\u0146\u0001\u0146\u0001\u0146\u0001\u0146\u0001\u0146\u0001\u0146"+ + "\u0001\u0146\u0001\u0147\u0001\u0147\u0001\u0147\u0001\u0147\u0001\u0147"+ + "\u0001\u0147\u0001\u0147\u0001\u0147\u0001\u0147\u0001\u0147\u0001\u0148"+ + "\u0001\u0148\u0001\u0148\u0001\u0148\u0001\u0148\u0001\u0148\u0001\u0148"+ + "\u0001\u0148\u0001\u0148\u0001\u0148\u0001\u0148\u0001\u0148\u0001\u0148"+ + "\u0001\u0149\u0001\u0149\u0001\u0149\u0001\u0149\u0001\u0149\u0001\u0149"+ + "\u0001\u0149\u0001\u014a\u0001\u014a\u0001\u014a\u0001\u014a\u0001\u014a"+ + "\u0001\u014a\u0001\u014a\u0001\u014a\u0001\u014b\u0001\u014b\u0001\u014b"+ + "\u0001\u014b\u0001\u014c\u0001\u014c\u0001\u014c\u0001\u014c\u0001\u014c"+ + "\u0001\u014c\u0001\u014d\u0001\u014d\u0001\u014d\u0001\u014d\u0001\u014d"+ + "\u0001\u014e\u0001\u014e\u0001\u014e\u0001\u014e\u0001\u014e\u0001\u014e"+ + "\u0001\u014e\u0001\u014f\u0001\u014f\u0001\u014f\u0001\u014f\u0001\u014f"+ + "\u0001\u014f\u0001\u014f\u0001\u014f\u0001\u014f\u0001\u0150\u0001\u0150"+ + "\u0001\u0150\u0001\u0150\u0001\u0150\u0001\u0150\u0001\u0150\u0001\u0151"+ + "\u0001\u0151\u0001\u0151\u0001\u0151\u0001\u0151\u0001\u0151\u0001\u0151"+ + "\u0001\u0151\u0001\u0151\u0001\u0151\u0001\u0151\u0001\u0152\u0001\u0152"+ + "\u0001\u0152\u0001\u0152\u0001\u0152\u0001\u0152\u0001\u0153\u0001\u0153"+ + "\u0001\u0153\u0001\u0153\u0001\u0153\u0001\u0153\u0001\u0153\u0001\u0153"+ + "\u0001\u0153\u0001\u0153\u0001\u0154\u0001\u0154\u0001\u0154\u0001\u0154"+ + "\u0001\u0154\u0001\u0154\u0001\u0154\u0001\u0154\u0001\u0154\u0001\u0154"+ + "\u0001\u0154\u0001\u0155\u0001\u0155\u0001\u0155\u0001\u0155\u0001\u0155"+ + "\u0001\u0155\u0001\u0156\u0001\u0156\u0001\u0156\u0001\u0156\u0001\u0156"+ + "\u0001\u0156\u0001\u0156\u0001\u0157\u0001\u0157\u0001\u0157\u0001\u0157"+ + "\u0001\u0157\u0001\u0157\u0001\u0157\u0001\u0157\u0001\u0158\u0001\u0158"+ + "\u0001\u0158\u0001\u0158\u0001\u0158\u0001\u0158\u0001\u0158\u0001\u0159"+ + "\u0001\u0159\u0001\u0159\u0001\u0159\u0001\u0159\u0001\u0159\u0001\u015a"+ + "\u0001\u015a\u0001\u015a\u0001\u015a\u0001\u015a\u0001\u015a\u0001\u015b"+ + "\u0001\u015b\u0001\u015b\u0001\u015b\u0001\u015b\u0001\u015b\u0001\u015b"+ + "\u0001\u015c\u0001\u015c\u0001\u015c\u0001\u015c\u0001\u015c\u0001\u015c"+ + "\u0001\u015c\u0001\u015d\u0001\u015d\u0001\u015d\u0001\u015d\u0001\u015d"+ + "\u0001\u015d\u0001\u015d\u0001\u015d\u0001\u015d\u0001\u015d\u0001\u015d"+ + "\u0001\u015e\u0001\u015e\u0001\u015e\u0001\u015e\u0001\u015e\u0001\u015f"+ + "\u0001\u015f\u0001\u015f\u0001\u015f\u0001\u015f\u0001\u015f\u0001\u015f"+ + "\u0001\u015f\u0001\u015f\u0001\u0160\u0001\u0160\u0001\u0160\u0001\u0160"+ + "\u0001\u0160\u0001\u0160\u0001\u0160\u0001\u0160\u0001\u0160\u0001\u0160"+ + "\u0001\u0161\u0001\u0161\u0001\u0161\u0001\u0161\u0001\u0161\u0001\u0162"+ + "\u0001\u0162\u0001\u0162\u0001\u0162\u0001\u0162\u0001\u0162\u0001\u0162"+ + "\u0001\u0162\u0001\u0162\u0001\u0162\u0001\u0162\u0001\u0162\u0001\u0163"+ + "\u0001\u0163\u0001\u0163\u0001\u0163\u0001\u0163\u0001\u0163\u0001\u0163"+ + "\u0001\u0163\u0001\u0164\u0001\u0164\u0001\u0164\u0001\u0164\u0001\u0164"+ + "\u0001\u0164\u0001\u0164\u0001\u0164\u0001\u0164\u0001\u0165\u0001\u0165"+ + "\u0001\u0165\u0001\u0165\u0001\u0165\u0001\u0165\u0001\u0165\u0001\u0165"+ + "\u0001\u0166\u0001\u0166\u0001\u0166\u0001\u0166\u0001\u0166\u0001\u0167"+ + "\u0001\u0167\u0001\u0167\u0001\u0167\u0001\u0167\u0001\u0167\u0001\u0168"+ + "\u0001\u0168\u0001\u0168\u0001\u0168\u0001\u0168\u0001\u0168\u0001\u0168"+ + "\u0001\u0168\u0001\u0168\u0001\u0168\u0001\u0169\u0001\u0169\u0001\u0169"+ + "\u0001\u0169\u0001\u0169\u0001\u0169\u0001\u0169\u0001\u0169\u0001\u0169"+ + "\u0001\u0169\u0001\u0169\u0001\u0169\u0001\u016a\u0001\u016a\u0001\u016a"+ + "\u0001\u016a\u0001\u016a\u0001\u016a\u0001\u016a\u0001\u016a\u0001\u016a"+ + "\u0001\u016a\u0001\u016a\u0001\u016a\u0001\u016b\u0001\u016b\u0001\u016b"+ + "\u0001\u016b\u0001\u016b\u0001\u016b\u0001\u016b\u0001\u016b\u0001\u016c"+ + "\u0001\u016c\u0001\u016c\u0001\u016c\u0001\u016c\u0001\u016c\u0001\u016c"+ + "\u0001\u016c\u0001\u016c\u0001\u016d\u0001\u016d\u0001\u016d\u0001\u016d"+ + "\u0001\u016d\u0001\u016d\u0001\u016d\u0001\u016d\u0001\u016d\u0001\u016e"+ + "\u0001\u016e\u0001\u016e\u0001\u016e\u0001\u016e\u0001\u016e\u0001\u016f"+ + "\u0001\u016f\u0001\u016f\u0001\u016f\u0001\u016f\u0001\u016f\u0001\u016f"+ + "\u0001\u0170\u0001\u0170\u0001\u0170\u0001\u0170\u0001\u0170\u0001\u0170"+ + "\u0001\u0170\u0001\u0171\u0001\u0171\u0001\u0171\u0001\u0171\u0001\u0171"+ + "\u0001\u0171\u0001\u0172\u0001\u0172\u0001\u0172\u0001\u0172\u0001\u0172"+ + "\u0001\u0172\u0001\u0172\u0001\u0172\u0001\u0172\u0001\u0173\u0001\u0173"+ + "\u0001\u0173\u0001\u0173\u0001\u0173\u0001\u0173\u0001\u0173\u0001\u0173"+ + "\u0001\u0173\u0001\u0173\u0001\u0174\u0001\u0174\u0001\u0174\u0001\u0174"+ + "\u0001\u0174\u0001\u0174\u0001\u0174\u0001\u0174\u0001\u0175\u0001\u0175"+ + "\u0001\u0175\u0001\u0175\u0001\u0175\u0001\u0175\u0001\u0175\u0001\u0175"+ + "\u0001\u0176\u0001\u0176\u0001\u0176\u0001\u0176\u0001\u0176\u0001\u0177"+ + "\u0001\u0177\u0001\u0177\u0001\u0177\u0001\u0177\u0001\u0177\u0001\u0177"+ + "\u0001\u0177\u0001\u0177\u0001\u0178\u0001\u0178\u0001\u0178\u0001\u0178"+ + "\u0001\u0178\u0001\u0178\u0001\u0178\u0001\u0178\u0001\u0178\u0001\u0178"+ + "\u0001\u0178\u0001\u0179\u0001\u0179\u0001\u0179\u0001\u0179\u0001\u0179"+ + "\u0001\u0179\u0001\u0179\u0001\u0179\u0001\u017a\u0001\u017a\u0001\u017a"+ + "\u0001\u017a\u0001\u017a\u0001\u017b\u0001\u017b\u0001\u017b\u0001\u017b"+ + "\u0001\u017b\u0001\u017b\u0001\u017b\u0001\u017b\u0001\u017c\u0001\u017c"+ + "\u0001\u017c\u0001\u017c\u0001\u017c\u0001\u017c\u0001\u017d\u0001\u017d"+ + "\u0001\u017d\u0001\u017d\u0001\u017e\u0001\u017e\u0001\u017e\u0001\u017e"+ + "\u0001\u017e\u0001\u017f\u0001\u017f\u0001\u017f\u0001\u017f\u0001\u0180"+ + "\u0001\u0180\u0001\u0180\u0001\u0180\u0001\u0180\u0001\u0181\u0001\u0181"+ + "\u0001\u0181\u0001\u0181\u0001\u0181\u0001\u0181\u0001\u0181\u0001\u0181"+ + "\u0001\u0182\u0001\u0182\u0001\u0182\u0001\u0182\u0001\u0182\u0001\u0182"+ + "\u0001\u0182\u0001\u0183\u0001\u0183\u0001\u0183\u0001\u0183\u0001\u0184"+ + "\u0001\u0184\u0001\u0184\u0001\u0184\u0001\u0184\u0001\u0184\u0001\u0184"+ + "\u0001\u0184\u0001\u0185\u0001\u0185\u0001\u0185\u0001\u0185\u0001\u0185"+ + "\u0001\u0186\u0001\u0186\u0001\u0186\u0001\u0186\u0001\u0186\u0001\u0186"+ + "\u0001\u0186\u0001\u0186\u0001\u0186\u0001\u0186\u0001\u0187\u0001\u0187"+ + "\u0001\u0187\u0001\u0187\u0001\u0187\u0001\u0187\u0001\u0187\u0001\u0187"+ + "\u0001\u0187\u0001\u0188\u0001\u0188\u0001\u0188\u0001\u0188\u0001\u0189"+ + "\u0001\u0189\u0001\u0189\u0001\u0189\u0001\u0189\u0001\u0189\u0001\u0189"+ + "\u0001\u0189\u0001\u018a\u0001\u018a\u0001\u018a\u0001\u018a\u0001\u018a"+ + "\u0001\u018a\u0001\u018a\u0001\u018b\u0001\u018b\u0001\u018b\u0001\u018b"+ + "\u0001\u018b\u0001\u018b\u0001\u018b\u0001\u018b\u0001\u018c\u0001\u018c"+ + "\u0001\u018c\u0001\u018c\u0001\u018c\u0001\u018c\u0001\u018d\u0001\u018d"+ + "\u0001\u018d\u0001\u018d\u0001\u018d\u0001\u018d\u0001\u018d\u0001\u018d"+ + "\u0001\u018d\u0001\u018e\u0001\u018e\u0001\u018e\u0001\u018e\u0001\u018e"+ + "\u0001\u018e\u0001\u018f\u0001\u018f\u0001\u018f\u0001\u018f\u0001\u0190"+ + "\u0001\u0190\u0001\u0190\u0001\u0190\u0001\u0190\u0001\u0190\u0001\u0190"+ + "\u0001\u0190\u0001\u0191\u0001\u0191\u0001\u0191\u0001\u0191\u0001\u0191"+ + "\u0001\u0191\u0001\u0191\u0001\u0191\u0001\u0191\u0001\u0192\u0001\u0192"+ + "\u0001\u0192\u0001\u0192\u0001\u0192\u0001\u0192\u0001\u0193\u0001\u0193"+ + "\u0001\u0193\u0001\u0193\u0001\u0193\u0001\u0193\u0001\u0193\u0001\u0193"+ + "\u0001\u0193\u0001\u0194\u0001\u0194\u0001\u0194\u0001\u0194\u0001\u0194"+ + "\u0001\u0194\u0001\u0195\u0001\u0195\u0001\u0195\u0001\u0195\u0001\u0195"+ + "\u0001\u0196\u0001\u0196\u0001\u0196\u0001\u0196\u0001\u0196\u0001\u0196"+ + "\u0001\u0196\u0001\u0197\u0001\u0197\u0001\u0197\u0001\u0197\u0001\u0197"+ + "\u0001\u0197\u0001\u0197\u0001\u0197\u0001\u0198\u0001\u0198\u0001\u0198"+ + "\u0001\u0198\u0001\u0198\u0001\u0198\u0001\u0198\u0001\u0198\u0001\u0199"+ + "\u0001\u0199\u0001\u0199\u0001\u0199\u0001\u0199\u0001\u0199\u0001\u0199"+ + "\u0001\u0199\u0001\u0199\u0001\u019a\u0001\u019a\u0001\u019a\u0001\u019a"+ + "\u0001\u019a\u0001\u019a\u0001\u019a\u0001\u019a\u0001\u019a\u0001\u019a"+ + "\u0001\u019b\u0001\u019b\u0001\u019b\u0001\u019b\u0001\u019b\u0001\u019c"+ + "\u0001\u019c\u0001\u019c\u0001\u019c\u0001\u019d\u0001\u019d\u0001\u019d"+ + "\u0001\u019d\u0001\u019d\u0001\u019d\u0001\u019e\u0001\u019e\u0001\u019e"+ + "\u0001\u019e\u0001\u019e\u0001\u019e\u0001\u019e\u0001\u019e\u0001\u019e"+ + "\u0001\u019f\u0001\u019f\u0001\u019f\u0001\u019f\u0001\u019f\u0001\u019f"+ + "\u0001\u019f\u0001\u019f\u0001\u019f\u0001\u019f\u0001\u01a0\u0001\u01a0"+ + "\u0001\u01a0\u0001\u01a0\u0001\u01a0\u0001\u01a1\u0001\u01a1\u0001\u01a1"+ + "\u0001\u01a1\u0001\u01a1\u0001\u01a1\u0001\u01a1\u0001\u01a1\u0001\u01a1"+ + "\u0001\u01a1\u0001\u01a2\u0001\u01a2\u0001\u01a2\u0001\u01a2\u0001\u01a2"+ + "\u0001\u01a2\u0001\u01a3\u0001\u01a3\u0001\u01a3\u0001\u01a3\u0001\u01a3"+ + "\u0001\u01a4\u0001\u01a4\u0001\u01a4\u0001\u01a4\u0001\u01a4\u0001\u01a4"+ + "\u0001\u01a4\u0001\u01a5\u0001\u01a5\u0001\u01a5\u0001\u01a5\u0001\u01a5"+ + "\u0001\u01a5\u0001\u01a5\u0001\u01a5\u0001\u01a6\u0001\u01a6\u0001\u01a6"+ + "\u0001\u01a6\u0001\u01a6\u0001\u01a6\u0001\u01a6\u0001\u01a6\u0001\u01a6"+ + "\u0001\u01a6\u0001\u01a6\u0001\u01a6\u0001\u01a6\u0001\u01a6\u0001\u01a7"+ + "\u0001\u01a7\u0001\u01a7\u0001\u01a7\u0001\u01a7\u0001\u01a7\u0001\u01a7"+ + "\u0001\u01a7\u0001\u01a7\u0001\u01a7\u0001\u01a7\u0001\u01a8\u0001\u01a8"+ + "\u0001\u01a8\u0001\u01a8\u0001\u01a8\u0001\u01a8\u0001\u01a8\u0001\u01a9"+ + "\u0001\u01a9\u0001\u01a9\u0001\u01a9\u0001\u01a9\u0001\u01a9\u0001\u01a9"+ + "\u0001\u01a9\u0001\u01a9\u0001\u01a9\u0001\u01a9\u0001\u01a9\u0001\u01a9"+ + "\u0001\u01a9\u0001\u01a9\u0001\u01a9\u0001\u01a9\u0001\u01a9\u0001\u01a9"+ + "\u0001\u01aa\u0001\u01aa\u0001\u01aa\u0001\u01aa\u0001\u01aa\u0001\u01aa"+ + "\u0001\u01aa\u0001\u01aa\u0001\u01aa\u0001\u01aa\u0001\u01aa\u0001\u01aa"+ + "\u0001\u01aa\u0001\u01aa\u0001\u01aa\u0001\u01aa\u0001\u01aa\u0001\u01aa"+ + "\u0001\u01aa\u0001\u01aa\u0001\u01aa\u0001\u01aa\u0001\u01aa\u0001\u01aa"+ + "\u0001\u01aa\u0001\u01aa\u0001\u01aa\u0001\u01aa\u0001\u01ab\u0001\u01ab"+ + "\u0001\u01ab\u0001\u01ab\u0001\u01ab\u0001\u01ab\u0001\u01ab\u0001\u01ab"+ + "\u0001\u01ab\u0001\u01ab\u0001\u01ab\u0001\u01ab\u0001\u01ab\u0001\u01ab"+ + "\u0001\u01ab\u0001\u01ab\u0001\u01ab\u0001\u01ab\u0001\u01ab\u0001\u01ab"+ + "\u0001\u01ab\u0001\u01ab\u0001\u01ab\u0001\u01ab\u0001\u01ab\u0001\u01ab"+ + "\u0001\u01ab\u0001\u01ac\u0001\u01ac\u0001\u01ac\u0001\u01ac\u0001\u01ac"+ + "\u0001\u01ac\u0001\u01ad\u0001\u01ad\u0001\u01ad\u0001\u01ad\u0001\u01ad"+ + "\u0001\u01ad\u0001\u01ad\u0001\u01ad\u0001\u01ad\u0001\u01ad\u0001\u01ad"+ + "\u0001\u01ad\u0001\u01ad\u0001\u01ae\u0001\u01ae\u0001\u01ae\u0001\u01ae"+ + "\u0001\u01ae\u0001\u01ae\u0001\u01ae\u0001\u01ae\u0001\u01ae\u0001\u01ae"+ + "\u0001\u01af\u0001\u01af\u0001\u01af\u0001\u01af\u0001\u01af\u0001\u01af"+ + "\u0001\u01af\u0001\u01af\u0001\u01af\u0001\u01af\u0001\u01af\u0001\u01b0"+ + "\u0001\u01b0\u0001\u01b0\u0001\u01b0\u0001\u01b0\u0001\u01b0\u0001\u01b0"+ + "\u0001\u01b0\u0001\u01b0\u0001\u01b0\u0001\u01b1\u0001\u01b1\u0001\u01b1"+ + "\u0001\u01b1\u0001\u01b1\u0001\u01b1\u0001\u01b1\u0001\u01b1\u0001\u01b1"+ + "\u0001\u01b1\u0001\u01b2\u0001\u01b2\u0001\u01b2\u0001\u01b2\u0001\u01b2"+ + "\u0001\u01b2\u0001\u01b2\u0001\u01b2\u0001\u01b2\u0001\u01b3\u0001\u01b3"+ + "\u0001\u01b3\u0001\u01b3\u0001\u01b3\u0001\u01b3\u0001\u01b4\u0001\u01b4"+ + "\u0001\u01b4\u0001\u01b4\u0001\u01b4\u0001\u01b4\u0001\u01b4\u0001\u01b4"+ + "\u0001\u01b5\u0001\u01b5\u0001\u01b5\u0001\u01b5\u0001\u01b5\u0001\u01b5"+ + "\u0001\u01b5\u0001\u01b5\u0001\u01b5\u0001\u01b5\u0001\u01b5\u0001\u01b5"+ + "\u0001\u01b5\u0001\u01b6\u0001\u01b6\u0001\u01b6\u0001\u01b6\u0001\u01b6"+ + "\u0001\u01b7\u0001\u01b7\u0001\u01b7\u0001\u01b7\u0001\u01b7\u0001\u01b7"+ + "\u0001\u01b7\u0001\u01b7\u0001\u01b8\u0001\u01b8\u0001\u01b8\u0001\u01b8"+ + "\u0001\u01b8\u0001\u01b8\u0001\u01b8\u0001\u01b9\u0001\u01b9\u0001\u01b9"+ + "\u0001\u01b9\u0001\u01b9\u0001\u01b9\u0001\u01b9\u0001\u01ba\u0001\u01ba"+ + "\u0001\u01ba\u0001\u01ba\u0001\u01ba\u0001\u01ba\u0001\u01ba\u0001\u01ba"+ + "\u0001\u01ba\u0001\u01ba\u0001\u01ba\u0001\u01bb\u0001\u01bb\u0001\u01bb"+ + "\u0001\u01bb\u0001\u01bb\u0001\u01bb\u0001\u01bb\u0001\u01bb\u0001\u01bb"+ + "\u0001\u01bb\u0001\u01bc\u0001\u01bc\u0001\u01bc\u0001\u01bc\u0001\u01bc"+ + "\u0001\u01bc\u0001\u01bc\u0001\u01bd\u0001\u01bd\u0001\u01bd\u0001\u01bd"+ + "\u0001\u01bd\u0001\u01bd\u0001\u01bd\u0001\u01be\u0001\u01be\u0001\u01be"+ + "\u0001\u01be\u0001\u01be\u0001\u01be\u0001\u01be\u0001\u01be\u0001\u01bf"+ + "\u0001\u01bf\u0001\u01bf\u0001\u01bf\u0001\u01bf\u0001\u01bf\u0001\u01bf"+ + "\u0001\u01bf\u0001\u01c0\u0001\u01c0\u0001\u01c0\u0001\u01c0\u0001\u01c0"+ + "\u0001\u01c0\u0001\u01c0\u0001\u01c0\u0001\u01c0\u0001\u01c0\u0001\u01c1"+ + "\u0001\u01c1\u0001\u01c1\u0001\u01c1\u0001\u01c1\u0001\u01c1\u0001\u01c1"+ + "\u0001\u01c2\u0001\u01c2\u0001\u01c2\u0001\u01c2\u0001\u01c2\u0001\u01c2"+ + "\u0001\u01c2\u0001\u01c3\u0001\u01c3\u0001\u01c3\u0001\u01c3\u0001\u01c3"+ + "\u0001\u01c3\u0001\u01c3\u0001\u01c4\u0001\u01c4\u0001\u01c4\u0001\u01c4"+ + "\u0001\u01c4\u0001\u01c4\u0001\u01c4\u0001\u01c4\u0001\u01c4\u0001\u01c4"+ + "\u0001\u01c4\u0001\u01c4\u0001\u01c5\u0001\u01c5\u0001\u01c5\u0001\u01c5"+ + "\u0001\u01c6\u0001\u01c6\u0001\u01c6\u0001\u01c6\u0001\u01c7\u0001\u01c7"+ + "\u0001\u01c7\u0001\u01c7\u0001\u01c7\u0001\u01c7\u0001\u01c8\u0001\u01c8"+ + "\u0001\u01c8\u0001\u01c8\u0001\u01c8\u0001\u01c8\u0001\u01c8\u0001\u01c8"+ + "\u0001\u01c8\u0001\u01c8\u0001\u01c8\u0001\u01c8\u0001\u01c8\u0001\u01c9"+ + "\u0001\u01c9\u0001\u01c9\u0001\u01c9\u0001\u01c9\u0001\u01c9\u0001\u01c9"+ + "\u0001\u01c9\u0001\u01c9\u0001\u01c9\u0001\u01c9\u0001\u01c9\u0001\u01ca"+ + "\u0001\u01ca\u0001\u01ca\u0001\u01ca\u0001\u01cb\u0001\u01cb\u0001\u01cb"+ + "\u0001\u01cb\u0001\u01cc\u0001\u01cc\u0001\u01cc\u0001\u01cc\u0001\u01cc"+ + "\u0001\u01cc\u0001\u01cc\u0001\u01cc\u0001\u01cc\u0001\u01cd\u0001\u01cd"+ + "\u0001\u01cd\u0001\u01cd\u0001\u01cd\u0001\u01cd\u0001\u01cd\u0001\u01cd"+ + "\u0001\u01ce\u0001\u01ce\u0001\u01ce\u0001\u01ce\u0001\u01ce\u0001\u01ce"+ + "\u0001\u01ce\u0001\u01ce\u0001\u01ce\u0001\u01ce\u0001\u01ce\u0001\u01cf"+ + "\u0001\u01cf\u0001\u01cf\u0001\u01cf\u0001\u01cf\u0001\u01cf\u0001\u01d0"+ + "\u0001\u01d0\u0001\u01d0\u0001\u01d0\u0001\u01d0\u0001\u01d0\u0001\u01d0"+ + "\u0001\u01d0\u0001\u01d1\u0001\u01d1\u0001\u01d1\u0001\u01d1\u0001\u01d1"+ + "\u0001\u01d1\u0001\u01d1\u0001\u01d1\u0001\u01d1\u0001\u01d2\u0001\u01d2"+ + "\u0001\u01d2\u0001\u01d2\u0001\u01d3\u0001\u01d3\u0001\u01d3\u0001\u01d3"+ + "\u0001\u01d3\u0001\u01d3\u0001\u01d3\u0001\u01d3\u0001\u01d4\u0001\u01d4"+ + "\u0001\u01d4\u0001\u01d4\u0001\u01d4\u0001\u01d4\u0001\u01d4\u0001\u01d4"+ + "\u0001\u01d4\u0001\u01d4\u0001\u01d4\u0001\u01d5\u0001\u01d5\u0001\u01d5"+ + "\u0001\u01d5\u0001\u01d5\u0001\u01d5\u0001\u01d5\u0001\u01d5\u0001\u01d5"+ + "\u0001\u01d6\u0001\u01d6\u0001\u01d6\u0001\u01d6\u0001\u01d6\u0001\u01d7"+ + "\u0001\u01d7\u0001\u01d7\u0001\u01d7\u0001\u01d7\u0001\u01d7\u0001\u01d7"+ + "\u0001\u01d8\u0001\u01d8\u0001\u01d8\u0001\u01d8\u0001\u01d8\u0001\u01d9"+ + "\u0001\u01d9\u0001\u01d9\u0001\u01d9\u0001\u01d9\u0001\u01d9\u0001\u01d9"+ + "\u0001\u01da\u0001\u01da\u0001\u01da\u0001\u01da\u0001\u01da\u0001\u01db"+ + "\u0001\u01db\u0001\u01db\u0001\u01db\u0001\u01db\u0001\u01db\u0001\u01db"+ + "\u0001\u01db\u0001\u01db\u0001\u01dc\u0001\u01dc\u0001\u01dc\u0001\u01dc"+ + "\u0001\u01dc\u0001\u01dd\u0001\u01dd\u0001\u01dd\u0001\u01dd\u0001\u01dd"+ + "\u0001\u01dd\u0001\u01dd\u0001\u01dd\u0001\u01dd\u0001\u01dd\u0001\u01dd"+ + "\u0001\u01dd\u0001\u01de\u0001\u01de\u0001\u01de\u0001\u01de\u0001\u01de"+ + "\u0001\u01de\u0001\u01de\u0001\u01de\u0001\u01de\u0001\u01de\u0001\u01de"+ + "\u0001\u01df\u0001\u01df\u0001\u01df\u0001\u01df\u0001\u01df\u0001\u01df"+ + "\u0001\u01df\u0001\u01df\u0001\u01df\u0001\u01e0\u0001\u01e0\u0001\u01e0"+ + "\u0001\u01e0\u0001\u01e0\u0001\u01e0\u0001\u01e0\u0001\u01e0\u0001\u01e1"+ + "\u0001\u01e1\u0001\u01e1\u0001\u01e1\u0001\u01e1\u0001\u01e1\u0001\u01e1"+ + "\u0001\u01e1\u0001\u01e1\u0001\u01e1\u0001\u01e1\u0001\u01e1\u0001\u01e1"+ + "\u0001\u01e1\u0001\u01e2\u0001\u01e2\u0001\u01e2\u0001\u01e2\u0001\u01e2"+ + "\u0001\u01e2\u0001\u01e2\u0001\u01e2\u0001\u01e3\u0001\u01e3\u0001\u01e3"+ + "\u0001\u01e3\u0001\u01e3\u0001\u01e3\u0001\u01e3\u0001\u01e3\u0001\u01e3"+ + "\u0001\u01e3\u0001\u01e3\u0001\u01e4\u0001\u01e4\u0001\u01e4\u0001\u01e4"+ + "\u0001\u01e4\u0001\u01e4\u0001\u01e4\u0001\u01e5\u0001\u01e5\u0001\u01e5"+ + "\u0001\u01e5\u0001\u01e5\u0001\u01e5\u0001\u01e5\u0001\u01e6\u0001\u01e6"+ + "\u0001\u01e6\u0001\u01e6\u0001\u01e6\u0001\u01e6\u0001\u01e6\u0001\u01e7"+ + "\u0001\u01e7\u0001\u01e7\u0001\u01e7\u0001\u01e7\u0001\u01e7\u0001\u01e7"+ + "\u0001\u01e8\u0001\u01e8\u0001\u01e8\u0001\u01e8\u0001\u01e9\u0001\u01e9"+ + "\u0001\u01e9\u0001\u01e9\u0001\u01ea\u0001\u01ea\u0001\u01ea\u0001\u01ea"+ + "\u0001\u01ea\u0001\u01eb\u0001\u01eb\u0001\u01eb\u0001\u01eb\u0001\u01eb"+ + "\u0001\u01ec\u0001\u01ec\u0001\u01ec\u0001\u01ec\u0001\u01ec\u0001\u01ec"+ + "\u0001\u01ec\u0001\u01ec\u0001\u01ed\u0001\u01ed\u0001\u01ed\u0001\u01ed"+ + "\u0001\u01ed\u0001\u01ed\u0001\u01ee\u0001\u01ee\u0001\u01ee\u0001\u01ee"+ + "\u0001\u01ee\u0001\u01ee\u0001\u01ee\u0001\u01ee\u0001\u01ee\u0001\u01ee"+ + "\u0001\u01ef\u0001\u01ef\u0001\u01ef\u0001\u01ef\u0001\u01ef\u0001\u01f0"+ + "\u0001\u01f0\u0001\u01f0\u0001\u01f0\u0001\u01f0\u0001\u01f0\u0001\u01f0"+ + "\u0001\u01f0\u0001\u01f0\u0001\u01f0\u0001\u01f0\u0001\u01f0\u0001\u01f0"+ + "\u0001\u01f0\u0001\u01f0\u0001\u01f0\u0001\u01f0\u0001\u01f0\u0001\u01f0"+ + "\u0001\u01f0\u0001\u01f1\u0001\u01f1\u0001\u01f1\u0001\u01f1\u0001\u01f1"+ + "\u0001\u01f1\u0001\u01f1\u0001\u01f1\u0001\u01f1\u0001\u01f1\u0001\u01f1"+ + "\u0001\u01f1\u0001\u01f1\u0001\u01f1\u0001\u01f1\u0001\u01f1\u0001\u01f1"+ + "\u0001\u01f1\u0001\u01f2\u0001\u01f2\u0001\u01f2\u0001\u01f2\u0001\u01f2"+ + "\u0001\u01f2\u0001\u01f3\u0001\u01f3\u0001\u01f3\u0001\u01f3\u0001\u01f3"+ + "\u0001\u01f3\u0001\u01f3\u0001\u01f3\u0001\u01f3\u0001\u01f3\u0001\u01f3"+ + "\u0001\u01f3\u0001\u01f3\u0001\u01f4\u0001\u01f4\u0001\u01f4\u0001\u01f4"+ + "\u0001\u01f4\u0001\u01f4\u0001\u01f4\u0001\u01f4\u0001\u01f4\u0001\u01f4"+ + "\u0001\u01f4\u0001\u01f5\u0001\u01f5\u0001\u01f5\u0001\u01f5\u0001\u01f5"+ + "\u0001\u01f5\u0001\u01f6\u0001\u01f6\u0001\u01f6\u0001\u01f6\u0001\u01f6"+ + "\u0001\u01f6\u0001\u01f6\u0001\u01f6\u0001\u01f6\u0001\u01f7\u0001\u01f7"+ + "\u0001\u01f7\u0001\u01f7\u0001\u01f7\u0001\u01f7\u0001\u01f7\u0001\u01f7"+ + "\u0001\u01f8\u0001\u01f8\u0001\u01f8\u0001\u01f8\u0001\u01f9\u0001\u01f9"+ + "\u0001\u01f9\u0001\u01f9\u0001\u01f9\u0001\u01f9\u0001\u01f9\u0001\u01f9"+ + "\u0001\u01f9\u0001\u01f9\u0001\u01f9\u0001\u01f9\u0001\u01fa\u0001\u01fa"+ + "\u0001\u01fa\u0001\u01fa\u0001\u01fa\u0001\u01fa\u0001\u01fa\u0001\u01fa"+ + "\u0001\u01fb\u0001\u01fb\u0001\u01fb\u0001\u01fb\u0001\u01fb\u0001\u01fb"+ + "\u0001\u01fc\u0001\u01fc\u0001\u01fc\u0001\u01fc\u0001\u01fc\u0001\u01fc"+ + "\u0001\u01fd\u0001\u01fd\u0001\u01fd\u0001\u01fd\u0001\u01fd\u0001\u01fd"+ + "\u0001\u01fd\u0001\u01fd\u0001\u01fe\u0001\u01fe\u0001\u01fe\u0001\u01fe"+ + "\u0001\u01fe\u0001\u01fe\u0001\u01fe\u0001\u01fe\u0001\u01ff\u0001\u01ff"+ + "\u0001\u01ff\u0001\u01ff\u0001\u01ff\u0001\u01ff\u0001\u0200\u0001\u0200"+ + "\u0001\u0200\u0001\u0200\u0001\u0200\u0001\u0201\u0001\u0201\u0001\u0201"+ + "\u0001\u0201\u0001\u0201\u0001\u0201\u0001\u0201\u0001\u0202\u0001\u0202"+ + "\u0001\u0202\u0001\u0202\u0001\u0202\u0001\u0202\u0001\u0203\u0001\u0203"+ + "\u0001\u0203\u0001\u0203\u0001\u0203\u0001\u0203\u0001\u0204\u0001\u0204"+ + "\u0001\u0204\u0001\u0204\u0001\u0204\u0001\u0204\u0001\u0204\u0001\u0204"+ + "\u0001\u0204\u0001\u0205\u0001\u0205\u0001\u0205\u0001\u0205\u0001\u0205"+ + "\u0001\u0205\u0001\u0206\u0001\u0206\u0001\u0206\u0001\u0206\u0001\u0207"+ + "\u0001\u0207\u0001\u0207\u0001\u0207\u0001\u0207\u0001\u0208\u0001\u0208"+ + "\u0001\u0208\u0001\u0208\u0001\u0208\u0001\u0208\u0001\u0208\u0001\u0209"+ + "\u0001\u0209\u0001\u0209\u0001\u0209\u0001\u0209\u0001\u0209\u0001\u0209"+ + "\u0001\u0209\u0001\u020a\u0001\u020a\u0001\u020a\u0001\u020a\u0001\u020a"+ + "\u0001\u020a\u0001\u020a\u0001\u020a\u0001\u020a\u0001\u020a\u0001\u020b"+ + "\u0001\u020b\u0001\u020b\u0001\u020b\u0001\u020b\u0001\u020b\u0001\u020b"+ + "\u0001\u020c\u0001\u020c\u0001\u020c\u0001\u020c\u0001\u020c\u0001\u020d"+ + "\u0001\u020d\u0001\u020d\u0001\u020d\u0001\u020d\u0001\u020e\u0001\u020e"+ + "\u0001\u020e\u0001\u020e\u0001\u020f\u0001\u020f\u0001\u020f\u0001\u020f"+ + "\u0001\u020f\u0001\u0210\u0001\u0210\u0001\u0210\u0001\u0210\u0001\u0210"+ + "\u0001\u0211\u0001\u0211\u0001\u0211\u0001\u0211\u0001\u0211\u0001\u0211"+ + "\u0001\u0211\u0001\u0211\u0001\u0212\u0001\u0212\u0001\u0212\u0001\u0212"+ + "\u0001\u0212\u0001\u0212\u0001\u0212\u0001\u0212\u0001\u0213\u0001\u0213"+ + "\u0001\u0213\u0001\u0213\u0001\u0214\u0001\u0214\u0001\u0214\u0001\u0214"+ + "\u0001\u0215\u0001\u0215\u0001\u0215\u0001\u0215\u0001\u0215\u0001\u0215"+ + "\u0001\u0215\u0001\u0215\u0001\u0215\u0001\u0215\u0001\u0216\u0001\u0216"+ + "\u0001\u0216\u0001\u0216\u0001\u0216\u0001\u0216\u0001\u0217\u0001\u0217"+ + "\u0001\u0217\u0001\u0217\u0001\u0218\u0001\u0218\u0001\u0218\u0001\u0218"+ + "\u0001\u0219\u0001\u0219\u0001\u0219\u0001\u021a\u0001\u021a\u0001\u021a"+ + "\u0001\u021a\u0001\u021a\u0001\u021a\u0001\u021b\u0001\u021b\u0001\u021b"+ + "\u0001\u021b\u0001\u021b\u0001\u021b\u0001\u021b\u0001\u021b\u0001\u021b"+ + "\u0001\u021b\u0001\u021c\u0001\u021c\u0001\u021c\u0001\u021c\u0001\u021d"+ + "\u0001\u021d\u0001\u021d\u0001\u021e\u0001\u021e\u0001\u021e\u0001\u021e"+ + "\u0001\u021e\u0001\u021e\u0001\u021f\u0001\u021f\u0001\u021f\u0001\u021f"+ + "\u0001\u021f\u0001\u021f\u0001\u021f\u0001\u021f\u0001\u0220\u0001\u0220"+ + "\u0001\u0220\u0001\u0220\u0001\u0220\u0001\u0220\u0001\u0221\u0001\u0221"+ + "\u0001\u0221\u0001\u0221\u0001\u0221\u0001\u0221\u0001\u0222\u0001\u0222"+ + "\u0001\u0222\u0001\u0222\u0001\u0222\u0001\u0223\u0001\u0223\u0001\u0223"+ + "\u0001\u0223\u0001\u0223\u0001\u0224\u0001\u0224\u0001\u0224\u0001\u0224"+ + "\u0001\u0224\u0001\u0224\u0001\u0224\u0001\u0224\u0001\u0224\u0001\u0224"+ + "\u0001\u0224\u0001\u0225\u0001\u0225\u0001\u0225\u0001\u0225\u0001\u0225"+ + "\u0001\u0225\u0001\u0226\u0001\u0226\u0001\u0226\u0001\u0226\u0001\u0226"+ + "\u0001\u0226\u0001\u0226\u0001\u0226\u0001\u0226\u0001\u0226\u0001\u0226"+ + "\u0001\u0226\u0001\u0226\u0001\u0227\u0001\u0227\u0001\u0227\u0001\u0227"+ + "\u0001\u0227\u0001\u0227\u0001\u0227\u0001\u0228\u0001\u0228\u0001\u0228"+ + "\u0001\u0228\u0001\u0228\u0001\u0228\u0001\u0228\u0001\u0228\u0001\u0229"+ + "\u0001\u0229\u0001\u0229\u0001\u0229\u0001\u0229\u0001\u022a\u0001\u022a"+ + "\u0001\u022a\u0001\u022a\u0001\u022a\u0001\u022a\u0001\u022b\u0001\u022b"+ + "\u0001\u022b\u0001\u022b\u0001\u022b\u0001\u022c\u0001\u022c\u0001\u022c"+ + "\u0001\u022c\u0001\u022c\u0001\u022c\u0001\u022d\u0001\u022d\u0001\u022d"+ + "\u0001\u022d\u0001\u022d\u0001\u022e\u0001\u022e\u0001\u022e\u0001\u022e"+ + "\u0001\u022e\u0001\u022e\u0001\u022f\u0001\u022f\u0001\u022f\u0001\u022f"+ + "\u0001\u022f\u0001\u022f\u0001\u0230\u0001\u0230\u0001\u0230\u0001\u0230"+ + "\u0001\u0230\u0001\u0230\u0001\u0230\u0001\u0231\u0001\u0231\u0001\u0231"+ + "\u0001\u0231\u0001\u0232\u0001\u0232\u0001\u0232\u0001\u0232\u0001\u0232"+ + "\u0001\u0233\u0001\u0233\u0001\u0233\u0001\u0233\u0001\u0234\u0001\u0234"+ + "\u0001\u0234\u0001\u0234\u0001\u0234\u0001\u0235\u0001\u0235\u0001\u0235"+ + "\u0001\u0235\u0001\u0236\u0001\u0236\u0001\u0236\u0001\u0236\u0001\u0236"+ + "\u0001\u0237\u0001\u0237\u0001\u0237\u0001\u0237\u0001\u0238\u0001\u0238"+ + "\u0001\u0238\u0001\u0238\u0001\u0238\u0001\u0239\u0001\u0239\u0001\u0239"+ + "\u0001\u0239\u0001\u0239\u0001\u023a\u0001\u023a\u0001\u023a\u0001\u023a"+ + "\u0001\u023a\u0001\u023b\u0001\u023b\u0001\u023b\u0001\u023b\u0001\u023b"+ + "\u0001\u023c\u0001\u023c\u0001\u023c\u0001\u023c\u0001\u023c\u0001\u023c"+ + "\u0001\u023d\u0001\u023d\u0001\u023d\u0001\u023d\u0001\u023d\u0001\u023d"+ + "\u0001\u023e\u0001\u023e\u0001\u023e\u0001\u023e\u0001\u023e\u0001\u023e"+ + "\u0001\u023f\u0001\u023f\u0001\u023f\u0001\u023f\u0001\u023f\u0001\u023f"+ + "\u0001\u023f\u0001\u023f\u0001\u023f\u0001\u023f\u0001\u023f\u0001\u0240"+ + "\u0001\u0240\u0001\u0240\u0001\u0240\u0001\u0240\u0001\u0240\u0001\u0240"+ + "\u0001\u0240\u0001\u0240\u0001\u0240\u0001\u0240\u0001\u0240\u0001\u0241"+ + "\u0001\u0241\u0001\u0241\u0001\u0241\u0001\u0241\u0001\u0241\u0001\u0241"+ + "\u0001\u0241\u0001\u0241\u0001\u0241\u0001\u0241\u0001\u0241\u0001\u0241"+ + "\u0001\u0241\u0001\u0241\u0001\u0241\u0001\u0241\u0001\u0242\u0001\u0242"+ + "\u0001\u0242\u0001\u0242\u0001\u0242\u0001\u0242\u0001\u0243\u0001\u0243"+ + "\u0001\u0243\u0001\u0243\u0001\u0243\u0001\u0243\u0001\u0243\u0001\u0243"+ + "\u0001\u0243\u0001\u0243\u0001\u0243\u0001\u0243\u0001\u0243\u0001\u0244"+ + "\u0001\u0244\u0001\u0244\u0001\u0244\u0001\u0244\u0001\u0244\u0001\u0245"+ + "\u0001\u0245\u0001\u0245\u0001\u0245\u0001\u0245\u0001\u0245\u0001\u0246"+ + "\u0001\u0246\u0001\u0246\u0001\u0246\u0001\u0246\u0001\u0246\u0001\u0247"+ + "\u0001\u0247\u0001\u0247\u0001\u0247\u0001\u0248\u0001\u0248\u0001\u0248"+ + "\u0001\u0248\u0001\u0248\u0001\u0248\u0001\u0248\u0001\u0249\u0001\u0249"+ + "\u0001\u0249\u0001\u0249\u0001\u0249\u0001\u0249\u0001\u0249\u0001\u0249"+ + "\u0001\u0249\u0001\u0249\u0001\u024a\u0001\u024a\u0001\u024a\u0001\u024a"+ + "\u0001\u024a\u0001\u024a\u0001\u024a\u0001\u024b\u0001\u024b\u0001\u024b"+ + "\u0001\u024b\u0001\u024b\u0001\u024b\u0001\u024b\u0001\u024b\u0001\u024c"+ + "\u0001\u024c\u0001\u024c\u0001\u024c\u0001\u024c\u0001\u024c\u0001\u024c"+ + "\u0001\u024d\u0001\u024d\u0001\u024d\u0001\u024d\u0001\u024d\u0001\u024e"+ + "\u0001\u024e\u0001\u024e\u0001\u024e\u0001\u024e\u0001\u024e\u0001\u024f"+ + "\u0001\u024f\u0001\u024f\u0001\u024f\u0001\u0250\u0001\u0250\u0001\u0250"+ + "\u0001\u0250\u0001\u0250\u0001\u0250\u0001\u0250\u0001\u0250\u0001\u0250"+ + "\u0001\u0250\u0001\u0250\u0001\u0250\u0001\u0251\u0001\u0251\u0001\u0251"+ + "\u0001\u0251\u0001\u0251\u0001\u0251\u0001\u0251\u0001\u0251\u0001\u0251"+ + "\u0001\u0251\u0001\u0251\u0001\u0251\u0001\u0251\u0001\u0251\u0001\u0251"+ + "\u0001\u0251\u0001\u0251\u0001\u0251\u0001\u0251\u0001\u0252\u0001\u0252"+ + "\u0001\u0252\u0001\u0252\u0001\u0252\u0001\u0252\u0001\u0252\u0001\u0252"+ + "\u0001\u0252\u0001\u0252\u0001\u0252\u0001\u0252\u0001\u0253\u0001\u0253"+ + "\u0001\u0253\u0001\u0253\u0001\u0253\u0001\u0253\u0001\u0253\u0001\u0253"+ + "\u0001\u0253\u0001\u0253\u0001\u0253\u0001\u0253\u0001\u0253\u0001\u0253"+ + "\u0001\u0254\u0001\u0254\u0001\u0254\u0001\u0254\u0001\u0254\u0001\u0254"+ + "\u0001\u0254\u0001\u0254\u0001\u0254\u0001\u0254\u0001\u0254\u0001\u0254"+ + "\u0001\u0254\u0001\u0254\u0001\u0254\u0001\u0255\u0001\u0255\u0001\u0255"+ + "\u0001\u0255\u0001\u0255\u0001\u0255\u0001\u0255\u0001\u0255\u0001\u0255"+ + "\u0001\u0255\u0001\u0255\u0001\u0255\u0001\u0255\u0001\u0256\u0001\u0256"+ + "\u0001\u0256\u0001\u0256\u0001\u0256\u0001\u0256\u0001\u0256\u0001\u0256"+ + "\u0001\u0256\u0001\u0256\u0001\u0256\u0001\u0256\u0001\u0256\u0001\u0257"+ + "\u0001\u0257\u0001\u0257\u0001\u0257\u0001\u0257\u0001\u0257\u0001\u0257"+ + "\u0001\u0257\u0001\u0257\u0001\u0257\u0001\u0257\u0001\u0257\u0001\u0258"+ + "\u0001\u0258\u0001\u0258\u0001\u0258\u0001\u0258\u0001\u0258\u0001\u0258"+ + "\u0001\u0258\u0001\u0258\u0001\u0258\u0001\u0258\u0001\u0258\u0001\u0258"+ + "\u0001\u0259\u0001\u0259\u0001\u0259\u0001\u0259\u0001\u0259\u0001\u0259"+ + "\u0001\u0259\u0001\u0259\u0001\u0259\u0001\u0259\u0001\u0259\u0001\u0259"+ + "\u0001\u0259\u0001\u0259\u0001\u0259\u0001\u025a\u0001\u025a\u0001\u025a"+ + "\u0001\u025a\u0001\u025a\u0001\u025a\u0001\u025a\u0001\u025a\u0001\u025a"+ + "\u0001\u025a\u0001\u025a\u0001\u025a\u0001\u025a\u0001\u025a\u0001\u025a"+ + "\u0001\u025b\u0001\u025b\u0001\u025b\u0001\u025b\u0001\u025b\u0001\u025b"+ + "\u0001\u025b\u0001\u025b\u0001\u025b\u0001\u025b\u0001\u025b\u0001\u025b"+ + "\u0001\u025b\u0001\u025b\u0001\u025b\u0001\u025b\u0001\u025b\u0001\u025b"+ + "\u0001\u025b\u0001\u025b\u0001\u025b\u0001\u025b\u0001\u025c\u0001\u025c"+ + "\u0001\u025c\u0001\u025c\u0001\u025c\u0001\u025c\u0001\u025c\u0001\u025c"+ + "\u0001\u025c\u0001\u025c\u0001\u025c\u0001\u025c\u0001\u025c\u0001\u025c"+ + "\u0001\u025c\u0001\u025c\u0001\u025c\u0001\u025c\u0001\u025c\u0001\u025c"+ + "\u0001\u025c\u0001\u025c\u0001\u025d\u0001\u025d\u0001\u025d\u0001\u025d"+ + "\u0001\u025d\u0001\u025d\u0001\u025d\u0001\u025d\u0001\u025d\u0001\u025d"+ + "\u0001\u025d\u0001\u025d\u0001\u025d\u0001\u025d\u0001\u025e\u0001\u025e"+ + "\u0001\u025e\u0001\u025e\u0001\u025e\u0001\u025e\u0001\u025e\u0001\u025f"+ + "\u0001\u025f\u0001\u025f\u0001\u025f\u0001\u025f\u0001\u0260\u0001\u0260"+ + "\u0001\u0260\u0001\u0260\u0001\u0260\u0001\u0260\u0001\u0261\u0001\u0261"+ + "\u0001\u0261\u0001\u0261\u0001\u0261\u0001\u0261\u0001\u0261\u0001\u0261"+ + "\u0001\u0261\u0001\u0261\u0001\u0261\u0001\u0262\u0001\u0262\u0001\u0262"+ + "\u0001\u0262\u0001\u0262\u0001\u0262\u0001\u0262\u0001\u0262\u0001\u0262"+ + "\u0001\u0262\u0001\u0262\u0001\u0262\u0001\u0263\u0001\u0263\u0001\u0263"+ + "\u0001\u0263\u0001\u0263\u0001\u0263\u0001\u0263\u0001\u0263\u0001\u0263"+ + "\u0001\u0263\u0001\u0263\u0001\u0263\u0001\u0263\u0001\u0263\u0001\u0263"+ + "\u0001\u0263\u0001\u0264\u0001\u0264\u0001\u0264\u0001\u0264\u0001\u0264"+ + "\u0001\u0264\u0001\u0264\u0001\u0264\u0001\u0264\u0001\u0264\u0001\u0264"+ + "\u0001\u0264\u0001\u0264\u0001\u0264\u0001\u0264\u0001\u0264\u0001\u0265"+ + "\u0001\u0265\u0001\u0265\u0001\u0265\u0001\u0265\u0001\u0265\u0001\u0265"+ + "\u0001\u0266\u0001\u0266\u0001\u0266\u0001\u0266\u0001\u0266\u0001\u0266"+ + "\u0001\u0266\u0001\u0267\u0001\u0267\u0001\u0267\u0001\u0267\u0001\u0267"+ + "\u0001\u0267\u0001\u0267\u0001\u0267\u0001\u0267\u0001\u0268\u0001\u0268"+ + "\u0001\u0268\u0001\u0268\u0001\u0268\u0001\u0268\u0001\u0268\u0001\u0269"+ + "\u0001\u0269\u0001\u0269\u0001\u0269\u0001\u0269\u0001\u0269\u0001\u0269"+ + "\u0001\u0269\u0001\u0269\u0001\u0269\u0001\u026a\u0001\u026a\u0001\u026a"+ + "\u0001\u026a\u0001\u026a\u0001\u026a\u0001\u026a\u0001\u026b\u0001\u026b"+ + "\u0001\u026b\u0001\u026b\u0001\u026c\u0001\u026c\u0001\u026c\u0001\u026c"+ + "\u0001\u026c\u0001\u026c\u0001\u026c\u0001\u026c\u0001\u026c\u0001\u026c"+ + "\u0001\u026c\u0001\u026c\u0001\u026c\u0001\u026c\u0001\u026c\u0001\u026c"+ + "\u0001\u026d\u0001\u026d\u0001\u026d\u0001\u026d\u0001\u026d\u0001\u026d"+ + "\u0001\u026d\u0001\u026d\u0001\u026d\u0001\u026e\u0001\u026e\u0001\u026e"+ + "\u0001\u026e\u0001\u026e\u0001\u026e\u0001\u026e\u0001\u026e\u0001\u026e"+ + "\u0001\u026e\u0001\u026f\u0001\u026f\u0001\u026f\u0001\u026f\u0001\u026f"+ + "\u0001\u026f\u0001\u026f\u0001\u026f\u0001\u026f\u0001\u026f\u0001\u026f"+ + "\u0001\u0270\u0001\u0270\u0001\u0270\u0001\u0270\u0001\u0270\u0001\u0270"+ + "\u0001\u0270\u0001\u0270\u0001\u0270\u0001\u0271\u0001\u0271\u0001\u0271"+ + "\u0001\u0271\u0001\u0271\u0001\u0271\u0001\u0271\u0001\u0271\u0001\u0271"+ + "\u0001\u0271\u0001\u0271\u0001\u0271\u0001\u0271\u0001\u0272\u0001\u0272"+ + "\u0001\u0272\u0001\u0272\u0001\u0272\u0001\u0272\u0001\u0272\u0001\u0272"+ + "\u0001\u0272\u0001\u0272\u0001\u0272\u0001\u0272\u0001\u0272\u0001\u0272"+ + "\u0001\u0273\u0001\u0273\u0001\u0273\u0001\u0273\u0001\u0273\u0001\u0273"+ + "\u0001\u0273\u0001\u0273\u0001\u0273\u0001\u0273\u0001\u0273\u0001\u0273"+ + "\u0001\u0273\u0001\u0273\u0001\u0273\u0001\u0273\u0001\u0273\u0001\u0274"+ + "\u0001\u0274\u0001\u0274\u0001\u0274\u0001\u0274\u0001\u0274\u0001\u0274"+ + "\u0001\u0274\u0001\u0274\u0001\u0274\u0001\u0275\u0001\u0275\u0001\u0275"+ + "\u0001\u0275\u0001\u0275\u0001\u0275\u0001\u0275\u0001\u0275\u0001\u0275"+ + "\u0001\u0275\u0001\u0275\u0001\u0275\u0001\u0275\u0001\u0275\u0001\u0276"+ + "\u0001\u0276\u0001\u0276\u0001\u0276\u0001\u0276\u0001\u0276\u0001\u0276"+ + "\u0001\u0276\u0001\u0276\u0001\u0276\u0001\u0277\u0001\u0277\u0001\u0277"+ + "\u0001\u0277\u0001\u0277\u0001\u0277\u0001\u0277\u0001\u0277\u0001\u0277"+ + "\u0001\u0277\u0001\u0277\u0001\u0277\u0001\u0277\u0001\u0277\u0001\u0277"+ + "\u0001\u0278\u0001\u0278\u0001\u0278\u0001\u0278\u0001\u0278\u0001\u0278"+ + "\u0001\u0278\u0001\u0278\u0001\u0278\u0001\u0278\u0001\u0278\u0001\u0278"+ + "\u0001\u0278\u0001\u0278\u0001\u0278\u0001\u0278\u0001\u0278\u0001\u0279"+ + "\u0001\u0279\u0001\u0279\u0001\u0279\u0001\u027a\u0001\u027a\u0001\u027a"+ + "\u0001\u027a\u0001\u027a\u0001\u027a\u0001\u027a\u0001\u027a\u0001\u027a"+ + "\u0001\u027a\u0001\u027a\u0001\u027a\u0001\u027a\u0001\u027a\u0001\u027a"+ + "\u0001\u027a\u0001\u027a\u0001\u027a\u0001\u027a\u0001\u027a\u0001\u027b"+ + "\u0001\u027b\u0001\u027b\u0001\u027b\u0001\u027b\u0001\u027b\u0001\u027b"+ + "\u0001\u027b\u0001\u027b\u0001\u027b\u0001\u027c\u0001\u027c\u0001\u027c"+ + "\u0001\u027c\u0001\u027c\u0001\u027c\u0001\u027c\u0001\u027c\u0001\u027c"+ + "\u0001\u027c\u0001\u027c\u0001\u027c\u0001\u027c\u0001\u027c\u0001\u027c"+ + "\u0001\u027c\u0001\u027c\u0001\u027c\u0001\u027c\u0001\u027c\u0001\u027c"+ + "\u0001\u027c\u0001\u027d\u0001\u027d\u0001\u027d\u0001\u027d\u0001\u027d"+ + "\u0001\u027d\u0001\u027d\u0001\u027d\u0001\u027d\u0001\u027d\u0001\u027d"+ + "\u0001\u027d\u0001\u027d\u0001\u027e\u0001\u027e\u0001\u027e\u0001\u027e"+ + "\u0001\u027e\u0001\u027e\u0001\u027e\u0001\u027e\u0001\u027f\u0001\u027f"+ + "\u0001\u027f\u0001\u027f\u0001\u027f\u0001\u027f\u0001\u027f\u0001\u027f"+ "\u0001\u0280\u0001\u0280\u0001\u0280\u0001\u0280\u0001\u0280\u0001\u0280"+ - "\u0003\u0280\u18be\b\u0280\u0001\u0281\u0001\u0281\u0003\u0281\u18c2\b"+ - "\u0281\u0001\u0282\u0001\u0282\u0003\u0282\u18c6\b\u0282\u0001\u0283\u0001"+ - "\u0283\u0001\u0283\u0001\u0284\u0001\u0284\u0001\u0284\u0001\u0284\u0005"+ - "\u0284\u18cf\b\u0284\n\u0284\f\u0284\u18d2\t\u0284\u0001\u0285\u0001\u0285"+ - "\u0001\u0285\u0001\u0286\u0001\u0286\u0001\u0286\u0001\u0286\u0005\u0286"+ - "\u18db\b\u0286\n\u0286\f\u0286\u18de\t\u0286\u0001\u0287\u0001\u0287\u0001"+ - "\u0287\u0001\u0287\u0001\u0288\u0001\u0288\u0001\u0288\u0001\u0288\u0001"+ - "\u0289\u0001\u0289\u0001\u0289\u0001\u0289\u0001\u028a\u0001\u028a\u0001"+ - "\u028a\u0001\u028a\u0001\u028b\u0001\u028b\u0001\u028b\u0001\u028c\u0001"+ - "\u028c\u0001\u028c\u0001\u028c\u0005\u028c\u18f7\b\u028c\n\u028c\f\u028c"+ - "\u18fa\t\u028c\u0001\u028d\u0001\u028d\u0001\u028d\u0001\u028d\u0001\u028d"+ - "\u0001\u028d\u0001\u028e\u0001\u028e\u0001\u028e\u0001\u028f\u0001\u028f"+ - "\u0001\u028f\u0001\u028f\u0001\u0290\u0001\u0290\u0003\u0290\u190b\b\u0290"+ - "\u0001\u0290\u0001\u0290\u0001\u0290\u0001\u0290\u0001\u0290\u0001\u0291"+ - "\u0001\u0291\u0005\u0291\u1914\b\u0291\n\u0291\f\u0291\u1917\t\u0291\u0001"+ - "\u0292\u0001\u0292\u0001\u0292\u0001\u0293\u0001\u0293\u0001\u0293\u0005"+ - "\u0293\u191f\b\u0293\n\u0293\f\u0293\u1922\t\u0293\u0001\u0294\u0001\u0294"+ - "\u0001\u0294\u0001\u0295\u0001\u0295\u0001\u0295\u0001\u0296\u0001\u0296"+ - "\u0001\u0296\u0001\u0297\u0001\u0297\u0001\u0297\u0005\u0297\u1930\b\u0297"+ - "\n\u0297\f\u0297\u1933\t\u0297\u0001\u0298\u0001\u0298\u0001\u0298\u0001"+ - "\u0299\u0001\u0299\u0001\u0299\u0001\u029a\u0001\u029a\u0001\u029b\u0001"+ - "\u029b\u0001\u029b\u0001\u029b\u0001\u029b\u0001\u029b\u0001\u029c\u0001"+ - "\u029c\u0001\u029c\u0003\u029c\u1946\b\u029c\u0001\u029c\u0001\u029c\u0003"+ - "\u029c\u194a\b\u029c\u0001\u029c\u0003\u029c\u194d\b\u029c\u0001\u029c"+ - "\u0001\u029c\u0001\u029c\u0001\u029c\u0003\u029c\u1953\b\u029c\u0001\u029c"+ - "\u0003\u029c\u1956\b\u029c\u0001\u029c\u0001\u029c\u0001\u029c\u0003\u029c"+ - "\u195b\b\u029c\u0001\u029c\u0001\u029c\u0003\u029c\u195f\b\u029c\u0001"+ - "\u029d\u0004\u029d\u1962\b\u029d\u000b\u029d\f\u029d\u1963\u0001\u029e"+ - "\u0001\u029e\u0001\u029e\u0005\u029e\u1969\b\u029e\n\u029e\f\u029e\u196c"+ - "\t\u029e\u0001\u029f\u0001\u029f\u0001\u029f\u0001\u029f\u0001\u029f\u0001"+ - "\u029f\u0001\u029f\u0001\u029f\u0005\u029f\u1976\b\u029f\n\u029f\f\u029f"+ - "\u1979\t\u029f\u0001\u029f\u0001\u029f\u0001\u02a0\u0004\u02a0\u197e\b"+ - "\u02a0\u000b\u02a0\f\u02a0\u197f\u0001\u02a0\u0001\u02a0\u0001\u02a1\u0001"+ - "\u02a1\u0003\u02a1\u1986\b\u02a1\u0001\u02a1\u0003\u02a1\u1989\b\u02a1"+ - "\u0001\u02a1\u0001\u02a1\u0001\u02a2\u0001\u02a2\u0001\u02a2\u0001\u02a2"+ - "\u0005\u02a2\u1991\b\u02a2\n\u02a2\f\u02a2\u1994\t\u02a2\u0001\u02a2\u0001"+ - "\u02a2\u0001\u02a3\u0001\u02a3\u0001\u02a3\u0001\u02a3\u0005\u02a3\u199c"+ - "\b\u02a3\n\u02a3\f\u02a3\u199f\t\u02a3\u0001\u02a3\u0001\u02a3\u0001\u02a3"+ - "\u0004\u02a3\u19a4\b\u02a3\u000b\u02a3\f\u02a3\u19a5\u0001\u02a3\u0001"+ - "\u02a3\u0004\u02a3\u19aa\b\u02a3\u000b\u02a3\f\u02a3\u19ab\u0001\u02a3"+ - "\u0005\u02a3\u19af\b\u02a3\n\u02a3\f\u02a3\u19b2\t\u02a3\u0001\u02a3\u0005"+ - "\u02a3\u19b5\b\u02a3\n\u02a3\f\u02a3\u19b8\t\u02a3\u0001\u02a3\u0001\u02a3"+ - "\u0001\u02a3\u0001\u02a3\u0001\u02a3\u0001\u02a4\u0001\u02a4\u0001\u02a4"+ - "\u0001\u02a4\u0005\u02a4\u19c3\b\u02a4\n\u02a4\f\u02a4\u19c6\t\u02a4\u0001"+ - "\u02a4\u0001\u02a4\u0001\u02a4\u0004\u02a4\u19cb\b\u02a4\u000b\u02a4\f"+ - "\u02a4\u19cc\u0001\u02a4\u0001\u02a4\u0004\u02a4\u19d1\b\u02a4\u000b\u02a4"+ - "\f\u02a4\u19d2\u0001\u02a4\u0003\u02a4\u19d6\b\u02a4\u0005\u02a4\u19d8"+ - "\b\u02a4\n\u02a4\f\u02a4\u19db\t\u02a4\u0001\u02a4\u0004\u02a4\u19de\b"+ - "\u02a4\u000b\u02a4\f\u02a4\u19df\u0001\u02a4\u0004\u02a4\u19e3\b\u02a4"+ - "\u000b\u02a4\f\u02a4\u19e4\u0001\u02a4\u0005\u02a4\u19e8\b\u02a4\n\u02a4"+ - "\f\u02a4\u19eb\t\u02a4\u0001\u02a4\u0003\u02a4\u19ee\b\u02a4\u0001\u02a4"+ - "\u0001\u02a4\u0001\u02a5\u0001\u02a5\u0001\u02a5\u0001\u02a5\u0005\u02a5"+ - "\u19f6\b\u02a5\n\u02a5\f\u02a5\u19f9\t\u02a5\u0001\u02a5\u0005\u02a5\u19fc"+ - "\b\u02a5\n\u02a5\f\u02a5\u19ff\t\u02a5\u0001\u02a5\u0001\u02a5\u0005\u02a5"+ - "\u1a03\b\u02a5\n\u02a5\f\u02a5\u1a06\t\u02a5\u0003\u02a5\u1a08\b\u02a5"+ - "\u0001\u02a6\u0001\u02a6\u0001\u02a6\u0001\u02a7\u0001\u02a7\u0001\u02a8"+ - "\u0001\u02a8\u0001\u02a8\u0001\u02a8\u0001\u02a8\u0001\u02a9\u0001\u02a9"+ - "\u0003\u02a9\u1a16\b\u02a9\u0001\u02a9\u0001\u02a9\u0001\u02aa\u0001\u02aa"+ - "\u0001\u02aa\u0001\u02aa\u0001\u02aa\u0001\u02aa\u0001\u02aa\u0001\u02aa"+ - "\u0001\u02aa\u0001\u02aa\u0001\u02aa\u0001\u02aa\u0001\u02aa\u0001\u02aa"+ - "\u0001\u02aa\u0001\u02aa\u0001\u02aa\u0001\u02aa\u0001\u02aa\u0001\u02aa"+ - "\u0003\u02aa\u1a2e\b\u02aa\u0001\u02aa\u0005\u02aa\u1a31\b\u02aa\n\u02aa"+ - "\f\u02aa\u1a34\t\u02aa\u0001\u02ab\u0001\u02ab\u0001\u02ab\u0001\u02ab"+ - "\u0001\u02ab\u0001\u02ac\u0001\u02ac\u0003\u02ac\u1a3d\b\u02ac\u0001\u02ac"+ - "\u0001\u02ac\u0001\u02ad\u0001\u02ad\u0001\u02ad\u0001\u02ad\u0001\u02ad"+ - "\u0005\u02ad\u1a46\b\u02ad\n\u02ad\f\u02ad\u1a49\t\u02ad\u0001\u02ae\u0001"+ - "\u02ae\u0001\u02ae\u0001\u02ae\u0001\u02ae\u0001\u02af\u0001\u02af\u0001"+ - "\u02af\u0001\u02af\u0001\u02af\u0001\u02af\u0001\u02b0\u0001\u02b0\u0001"+ - "\u02b0\u0001\u02b0\u0001\u02b0\u0001\u02b1\u0001\u02b1\u0001\u02b1\u0001"+ - "\u02b1\u0001\u02b1\u0001\u02b2\u0001\u02b2\u0001\u02b2\u0001\u02b2\u0001"+ - "\u02b2\u0001\u02b3\u0001\u02b3\u0001\u02b3\u0001\u02b3\u0001\u02b3\u0001"+ - "\u02b4\u0001\u02b4\u0001\u02b4\u0001\u02b4\u0001\u02b4\u0001\u02b5\u0004"+ - "\u02b5\u1a70\b\u02b5\u000b\u02b5\f\u02b5\u1a71\u0001\u02b5\u0001\u02b5"+ - "\u0005\u02b5\u1a76\b\u02b5\n\u02b5\f\u02b5\u1a79\t\u02b5\u0003\u02b5\u1a7b"+ - "\b\u02b5\u0001\u02b6\u0001\u02b6\u0003\u02b6\u1a7f\b\u02b6\u0001\u02b6"+ - "\u0001\u02b6\u0001\u02b6\u0001\u02b6\u0001\u02b6\u0001\u02b6\u0001\u02b6"+ - "\u0000\u0000\u02b7\u0005\u0001\u0007\u0002\t\u0003\u000b\u0004\r\u0005"+ + "\u0001\u0280\u0001\u0280\u0001\u0280\u0001\u0280\u0001\u0281\u0001\u0281"+ + "\u0005\u0281\u18c4\b\u0281\n\u0281\f\u0281\u18c7\t\u0281\u0001\u0282\u0001"+ + "\u0282\u0001\u0282\u0001\u0282\u0001\u0282\u0001\u0282\u0003\u0282\u18cf"+ + "\b\u0282\u0001\u0283\u0001\u0283\u0003\u0283\u18d3\b\u0283\u0001\u0284"+ + "\u0001\u0284\u0003\u0284\u18d7\b\u0284\u0001\u0285\u0001\u0285\u0001\u0285"+ + "\u0001\u0286\u0001\u0286\u0001\u0286\u0001\u0286\u0005\u0286\u18e0\b\u0286"+ + "\n\u0286\f\u0286\u18e3\t\u0286\u0001\u0287\u0001\u0287\u0001\u0287\u0001"+ + "\u0288\u0001\u0288\u0001\u0288\u0001\u0288\u0005\u0288\u18ec\b\u0288\n"+ + "\u0288\f\u0288\u18ef\t\u0288\u0001\u0289\u0001\u0289\u0001\u0289\u0001"+ + "\u0289\u0001\u028a\u0001\u028a\u0001\u028a\u0001\u028a\u0001\u028b\u0001"+ + "\u028b\u0001\u028b\u0001\u028b\u0001\u028c\u0001\u028c\u0001\u028c\u0001"+ + "\u028c\u0001\u028d\u0001\u028d\u0001\u028d\u0001\u028e\u0001\u028e\u0001"+ + "\u028e\u0001\u028e\u0005\u028e\u1908\b\u028e\n\u028e\f\u028e\u190b\t\u028e"+ + "\u0001\u028f\u0001\u028f\u0001\u028f\u0001\u028f\u0001\u028f\u0001\u028f"+ + "\u0001\u0290\u0001\u0290\u0001\u0290\u0001\u0291\u0001\u0291\u0001\u0291"+ + "\u0001\u0291\u0001\u0292\u0001\u0292\u0003\u0292\u191c\b\u0292\u0001\u0292"+ + "\u0001\u0292\u0001\u0292\u0001\u0292\u0001\u0292\u0001\u0293\u0001\u0293"+ + "\u0005\u0293\u1925\b\u0293\n\u0293\f\u0293\u1928\t\u0293\u0001\u0294\u0001"+ + "\u0294\u0001\u0294\u0001\u0295\u0001\u0295\u0001\u0295\u0005\u0295\u1930"+ + "\b\u0295\n\u0295\f\u0295\u1933\t\u0295\u0001\u0296\u0001\u0296\u0001\u0296"+ + "\u0001\u0297\u0001\u0297\u0001\u0297\u0001\u0298\u0001\u0298\u0001\u0298"+ + "\u0001\u0299\u0001\u0299\u0001\u0299\u0005\u0299\u1941\b\u0299\n\u0299"+ + "\f\u0299\u1944\t\u0299\u0001\u029a\u0001\u029a\u0001\u029a\u0001\u029b"+ + "\u0001\u029b\u0001\u029b\u0001\u029c\u0001\u029c\u0001\u029d\u0001\u029d"+ + "\u0001\u029d\u0001\u029d\u0001\u029d\u0001\u029d\u0001\u029e\u0001\u029e"+ + "\u0001\u029e\u0003\u029e\u1957\b\u029e\u0001\u029e\u0001\u029e\u0003\u029e"+ + "\u195b\b\u029e\u0001\u029e\u0003\u029e\u195e\b\u029e\u0001\u029e\u0001"+ + "\u029e\u0001\u029e\u0001\u029e\u0003\u029e\u1964\b\u029e\u0001\u029e\u0003"+ + "\u029e\u1967\b\u029e\u0001\u029e\u0001\u029e\u0001\u029e\u0003\u029e\u196c"+ + "\b\u029e\u0001\u029e\u0001\u029e\u0003\u029e\u1970\b\u029e\u0001\u029f"+ + "\u0004\u029f\u1973\b\u029f\u000b\u029f\f\u029f\u1974\u0001\u02a0\u0001"+ + "\u02a0\u0001\u02a0\u0005\u02a0\u197a\b\u02a0\n\u02a0\f\u02a0\u197d\t\u02a0"+ + "\u0001\u02a1\u0001\u02a1\u0001\u02a1\u0001\u02a1\u0001\u02a1\u0001\u02a1"+ + "\u0001\u02a1\u0001\u02a1\u0005\u02a1\u1987\b\u02a1\n\u02a1\f\u02a1\u198a"+ + "\t\u02a1\u0001\u02a1\u0001\u02a1\u0001\u02a2\u0004\u02a2\u198f\b\u02a2"+ + "\u000b\u02a2\f\u02a2\u1990\u0001\u02a2\u0001\u02a2\u0001\u02a3\u0001\u02a3"+ + "\u0003\u02a3\u1997\b\u02a3\u0001\u02a3\u0003\u02a3\u199a\b\u02a3\u0001"+ + "\u02a3\u0001\u02a3\u0001\u02a4\u0001\u02a4\u0001\u02a4\u0001\u02a4\u0005"+ + "\u02a4\u19a2\b\u02a4\n\u02a4\f\u02a4\u19a5\t\u02a4\u0001\u02a4\u0001\u02a4"+ + "\u0001\u02a5\u0001\u02a5\u0001\u02a5\u0001\u02a5\u0005\u02a5\u19ad\b\u02a5"+ + "\n\u02a5\f\u02a5\u19b0\t\u02a5\u0001\u02a5\u0001\u02a5\u0001\u02a5\u0004"+ + "\u02a5\u19b5\b\u02a5\u000b\u02a5\f\u02a5\u19b6\u0001\u02a5\u0001\u02a5"+ + "\u0004\u02a5\u19bb\b\u02a5\u000b\u02a5\f\u02a5\u19bc\u0001\u02a5\u0005"+ + "\u02a5\u19c0\b\u02a5\n\u02a5\f\u02a5\u19c3\t\u02a5\u0001\u02a5\u0005\u02a5"+ + "\u19c6\b\u02a5\n\u02a5\f\u02a5\u19c9\t\u02a5\u0001\u02a5\u0001\u02a5\u0001"+ + "\u02a5\u0001\u02a5\u0001\u02a5\u0001\u02a6\u0001\u02a6\u0001\u02a6\u0001"+ + "\u02a6\u0005\u02a6\u19d4\b\u02a6\n\u02a6\f\u02a6\u19d7\t\u02a6\u0001\u02a6"+ + "\u0001\u02a6\u0001\u02a6\u0004\u02a6\u19dc\b\u02a6\u000b\u02a6\f\u02a6"+ + "\u19dd\u0001\u02a6\u0001\u02a6\u0004\u02a6\u19e2\b\u02a6\u000b\u02a6\f"+ + "\u02a6\u19e3\u0001\u02a6\u0003\u02a6\u19e7\b\u02a6\u0005\u02a6\u19e9\b"+ + "\u02a6\n\u02a6\f\u02a6\u19ec\t\u02a6\u0001\u02a6\u0004\u02a6\u19ef\b\u02a6"+ + "\u000b\u02a6\f\u02a6\u19f0\u0001\u02a6\u0004\u02a6\u19f4\b\u02a6\u000b"+ + "\u02a6\f\u02a6\u19f5\u0001\u02a6\u0005\u02a6\u19f9\b\u02a6\n\u02a6\f\u02a6"+ + "\u19fc\t\u02a6\u0001\u02a6\u0003\u02a6\u19ff\b\u02a6\u0001\u02a6\u0001"+ + "\u02a6\u0001\u02a7\u0001\u02a7\u0001\u02a7\u0001\u02a7\u0005\u02a7\u1a07"+ + "\b\u02a7\n\u02a7\f\u02a7\u1a0a\t\u02a7\u0001\u02a7\u0005\u02a7\u1a0d\b"+ + "\u02a7\n\u02a7\f\u02a7\u1a10\t\u02a7\u0001\u02a7\u0001\u02a7\u0005\u02a7"+ + "\u1a14\b\u02a7\n\u02a7\f\u02a7\u1a17\t\u02a7\u0003\u02a7\u1a19\b\u02a7"+ + "\u0001\u02a8\u0001\u02a8\u0001\u02a8\u0001\u02a9\u0001\u02a9\u0001\u02aa"+ + "\u0001\u02aa\u0001\u02aa\u0001\u02aa\u0001\u02aa\u0001\u02ab\u0001\u02ab"+ + "\u0003\u02ab\u1a27\b\u02ab\u0001\u02ab\u0001\u02ab\u0001\u02ac\u0001\u02ac"+ + "\u0001\u02ac\u0001\u02ac\u0001\u02ac\u0001\u02ac\u0001\u02ac\u0001\u02ac"+ + "\u0001\u02ac\u0001\u02ac\u0001\u02ac\u0001\u02ac\u0001\u02ac\u0001\u02ac"+ + "\u0001\u02ac\u0001\u02ac\u0001\u02ac\u0001\u02ac\u0001\u02ac\u0001\u02ac"+ + "\u0003\u02ac\u1a3f\b\u02ac\u0001\u02ac\u0005\u02ac\u1a42\b\u02ac\n\u02ac"+ + "\f\u02ac\u1a45\t\u02ac\u0001\u02ad\u0001\u02ad\u0001\u02ad\u0001\u02ad"+ + "\u0001\u02ad\u0001\u02ae\u0001\u02ae\u0003\u02ae\u1a4e\b\u02ae\u0001\u02ae"+ + "\u0001\u02ae\u0001\u02af\u0001\u02af\u0001\u02af\u0001\u02af\u0001\u02af"+ + "\u0005\u02af\u1a57\b\u02af\n\u02af\f\u02af\u1a5a\t\u02af\u0001\u02b0\u0001"+ + "\u02b0\u0001\u02b0\u0001\u02b0\u0001\u02b0\u0001\u02b1\u0001\u02b1\u0001"+ + "\u02b1\u0001\u02b1\u0001\u02b1\u0001\u02b1\u0001\u02b2\u0001\u02b2\u0001"+ + "\u02b2\u0001\u02b2\u0001\u02b2\u0001\u02b3\u0001\u02b3\u0001\u02b3\u0001"+ + "\u02b3\u0001\u02b3\u0001\u02b4\u0001\u02b4\u0001\u02b4\u0001\u02b4\u0001"+ + "\u02b4\u0001\u02b5\u0001\u02b5\u0001\u02b5\u0001\u02b5\u0001\u02b5\u0001"+ + "\u02b6\u0001\u02b6\u0001\u02b6\u0001\u02b6\u0001\u02b6\u0001\u02b7\u0004"+ + "\u02b7\u1a81\b\u02b7\u000b\u02b7\f\u02b7\u1a82\u0001\u02b7\u0001\u02b7"+ + "\u0005\u02b7\u1a87\b\u02b7\n\u02b7\f\u02b7\u1a8a\t\u02b7\u0003\u02b7\u1a8c"+ + "\b\u02b7\u0001\u02b8\u0001\u02b8\u0003\u02b8\u1a90\b\u02b8\u0001\u02b8"+ + "\u0001\u02b8\u0001\u02b8\u0001\u02b8\u0001\u02b8\u0001\u02b8\u0001\u02b8"+ + "\u0000\u0000\u02b9\u0005\u0001\u0007\u0002\t\u0003\u000b\u0004\r\u0005"+ "\u000f\u0006\u0011\u0007\u0013\b\u0015\t\u0017\n\u0019\u000b\u001b\f\u001d"+ "\r\u001f\u000e!\u000f#\u0010%\u0011\'\u0012)\u0013+\u0014-\u0015/\u0016"+ "1\u00173\u00185\u00197\u001a9\u001b;\u001c=\u001d?\u0000A\u0000C\u0000"+ @@ -1872,3360 +1875,3369 @@ private boolean EndDollarStringConstant_sempred(RuleContext _localctx, int predI "\u04e1\u026b\u04e3\u026c\u04e5\u026d\u04e7\u026e\u04e9\u026f\u04eb\u0270"+ "\u04ed\u0271\u04ef\u0272\u04f1\u0273\u04f3\u0274\u04f5\u0275\u04f7\u0276"+ "\u04f9\u0277\u04fb\u0278\u04fd\u0279\u04ff\u027a\u0501\u027b\u0503\u027c"+ - "\u0505\u0000\u0507\u0000\u0509\u0000\u050b\u027d\u050d\u027e\u050f\u027f"+ + "\u0505\u027d\u0507\u027e\u0509\u0000\u050b\u0000\u050d\u0000\u050f\u027f"+ "\u0511\u0280\u0513\u0281\u0515\u0282\u0517\u0283\u0519\u0284\u051b\u0285"+ - "\u051d\u0286\u051f\u0000\u0521\u0287\u0523\u0288\u0525\u0289\u0527\u0000"+ - "\u0529\u028a\u052b\u028b\u052d\u028c\u052f\u028d\u0531\u028e\u0533\u028f"+ - "\u0535\u0290\u0537\u0291\u0539\u0292\u053b\u0293\u053d\u0294\u053f\u0000"+ - "\u0541\u0295\u0543\u0296\u0545\u0297\u0547\u0298\u0549\u0299\u054b\u029a"+ + "\u051d\u0286\u051f\u0287\u0521\u0288\u0523\u0000\u0525\u0289\u0527\u028a"+ + "\u0529\u028b\u052b\u0000\u052d\u028c\u052f\u028d\u0531\u028e\u0533\u028f"+ + "\u0535\u0290\u0537\u0291\u0539\u0292\u053b\u0293\u053d\u0294\u053f\u0295"+ + "\u0541\u0296\u0543\u0000\u0545\u0297\u0547\u0298\u0549\u0299\u054b\u029a"+ "\u054d\u029b\u054f\u029c\u0551\u029d\u0553\u029e\u0555\u029f\u0557\u02a0"+ - "\u0559\u0000\u055b\u02a1\u055d\u02a2\u055f\u0000\u0561\u0000\u0563\u0000"+ - "\u0565\u02a3\u0567\u0000\u0569\u0000\u056b\u02a7\u056d\u02a4\u056f\u02a5"+ - "\u0571\u02a6\u0005\u0000\u0001\u0002\u0003\u00043\u0001\u000009\u0002"+ - "\u0000++--\t\u0000!!##%&**<@^^``||~~\u0002\u0000*+<>\b\u0000!!##%&?@^"+ - "^``||~~\u0002\u0000AAaa\u0002\u0000LLll\u0002\u0000NNnn\u0002\u0000YY"+ - "yy\u0002\u0000SSss\u0002\u0000EEee\u0002\u0000ZZzz\u0002\u0000DDdd\u0002"+ - "\u0000RRrr\u0002\u0000CCcc\u0002\u0000MMmm\u0002\u0000TTtt\u0002\u0000"+ - "IIii\u0002\u0000BBbb\u0002\u0000OOoo\u0002\u0000HHhh\u0002\u0000KKkk\u0002"+ - "\u0000UUuu\u0002\u0000GGgg\u0002\u0000PPpp\u0002\u0000FFff\u0002\u0000"+ - "XXxx\u0002\u0000VVvv\u0002\u0000QQqq\u0002\u0000WWww\u0002\u0000JJjj\t"+ - "\u0000AZ__az\u00aa\u00aa\u00b5\u00b5\u00ba\u00ba\u00c0\u00d6\u00d8\u00f6"+ - "\u00f8\u00ff\u0002\u0000\u0100\u8000\ud7ff\u8000\ue000\u8000\uffff\u0001"+ - "\u0000\u8000\ud800\u8000\udbff\u0001\u0000\u8000\udc00\u8000\udfff\u0002"+ - "\u0000\u0000\u0000\"\"\u0001\u0000\"\"\u0001\u0000\'\'\u0001\u000001\u0003"+ - "\u000009AFaf\u0003\u0000AZ__az\u0005\u0000$$09AZ__az\u0002\u0000\"\"\\"+ - "\\\u0002\u0000\t\t \u0002\u0000\n\n\r\r\u0002\u0000**//\u0004\u0000\n"+ - "\n\r\r\"\"\\\\\u0003\u0000\n\n\r\r\"\"\u0003\u0000UUuuxx\u0002\u0000\'"+ - "\'\\\\\u0001\u0000$$\u1acf\u0000\u0005\u0001\u0000\u0000\u0000\u0000\u0007"+ - "\u0001\u0000\u0000\u0000\u0000\t\u0001\u0000\u0000\u0000\u0000\u000b\u0001"+ - "\u0000\u0000\u0000\u0000\r\u0001\u0000\u0000\u0000\u0000\u000f\u0001\u0000"+ - "\u0000\u0000\u0000\u0011\u0001\u0000\u0000\u0000\u0000\u0013\u0001\u0000"+ - "\u0000\u0000\u0000\u0015\u0001\u0000\u0000\u0000\u0000\u0017\u0001\u0000"+ - "\u0000\u0000\u0000\u0019\u0001\u0000\u0000\u0000\u0000\u001b\u0001\u0000"+ - "\u0000\u0000\u0000\u001d\u0001\u0000\u0000\u0000\u0000\u001f\u0001\u0000"+ - "\u0000\u0000\u0000!\u0001\u0000\u0000\u0000\u0000#\u0001\u0000\u0000\u0000"+ - "\u0000%\u0001\u0000\u0000\u0000\u0000\'\u0001\u0000\u0000\u0000\u0000"+ - ")\u0001\u0000\u0000\u0000\u0000+\u0001\u0000\u0000\u0000\u0000-\u0001"+ - "\u0000\u0000\u0000\u0000/\u0001\u0000\u0000\u0000\u00001\u0001\u0000\u0000"+ - "\u0000\u00003\u0001\u0000\u0000\u0000\u00005\u0001\u0000\u0000\u0000\u0000"+ - "7\u0001\u0000\u0000\u0000\u00009\u0001\u0000\u0000\u0000\u0000;\u0001"+ - "\u0000\u0000\u0000\u0000=\u0001\u0000\u0000\u0000\u0000?\u0001\u0000\u0000"+ - "\u0000\u0000G\u0001\u0000\u0000\u0000\u0000I\u0001\u0000\u0000\u0000\u0000"+ - "K\u0001\u0000\u0000\u0000\u0000M\u0001\u0000\u0000\u0000\u0000O\u0001"+ - "\u0000\u0000\u0000\u0000Q\u0001\u0000\u0000\u0000\u0000S\u0001\u0000\u0000"+ - "\u0000\u0000U\u0001\u0000\u0000\u0000\u0000W\u0001\u0000\u0000\u0000\u0000"+ - "Y\u0001\u0000\u0000\u0000\u0000[\u0001\u0000\u0000\u0000\u0000]\u0001"+ - "\u0000\u0000\u0000\u0000_\u0001\u0000\u0000\u0000\u0000a\u0001\u0000\u0000"+ - "\u0000\u0000c\u0001\u0000\u0000\u0000\u0000e\u0001\u0000\u0000\u0000\u0000"+ - "g\u0001\u0000\u0000\u0000\u0000i\u0001\u0000\u0000\u0000\u0000k\u0001"+ - "\u0000\u0000\u0000\u0000m\u0001\u0000\u0000\u0000\u0000o\u0001\u0000\u0000"+ - "\u0000\u0000q\u0001\u0000\u0000\u0000\u0000s\u0001\u0000\u0000\u0000\u0000"+ - "u\u0001\u0000\u0000\u0000\u0000w\u0001\u0000\u0000\u0000\u0000y\u0001"+ - "\u0000\u0000\u0000\u0000{\u0001\u0000\u0000\u0000\u0000}\u0001\u0000\u0000"+ - "\u0000\u0000\u007f\u0001\u0000\u0000\u0000\u0000\u0081\u0001\u0000\u0000"+ - "\u0000\u0000\u0083\u0001\u0000\u0000\u0000\u0000\u0085\u0001\u0000\u0000"+ - "\u0000\u0000\u0087\u0001\u0000\u0000\u0000\u0000\u0089\u0001\u0000\u0000"+ - "\u0000\u0000\u008b\u0001\u0000\u0000\u0000\u0000\u008d\u0001\u0000\u0000"+ - "\u0000\u0000\u008f\u0001\u0000\u0000\u0000\u0000\u0091\u0001\u0000\u0000"+ - "\u0000\u0000\u0093\u0001\u0000\u0000\u0000\u0000\u0095\u0001\u0000\u0000"+ - "\u0000\u0000\u0097\u0001\u0000\u0000\u0000\u0000\u0099\u0001\u0000\u0000"+ - "\u0000\u0000\u009b\u0001\u0000\u0000\u0000\u0000\u009d\u0001\u0000\u0000"+ - "\u0000\u0000\u009f\u0001\u0000\u0000\u0000\u0000\u00a1\u0001\u0000\u0000"+ - "\u0000\u0000\u00a3\u0001\u0000\u0000\u0000\u0000\u00a5\u0001\u0000\u0000"+ - "\u0000\u0000\u00a7\u0001\u0000\u0000\u0000\u0000\u00a9\u0001\u0000\u0000"+ - "\u0000\u0000\u00ab\u0001\u0000\u0000\u0000\u0000\u00ad\u0001\u0000\u0000"+ - "\u0000\u0000\u00af\u0001\u0000\u0000\u0000\u0000\u00b1\u0001\u0000\u0000"+ - "\u0000\u0000\u00b3\u0001\u0000\u0000\u0000\u0000\u00b5\u0001\u0000\u0000"+ - "\u0000\u0000\u00b7\u0001\u0000\u0000\u0000\u0000\u00b9\u0001\u0000\u0000"+ - "\u0000\u0000\u00bb\u0001\u0000\u0000\u0000\u0000\u00bd\u0001\u0000\u0000"+ - "\u0000\u0000\u00bf\u0001\u0000\u0000\u0000\u0000\u00c1\u0001\u0000\u0000"+ - "\u0000\u0000\u00c3\u0001\u0000\u0000\u0000\u0000\u00c5\u0001\u0000\u0000"+ - "\u0000\u0000\u00c7\u0001\u0000\u0000\u0000\u0000\u00c9\u0001\u0000\u0000"+ - "\u0000\u0000\u00cb\u0001\u0000\u0000\u0000\u0000\u00cd\u0001\u0000\u0000"+ - "\u0000\u0000\u00cf\u0001\u0000\u0000\u0000\u0000\u00d1\u0001\u0000\u0000"+ - "\u0000\u0000\u00d3\u0001\u0000\u0000\u0000\u0000\u00d5\u0001\u0000\u0000"+ - "\u0000\u0000\u00d7\u0001\u0000\u0000\u0000\u0000\u00d9\u0001\u0000\u0000"+ - "\u0000\u0000\u00db\u0001\u0000\u0000\u0000\u0000\u00dd\u0001\u0000\u0000"+ - "\u0000\u0000\u00df\u0001\u0000\u0000\u0000\u0000\u00e1\u0001\u0000\u0000"+ - "\u0000\u0000\u00e3\u0001\u0000\u0000\u0000\u0000\u00e5\u0001\u0000\u0000"+ - "\u0000\u0000\u00e7\u0001\u0000\u0000\u0000\u0000\u00e9\u0001\u0000\u0000"+ - "\u0000\u0000\u00eb\u0001\u0000\u0000\u0000\u0000\u00ed\u0001\u0000\u0000"+ - "\u0000\u0000\u00ef\u0001\u0000\u0000\u0000\u0000\u00f1\u0001\u0000\u0000"+ - "\u0000\u0000\u00f3\u0001\u0000\u0000\u0000\u0000\u00f5\u0001\u0000\u0000"+ - "\u0000\u0000\u00f7\u0001\u0000\u0000\u0000\u0000\u00f9\u0001\u0000\u0000"+ - "\u0000\u0000\u00fb\u0001\u0000\u0000\u0000\u0000\u00fd\u0001\u0000\u0000"+ - "\u0000\u0000\u00ff\u0001\u0000\u0000\u0000\u0000\u0101\u0001\u0000\u0000"+ - "\u0000\u0000\u0103\u0001\u0000\u0000\u0000\u0000\u0105\u0001\u0000\u0000"+ - "\u0000\u0000\u0107\u0001\u0000\u0000\u0000\u0000\u0109\u0001\u0000\u0000"+ - "\u0000\u0000\u010b\u0001\u0000\u0000\u0000\u0000\u010d\u0001\u0000\u0000"+ - "\u0000\u0000\u010f\u0001\u0000\u0000\u0000\u0000\u0111\u0001\u0000\u0000"+ - "\u0000\u0000\u0113\u0001\u0000\u0000\u0000\u0000\u0115\u0001\u0000\u0000"+ - "\u0000\u0000\u0117\u0001\u0000\u0000\u0000\u0000\u0119\u0001\u0000\u0000"+ - "\u0000\u0000\u011b\u0001\u0000\u0000\u0000\u0000\u011d\u0001\u0000\u0000"+ - "\u0000\u0000\u011f\u0001\u0000\u0000\u0000\u0000\u0121\u0001\u0000\u0000"+ - "\u0000\u0000\u0123\u0001\u0000\u0000\u0000\u0000\u0125\u0001\u0000\u0000"+ - "\u0000\u0000\u0127\u0001\u0000\u0000\u0000\u0000\u0129\u0001\u0000\u0000"+ - "\u0000\u0000\u012b\u0001\u0000\u0000\u0000\u0000\u012d\u0001\u0000\u0000"+ - "\u0000\u0000\u012f\u0001\u0000\u0000\u0000\u0000\u0131\u0001\u0000\u0000"+ - "\u0000\u0000\u0133\u0001\u0000\u0000\u0000\u0000\u0135\u0001\u0000\u0000"+ - "\u0000\u0000\u0137\u0001\u0000\u0000\u0000\u0000\u0139\u0001\u0000\u0000"+ - "\u0000\u0000\u013b\u0001\u0000\u0000\u0000\u0000\u013d\u0001\u0000\u0000"+ - "\u0000\u0000\u013f\u0001\u0000\u0000\u0000\u0000\u0141\u0001\u0000\u0000"+ - "\u0000\u0000\u0143\u0001\u0000\u0000\u0000\u0000\u0145\u0001\u0000\u0000"+ - "\u0000\u0000\u0147\u0001\u0000\u0000\u0000\u0000\u0149\u0001\u0000\u0000"+ - "\u0000\u0000\u014b\u0001\u0000\u0000\u0000\u0000\u014d\u0001\u0000\u0000"+ - "\u0000\u0000\u014f\u0001\u0000\u0000\u0000\u0000\u0151\u0001\u0000\u0000"+ - "\u0000\u0000\u0153\u0001\u0000\u0000\u0000\u0000\u0155\u0001\u0000\u0000"+ - "\u0000\u0000\u0157\u0001\u0000\u0000\u0000\u0000\u0159\u0001\u0000\u0000"+ - "\u0000\u0000\u015b\u0001\u0000\u0000\u0000\u0000\u015d\u0001\u0000\u0000"+ - "\u0000\u0000\u015f\u0001\u0000\u0000\u0000\u0000\u0161\u0001\u0000\u0000"+ - "\u0000\u0000\u0163\u0001\u0000\u0000\u0000\u0000\u0165\u0001\u0000\u0000"+ - "\u0000\u0000\u0167\u0001\u0000\u0000\u0000\u0000\u0169\u0001\u0000\u0000"+ - "\u0000\u0000\u016b\u0001\u0000\u0000\u0000\u0000\u016d\u0001\u0000\u0000"+ - "\u0000\u0000\u016f\u0001\u0000\u0000\u0000\u0000\u0171\u0001\u0000\u0000"+ - "\u0000\u0000\u0173\u0001\u0000\u0000\u0000\u0000\u0175\u0001\u0000\u0000"+ - "\u0000\u0000\u0177\u0001\u0000\u0000\u0000\u0000\u0179\u0001\u0000\u0000"+ - "\u0000\u0000\u017b\u0001\u0000\u0000\u0000\u0000\u017d\u0001\u0000\u0000"+ - "\u0000\u0000\u017f\u0001\u0000\u0000\u0000\u0000\u0181\u0001\u0000\u0000"+ - "\u0000\u0000\u0183\u0001\u0000\u0000\u0000\u0000\u0185\u0001\u0000\u0000"+ - "\u0000\u0000\u0187\u0001\u0000\u0000\u0000\u0000\u0189\u0001\u0000\u0000"+ - "\u0000\u0000\u018b\u0001\u0000\u0000\u0000\u0000\u018d\u0001\u0000\u0000"+ - "\u0000\u0000\u018f\u0001\u0000\u0000\u0000\u0000\u0191\u0001\u0000\u0000"+ - "\u0000\u0000\u0193\u0001\u0000\u0000\u0000\u0000\u0195\u0001\u0000\u0000"+ - "\u0000\u0000\u0197\u0001\u0000\u0000\u0000\u0000\u0199\u0001\u0000\u0000"+ - "\u0000\u0000\u019b\u0001\u0000\u0000\u0000\u0000\u019d\u0001\u0000\u0000"+ - "\u0000\u0000\u019f\u0001\u0000\u0000\u0000\u0000\u01a1\u0001\u0000\u0000"+ - "\u0000\u0000\u01a3\u0001\u0000\u0000\u0000\u0000\u01a5\u0001\u0000\u0000"+ - "\u0000\u0000\u01a7\u0001\u0000\u0000\u0000\u0000\u01a9\u0001\u0000\u0000"+ - "\u0000\u0000\u01ab\u0001\u0000\u0000\u0000\u0000\u01ad\u0001\u0000\u0000"+ - "\u0000\u0000\u01af\u0001\u0000\u0000\u0000\u0000\u01b1\u0001\u0000\u0000"+ - "\u0000\u0000\u01b3\u0001\u0000\u0000\u0000\u0000\u01b5\u0001\u0000\u0000"+ - "\u0000\u0000\u01b7\u0001\u0000\u0000\u0000\u0000\u01b9\u0001\u0000\u0000"+ - "\u0000\u0000\u01bb\u0001\u0000\u0000\u0000\u0000\u01bd\u0001\u0000\u0000"+ - "\u0000\u0000\u01bf\u0001\u0000\u0000\u0000\u0000\u01c1\u0001\u0000\u0000"+ - "\u0000\u0000\u01c3\u0001\u0000\u0000\u0000\u0000\u01c5\u0001\u0000\u0000"+ - "\u0000\u0000\u01c7\u0001\u0000\u0000\u0000\u0000\u01c9\u0001\u0000\u0000"+ - "\u0000\u0000\u01cb\u0001\u0000\u0000\u0000\u0000\u01cd\u0001\u0000\u0000"+ - "\u0000\u0000\u01cf\u0001\u0000\u0000\u0000\u0000\u01d1\u0001\u0000\u0000"+ - "\u0000\u0000\u01d3\u0001\u0000\u0000\u0000\u0000\u01d5\u0001\u0000\u0000"+ - "\u0000\u0000\u01d7\u0001\u0000\u0000\u0000\u0000\u01d9\u0001\u0000\u0000"+ - "\u0000\u0000\u01db\u0001\u0000\u0000\u0000\u0000\u01dd\u0001\u0000\u0000"+ - "\u0000\u0000\u01df\u0001\u0000\u0000\u0000\u0000\u01e1\u0001\u0000\u0000"+ - "\u0000\u0000\u01e3\u0001\u0000\u0000\u0000\u0000\u01e5\u0001\u0000\u0000"+ - "\u0000\u0000\u01e7\u0001\u0000\u0000\u0000\u0000\u01e9\u0001\u0000\u0000"+ - "\u0000\u0000\u01eb\u0001\u0000\u0000\u0000\u0000\u01ed\u0001\u0000\u0000"+ - "\u0000\u0000\u01ef\u0001\u0000\u0000\u0000\u0000\u01f1\u0001\u0000\u0000"+ - "\u0000\u0000\u01f3\u0001\u0000\u0000\u0000\u0000\u01f5\u0001\u0000\u0000"+ - "\u0000\u0000\u01f7\u0001\u0000\u0000\u0000\u0000\u01f9\u0001\u0000\u0000"+ - "\u0000\u0000\u01fb\u0001\u0000\u0000\u0000\u0000\u01fd\u0001\u0000\u0000"+ - "\u0000\u0000\u01ff\u0001\u0000\u0000\u0000\u0000\u0201\u0001\u0000\u0000"+ - "\u0000\u0000\u0203\u0001\u0000\u0000\u0000\u0000\u0205\u0001\u0000\u0000"+ - "\u0000\u0000\u0207\u0001\u0000\u0000\u0000\u0000\u0209\u0001\u0000\u0000"+ - "\u0000\u0000\u020b\u0001\u0000\u0000\u0000\u0000\u020d\u0001\u0000\u0000"+ - "\u0000\u0000\u020f\u0001\u0000\u0000\u0000\u0000\u0211\u0001\u0000\u0000"+ - "\u0000\u0000\u0213\u0001\u0000\u0000\u0000\u0000\u0215\u0001\u0000\u0000"+ - "\u0000\u0000\u0217\u0001\u0000\u0000\u0000\u0000\u0219\u0001\u0000\u0000"+ - "\u0000\u0000\u021b\u0001\u0000\u0000\u0000\u0000\u021d\u0001\u0000\u0000"+ - "\u0000\u0000\u021f\u0001\u0000\u0000\u0000\u0000\u0221\u0001\u0000\u0000"+ - "\u0000\u0000\u0223\u0001\u0000\u0000\u0000\u0000\u0225\u0001\u0000\u0000"+ - "\u0000\u0000\u0227\u0001\u0000\u0000\u0000\u0000\u0229\u0001\u0000\u0000"+ - "\u0000\u0000\u022b\u0001\u0000\u0000\u0000\u0000\u022d\u0001\u0000\u0000"+ - "\u0000\u0000\u022f\u0001\u0000\u0000\u0000\u0000\u0231\u0001\u0000\u0000"+ - "\u0000\u0000\u0233\u0001\u0000\u0000\u0000\u0000\u0235\u0001\u0000\u0000"+ - "\u0000\u0000\u0237\u0001\u0000\u0000\u0000\u0000\u0239\u0001\u0000\u0000"+ - "\u0000\u0000\u023b\u0001\u0000\u0000\u0000\u0000\u023d\u0001\u0000\u0000"+ - "\u0000\u0000\u023f\u0001\u0000\u0000\u0000\u0000\u0241\u0001\u0000\u0000"+ - "\u0000\u0000\u0243\u0001\u0000\u0000\u0000\u0000\u0245\u0001\u0000\u0000"+ - "\u0000\u0000\u0247\u0001\u0000\u0000\u0000\u0000\u0249\u0001\u0000\u0000"+ - "\u0000\u0000\u024b\u0001\u0000\u0000\u0000\u0000\u024d\u0001\u0000\u0000"+ - "\u0000\u0000\u024f\u0001\u0000\u0000\u0000\u0000\u0251\u0001\u0000\u0000"+ - "\u0000\u0000\u0253\u0001\u0000\u0000\u0000\u0000\u0255\u0001\u0000\u0000"+ - "\u0000\u0000\u0257\u0001\u0000\u0000\u0000\u0000\u0259\u0001\u0000\u0000"+ - "\u0000\u0000\u025b\u0001\u0000\u0000\u0000\u0000\u025d\u0001\u0000\u0000"+ - "\u0000\u0000\u025f\u0001\u0000\u0000\u0000\u0000\u0261\u0001\u0000\u0000"+ - "\u0000\u0000\u0263\u0001\u0000\u0000\u0000\u0000\u0265\u0001\u0000\u0000"+ - "\u0000\u0000\u0267\u0001\u0000\u0000\u0000\u0000\u0269\u0001\u0000\u0000"+ - "\u0000\u0000\u026b\u0001\u0000\u0000\u0000\u0000\u026d\u0001\u0000\u0000"+ - "\u0000\u0000\u026f\u0001\u0000\u0000\u0000\u0000\u0271\u0001\u0000\u0000"+ - "\u0000\u0000\u0273\u0001\u0000\u0000\u0000\u0000\u0275\u0001\u0000\u0000"+ - "\u0000\u0000\u0277\u0001\u0000\u0000\u0000\u0000\u0279\u0001\u0000\u0000"+ - "\u0000\u0000\u027b\u0001\u0000\u0000\u0000\u0000\u027d\u0001\u0000\u0000"+ - "\u0000\u0000\u027f\u0001\u0000\u0000\u0000\u0000\u0281\u0001\u0000\u0000"+ - "\u0000\u0000\u0283\u0001\u0000\u0000\u0000\u0000\u0285\u0001\u0000\u0000"+ - "\u0000\u0000\u0287\u0001\u0000\u0000\u0000\u0000\u0289\u0001\u0000\u0000"+ - "\u0000\u0000\u028b\u0001\u0000\u0000\u0000\u0000\u028d\u0001\u0000\u0000"+ - "\u0000\u0000\u028f\u0001\u0000\u0000\u0000\u0000\u0291\u0001\u0000\u0000"+ - "\u0000\u0000\u0293\u0001\u0000\u0000\u0000\u0000\u0295\u0001\u0000\u0000"+ - "\u0000\u0000\u0297\u0001\u0000\u0000\u0000\u0000\u0299\u0001\u0000\u0000"+ - "\u0000\u0000\u029b\u0001\u0000\u0000\u0000\u0000\u029d\u0001\u0000\u0000"+ - "\u0000\u0000\u029f\u0001\u0000\u0000\u0000\u0000\u02a1\u0001\u0000\u0000"+ - "\u0000\u0000\u02a3\u0001\u0000\u0000\u0000\u0000\u02a5\u0001\u0000\u0000"+ - "\u0000\u0000\u02a7\u0001\u0000\u0000\u0000\u0000\u02a9\u0001\u0000\u0000"+ - "\u0000\u0000\u02ab\u0001\u0000\u0000\u0000\u0000\u02ad\u0001\u0000\u0000"+ - "\u0000\u0000\u02af\u0001\u0000\u0000\u0000\u0000\u02b1\u0001\u0000\u0000"+ - "\u0000\u0000\u02b3\u0001\u0000\u0000\u0000\u0000\u02b5\u0001\u0000\u0000"+ - "\u0000\u0000\u02b7\u0001\u0000\u0000\u0000\u0000\u02b9\u0001\u0000\u0000"+ - "\u0000\u0000\u02bb\u0001\u0000\u0000\u0000\u0000\u02bd\u0001\u0000\u0000"+ - "\u0000\u0000\u02bf\u0001\u0000\u0000\u0000\u0000\u02c1\u0001\u0000\u0000"+ - "\u0000\u0000\u02c3\u0001\u0000\u0000\u0000\u0000\u02c5\u0001\u0000\u0000"+ - "\u0000\u0000\u02c7\u0001\u0000\u0000\u0000\u0000\u02c9\u0001\u0000\u0000"+ - "\u0000\u0000\u02cb\u0001\u0000\u0000\u0000\u0000\u02cd\u0001\u0000\u0000"+ - "\u0000\u0000\u02cf\u0001\u0000\u0000\u0000\u0000\u02d1\u0001\u0000\u0000"+ - "\u0000\u0000\u02d3\u0001\u0000\u0000\u0000\u0000\u02d5\u0001\u0000\u0000"+ - "\u0000\u0000\u02d7\u0001\u0000\u0000\u0000\u0000\u02d9\u0001\u0000\u0000"+ - "\u0000\u0000\u02db\u0001\u0000\u0000\u0000\u0000\u02dd\u0001\u0000\u0000"+ - "\u0000\u0000\u02df\u0001\u0000\u0000\u0000\u0000\u02e1\u0001\u0000\u0000"+ - "\u0000\u0000\u02e3\u0001\u0000\u0000\u0000\u0000\u02e5\u0001\u0000\u0000"+ - "\u0000\u0000\u02e7\u0001\u0000\u0000\u0000\u0000\u02e9\u0001\u0000\u0000"+ - "\u0000\u0000\u02eb\u0001\u0000\u0000\u0000\u0000\u02ed\u0001\u0000\u0000"+ - "\u0000\u0000\u02ef\u0001\u0000\u0000\u0000\u0000\u02f1\u0001\u0000\u0000"+ - "\u0000\u0000\u02f3\u0001\u0000\u0000\u0000\u0000\u02f5\u0001\u0000\u0000"+ - "\u0000\u0000\u02f7\u0001\u0000\u0000\u0000\u0000\u02f9\u0001\u0000\u0000"+ - "\u0000\u0000\u02fb\u0001\u0000\u0000\u0000\u0000\u02fd\u0001\u0000\u0000"+ - "\u0000\u0000\u02ff\u0001\u0000\u0000\u0000\u0000\u0301\u0001\u0000\u0000"+ - "\u0000\u0000\u0303\u0001\u0000\u0000\u0000\u0000\u0305\u0001\u0000\u0000"+ - "\u0000\u0000\u0307\u0001\u0000\u0000\u0000\u0000\u0309\u0001\u0000\u0000"+ - "\u0000\u0000\u030b\u0001\u0000\u0000\u0000\u0000\u030d\u0001\u0000\u0000"+ - "\u0000\u0000\u030f\u0001\u0000\u0000\u0000\u0000\u0311\u0001\u0000\u0000"+ - "\u0000\u0000\u0313\u0001\u0000\u0000\u0000\u0000\u0315\u0001\u0000\u0000"+ - "\u0000\u0000\u0317\u0001\u0000\u0000\u0000\u0000\u0319\u0001\u0000\u0000"+ - "\u0000\u0000\u031b\u0001\u0000\u0000\u0000\u0000\u031d\u0001\u0000\u0000"+ - "\u0000\u0000\u031f\u0001\u0000\u0000\u0000\u0000\u0321\u0001\u0000\u0000"+ - "\u0000\u0000\u0323\u0001\u0000\u0000\u0000\u0000\u0325\u0001\u0000\u0000"+ - "\u0000\u0000\u0327\u0001\u0000\u0000\u0000\u0000\u0329\u0001\u0000\u0000"+ - "\u0000\u0000\u032b\u0001\u0000\u0000\u0000\u0000\u032d\u0001\u0000\u0000"+ - "\u0000\u0000\u032f\u0001\u0000\u0000\u0000\u0000\u0331\u0001\u0000\u0000"+ - "\u0000\u0000\u0333\u0001\u0000\u0000\u0000\u0000\u0335\u0001\u0000\u0000"+ - "\u0000\u0000\u0337\u0001\u0000\u0000\u0000\u0000\u0339\u0001\u0000\u0000"+ - "\u0000\u0000\u033b\u0001\u0000\u0000\u0000\u0000\u033d\u0001\u0000\u0000"+ - "\u0000\u0000\u033f\u0001\u0000\u0000\u0000\u0000\u0341\u0001\u0000\u0000"+ - "\u0000\u0000\u0343\u0001\u0000\u0000\u0000\u0000\u0345\u0001\u0000\u0000"+ - "\u0000\u0000\u0347\u0001\u0000\u0000\u0000\u0000\u0349\u0001\u0000\u0000"+ - "\u0000\u0000\u034b\u0001\u0000\u0000\u0000\u0000\u034d\u0001\u0000\u0000"+ - "\u0000\u0000\u034f\u0001\u0000\u0000\u0000\u0000\u0351\u0001\u0000\u0000"+ - "\u0000\u0000\u0353\u0001\u0000\u0000\u0000\u0000\u0355\u0001\u0000\u0000"+ - "\u0000\u0000\u0357\u0001\u0000\u0000\u0000\u0000\u0359\u0001\u0000\u0000"+ - "\u0000\u0000\u035b\u0001\u0000\u0000\u0000\u0000\u035d\u0001\u0000\u0000"+ - "\u0000\u0000\u035f\u0001\u0000\u0000\u0000\u0000\u0361\u0001\u0000\u0000"+ - "\u0000\u0000\u0363\u0001\u0000\u0000\u0000\u0000\u0365\u0001\u0000\u0000"+ - "\u0000\u0000\u0367\u0001\u0000\u0000\u0000\u0000\u0369\u0001\u0000\u0000"+ - "\u0000\u0000\u036b\u0001\u0000\u0000\u0000\u0000\u036d\u0001\u0000\u0000"+ - "\u0000\u0000\u036f\u0001\u0000\u0000\u0000\u0000\u0371\u0001\u0000\u0000"+ - "\u0000\u0000\u0373\u0001\u0000\u0000\u0000\u0000\u0375\u0001\u0000\u0000"+ - "\u0000\u0000\u0377\u0001\u0000\u0000\u0000\u0000\u0379\u0001\u0000\u0000"+ - "\u0000\u0000\u037b\u0001\u0000\u0000\u0000\u0000\u037d\u0001\u0000\u0000"+ - "\u0000\u0000\u037f\u0001\u0000\u0000\u0000\u0000\u0381\u0001\u0000\u0000"+ - "\u0000\u0000\u0383\u0001\u0000\u0000\u0000\u0000\u0385\u0001\u0000\u0000"+ - "\u0000\u0000\u0387\u0001\u0000\u0000\u0000\u0000\u0389\u0001\u0000\u0000"+ - "\u0000\u0000\u038b\u0001\u0000\u0000\u0000\u0000\u038d\u0001\u0000\u0000"+ - "\u0000\u0000\u038f\u0001\u0000\u0000\u0000\u0000\u0391\u0001\u0000\u0000"+ - "\u0000\u0000\u0393\u0001\u0000\u0000\u0000\u0000\u0395\u0001\u0000\u0000"+ - "\u0000\u0000\u0397\u0001\u0000\u0000\u0000\u0000\u0399\u0001\u0000\u0000"+ - "\u0000\u0000\u039b\u0001\u0000\u0000\u0000\u0000\u039d\u0001\u0000\u0000"+ - "\u0000\u0000\u039f\u0001\u0000\u0000\u0000\u0000\u03a1\u0001\u0000\u0000"+ - "\u0000\u0000\u03a3\u0001\u0000\u0000\u0000\u0000\u03a5\u0001\u0000\u0000"+ - "\u0000\u0000\u03a7\u0001\u0000\u0000\u0000\u0000\u03a9\u0001\u0000\u0000"+ - "\u0000\u0000\u03ab\u0001\u0000\u0000\u0000\u0000\u03ad\u0001\u0000\u0000"+ - "\u0000\u0000\u03af\u0001\u0000\u0000\u0000\u0000\u03b1\u0001\u0000\u0000"+ - "\u0000\u0000\u03b3\u0001\u0000\u0000\u0000\u0000\u03b5\u0001\u0000\u0000"+ - "\u0000\u0000\u03b7\u0001\u0000\u0000\u0000\u0000\u03b9\u0001\u0000\u0000"+ - "\u0000\u0000\u03bb\u0001\u0000\u0000\u0000\u0000\u03bd\u0001\u0000\u0000"+ - "\u0000\u0000\u03bf\u0001\u0000\u0000\u0000\u0000\u03c1\u0001\u0000\u0000"+ - "\u0000\u0000\u03c3\u0001\u0000\u0000\u0000\u0000\u03c5\u0001\u0000\u0000"+ - "\u0000\u0000\u03c7\u0001\u0000\u0000\u0000\u0000\u03c9\u0001\u0000\u0000"+ - "\u0000\u0000\u03cb\u0001\u0000\u0000\u0000\u0000\u03cd\u0001\u0000\u0000"+ - "\u0000\u0000\u03cf\u0001\u0000\u0000\u0000\u0000\u03d1\u0001\u0000\u0000"+ - "\u0000\u0000\u03d3\u0001\u0000\u0000\u0000\u0000\u03d5\u0001\u0000\u0000"+ - "\u0000\u0000\u03d7\u0001\u0000\u0000\u0000\u0000\u03d9\u0001\u0000\u0000"+ - "\u0000\u0000\u03db\u0001\u0000\u0000\u0000\u0000\u03dd\u0001\u0000\u0000"+ - "\u0000\u0000\u03df\u0001\u0000\u0000\u0000\u0000\u03e1\u0001\u0000\u0000"+ - "\u0000\u0000\u03e3\u0001\u0000\u0000\u0000\u0000\u03e5\u0001\u0000\u0000"+ - "\u0000\u0000\u03e7\u0001\u0000\u0000\u0000\u0000\u03e9\u0001\u0000\u0000"+ - "\u0000\u0000\u03eb\u0001\u0000\u0000\u0000\u0000\u03ed\u0001\u0000\u0000"+ - "\u0000\u0000\u03ef\u0001\u0000\u0000\u0000\u0000\u03f1\u0001\u0000\u0000"+ - "\u0000\u0000\u03f3\u0001\u0000\u0000\u0000\u0000\u03f5\u0001\u0000\u0000"+ - "\u0000\u0000\u03f7\u0001\u0000\u0000\u0000\u0000\u03f9\u0001\u0000\u0000"+ - "\u0000\u0000\u03fb\u0001\u0000\u0000\u0000\u0000\u03fd\u0001\u0000\u0000"+ - "\u0000\u0000\u03ff\u0001\u0000\u0000\u0000\u0000\u0401\u0001\u0000\u0000"+ - "\u0000\u0000\u0403\u0001\u0000\u0000\u0000\u0000\u0405\u0001\u0000\u0000"+ - "\u0000\u0000\u0407\u0001\u0000\u0000\u0000\u0000\u0409\u0001\u0000\u0000"+ - "\u0000\u0000\u040b\u0001\u0000\u0000\u0000\u0000\u040d\u0001\u0000\u0000"+ - "\u0000\u0000\u040f\u0001\u0000\u0000\u0000\u0000\u0411\u0001\u0000\u0000"+ - "\u0000\u0000\u0413\u0001\u0000\u0000\u0000\u0000\u0415\u0001\u0000\u0000"+ - "\u0000\u0000\u0417\u0001\u0000\u0000\u0000\u0000\u0419\u0001\u0000\u0000"+ - "\u0000\u0000\u041b\u0001\u0000\u0000\u0000\u0000\u041d\u0001\u0000\u0000"+ - "\u0000\u0000\u041f\u0001\u0000\u0000\u0000\u0000\u0421\u0001\u0000\u0000"+ - "\u0000\u0000\u0423\u0001\u0000\u0000\u0000\u0000\u0425\u0001\u0000\u0000"+ - "\u0000\u0000\u0427\u0001\u0000\u0000\u0000\u0000\u0429\u0001\u0000\u0000"+ - "\u0000\u0000\u042b\u0001\u0000\u0000\u0000\u0000\u042d\u0001\u0000\u0000"+ - "\u0000\u0000\u042f\u0001\u0000\u0000\u0000\u0000\u0431\u0001\u0000\u0000"+ - "\u0000\u0000\u0433\u0001\u0000\u0000\u0000\u0000\u0435\u0001\u0000\u0000"+ - "\u0000\u0000\u0437\u0001\u0000\u0000\u0000\u0000\u0439\u0001\u0000\u0000"+ - "\u0000\u0000\u043b\u0001\u0000\u0000\u0000\u0000\u043d\u0001\u0000\u0000"+ - "\u0000\u0000\u043f\u0001\u0000\u0000\u0000\u0000\u0441\u0001\u0000\u0000"+ - "\u0000\u0000\u0443\u0001\u0000\u0000\u0000\u0000\u0445\u0001\u0000\u0000"+ - "\u0000\u0000\u0447\u0001\u0000\u0000\u0000\u0000\u0449\u0001\u0000\u0000"+ - "\u0000\u0000\u044b\u0001\u0000\u0000\u0000\u0000\u044d\u0001\u0000\u0000"+ - "\u0000\u0000\u044f\u0001\u0000\u0000\u0000\u0000\u0451\u0001\u0000\u0000"+ - "\u0000\u0000\u0453\u0001\u0000\u0000\u0000\u0000\u0455\u0001\u0000\u0000"+ - "\u0000\u0000\u0457\u0001\u0000\u0000\u0000\u0000\u0459\u0001\u0000\u0000"+ - "\u0000\u0000\u045b\u0001\u0000\u0000\u0000\u0000\u045d\u0001\u0000\u0000"+ - "\u0000\u0000\u045f\u0001\u0000\u0000\u0000\u0000\u0461\u0001\u0000\u0000"+ - "\u0000\u0000\u0463\u0001\u0000\u0000\u0000\u0000\u0465\u0001\u0000\u0000"+ - "\u0000\u0000\u0467\u0001\u0000\u0000\u0000\u0000\u0469\u0001\u0000\u0000"+ - "\u0000\u0000\u046b\u0001\u0000\u0000\u0000\u0000\u046d\u0001\u0000\u0000"+ - "\u0000\u0000\u046f\u0001\u0000\u0000\u0000\u0000\u0471\u0001\u0000\u0000"+ - "\u0000\u0000\u0473\u0001\u0000\u0000\u0000\u0000\u0475\u0001\u0000\u0000"+ - "\u0000\u0000\u0477\u0001\u0000\u0000\u0000\u0000\u0479\u0001\u0000\u0000"+ - "\u0000\u0000\u047b\u0001\u0000\u0000\u0000\u0000\u047d\u0001\u0000\u0000"+ - "\u0000\u0000\u047f\u0001\u0000\u0000\u0000\u0000\u0481\u0001\u0000\u0000"+ - "\u0000\u0000\u0483\u0001\u0000\u0000\u0000\u0000\u0485\u0001\u0000\u0000"+ - "\u0000\u0000\u0487\u0001\u0000\u0000\u0000\u0000\u0489\u0001\u0000\u0000"+ - "\u0000\u0000\u048b\u0001\u0000\u0000\u0000\u0000\u048d\u0001\u0000\u0000"+ - "\u0000\u0000\u048f\u0001\u0000\u0000\u0000\u0000\u0491\u0001\u0000\u0000"+ - "\u0000\u0000\u0493\u0001\u0000\u0000\u0000\u0000\u0495\u0001\u0000\u0000"+ - "\u0000\u0000\u0497\u0001\u0000\u0000\u0000\u0000\u0499\u0001\u0000\u0000"+ - "\u0000\u0000\u049b\u0001\u0000\u0000\u0000\u0000\u049d\u0001\u0000\u0000"+ - "\u0000\u0000\u049f\u0001\u0000\u0000\u0000\u0000\u04a1\u0001\u0000\u0000"+ - "\u0000\u0000\u04a3\u0001\u0000\u0000\u0000\u0000\u04a5\u0001\u0000\u0000"+ - "\u0000\u0000\u04a7\u0001\u0000\u0000\u0000\u0000\u04a9\u0001\u0000\u0000"+ - "\u0000\u0000\u04ab\u0001\u0000\u0000\u0000\u0000\u04ad\u0001\u0000\u0000"+ - "\u0000\u0000\u04af\u0001\u0000\u0000\u0000\u0000\u04b1\u0001\u0000\u0000"+ - "\u0000\u0000\u04b3\u0001\u0000\u0000\u0000\u0000\u04b5\u0001\u0000\u0000"+ - "\u0000\u0000\u04b7\u0001\u0000\u0000\u0000\u0000\u04b9\u0001\u0000\u0000"+ - "\u0000\u0000\u04bb\u0001\u0000\u0000\u0000\u0000\u04bd\u0001\u0000\u0000"+ - "\u0000\u0000\u04bf\u0001\u0000\u0000\u0000\u0000\u04c1\u0001\u0000\u0000"+ - "\u0000\u0000\u04c3\u0001\u0000\u0000\u0000\u0000\u04c5\u0001\u0000\u0000"+ - "\u0000\u0000\u04c7\u0001\u0000\u0000\u0000\u0000\u04c9\u0001\u0000\u0000"+ - "\u0000\u0000\u04cb\u0001\u0000\u0000\u0000\u0000\u04cd\u0001\u0000\u0000"+ - "\u0000\u0000\u04cf\u0001\u0000\u0000\u0000\u0000\u04d1\u0001\u0000\u0000"+ - "\u0000\u0000\u04d3\u0001\u0000\u0000\u0000\u0000\u04d5\u0001\u0000\u0000"+ - "\u0000\u0000\u04d7\u0001\u0000\u0000\u0000\u0000\u04d9\u0001\u0000\u0000"+ - "\u0000\u0000\u04db\u0001\u0000\u0000\u0000\u0000\u04dd\u0001\u0000\u0000"+ - "\u0000\u0000\u04df\u0001\u0000\u0000\u0000\u0000\u04e1\u0001\u0000\u0000"+ - "\u0000\u0000\u04e3\u0001\u0000\u0000\u0000\u0000\u04e5\u0001\u0000\u0000"+ - "\u0000\u0000\u04e7\u0001\u0000\u0000\u0000\u0000\u04e9\u0001\u0000\u0000"+ - "\u0000\u0000\u04eb\u0001\u0000\u0000\u0000\u0000\u04ed\u0001\u0000\u0000"+ - "\u0000\u0000\u04ef\u0001\u0000\u0000\u0000\u0000\u04f1\u0001\u0000\u0000"+ - "\u0000\u0000\u04f3\u0001\u0000\u0000\u0000\u0000\u04f5\u0001\u0000\u0000"+ - "\u0000\u0000\u04f7\u0001\u0000\u0000\u0000\u0000\u04f9\u0001\u0000\u0000"+ - "\u0000\u0000\u04fb\u0001\u0000\u0000\u0000\u0000\u04fd\u0001\u0000\u0000"+ - "\u0000\u0000\u04ff\u0001\u0000\u0000\u0000\u0000\u0501\u0001\u0000\u0000"+ - "\u0000\u0000\u0503\u0001\u0000\u0000\u0000\u0000\u050b\u0001\u0000\u0000"+ - "\u0000\u0000\u050d\u0001\u0000\u0000\u0000\u0000\u050f\u0001\u0000\u0000"+ - "\u0000\u0000\u0511\u0001\u0000\u0000\u0000\u0000\u0513\u0001\u0000\u0000"+ - "\u0000\u0000\u0515\u0001\u0000\u0000\u0000\u0000\u0517\u0001\u0000\u0000"+ - "\u0000\u0000\u0519\u0001\u0000\u0000\u0000\u0000\u051b\u0001\u0000\u0000"+ - "\u0000\u0000\u051d\u0001\u0000\u0000\u0000\u0000\u051f\u0001\u0000\u0000"+ - "\u0000\u0000\u0521\u0001\u0000\u0000\u0000\u0000\u0523\u0001\u0000\u0000"+ - "\u0000\u0000\u0525\u0001\u0000\u0000\u0000\u0000\u0529\u0001\u0000\u0000"+ - "\u0000\u0000\u052b\u0001\u0000\u0000\u0000\u0000\u052d\u0001\u0000\u0000"+ - "\u0000\u0000\u052f\u0001\u0000\u0000\u0000\u0000\u0531\u0001\u0000\u0000"+ - "\u0000\u0000\u0533\u0001\u0000\u0000\u0000\u0000\u0535\u0001\u0000\u0000"+ - "\u0000\u0000\u0537\u0001\u0000\u0000\u0000\u0000\u0539\u0001\u0000\u0000"+ - "\u0000\u0000\u053b\u0001\u0000\u0000\u0000\u0000\u053d\u0001\u0000\u0000"+ - "\u0000\u0000\u0541\u0001\u0000\u0000\u0000\u0000\u0543\u0001\u0000\u0000"+ - "\u0000\u0000\u0545\u0001\u0000\u0000\u0000\u0000\u0547\u0001\u0000\u0000"+ - "\u0000\u0000\u0549\u0001\u0000\u0000\u0000\u0000\u054b\u0001\u0000\u0000"+ - "\u0000\u0000\u054d\u0001\u0000\u0000\u0000\u0000\u054f\u0001\u0000\u0000"+ - "\u0000\u0000\u0551\u0001\u0000\u0000\u0000\u0000\u0553\u0001\u0000\u0000"+ - "\u0000\u0001\u0555\u0001\u0000\u0000\u0000\u0001\u0557\u0001\u0000\u0000"+ - "\u0000\u0001\u055b\u0001\u0000\u0000\u0000\u0001\u055d\u0001\u0000\u0000"+ - "\u0000\u0002\u0561\u0001\u0000\u0000\u0000\u0002\u0563\u0001\u0000\u0000"+ - "\u0000\u0002\u0565\u0001\u0000\u0000\u0000\u0003\u0567\u0001\u0000\u0000"+ - "\u0000\u0003\u0569\u0001\u0000\u0000\u0000\u0003\u056b\u0001\u0000\u0000"+ - "\u0000\u0003\u056d\u0001\u0000\u0000\u0000\u0004\u056f\u0001\u0000\u0000"+ - "\u0000\u0004\u0571\u0001\u0000\u0000\u0000\u0005\u0573\u0001\u0000\u0000"+ - "\u0000\u0007\u0575\u0001\u0000\u0000\u0000\t\u0577\u0001\u0000\u0000\u0000"+ - "\u000b\u0579\u0001\u0000\u0000\u0000\r\u057b\u0001\u0000\u0000\u0000\u000f"+ - "\u057d\u0001\u0000\u0000\u0000\u0011\u057f\u0001\u0000\u0000\u0000\u0013"+ - "\u0581\u0001\u0000\u0000\u0000\u0015\u0583\u0001\u0000\u0000\u0000\u0017"+ - "\u0585\u0001\u0000\u0000\u0000\u0019\u0587\u0001\u0000\u0000\u0000\u001b"+ - "\u0589\u0001\u0000\u0000\u0000\u001d\u058b\u0001\u0000\u0000\u0000\u001f"+ - "\u058d\u0001\u0000\u0000\u0000!\u058f\u0001\u0000\u0000\u0000#\u0591\u0001"+ - "\u0000\u0000\u0000%\u0593\u0001\u0000\u0000\u0000\'\u0595\u0001\u0000"+ - "\u0000\u0000)\u0598\u0001\u0000\u0000\u0000+\u059b\u0001\u0000\u0000\u0000"+ - "-\u059e\u0001\u0000\u0000\u0000/\u05a1\u0001\u0000\u0000\u00001\u05a4"+ - "\u0001\u0000\u0000\u00003\u05a7\u0001\u0000\u0000\u00005\u05aa\u0001\u0000"+ - "\u0000\u00007\u05ad\u0001\u0000\u0000\u00009\u05b0\u0001\u0000\u0000\u0000"+ - ";\u05b2\u0001\u0000\u0000\u0000=\u05cc\u0001\u0000\u0000\u0000?\u05d7"+ - "\u0001\u0000\u0000\u0000A\u05e7\u0001\u0000\u0000\u0000C\u05e9\u0001\u0000"+ - "\u0000\u0000E\u05eb\u0001\u0000\u0000\u0000G\u05ed\u0001\u0000\u0000\u0000"+ - "I\u05f1\u0001\u0000\u0000\u0000K\u05f9\u0001\u0000\u0000\u0000M\u0601"+ - "\u0001\u0000\u0000\u0000O\u0605\u0001\u0000\u0000\u0000Q\u0609\u0001\u0000"+ - "\u0000\u0000S\u060f\u0001\u0000\u0000\u0000U\u0612\u0001\u0000\u0000\u0000"+ - "W\u0616\u0001\u0000\u0000\u0000Y\u0621\u0001\u0000\u0000\u0000[\u0626"+ - "\u0001\u0000\u0000\u0000]\u062b\u0001\u0000\u0000\u0000_\u0630\u0001\u0000"+ - "\u0000\u0000a\u0636\u0001\u0000\u0000\u0000c\u063e\u0001\u0000\u0000\u0000"+ - "e\u0645\u0001\u0000\u0000\u0000g\u0650\u0001\u0000\u0000\u0000i\u0657"+ - "\u0001\u0000\u0000\u0000k\u0667\u0001\u0000\u0000\u0000m\u0674\u0001\u0000"+ - "\u0000\u0000o\u0681\u0001\u0000\u0000\u0000q\u068e\u0001\u0000\u0000\u0000"+ - "s\u06a0\u0001\u0000\u0000\u0000u\u06ad\u0001\u0000\u0000\u0000w\u06b5"+ - "\u0001\u0000\u0000\u0000y\u06c0\u0001\u0000\u0000\u0000{\u06c5\u0001\u0000"+ - "\u0000\u0000}\u06ce\u0001\u0000\u0000\u0000\u007f\u06d1\u0001\u0000\u0000"+ - "\u0000\u0081\u06d6\u0001\u0000\u0000\u0000\u0083\u06dd\u0001\u0000\u0000"+ - "\u0000\u0085\u06e3\u0001\u0000\u0000\u0000\u0087\u06e9\u0001\u0000\u0000"+ - "\u0000\u0089\u06ed\u0001\u0000\u0000\u0000\u008b\u06f5\u0001\u0000\u0000"+ - "\u0000\u008d\u06fa\u0001\u0000\u0000\u0000\u008f\u0700\u0001\u0000\u0000"+ - "\u0000\u0091\u0706\u0001\u0000\u0000\u0000\u0093\u070d\u0001\u0000\u0000"+ - "\u0000\u0095\u0710\u0001\u0000\u0000\u0000\u0097\u071a\u0001\u0000\u0000"+ - "\u0000\u0099\u0724\u0001\u0000\u0000\u0000\u009b\u0729\u0001\u0000\u0000"+ - "\u0000\u009d\u0731\u0001\u0000\u0000\u0000\u009f\u0739\u0001\u0000\u0000"+ - "\u0000\u00a1\u073f\u0001\u0000\u0000\u0000\u00a3\u0749\u0001\u0000\u0000"+ - "\u0000\u00a5\u0758\u0001\u0000\u0000\u0000\u00a7\u075c\u0001\u0000\u0000"+ - "\u0000\u00a9\u0761\u0001\u0000\u0000\u0000\u00ab\u0768\u0001\u0000\u0000"+ - "\u0000\u00ad\u076b\u0001\u0000\u0000\u0000\u00af\u0770\u0001\u0000\u0000"+ - "\u0000\u00b1\u0773\u0001\u0000\u0000\u0000\u00b3\u0779\u0001\u0000\u0000"+ - "\u0000\u00b5\u0781\u0001\u0000\u0000\u0000\u00b7\u0789\u0001\u0000\u0000"+ - "\u0000\u00b9\u0794\u0001\u0000\u0000\u0000\u00bb\u079e\u0001\u0000\u0000"+ - "\u0000\u00bd\u07a5\u0001\u0000\u0000\u0000\u00bf\u07b2\u0001\u0000\u0000"+ - "\u0000\u00c1\u07b7\u0001\u0000\u0000\u0000\u00c3\u07c1\u0001\u0000\u0000"+ - "\u0000\u00c5\u07c7\u0001\u0000\u0000\u0000\u00c7\u07cc\u0001\u0000\u0000"+ - "\u0000\u00c9\u07cf\u0001\u0000\u0000\u0000\u00cb\u07d8\u0001\u0000\u0000"+ - "\u0000\u00cd\u07dd\u0001\u0000\u0000\u0000\u00cf\u07e3\u0001\u0000\u0000"+ - "\u0000\u00d1\u07ea\u0001\u0000\u0000\u0000\u00d3\u07ef\u0001\u0000\u0000"+ - "\u0000\u00d5\u07f5\u0001\u0000\u0000\u0000\u00d7\u07fe\u0001\u0000\u0000"+ - "\u0000\u00d9\u0803\u0001\u0000\u0000\u0000\u00db\u0809\u0001\u0000\u0000"+ - "\u0000\u00dd\u0810\u0001\u0000\u0000\u0000\u00df\u0815\u0001\u0000\u0000"+ - "\u0000\u00e1\u0823\u0001\u0000\u0000\u0000\u00e3\u082a\u0001\u0000\u0000"+ - "\u0000\u00e5\u0834\u0001\u0000\u0000\u0000\u00e7\u0841\u0001\u0000\u0000"+ - "\u0000\u00e9\u0847\u0001\u0000\u0000\u0000\u00eb\u0856\u0001\u0000\u0000"+ - "\u0000\u00ed\u085d\u0001\u0000\u0000\u0000\u00ef\u0862\u0001\u0000\u0000"+ - "\u0000\u00f1\u0868\u0001\u0000\u0000\u0000\u00f3\u086e\u0001\u0000\u0000"+ - "\u0000\u00f5\u0871\u0001\u0000\u0000\u0000\u00f7\u0878\u0001\u0000\u0000"+ - "\u0000\u00f9\u087d\u0001\u0000\u0000\u0000\u00fb\u0882\u0001\u0000\u0000"+ - "\u0000\u00fd\u0887\u0001\u0000\u0000\u0000\u00ff\u088f\u0001\u0000\u0000"+ - "\u0000\u0101\u0897\u0001\u0000\u0000\u0000\u0103\u089d\u0001\u0000\u0000"+ - "\u0000\u0105\u08a2\u0001\u0000\u0000\u0000\u0107\u08ab\u0001\u0000\u0000"+ - "\u0000\u0109\u08b1\u0001\u0000\u0000\u0000\u010b\u08b9\u0001\u0000\u0000"+ - "\u0000\u010d\u08c1\u0001\u0000\u0000\u0000\u010f\u08c7\u0001\u0000\u0000"+ - "\u0000\u0111\u08d0\u0001\u0000\u0000\u0000\u0113\u08d7\u0001\u0000\u0000"+ - "\u0000\u0115\u08de\u0001\u0000\u0000\u0000\u0117\u08e2\u0001\u0000\u0000"+ - "\u0000\u0119\u08e8\u0001\u0000\u0000\u0000\u011b\u08ee\u0001\u0000\u0000"+ - "\u0000\u011d\u08f8\u0001\u0000\u0000\u0000\u011f\u08fd\u0001\u0000\u0000"+ - "\u0000\u0121\u0903\u0001\u0000\u0000\u0000\u0123\u090a\u0001\u0000\u0000"+ - "\u0000\u0125\u0914\u0001\u0000\u0000\u0000\u0127\u091f\u0001\u0000\u0000"+ - "\u0000\u0129\u0922\u0001\u0000\u0000\u0000\u012b\u092c\u0001\u0000\u0000"+ - "\u0000\u012d\u0935\u0001\u0000\u0000\u0000\u012f\u093c\u0001\u0000\u0000"+ - "\u0000\u0131\u0942\u0001\u0000\u0000\u0000\u0133\u0945\u0001\u0000\u0000"+ - "\u0000\u0135\u094b\u0001\u0000\u0000\u0000\u0137\u0952\u0001\u0000\u0000"+ - "\u0000\u0139\u095a\u0001\u0000\u0000\u0000\u013b\u0963\u0001\u0000\u0000"+ - "\u0000\u013d\u096b\u0001\u0000\u0000\u0000\u013f\u0971\u0001\u0000\u0000"+ - "\u0000\u0141\u0981\u0001\u0000\u0000\u0000\u0143\u098c\u0001\u0000\u0000"+ - "\u0000\u0145\u0992\u0001\u0000\u0000\u0000\u0147\u0998\u0001\u0000\u0000"+ - "\u0000\u0149\u09a0\u0001\u0000\u0000\u0000\u014b\u09a8\u0001\u0000\u0000"+ - "\u0000\u014d\u09b1\u0001\u0000\u0000\u0000\u014f\u09b8\u0001\u0000\u0000"+ - "\u0000\u0151\u09c2\u0001\u0000\u0000\u0000\u0153\u09d0\u0001\u0000\u0000"+ - "\u0000\u0155\u09db\u0001\u0000\u0000\u0000\u0157\u09e7\u0001\u0000\u0000"+ - "\u0000\u0159\u09ef\u0001\u0000\u0000\u0000\u015b\u09f8\u0001\u0000\u0000"+ - "\u0000\u015d\u0a03\u0001\u0000\u0000\u0000\u015f\u0a08\u0001\u0000\u0000"+ - "\u0000\u0161\u0a0d\u0001\u0000\u0000\u0000\u0163\u0a11\u0001\u0000\u0000"+ - "\u0000\u0165\u0a18\u0001\u0000\u0000\u0000\u0167\u0a1e\u0001\u0000\u0000"+ - "\u0000\u0169\u0a23\u0001\u0000\u0000\u0000\u016b\u0a2c\u0001\u0000\u0000"+ - "\u0000\u016d\u0a30\u0001\u0000\u0000\u0000\u016f\u0a3b\u0001\u0000\u0000"+ - "\u0000\u0171\u0a43\u0001\u0000\u0000\u0000\u0173\u0a4c\u0001\u0000\u0000"+ - "\u0000\u0175\u0a55\u0001\u0000\u0000\u0000\u0177\u0a5d\u0001\u0000\u0000"+ - "\u0000\u0179\u0a64\u0001\u0000\u0000\u0000\u017b\u0a6e\u0001\u0000\u0000"+ - "\u0000\u017d\u0a79\u0001\u0000\u0000\u0000\u017f\u0a84\u0001\u0000\u0000"+ - "\u0000\u0181\u0a8c\u0001\u0000\u0000\u0000\u0183\u0a94\u0001\u0000\u0000"+ - "\u0000\u0185\u0a9d\u0001\u0000\u0000\u0000\u0187\u0aa4\u0001\u0000\u0000"+ - "\u0000\u0189\u0aab\u0001\u0000\u0000\u0000\u018b\u0ab0\u0001\u0000\u0000"+ - "\u0000\u018d\u0ab5\u0001\u0000\u0000\u0000\u018f\u0abc\u0001\u0000\u0000"+ - "\u0000\u0191\u0ac5\u0001\u0000\u0000\u0000\u0193\u0acf\u0001\u0000\u0000"+ - "\u0000\u0195\u0ad4\u0001\u0000\u0000\u0000\u0197\u0adb\u0001\u0000\u0000"+ - "\u0000\u0199\u0ae1\u0001\u0000\u0000\u0000\u019b\u0ae9\u0001\u0000\u0000"+ - "\u0000\u019d\u0af3\u0001\u0000\u0000\u0000\u019f\u0afd\u0001\u0000\u0000"+ - "\u0000\u01a1\u0b05\u0001\u0000\u0000\u0000\u01a3\u0b0d\u0001\u0000\u0000"+ - "\u0000\u01a5\u0b17\u0001\u0000\u0000\u0000\u01a7\u0b20\u0001\u0000\u0000"+ - "\u0000\u01a9\u0b27\u0001\u0000\u0000\u0000\u01ab\u0b2d\u0001\u0000\u0000"+ - "\u0000\u01ad\u0b37\u0001\u0000\u0000\u0000\u01af\u0b3d\u0001\u0000\u0000"+ - "\u0000\u01b1\u0b45\u0001\u0000\u0000\u0000\u01b3\u0b4e\u0001\u0000\u0000"+ - "\u0000\u01b5\u0b58\u0001\u0000\u0000\u0000\u01b7\u0b5f\u0001\u0000\u0000"+ - "\u0000\u01b9\u0b67\u0001\u0000\u0000\u0000\u01bb\u0b6f\u0001\u0000\u0000"+ - "\u0000\u01bd\u0b76\u0001\u0000\u0000\u0000\u01bf\u0b7b\u0001\u0000\u0000"+ - "\u0000\u01c1\u0b80\u0001\u0000\u0000\u0000\u01c3\u0b89\u0001\u0000\u0000"+ - "\u0000\u01c5\u0b8c\u0001\u0000\u0000\u0000\u01c7\u0b96\u0001\u0000\u0000"+ - "\u0000\u01c9\u0ba0\u0001\u0000\u0000\u0000\u01cb\u0ba9\u0001\u0000\u0000"+ - "\u0000\u01cd\u0bb3\u0001\u0000\u0000\u0000\u01cf\u0bbd\u0001\u0000\u0000"+ - "\u0000\u01d1\u0bc3\u0001\u0000\u0000\u0000\u01d3\u0bcb\u0001\u0000\u0000"+ - "\u0000\u01d5\u0bd3\u0001\u0000\u0000\u0000\u01d7\u0bdc\u0001\u0000\u0000"+ - "\u0000\u01d9\u0be3\u0001\u0000\u0000\u0000\u01db\u0bef\u0001\u0000\u0000"+ - "\u0000\u01dd\u0bf6\u0001\u0000\u0000\u0000\u01df\u0bfe\u0001\u0000\u0000"+ - "\u0000\u01e1\u0c06\u0001\u0000\u0000\u0000\u01e3\u0c10\u0001\u0000\u0000"+ - "\u0000\u01e5\u0c14\u0001\u0000\u0000\u0000\u01e7\u0c1a\u0001\u0000\u0000"+ - "\u0000\u01e9\u0c23\u0001\u0000\u0000\u0000\u01eb\u0c29\u0001\u0000\u0000"+ - "\u0000\u01ed\u0c2e\u0001\u0000\u0000\u0000\u01ef\u0c38\u0001\u0000\u0000"+ - "\u0000\u01f1\u0c3e\u0001\u0000\u0000\u0000\u01f3\u0c45\u0001\u0000\u0000"+ - "\u0000\u01f5\u0c4a\u0001\u0000\u0000\u0000\u01f7\u0c50\u0001\u0000\u0000"+ - "\u0000\u01f9\u0c59\u0001\u0000\u0000\u0000\u01fb\u0c5e\u0001\u0000\u0000"+ - "\u0000\u01fd\u0c66\u0001\u0000\u0000\u0000\u01ff\u0c6c\u0001\u0000\u0000"+ - "\u0000\u0201\u0c74\u0001\u0000\u0000\u0000\u0203\u0c81\u0001\u0000\u0000"+ - "\u0000\u0205\u0c8a\u0001\u0000\u0000\u0000\u0207\u0c90\u0001\u0000\u0000"+ - "\u0000\u0209\u0c97\u0001\u0000\u0000\u0000\u020b\u0ca0\u0001\u0000\u0000"+ - "\u0000\u020d\u0ca5\u0001\u0000\u0000\u0000\u020f\u0cab\u0001\u0000\u0000"+ - "\u0000\u0211\u0cb0\u0001\u0000\u0000\u0000\u0213\u0cb5\u0001\u0000\u0000"+ - "\u0000\u0215\u0cbb\u0001\u0000\u0000\u0000\u0217\u0cc0\u0001\u0000\u0000"+ - "\u0000\u0219\u0cc3\u0001\u0000\u0000\u0000\u021b\u0ccb\u0001\u0000\u0000"+ - "\u0000\u021d\u0cd2\u0001\u0000\u0000\u0000\u021f\u0cd9\u0001\u0000\u0000"+ - "\u0000\u0221\u0cdf\u0001\u0000\u0000\u0000\u0223\u0ce6\u0001\u0000\u0000"+ - "\u0000\u0225\u0ce9\u0001\u0000\u0000\u0000\u0227\u0ced\u0001\u0000\u0000"+ - "\u0000\u0229\u0cf2\u0001\u0000\u0000\u0000\u022b\u0cfb\u0001\u0000\u0000"+ - "\u0000\u022d\u0d02\u0001\u0000\u0000\u0000\u022f\u0d0a\u0001\u0000\u0000"+ - "\u0000\u0231\u0d10\u0001\u0000\u0000\u0000\u0233\u0d16\u0001\u0000\u0000"+ - "\u0000\u0235\u0d1d\u0001\u0000\u0000\u0000\u0237\u0d25\u0001\u0000\u0000"+ - "\u0000\u0239\u0d2f\u0001\u0000\u0000\u0000\u023b\u0d37\u0001\u0000\u0000"+ - "\u0000\u023d\u0d40\u0001\u0000\u0000\u0000\u023f\u0d46\u0001\u0000\u0000"+ - "\u0000\u0241\u0d50\u0001\u0000\u0000\u0000\u0243\u0d58\u0001\u0000\u0000"+ - "\u0000\u0245\u0d61\u0001\u0000\u0000\u0000\u0247\u0d6a\u0001\u0000\u0000"+ - "\u0000\u0249\u0d70\u0001\u0000\u0000\u0000\u024b\u0d7b\u0001\u0000\u0000"+ - "\u0000\u024d\u0d86\u0001\u0000\u0000\u0000\u024f\u0d90\u0001\u0000\u0000"+ - "\u0000\u0251\u0d98\u0001\u0000\u0000\u0000\u0253\u0d9e\u0001\u0000\u0000"+ - "\u0000\u0255\u0da4\u0001\u0000\u0000\u0000\u0257\u0da9\u0001\u0000\u0000"+ - "\u0000\u0259\u0db2\u0001\u0000\u0000\u0000\u025b\u0dba\u0001\u0000\u0000"+ - "\u0000\u025d\u0dc4\u0001\u0000\u0000\u0000\u025f\u0dc8\u0001\u0000\u0000"+ - "\u0000\u0261\u0dd0\u0001\u0000\u0000\u0000\u0263\u0dd8\u0001\u0000\u0000"+ - "\u0000\u0265\u0de1\u0001\u0000\u0000\u0000\u0267\u0de9\u0001\u0000\u0000"+ - "\u0000\u0269\u0df0\u0001\u0000\u0000\u0000\u026b\u0dfb\u0001\u0000\u0000"+ - "\u0000\u026d\u0e03\u0001\u0000\u0000\u0000\u026f\u0e0b\u0001\u0000\u0000"+ - "\u0000\u0271\u0e11\u0001\u0000\u0000\u0000\u0273\u0e19\u0001\u0000\u0000"+ - "\u0000\u0275\u0e22\u0001\u0000\u0000\u0000\u0277\u0e2a\u0001\u0000\u0000"+ - "\u0000\u0279\u0e31\u0001\u0000\u0000\u0000\u027b\u0e36\u0001\u0000\u0000"+ - "\u0000\u027d\u0e3f\u0001\u0000\u0000\u0000\u027f\u0e44\u0001\u0000\u0000"+ - "\u0000\u0281\u0e49\u0001\u0000\u0000\u0000\u0283\u0e53\u0001\u0000\u0000"+ - "\u0000\u0285\u0e5a\u0001\u0000\u0000\u0000\u0287\u0e61\u0001\u0000\u0000"+ - "\u0000\u0289\u0e68\u0001\u0000\u0000\u0000\u028b\u0e6f\u0001\u0000\u0000"+ - "\u0000\u028d\u0e78\u0001\u0000\u0000\u0000\u028f\u0e81\u0001\u0000\u0000"+ - "\u0000\u0291\u0e8b\u0001\u0000\u0000\u0000\u0293\u0e98\u0001\u0000\u0000"+ - "\u0000\u0295\u0e9f\u0001\u0000\u0000\u0000\u0297\u0ea7\u0001\u0000\u0000"+ - "\u0000\u0299\u0eab\u0001\u0000\u0000\u0000\u029b\u0eb1\u0001\u0000\u0000"+ - "\u0000\u029d\u0eb6\u0001\u0000\u0000\u0000\u029f\u0ebd\u0001\u0000\u0000"+ - "\u0000\u02a1\u0ec6\u0001\u0000\u0000\u0000\u02a3\u0ecd\u0001\u0000\u0000"+ - "\u0000\u02a5\u0ed8\u0001\u0000\u0000\u0000\u02a7\u0ede\u0001\u0000\u0000"+ - "\u0000\u02a9\u0ee8\u0001\u0000\u0000\u0000\u02ab\u0ef3\u0001\u0000\u0000"+ - "\u0000\u02ad\u0ef9\u0001\u0000\u0000\u0000\u02af\u0f00\u0001\u0000\u0000"+ - "\u0000\u02b1\u0f08\u0001\u0000\u0000\u0000\u02b3\u0f0f\u0001\u0000\u0000"+ - "\u0000\u02b5\u0f15\u0001\u0000\u0000\u0000\u02b7\u0f1b\u0001\u0000\u0000"+ - "\u0000\u02b9\u0f22\u0001\u0000\u0000\u0000\u02bb\u0f29\u0001\u0000\u0000"+ - "\u0000\u02bd\u0f34\u0001\u0000\u0000\u0000\u02bf\u0f39\u0001\u0000\u0000"+ - "\u0000\u02c1\u0f42\u0001\u0000\u0000\u0000\u02c3\u0f4c\u0001\u0000\u0000"+ - "\u0000\u02c5\u0f51\u0001\u0000\u0000\u0000\u02c7\u0f5d\u0001\u0000\u0000"+ - "\u0000\u02c9\u0f65\u0001\u0000\u0000\u0000\u02cb\u0f6e\u0001\u0000\u0000"+ - "\u0000\u02cd\u0f76\u0001\u0000\u0000\u0000\u02cf\u0f7b\u0001\u0000\u0000"+ - "\u0000\u02d1\u0f81\u0001\u0000\u0000\u0000\u02d3\u0f8b\u0001\u0000\u0000"+ - "\u0000\u02d5\u0f97\u0001\u0000\u0000\u0000\u02d7\u0fa3\u0001\u0000\u0000"+ - "\u0000\u02d9\u0fab\u0001\u0000\u0000\u0000\u02db\u0fb4\u0001\u0000\u0000"+ - "\u0000\u02dd\u0fbd\u0001\u0000\u0000\u0000\u02df\u0fc3\u0001\u0000\u0000"+ - "\u0000\u02e1\u0fca\u0001\u0000\u0000\u0000\u02e3\u0fd1\u0001\u0000\u0000"+ - "\u0000\u02e5\u0fd7\u0001\u0000\u0000\u0000\u02e7\u0fe0\u0001\u0000\u0000"+ - "\u0000\u02e9\u0fea\u0001\u0000\u0000\u0000\u02eb\u0ff2\u0001\u0000\u0000"+ - "\u0000\u02ed\u0ffa\u0001\u0000\u0000\u0000\u02ef\u0fff\u0001\u0000\u0000"+ - "\u0000\u02f1\u1008\u0001\u0000\u0000\u0000\u02f3\u1013\u0001\u0000\u0000"+ - "\u0000\u02f5\u101b\u0001\u0000\u0000\u0000\u02f7\u1020\u0001\u0000\u0000"+ - "\u0000\u02f9\u1028\u0001\u0000\u0000\u0000\u02fb\u102e\u0001\u0000\u0000"+ - "\u0000\u02fd\u1032\u0001\u0000\u0000\u0000\u02ff\u1037\u0001\u0000"; + "\u0559\u02a1\u055b\u02a2\u055d\u0000\u055f\u02a3\u0561\u02a4\u0563\u0000"+ + "\u0565\u0000\u0567\u0000\u0569\u02a5\u056b\u0000\u056d\u0000\u056f\u02a9"+ + "\u0571\u02a6\u0573\u02a7\u0575\u02a8\u0005\u0000\u0001\u0002\u0003\u0004"+ + "3\u0001\u000009\u0002\u0000++--\t\u0000!!##%&**<@^^``||~~\u0002\u0000"+ + "*+<>\b\u0000!!##%&?@^^``||~~\u0002\u0000AAaa\u0002\u0000LLll\u0002\u0000"+ + "NNnn\u0002\u0000YYyy\u0002\u0000SSss\u0002\u0000EEee\u0002\u0000ZZzz\u0002"+ + "\u0000DDdd\u0002\u0000RRrr\u0002\u0000CCcc\u0002\u0000MMmm\u0002\u0000"+ + "TTtt\u0002\u0000IIii\u0002\u0000BBbb\u0002\u0000OOoo\u0002\u0000HHhh\u0002"+ + "\u0000KKkk\u0002\u0000UUuu\u0002\u0000GGgg\u0002\u0000PPpp\u0002\u0000"+ + "FFff\u0002\u0000XXxx\u0002\u0000VVvv\u0002\u0000QQqq\u0002\u0000WWww\u0002"+ + "\u0000JJjj\t\u0000AZ__az\u00aa\u00aa\u00b5\u00b5\u00ba\u00ba\u00c0\u00d6"+ + "\u00d8\u00f6\u00f8\u00ff\u0002\u0000\u0100\u8000\ud7ff\u8000\ue000\u8000"+ + "\uffff\u0001\u0000\u8000\ud800\u8000\udbff\u0001\u0000\u8000\udc00\u8000"+ + "\udfff\u0002\u0000\u0000\u0000\"\"\u0001\u0000\"\"\u0001\u0000\'\'\u0001"+ + "\u000001\u0003\u000009AFaf\u0003\u0000AZ__az\u0005\u0000$$09AZ__az\u0002"+ + "\u0000\"\"\\\\\u0002\u0000\t\t \u0002\u0000\n\n\r\r\u0002\u0000**//\u0004"+ + "\u0000\n\n\r\r\"\"\\\\\u0003\u0000\n\n\r\r\"\"\u0003\u0000UUuuxx\u0002"+ + "\u0000\'\'\\\\\u0001\u0000$$\u1ae0\u0000\u0005\u0001\u0000\u0000\u0000"+ + "\u0000\u0007\u0001\u0000\u0000\u0000\u0000\t\u0001\u0000\u0000\u0000\u0000"+ + "\u000b\u0001\u0000\u0000\u0000\u0000\r\u0001\u0000\u0000\u0000\u0000\u000f"+ + "\u0001\u0000\u0000\u0000\u0000\u0011\u0001\u0000\u0000\u0000\u0000\u0013"+ + "\u0001\u0000\u0000\u0000\u0000\u0015\u0001\u0000\u0000\u0000\u0000\u0017"+ + "\u0001\u0000\u0000\u0000\u0000\u0019\u0001\u0000\u0000\u0000\u0000\u001b"+ + "\u0001\u0000\u0000\u0000\u0000\u001d\u0001\u0000\u0000\u0000\u0000\u001f"+ + "\u0001\u0000\u0000\u0000\u0000!\u0001\u0000\u0000\u0000\u0000#\u0001\u0000"+ + "\u0000\u0000\u0000%\u0001\u0000\u0000\u0000\u0000\'\u0001\u0000\u0000"+ + "\u0000\u0000)\u0001\u0000\u0000\u0000\u0000+\u0001\u0000\u0000\u0000\u0000"+ + "-\u0001\u0000\u0000\u0000\u0000/\u0001\u0000\u0000\u0000\u00001\u0001"+ + "\u0000\u0000\u0000\u00003\u0001\u0000\u0000\u0000\u00005\u0001\u0000\u0000"+ + "\u0000\u00007\u0001\u0000\u0000\u0000\u00009\u0001\u0000\u0000\u0000\u0000"+ + ";\u0001\u0000\u0000\u0000\u0000=\u0001\u0000\u0000\u0000\u0000?\u0001"+ + "\u0000\u0000\u0000\u0000G\u0001\u0000\u0000\u0000\u0000I\u0001\u0000\u0000"+ + "\u0000\u0000K\u0001\u0000\u0000\u0000\u0000M\u0001\u0000\u0000\u0000\u0000"+ + "O\u0001\u0000\u0000\u0000\u0000Q\u0001\u0000\u0000\u0000\u0000S\u0001"+ + "\u0000\u0000\u0000\u0000U\u0001\u0000\u0000\u0000\u0000W\u0001\u0000\u0000"+ + "\u0000\u0000Y\u0001\u0000\u0000\u0000\u0000[\u0001\u0000\u0000\u0000\u0000"+ + "]\u0001\u0000\u0000\u0000\u0000_\u0001\u0000\u0000\u0000\u0000a\u0001"+ + "\u0000\u0000\u0000\u0000c\u0001\u0000\u0000\u0000\u0000e\u0001\u0000\u0000"+ + "\u0000\u0000g\u0001\u0000\u0000\u0000\u0000i\u0001\u0000\u0000\u0000\u0000"+ + "k\u0001\u0000\u0000\u0000\u0000m\u0001\u0000\u0000\u0000\u0000o\u0001"+ + "\u0000\u0000\u0000\u0000q\u0001\u0000\u0000\u0000\u0000s\u0001\u0000\u0000"+ + "\u0000\u0000u\u0001\u0000\u0000\u0000\u0000w\u0001\u0000\u0000\u0000\u0000"+ + "y\u0001\u0000\u0000\u0000\u0000{\u0001\u0000\u0000\u0000\u0000}\u0001"+ + "\u0000\u0000\u0000\u0000\u007f\u0001\u0000\u0000\u0000\u0000\u0081\u0001"+ + "\u0000\u0000\u0000\u0000\u0083\u0001\u0000\u0000\u0000\u0000\u0085\u0001"+ + "\u0000\u0000\u0000\u0000\u0087\u0001\u0000\u0000\u0000\u0000\u0089\u0001"+ + "\u0000\u0000\u0000\u0000\u008b\u0001\u0000\u0000\u0000\u0000\u008d\u0001"+ + "\u0000\u0000\u0000\u0000\u008f\u0001\u0000\u0000\u0000\u0000\u0091\u0001"+ + "\u0000\u0000\u0000\u0000\u0093\u0001\u0000\u0000\u0000\u0000\u0095\u0001"+ + "\u0000\u0000\u0000\u0000\u0097\u0001\u0000\u0000\u0000\u0000\u0099\u0001"+ + "\u0000\u0000\u0000\u0000\u009b\u0001\u0000\u0000\u0000\u0000\u009d\u0001"+ + "\u0000\u0000\u0000\u0000\u009f\u0001\u0000\u0000\u0000\u0000\u00a1\u0001"+ + "\u0000\u0000\u0000\u0000\u00a3\u0001\u0000\u0000\u0000\u0000\u00a5\u0001"+ + "\u0000\u0000\u0000\u0000\u00a7\u0001\u0000\u0000\u0000\u0000\u00a9\u0001"+ + "\u0000\u0000\u0000\u0000\u00ab\u0001\u0000\u0000\u0000\u0000\u00ad\u0001"+ + "\u0000\u0000\u0000\u0000\u00af\u0001\u0000\u0000\u0000\u0000\u00b1\u0001"+ + "\u0000\u0000\u0000\u0000\u00b3\u0001\u0000\u0000\u0000\u0000\u00b5\u0001"+ + "\u0000\u0000\u0000\u0000\u00b7\u0001\u0000\u0000\u0000\u0000\u00b9\u0001"+ + "\u0000\u0000\u0000\u0000\u00bb\u0001\u0000\u0000\u0000\u0000\u00bd\u0001"+ + "\u0000\u0000\u0000\u0000\u00bf\u0001\u0000\u0000\u0000\u0000\u00c1\u0001"+ + "\u0000\u0000\u0000\u0000\u00c3\u0001\u0000\u0000\u0000\u0000\u00c5\u0001"+ + "\u0000\u0000\u0000\u0000\u00c7\u0001\u0000\u0000\u0000\u0000\u00c9\u0001"+ + "\u0000\u0000\u0000\u0000\u00cb\u0001\u0000\u0000\u0000\u0000\u00cd\u0001"+ + "\u0000\u0000\u0000\u0000\u00cf\u0001\u0000\u0000\u0000\u0000\u00d1\u0001"+ + "\u0000\u0000\u0000\u0000\u00d3\u0001\u0000\u0000\u0000\u0000\u00d5\u0001"+ + "\u0000\u0000\u0000\u0000\u00d7\u0001\u0000\u0000\u0000\u0000\u00d9\u0001"+ + "\u0000\u0000\u0000\u0000\u00db\u0001\u0000\u0000\u0000\u0000\u00dd\u0001"+ + "\u0000\u0000\u0000\u0000\u00df\u0001\u0000\u0000\u0000\u0000\u00e1\u0001"+ + "\u0000\u0000\u0000\u0000\u00e3\u0001\u0000\u0000\u0000\u0000\u00e5\u0001"+ + "\u0000\u0000\u0000\u0000\u00e7\u0001\u0000\u0000\u0000\u0000\u00e9\u0001"+ + "\u0000\u0000\u0000\u0000\u00eb\u0001\u0000\u0000\u0000\u0000\u00ed\u0001"+ + "\u0000\u0000\u0000\u0000\u00ef\u0001\u0000\u0000\u0000\u0000\u00f1\u0001"+ + "\u0000\u0000\u0000\u0000\u00f3\u0001\u0000\u0000\u0000\u0000\u00f5\u0001"+ + "\u0000\u0000\u0000\u0000\u00f7\u0001\u0000\u0000\u0000\u0000\u00f9\u0001"+ + "\u0000\u0000\u0000\u0000\u00fb\u0001\u0000\u0000\u0000\u0000\u00fd\u0001"+ + "\u0000\u0000\u0000\u0000\u00ff\u0001\u0000\u0000\u0000\u0000\u0101\u0001"+ + "\u0000\u0000\u0000\u0000\u0103\u0001\u0000\u0000\u0000\u0000\u0105\u0001"+ + "\u0000\u0000\u0000\u0000\u0107\u0001\u0000\u0000\u0000\u0000\u0109\u0001"+ + "\u0000\u0000\u0000\u0000\u010b\u0001\u0000\u0000\u0000\u0000\u010d\u0001"+ + "\u0000\u0000\u0000\u0000\u010f\u0001\u0000\u0000\u0000\u0000\u0111\u0001"+ + "\u0000\u0000\u0000\u0000\u0113\u0001\u0000\u0000\u0000\u0000\u0115\u0001"+ + "\u0000\u0000\u0000\u0000\u0117\u0001\u0000\u0000\u0000\u0000\u0119\u0001"+ + "\u0000\u0000\u0000\u0000\u011b\u0001\u0000\u0000\u0000\u0000\u011d\u0001"+ + "\u0000\u0000\u0000\u0000\u011f\u0001\u0000\u0000\u0000\u0000\u0121\u0001"+ + "\u0000\u0000\u0000\u0000\u0123\u0001\u0000\u0000\u0000\u0000\u0125\u0001"+ + "\u0000\u0000\u0000\u0000\u0127\u0001\u0000\u0000\u0000\u0000\u0129\u0001"+ + "\u0000\u0000\u0000\u0000\u012b\u0001\u0000\u0000\u0000\u0000\u012d\u0001"+ + "\u0000\u0000\u0000\u0000\u012f\u0001\u0000\u0000\u0000\u0000\u0131\u0001"+ + "\u0000\u0000\u0000\u0000\u0133\u0001\u0000\u0000\u0000\u0000\u0135\u0001"+ + "\u0000\u0000\u0000\u0000\u0137\u0001\u0000\u0000\u0000\u0000\u0139\u0001"+ + "\u0000\u0000\u0000\u0000\u013b\u0001\u0000\u0000\u0000\u0000\u013d\u0001"+ + "\u0000\u0000\u0000\u0000\u013f\u0001\u0000\u0000\u0000\u0000\u0141\u0001"+ + "\u0000\u0000\u0000\u0000\u0143\u0001\u0000\u0000\u0000\u0000\u0145\u0001"+ + "\u0000\u0000\u0000\u0000\u0147\u0001\u0000\u0000\u0000\u0000\u0149\u0001"+ + "\u0000\u0000\u0000\u0000\u014b\u0001\u0000\u0000\u0000\u0000\u014d\u0001"+ + "\u0000\u0000\u0000\u0000\u014f\u0001\u0000\u0000\u0000\u0000\u0151\u0001"+ + "\u0000\u0000\u0000\u0000\u0153\u0001\u0000\u0000\u0000\u0000\u0155\u0001"+ + "\u0000\u0000\u0000\u0000\u0157\u0001\u0000\u0000\u0000\u0000\u0159\u0001"+ + "\u0000\u0000\u0000\u0000\u015b\u0001\u0000\u0000\u0000\u0000\u015d\u0001"+ + "\u0000\u0000\u0000\u0000\u015f\u0001\u0000\u0000\u0000\u0000\u0161\u0001"+ + "\u0000\u0000\u0000\u0000\u0163\u0001\u0000\u0000\u0000\u0000\u0165\u0001"+ + "\u0000\u0000\u0000\u0000\u0167\u0001\u0000\u0000\u0000\u0000\u0169\u0001"+ + "\u0000\u0000\u0000\u0000\u016b\u0001\u0000\u0000\u0000\u0000\u016d\u0001"+ + "\u0000\u0000\u0000\u0000\u016f\u0001\u0000\u0000\u0000\u0000\u0171\u0001"+ + "\u0000\u0000\u0000\u0000\u0173\u0001\u0000\u0000\u0000\u0000\u0175\u0001"+ + "\u0000\u0000\u0000\u0000\u0177\u0001\u0000\u0000\u0000\u0000\u0179\u0001"+ + "\u0000\u0000\u0000\u0000\u017b\u0001\u0000\u0000\u0000\u0000\u017d\u0001"+ + "\u0000\u0000\u0000\u0000\u017f\u0001\u0000\u0000\u0000\u0000\u0181\u0001"+ + "\u0000\u0000\u0000\u0000\u0183\u0001\u0000\u0000\u0000\u0000\u0185\u0001"+ + "\u0000\u0000\u0000\u0000\u0187\u0001\u0000\u0000\u0000\u0000\u0189\u0001"+ + "\u0000\u0000\u0000\u0000\u018b\u0001\u0000\u0000\u0000\u0000\u018d\u0001"+ + "\u0000\u0000\u0000\u0000\u018f\u0001\u0000\u0000\u0000\u0000\u0191\u0001"+ + "\u0000\u0000\u0000\u0000\u0193\u0001\u0000\u0000\u0000\u0000\u0195\u0001"+ + "\u0000\u0000\u0000\u0000\u0197\u0001\u0000\u0000\u0000\u0000\u0199\u0001"+ + "\u0000\u0000\u0000\u0000\u019b\u0001\u0000\u0000\u0000\u0000\u019d\u0001"+ + "\u0000\u0000\u0000\u0000\u019f\u0001\u0000\u0000\u0000\u0000\u01a1\u0001"+ + "\u0000\u0000\u0000\u0000\u01a3\u0001\u0000\u0000\u0000\u0000\u01a5\u0001"+ + "\u0000\u0000\u0000\u0000\u01a7\u0001\u0000\u0000\u0000\u0000\u01a9\u0001"+ + "\u0000\u0000\u0000\u0000\u01ab\u0001\u0000\u0000\u0000\u0000\u01ad\u0001"+ + "\u0000\u0000\u0000\u0000\u01af\u0001\u0000\u0000\u0000\u0000\u01b1\u0001"+ + "\u0000\u0000\u0000\u0000\u01b3\u0001\u0000\u0000\u0000\u0000\u01b5\u0001"+ + "\u0000\u0000\u0000\u0000\u01b7\u0001\u0000\u0000\u0000\u0000\u01b9\u0001"+ + "\u0000\u0000\u0000\u0000\u01bb\u0001\u0000\u0000\u0000\u0000\u01bd\u0001"+ + "\u0000\u0000\u0000\u0000\u01bf\u0001\u0000\u0000\u0000\u0000\u01c1\u0001"+ + "\u0000\u0000\u0000\u0000\u01c3\u0001\u0000\u0000\u0000\u0000\u01c5\u0001"+ + "\u0000\u0000\u0000\u0000\u01c7\u0001\u0000\u0000\u0000\u0000\u01c9\u0001"+ + "\u0000\u0000\u0000\u0000\u01cb\u0001\u0000\u0000\u0000\u0000\u01cd\u0001"+ + "\u0000\u0000\u0000\u0000\u01cf\u0001\u0000\u0000\u0000\u0000\u01d1\u0001"+ + "\u0000\u0000\u0000\u0000\u01d3\u0001\u0000\u0000\u0000\u0000\u01d5\u0001"+ + "\u0000\u0000\u0000\u0000\u01d7\u0001\u0000\u0000\u0000\u0000\u01d9\u0001"+ + "\u0000\u0000\u0000\u0000\u01db\u0001\u0000\u0000\u0000\u0000\u01dd\u0001"+ + "\u0000\u0000\u0000\u0000\u01df\u0001\u0000\u0000\u0000\u0000\u01e1\u0001"+ + "\u0000\u0000\u0000\u0000\u01e3\u0001\u0000\u0000\u0000\u0000\u01e5\u0001"+ + "\u0000\u0000\u0000\u0000\u01e7\u0001\u0000\u0000\u0000\u0000\u01e9\u0001"+ + "\u0000\u0000\u0000\u0000\u01eb\u0001\u0000\u0000\u0000\u0000\u01ed\u0001"+ + "\u0000\u0000\u0000\u0000\u01ef\u0001\u0000\u0000\u0000\u0000\u01f1\u0001"+ + "\u0000\u0000\u0000\u0000\u01f3\u0001\u0000\u0000\u0000\u0000\u01f5\u0001"+ + "\u0000\u0000\u0000\u0000\u01f7\u0001\u0000\u0000\u0000\u0000\u01f9\u0001"+ + "\u0000\u0000\u0000\u0000\u01fb\u0001\u0000\u0000\u0000\u0000\u01fd\u0001"+ + "\u0000\u0000\u0000\u0000\u01ff\u0001\u0000\u0000\u0000\u0000\u0201\u0001"+ + "\u0000\u0000\u0000\u0000\u0203\u0001\u0000\u0000\u0000\u0000\u0205\u0001"+ + "\u0000\u0000\u0000\u0000\u0207\u0001\u0000\u0000\u0000\u0000\u0209\u0001"+ + "\u0000\u0000\u0000\u0000\u020b\u0001\u0000\u0000\u0000\u0000\u020d\u0001"+ + "\u0000\u0000\u0000\u0000\u020f\u0001\u0000\u0000\u0000\u0000\u0211\u0001"+ + "\u0000\u0000\u0000\u0000\u0213\u0001\u0000\u0000\u0000\u0000\u0215\u0001"+ + "\u0000\u0000\u0000\u0000\u0217\u0001\u0000\u0000\u0000\u0000\u0219\u0001"+ + "\u0000\u0000\u0000\u0000\u021b\u0001\u0000\u0000\u0000\u0000\u021d\u0001"+ + "\u0000\u0000\u0000\u0000\u021f\u0001\u0000\u0000\u0000\u0000\u0221\u0001"+ + "\u0000\u0000\u0000\u0000\u0223\u0001\u0000\u0000\u0000\u0000\u0225\u0001"+ + "\u0000\u0000\u0000\u0000\u0227\u0001\u0000\u0000\u0000\u0000\u0229\u0001"+ + "\u0000\u0000\u0000\u0000\u022b\u0001\u0000\u0000\u0000\u0000\u022d\u0001"+ + "\u0000\u0000\u0000\u0000\u022f\u0001\u0000\u0000\u0000\u0000\u0231\u0001"+ + "\u0000\u0000\u0000\u0000\u0233\u0001\u0000\u0000\u0000\u0000\u0235\u0001"+ + "\u0000\u0000\u0000\u0000\u0237\u0001\u0000\u0000\u0000\u0000\u0239\u0001"+ + "\u0000\u0000\u0000\u0000\u023b\u0001\u0000\u0000\u0000\u0000\u023d\u0001"+ + "\u0000\u0000\u0000\u0000\u023f\u0001\u0000\u0000\u0000\u0000\u0241\u0001"+ + "\u0000\u0000\u0000\u0000\u0243\u0001\u0000\u0000\u0000\u0000\u0245\u0001"+ + "\u0000\u0000\u0000\u0000\u0247\u0001\u0000\u0000\u0000\u0000\u0249\u0001"+ + "\u0000\u0000\u0000\u0000\u024b\u0001\u0000\u0000\u0000\u0000\u024d\u0001"+ + "\u0000\u0000\u0000\u0000\u024f\u0001\u0000\u0000\u0000\u0000\u0251\u0001"+ + "\u0000\u0000\u0000\u0000\u0253\u0001\u0000\u0000\u0000\u0000\u0255\u0001"+ + "\u0000\u0000\u0000\u0000\u0257\u0001\u0000\u0000\u0000\u0000\u0259\u0001"+ + "\u0000\u0000\u0000\u0000\u025b\u0001\u0000\u0000\u0000\u0000\u025d\u0001"+ + "\u0000\u0000\u0000\u0000\u025f\u0001\u0000\u0000\u0000\u0000\u0261\u0001"+ + "\u0000\u0000\u0000\u0000\u0263\u0001\u0000\u0000\u0000\u0000\u0265\u0001"+ + "\u0000\u0000\u0000\u0000\u0267\u0001\u0000\u0000\u0000\u0000\u0269\u0001"+ + "\u0000\u0000\u0000\u0000\u026b\u0001\u0000\u0000\u0000\u0000\u026d\u0001"+ + "\u0000\u0000\u0000\u0000\u026f\u0001\u0000\u0000\u0000\u0000\u0271\u0001"+ + "\u0000\u0000\u0000\u0000\u0273\u0001\u0000\u0000\u0000\u0000\u0275\u0001"+ + "\u0000\u0000\u0000\u0000\u0277\u0001\u0000\u0000\u0000\u0000\u0279\u0001"+ + "\u0000\u0000\u0000\u0000\u027b\u0001\u0000\u0000\u0000\u0000\u027d\u0001"+ + "\u0000\u0000\u0000\u0000\u027f\u0001\u0000\u0000\u0000\u0000\u0281\u0001"+ + "\u0000\u0000\u0000\u0000\u0283\u0001\u0000\u0000\u0000\u0000\u0285\u0001"+ + "\u0000\u0000\u0000\u0000\u0287\u0001\u0000\u0000\u0000\u0000\u0289\u0001"+ + "\u0000\u0000\u0000\u0000\u028b\u0001\u0000\u0000\u0000\u0000\u028d\u0001"+ + "\u0000\u0000\u0000\u0000\u028f\u0001\u0000\u0000\u0000\u0000\u0291\u0001"+ + "\u0000\u0000\u0000\u0000\u0293\u0001\u0000\u0000\u0000\u0000\u0295\u0001"+ + "\u0000\u0000\u0000\u0000\u0297\u0001\u0000\u0000\u0000\u0000\u0299\u0001"+ + "\u0000\u0000\u0000\u0000\u029b\u0001\u0000\u0000\u0000\u0000\u029d\u0001"+ + "\u0000\u0000\u0000\u0000\u029f\u0001\u0000\u0000\u0000\u0000\u02a1\u0001"+ + "\u0000\u0000\u0000\u0000\u02a3\u0001\u0000\u0000\u0000\u0000\u02a5\u0001"+ + "\u0000\u0000\u0000\u0000\u02a7\u0001\u0000\u0000\u0000\u0000\u02a9\u0001"+ + "\u0000\u0000\u0000\u0000\u02ab\u0001\u0000\u0000\u0000\u0000\u02ad\u0001"+ + "\u0000\u0000\u0000\u0000\u02af\u0001\u0000\u0000\u0000\u0000\u02b1\u0001"+ + "\u0000\u0000\u0000\u0000\u02b3\u0001\u0000\u0000\u0000\u0000\u02b5\u0001"+ + "\u0000\u0000\u0000\u0000\u02b7\u0001\u0000\u0000\u0000\u0000\u02b9\u0001"+ + "\u0000\u0000\u0000\u0000\u02bb\u0001\u0000\u0000\u0000\u0000\u02bd\u0001"+ + "\u0000\u0000\u0000\u0000\u02bf\u0001\u0000\u0000\u0000\u0000\u02c1\u0001"+ + "\u0000\u0000\u0000\u0000\u02c3\u0001\u0000\u0000\u0000\u0000\u02c5\u0001"+ + "\u0000\u0000\u0000\u0000\u02c7\u0001\u0000\u0000\u0000\u0000\u02c9\u0001"+ + "\u0000\u0000\u0000\u0000\u02cb\u0001\u0000\u0000\u0000\u0000\u02cd\u0001"+ + "\u0000\u0000\u0000\u0000\u02cf\u0001\u0000\u0000\u0000\u0000\u02d1\u0001"+ + "\u0000\u0000\u0000\u0000\u02d3\u0001\u0000\u0000\u0000\u0000\u02d5\u0001"+ + "\u0000\u0000\u0000\u0000\u02d7\u0001\u0000\u0000\u0000\u0000\u02d9\u0001"+ + "\u0000\u0000\u0000\u0000\u02db\u0001\u0000\u0000\u0000\u0000\u02dd\u0001"+ + "\u0000\u0000\u0000\u0000\u02df\u0001\u0000\u0000\u0000\u0000\u02e1\u0001"+ + "\u0000\u0000\u0000\u0000\u02e3\u0001\u0000\u0000\u0000\u0000\u02e5\u0001"+ + "\u0000\u0000\u0000\u0000\u02e7\u0001\u0000\u0000\u0000\u0000\u02e9\u0001"+ + "\u0000\u0000\u0000\u0000\u02eb\u0001\u0000\u0000\u0000\u0000\u02ed\u0001"+ + "\u0000\u0000\u0000\u0000\u02ef\u0001\u0000\u0000\u0000\u0000\u02f1\u0001"+ + "\u0000\u0000\u0000\u0000\u02f3\u0001\u0000\u0000\u0000\u0000\u02f5\u0001"+ + "\u0000\u0000\u0000\u0000\u02f7\u0001\u0000\u0000\u0000\u0000\u02f9\u0001"+ + "\u0000\u0000\u0000\u0000\u02fb\u0001\u0000\u0000\u0000\u0000\u02fd\u0001"+ + "\u0000\u0000\u0000\u0000\u02ff\u0001\u0000\u0000\u0000\u0000\u0301\u0001"+ + "\u0000\u0000\u0000\u0000\u0303\u0001\u0000\u0000\u0000\u0000\u0305\u0001"+ + "\u0000\u0000\u0000\u0000\u0307\u0001\u0000\u0000\u0000\u0000\u0309\u0001"+ + "\u0000\u0000\u0000\u0000\u030b\u0001\u0000\u0000\u0000\u0000\u030d\u0001"+ + "\u0000\u0000\u0000\u0000\u030f\u0001\u0000\u0000\u0000\u0000\u0311\u0001"+ + "\u0000\u0000\u0000\u0000\u0313\u0001\u0000\u0000\u0000\u0000\u0315\u0001"+ + "\u0000\u0000\u0000\u0000\u0317\u0001\u0000\u0000\u0000\u0000\u0319\u0001"+ + "\u0000\u0000\u0000\u0000\u031b\u0001\u0000\u0000\u0000\u0000\u031d\u0001"+ + "\u0000\u0000\u0000\u0000\u031f\u0001\u0000\u0000\u0000\u0000\u0321\u0001"+ + "\u0000\u0000\u0000\u0000\u0323\u0001\u0000\u0000\u0000\u0000\u0325\u0001"+ + "\u0000\u0000\u0000\u0000\u0327\u0001\u0000\u0000\u0000\u0000\u0329\u0001"+ + "\u0000\u0000\u0000\u0000\u032b\u0001\u0000\u0000\u0000\u0000\u032d\u0001"+ + "\u0000\u0000\u0000\u0000\u032f\u0001\u0000\u0000\u0000\u0000\u0331\u0001"+ + "\u0000\u0000\u0000\u0000\u0333\u0001\u0000\u0000\u0000\u0000\u0335\u0001"+ + "\u0000\u0000\u0000\u0000\u0337\u0001\u0000\u0000\u0000\u0000\u0339\u0001"+ + "\u0000\u0000\u0000\u0000\u033b\u0001\u0000\u0000\u0000\u0000\u033d\u0001"+ + "\u0000\u0000\u0000\u0000\u033f\u0001\u0000\u0000\u0000\u0000\u0341\u0001"+ + "\u0000\u0000\u0000\u0000\u0343\u0001\u0000\u0000\u0000\u0000\u0345\u0001"+ + "\u0000\u0000\u0000\u0000\u0347\u0001\u0000\u0000\u0000\u0000\u0349\u0001"+ + "\u0000\u0000\u0000\u0000\u034b\u0001\u0000\u0000\u0000\u0000\u034d\u0001"+ + "\u0000\u0000\u0000\u0000\u034f\u0001\u0000\u0000\u0000\u0000\u0351\u0001"+ + "\u0000\u0000\u0000\u0000\u0353\u0001\u0000\u0000\u0000\u0000\u0355\u0001"+ + "\u0000\u0000\u0000\u0000\u0357\u0001\u0000\u0000\u0000\u0000\u0359\u0001"+ + "\u0000\u0000\u0000\u0000\u035b\u0001\u0000\u0000\u0000\u0000\u035d\u0001"+ + "\u0000\u0000\u0000\u0000\u035f\u0001\u0000\u0000\u0000\u0000\u0361\u0001"+ + "\u0000\u0000\u0000\u0000\u0363\u0001\u0000\u0000\u0000\u0000\u0365\u0001"+ + "\u0000\u0000\u0000\u0000\u0367\u0001\u0000\u0000\u0000\u0000\u0369\u0001"+ + "\u0000\u0000\u0000\u0000\u036b\u0001\u0000\u0000\u0000\u0000\u036d\u0001"+ + "\u0000\u0000\u0000\u0000\u036f\u0001\u0000\u0000\u0000\u0000\u0371\u0001"+ + "\u0000\u0000\u0000\u0000\u0373\u0001\u0000\u0000\u0000\u0000\u0375\u0001"+ + "\u0000\u0000\u0000\u0000\u0377\u0001\u0000\u0000\u0000\u0000\u0379\u0001"+ + "\u0000\u0000\u0000\u0000\u037b\u0001\u0000\u0000\u0000\u0000\u037d\u0001"+ + "\u0000\u0000\u0000\u0000\u037f\u0001\u0000\u0000\u0000\u0000\u0381\u0001"+ + "\u0000\u0000\u0000\u0000\u0383\u0001\u0000\u0000\u0000\u0000\u0385\u0001"+ + "\u0000\u0000\u0000\u0000\u0387\u0001\u0000\u0000\u0000\u0000\u0389\u0001"+ + "\u0000\u0000\u0000\u0000\u038b\u0001\u0000\u0000\u0000\u0000\u038d\u0001"+ + "\u0000\u0000\u0000\u0000\u038f\u0001\u0000\u0000\u0000\u0000\u0391\u0001"+ + "\u0000\u0000\u0000\u0000\u0393\u0001\u0000\u0000\u0000\u0000\u0395\u0001"+ + "\u0000\u0000\u0000\u0000\u0397\u0001\u0000\u0000\u0000\u0000\u0399\u0001"+ + "\u0000\u0000\u0000\u0000\u039b\u0001\u0000\u0000\u0000\u0000\u039d\u0001"+ + "\u0000\u0000\u0000\u0000\u039f\u0001\u0000\u0000\u0000\u0000\u03a1\u0001"+ + "\u0000\u0000\u0000\u0000\u03a3\u0001\u0000\u0000\u0000\u0000\u03a5\u0001"+ + "\u0000\u0000\u0000\u0000\u03a7\u0001\u0000\u0000\u0000\u0000\u03a9\u0001"+ + "\u0000\u0000\u0000\u0000\u03ab\u0001\u0000\u0000\u0000\u0000\u03ad\u0001"+ + "\u0000\u0000\u0000\u0000\u03af\u0001\u0000\u0000\u0000\u0000\u03b1\u0001"+ + "\u0000\u0000\u0000\u0000\u03b3\u0001\u0000\u0000\u0000\u0000\u03b5\u0001"+ + "\u0000\u0000\u0000\u0000\u03b7\u0001\u0000\u0000\u0000\u0000\u03b9\u0001"+ + "\u0000\u0000\u0000\u0000\u03bb\u0001\u0000\u0000\u0000\u0000\u03bd\u0001"+ + "\u0000\u0000\u0000\u0000\u03bf\u0001\u0000\u0000\u0000\u0000\u03c1\u0001"+ + "\u0000\u0000\u0000\u0000\u03c3\u0001\u0000\u0000\u0000\u0000\u03c5\u0001"+ + "\u0000\u0000\u0000\u0000\u03c7\u0001\u0000\u0000\u0000\u0000\u03c9\u0001"+ + "\u0000\u0000\u0000\u0000\u03cb\u0001\u0000\u0000\u0000\u0000\u03cd\u0001"+ + "\u0000\u0000\u0000\u0000\u03cf\u0001\u0000\u0000\u0000\u0000\u03d1\u0001"+ + "\u0000\u0000\u0000\u0000\u03d3\u0001\u0000\u0000\u0000\u0000\u03d5\u0001"+ + "\u0000\u0000\u0000\u0000\u03d7\u0001\u0000\u0000\u0000\u0000\u03d9\u0001"+ + "\u0000\u0000\u0000\u0000\u03db\u0001\u0000\u0000\u0000\u0000\u03dd\u0001"+ + "\u0000\u0000\u0000\u0000\u03df\u0001\u0000\u0000\u0000\u0000\u03e1\u0001"+ + "\u0000\u0000\u0000\u0000\u03e3\u0001\u0000\u0000\u0000\u0000\u03e5\u0001"+ + "\u0000\u0000\u0000\u0000\u03e7\u0001\u0000\u0000\u0000\u0000\u03e9\u0001"+ + "\u0000\u0000\u0000\u0000\u03eb\u0001\u0000\u0000\u0000\u0000\u03ed\u0001"+ + "\u0000\u0000\u0000\u0000\u03ef\u0001\u0000\u0000\u0000\u0000\u03f1\u0001"+ + "\u0000\u0000\u0000\u0000\u03f3\u0001\u0000\u0000\u0000\u0000\u03f5\u0001"+ + "\u0000\u0000\u0000\u0000\u03f7\u0001\u0000\u0000\u0000\u0000\u03f9\u0001"+ + "\u0000\u0000\u0000\u0000\u03fb\u0001\u0000\u0000\u0000\u0000\u03fd\u0001"+ + "\u0000\u0000\u0000\u0000\u03ff\u0001\u0000\u0000\u0000\u0000\u0401\u0001"+ + "\u0000\u0000\u0000\u0000\u0403\u0001\u0000\u0000\u0000\u0000\u0405\u0001"+ + "\u0000\u0000\u0000\u0000\u0407\u0001\u0000\u0000\u0000\u0000\u0409\u0001"+ + "\u0000\u0000\u0000\u0000\u040b\u0001\u0000\u0000\u0000\u0000\u040d\u0001"+ + "\u0000\u0000\u0000\u0000\u040f\u0001\u0000\u0000\u0000\u0000\u0411\u0001"+ + "\u0000\u0000\u0000\u0000\u0413\u0001\u0000\u0000\u0000\u0000\u0415\u0001"+ + "\u0000\u0000\u0000\u0000\u0417\u0001\u0000\u0000\u0000\u0000\u0419\u0001"+ + "\u0000\u0000\u0000\u0000\u041b\u0001\u0000\u0000\u0000\u0000\u041d\u0001"+ + "\u0000\u0000\u0000\u0000\u041f\u0001\u0000\u0000\u0000\u0000\u0421\u0001"+ + "\u0000\u0000\u0000\u0000\u0423\u0001\u0000\u0000\u0000\u0000\u0425\u0001"+ + "\u0000\u0000\u0000\u0000\u0427\u0001\u0000\u0000\u0000\u0000\u0429\u0001"+ + "\u0000\u0000\u0000\u0000\u042b\u0001\u0000\u0000\u0000\u0000\u042d\u0001"+ + "\u0000\u0000\u0000\u0000\u042f\u0001\u0000\u0000\u0000\u0000\u0431\u0001"+ + "\u0000\u0000\u0000\u0000\u0433\u0001\u0000\u0000\u0000\u0000\u0435\u0001"+ + "\u0000\u0000\u0000\u0000\u0437\u0001\u0000\u0000\u0000\u0000\u0439\u0001"+ + "\u0000\u0000\u0000\u0000\u043b\u0001\u0000\u0000\u0000\u0000\u043d\u0001"+ + "\u0000\u0000\u0000\u0000\u043f\u0001\u0000\u0000\u0000\u0000\u0441\u0001"+ + "\u0000\u0000\u0000\u0000\u0443\u0001\u0000\u0000\u0000\u0000\u0445\u0001"+ + "\u0000\u0000\u0000\u0000\u0447\u0001\u0000\u0000\u0000\u0000\u0449\u0001"+ + "\u0000\u0000\u0000\u0000\u044b\u0001\u0000\u0000\u0000\u0000\u044d\u0001"+ + "\u0000\u0000\u0000\u0000\u044f\u0001\u0000\u0000\u0000\u0000\u0451\u0001"+ + "\u0000\u0000\u0000\u0000\u0453\u0001\u0000\u0000\u0000\u0000\u0455\u0001"+ + "\u0000\u0000\u0000\u0000\u0457\u0001\u0000\u0000\u0000\u0000\u0459\u0001"+ + "\u0000\u0000\u0000\u0000\u045b\u0001\u0000\u0000\u0000\u0000\u045d\u0001"+ + "\u0000\u0000\u0000\u0000\u045f\u0001\u0000\u0000\u0000\u0000\u0461\u0001"+ + "\u0000\u0000\u0000\u0000\u0463\u0001\u0000\u0000\u0000\u0000\u0465\u0001"+ + "\u0000\u0000\u0000\u0000\u0467\u0001\u0000\u0000\u0000\u0000\u0469\u0001"+ + "\u0000\u0000\u0000\u0000\u046b\u0001\u0000\u0000\u0000\u0000\u046d\u0001"+ + "\u0000\u0000\u0000\u0000\u046f\u0001\u0000\u0000\u0000\u0000\u0471\u0001"+ + "\u0000\u0000\u0000\u0000\u0473\u0001\u0000\u0000\u0000\u0000\u0475\u0001"+ + "\u0000\u0000\u0000\u0000\u0477\u0001\u0000\u0000\u0000\u0000\u0479\u0001"+ + "\u0000\u0000\u0000\u0000\u047b\u0001\u0000\u0000\u0000\u0000\u047d\u0001"+ + "\u0000\u0000\u0000\u0000\u047f\u0001\u0000\u0000\u0000\u0000\u0481\u0001"+ + "\u0000\u0000\u0000\u0000\u0483\u0001\u0000\u0000\u0000\u0000\u0485\u0001"+ + "\u0000\u0000\u0000\u0000\u0487\u0001\u0000\u0000\u0000\u0000\u0489\u0001"+ + "\u0000\u0000\u0000\u0000\u048b\u0001\u0000\u0000\u0000\u0000\u048d\u0001"+ + "\u0000\u0000\u0000\u0000\u048f\u0001\u0000\u0000\u0000\u0000\u0491\u0001"+ + "\u0000\u0000\u0000\u0000\u0493\u0001\u0000\u0000\u0000\u0000\u0495\u0001"+ + "\u0000\u0000\u0000\u0000\u0497\u0001\u0000\u0000\u0000\u0000\u0499\u0001"+ + "\u0000\u0000\u0000\u0000\u049b\u0001\u0000\u0000\u0000\u0000\u049d\u0001"+ + "\u0000\u0000\u0000\u0000\u049f\u0001\u0000\u0000\u0000\u0000\u04a1\u0001"+ + "\u0000\u0000\u0000\u0000\u04a3\u0001\u0000\u0000\u0000\u0000\u04a5\u0001"+ + "\u0000\u0000\u0000\u0000\u04a7\u0001\u0000\u0000\u0000\u0000\u04a9\u0001"+ + "\u0000\u0000\u0000\u0000\u04ab\u0001\u0000\u0000\u0000\u0000\u04ad\u0001"+ + "\u0000\u0000\u0000\u0000\u04af\u0001\u0000\u0000\u0000\u0000\u04b1\u0001"+ + "\u0000\u0000\u0000\u0000\u04b3\u0001\u0000\u0000\u0000\u0000\u04b5\u0001"+ + "\u0000\u0000\u0000\u0000\u04b7\u0001\u0000\u0000\u0000\u0000\u04b9\u0001"+ + "\u0000\u0000\u0000\u0000\u04bb\u0001\u0000\u0000\u0000\u0000\u04bd\u0001"+ + "\u0000\u0000\u0000\u0000\u04bf\u0001\u0000\u0000\u0000\u0000\u04c1\u0001"+ + "\u0000\u0000\u0000\u0000\u04c3\u0001\u0000\u0000\u0000\u0000\u04c5\u0001"+ + "\u0000\u0000\u0000\u0000\u04c7\u0001\u0000\u0000\u0000\u0000\u04c9\u0001"+ + "\u0000\u0000\u0000\u0000\u04cb\u0001\u0000\u0000\u0000\u0000\u04cd\u0001"+ + "\u0000\u0000\u0000\u0000\u04cf\u0001\u0000\u0000\u0000\u0000\u04d1\u0001"+ + "\u0000\u0000\u0000\u0000\u04d3\u0001\u0000\u0000\u0000\u0000\u04d5\u0001"+ + "\u0000\u0000\u0000\u0000\u04d7\u0001\u0000\u0000\u0000\u0000\u04d9\u0001"+ + "\u0000\u0000\u0000\u0000\u04db\u0001\u0000\u0000\u0000\u0000\u04dd\u0001"+ + "\u0000\u0000\u0000\u0000\u04df\u0001\u0000\u0000\u0000\u0000\u04e1\u0001"+ + "\u0000\u0000\u0000\u0000\u04e3\u0001\u0000\u0000\u0000\u0000\u04e5\u0001"+ + "\u0000\u0000\u0000\u0000\u04e7\u0001\u0000\u0000\u0000\u0000\u04e9\u0001"+ + "\u0000\u0000\u0000\u0000\u04eb\u0001\u0000\u0000\u0000\u0000\u04ed\u0001"+ + "\u0000\u0000\u0000\u0000\u04ef\u0001\u0000\u0000\u0000\u0000\u04f1\u0001"+ + "\u0000\u0000\u0000\u0000\u04f3\u0001\u0000\u0000\u0000\u0000\u04f5\u0001"+ + "\u0000\u0000\u0000\u0000\u04f7\u0001\u0000\u0000\u0000\u0000\u04f9\u0001"+ + "\u0000\u0000\u0000\u0000\u04fb\u0001\u0000\u0000\u0000\u0000\u04fd\u0001"+ + "\u0000\u0000\u0000\u0000\u04ff\u0001\u0000\u0000\u0000\u0000\u0501\u0001"+ + "\u0000\u0000\u0000\u0000\u0503\u0001\u0000\u0000\u0000\u0000\u0505\u0001"+ + "\u0000\u0000\u0000\u0000\u0507\u0001\u0000\u0000\u0000\u0000\u050f\u0001"+ + "\u0000\u0000\u0000\u0000\u0511\u0001\u0000\u0000\u0000\u0000\u0513\u0001"+ + "\u0000\u0000\u0000\u0000\u0515\u0001\u0000\u0000\u0000\u0000\u0517\u0001"+ + "\u0000\u0000\u0000\u0000\u0519\u0001\u0000\u0000\u0000\u0000\u051b\u0001"+ + "\u0000\u0000\u0000\u0000\u051d\u0001\u0000\u0000\u0000\u0000\u051f\u0001"+ + "\u0000\u0000\u0000\u0000\u0521\u0001\u0000\u0000\u0000\u0000\u0523\u0001"+ + "\u0000\u0000\u0000\u0000\u0525\u0001\u0000\u0000\u0000\u0000\u0527\u0001"+ + "\u0000\u0000\u0000\u0000\u0529\u0001\u0000\u0000\u0000\u0000\u052d\u0001"+ + "\u0000\u0000\u0000\u0000\u052f\u0001\u0000\u0000\u0000\u0000\u0531\u0001"+ + "\u0000\u0000\u0000\u0000\u0533\u0001\u0000\u0000\u0000\u0000\u0535\u0001"+ + "\u0000\u0000\u0000\u0000\u0537\u0001\u0000\u0000\u0000\u0000\u0539\u0001"+ + "\u0000\u0000\u0000\u0000\u053b\u0001\u0000\u0000\u0000\u0000\u053d\u0001"+ + "\u0000\u0000\u0000\u0000\u053f\u0001\u0000\u0000\u0000\u0000\u0541\u0001"+ + "\u0000\u0000\u0000\u0000\u0545\u0001\u0000\u0000\u0000\u0000\u0547\u0001"+ + "\u0000\u0000\u0000\u0000\u0549\u0001\u0000\u0000\u0000\u0000\u054b\u0001"+ + "\u0000\u0000\u0000\u0000\u054d\u0001\u0000\u0000\u0000\u0000\u054f\u0001"+ + "\u0000\u0000\u0000\u0000\u0551\u0001\u0000\u0000\u0000\u0000\u0553\u0001"+ + "\u0000\u0000\u0000\u0000\u0555\u0001\u0000\u0000\u0000\u0000\u0557\u0001"+ + "\u0000\u0000\u0000\u0001\u0559\u0001\u0000\u0000\u0000\u0001\u055b\u0001"+ + "\u0000\u0000\u0000\u0001\u055f\u0001\u0000\u0000\u0000\u0001\u0561\u0001"+ + "\u0000\u0000\u0000\u0002\u0565\u0001\u0000\u0000\u0000\u0002\u0567\u0001"+ + "\u0000\u0000\u0000\u0002\u0569\u0001\u0000\u0000\u0000\u0003\u056b\u0001"+ + "\u0000\u0000\u0000\u0003\u056d\u0001\u0000\u0000\u0000\u0003\u056f\u0001"+ + "\u0000\u0000\u0000\u0003\u0571\u0001\u0000\u0000\u0000\u0004\u0573\u0001"+ + "\u0000\u0000\u0000\u0004\u0575\u0001\u0000\u0000\u0000\u0005\u0577\u0001"+ + "\u0000\u0000\u0000\u0007\u0579\u0001\u0000\u0000\u0000\t\u057b\u0001\u0000"+ + "\u0000\u0000\u000b\u057d\u0001\u0000\u0000\u0000\r\u057f\u0001\u0000\u0000"+ + "\u0000\u000f\u0581\u0001\u0000\u0000\u0000\u0011\u0583\u0001\u0000\u0000"+ + "\u0000\u0013\u0585\u0001\u0000\u0000\u0000\u0015\u0587\u0001\u0000\u0000"+ + "\u0000\u0017\u0589\u0001\u0000\u0000\u0000\u0019\u058b\u0001\u0000\u0000"+ + "\u0000\u001b\u058d\u0001\u0000\u0000\u0000\u001d\u058f\u0001\u0000\u0000"+ + "\u0000\u001f\u0591\u0001\u0000\u0000\u0000!\u0593\u0001\u0000\u0000\u0000"+ + "#\u0595\u0001\u0000\u0000\u0000%\u0597\u0001\u0000\u0000\u0000\'\u0599"+ + "\u0001\u0000\u0000\u0000)\u059c\u0001\u0000\u0000\u0000+\u059f\u0001\u0000"+ + "\u0000\u0000-\u05a2\u0001\u0000\u0000\u0000/\u05a5\u0001\u0000\u0000\u0000"+ + "1\u05a8\u0001\u0000\u0000\u00003\u05ab\u0001\u0000\u0000\u00005\u05ae"+ + "\u0001\u0000\u0000\u00007\u05b1\u0001\u0000\u0000\u00009\u05b4\u0001\u0000"+ + "\u0000\u0000;\u05b6\u0001\u0000\u0000\u0000=\u05d0\u0001\u0000\u0000\u0000"+ + "?\u05db\u0001\u0000\u0000\u0000A\u05eb\u0001\u0000\u0000\u0000C\u05ed"+ + "\u0001\u0000\u0000\u0000E\u05ef\u0001\u0000\u0000\u0000G\u05f1\u0001\u0000"+ + "\u0000\u0000I\u05f5\u0001\u0000\u0000\u0000K\u05fd\u0001\u0000\u0000\u0000"+ + "M\u0605\u0001\u0000\u0000\u0000O\u0609\u0001\u0000\u0000\u0000Q\u060d"+ + "\u0001\u0000\u0000\u0000S\u0613\u0001\u0000\u0000\u0000U\u0616\u0001\u0000"+ + "\u0000\u0000W\u061a\u0001\u0000\u0000\u0000Y\u0625\u0001\u0000\u0000\u0000"+ + "[\u062a\u0001\u0000\u0000\u0000]\u062f\u0001\u0000\u0000\u0000_\u0634"+ + "\u0001\u0000\u0000\u0000a\u063a\u0001\u0000\u0000\u0000c\u0642\u0001\u0000"+ + "\u0000\u0000e\u0649\u0001\u0000\u0000\u0000g\u0654\u0001\u0000\u0000\u0000"+ + "i\u065b\u0001\u0000\u0000\u0000k\u066b\u0001\u0000\u0000\u0000m\u0678"+ + "\u0001\u0000\u0000\u0000o\u0685\u0001\u0000\u0000\u0000q\u0692\u0001\u0000"+ + "\u0000\u0000s\u06a4\u0001\u0000\u0000\u0000u\u06b1\u0001\u0000\u0000\u0000"+ + "w\u06b9\u0001\u0000\u0000\u0000y\u06c4\u0001\u0000\u0000\u0000{\u06c9"+ + "\u0001\u0000\u0000\u0000}\u06d2\u0001\u0000\u0000\u0000\u007f\u06d5\u0001"+ + "\u0000\u0000\u0000\u0081\u06da\u0001\u0000\u0000\u0000\u0083\u06e1\u0001"+ + "\u0000\u0000\u0000\u0085\u06e7\u0001\u0000\u0000\u0000\u0087\u06ed\u0001"+ + "\u0000\u0000\u0000\u0089\u06f1\u0001\u0000\u0000\u0000\u008b\u06f9\u0001"+ + "\u0000\u0000\u0000\u008d\u06fe\u0001\u0000\u0000\u0000\u008f\u0704\u0001"+ + "\u0000\u0000\u0000\u0091\u070a\u0001\u0000\u0000\u0000\u0093\u0711\u0001"+ + "\u0000\u0000\u0000\u0095\u0714\u0001\u0000\u0000\u0000\u0097\u071e\u0001"+ + "\u0000\u0000\u0000\u0099\u0728\u0001\u0000\u0000\u0000\u009b\u072d\u0001"+ + "\u0000\u0000\u0000\u009d\u0735\u0001\u0000\u0000\u0000\u009f\u073d\u0001"+ + "\u0000\u0000\u0000\u00a1\u0743\u0001\u0000\u0000\u0000\u00a3\u074d\u0001"+ + "\u0000\u0000\u0000\u00a5\u075c\u0001\u0000\u0000\u0000\u00a7\u0760\u0001"+ + "\u0000\u0000\u0000\u00a9\u0765\u0001\u0000\u0000\u0000\u00ab\u076c\u0001"+ + "\u0000\u0000\u0000\u00ad\u076f\u0001\u0000\u0000\u0000\u00af\u0774\u0001"+ + "\u0000\u0000\u0000\u00b1\u0777\u0001\u0000\u0000\u0000\u00b3\u077d\u0001"+ + "\u0000\u0000\u0000\u00b5\u0785\u0001\u0000\u0000\u0000\u00b7\u078d\u0001"+ + "\u0000\u0000\u0000\u00b9\u0798\u0001\u0000\u0000\u0000\u00bb\u07a2\u0001"+ + "\u0000\u0000\u0000\u00bd\u07a9\u0001\u0000\u0000\u0000\u00bf\u07b6\u0001"+ + "\u0000\u0000\u0000\u00c1\u07bb\u0001\u0000\u0000\u0000\u00c3\u07c5\u0001"+ + "\u0000\u0000\u0000\u00c5\u07cb\u0001\u0000\u0000\u0000\u00c7\u07d0\u0001"+ + "\u0000\u0000\u0000\u00c9\u07d3\u0001\u0000\u0000\u0000\u00cb\u07d9\u0001"+ + "\u0000\u0000\u0000\u00cd\u07e0\u0001\u0000\u0000\u0000\u00cf\u07e9\u0001"+ + "\u0000\u0000\u0000\u00d1\u07ee\u0001\u0000\u0000\u0000\u00d3\u07f4\u0001"+ + "\u0000\u0000\u0000\u00d5\u07fb\u0001\u0000\u0000\u0000\u00d7\u0800\u0001"+ + "\u0000\u0000\u0000\u00d9\u0806\u0001\u0000\u0000\u0000\u00db\u080f\u0001"+ + "\u0000\u0000\u0000\u00dd\u0814\u0001\u0000\u0000\u0000\u00df\u081a\u0001"+ + "\u0000\u0000\u0000\u00e1\u0821\u0001\u0000\u0000\u0000\u00e3\u0826\u0001"+ + "\u0000\u0000\u0000\u00e5\u0834\u0001\u0000\u0000\u0000\u00e7\u083b\u0001"+ + "\u0000\u0000\u0000\u00e9\u0845\u0001\u0000\u0000\u0000\u00eb\u0852\u0001"+ + "\u0000\u0000\u0000\u00ed\u0858\u0001\u0000\u0000\u0000\u00ef\u0867\u0001"+ + "\u0000\u0000\u0000\u00f1\u086e\u0001\u0000\u0000\u0000\u00f3\u0873\u0001"+ + "\u0000\u0000\u0000\u00f5\u0879\u0001\u0000\u0000\u0000\u00f7\u087f\u0001"+ + "\u0000\u0000\u0000\u00f9\u0882\u0001\u0000\u0000\u0000\u00fb\u0889\u0001"+ + "\u0000\u0000\u0000\u00fd\u088e\u0001\u0000\u0000\u0000\u00ff\u0893\u0001"+ + "\u0000\u0000\u0000\u0101\u0898\u0001\u0000\u0000\u0000\u0103\u08a0\u0001"+ + "\u0000\u0000\u0000\u0105\u08a8\u0001\u0000\u0000\u0000\u0107\u08ae\u0001"+ + "\u0000\u0000\u0000\u0109\u08b3\u0001\u0000\u0000\u0000\u010b\u08bc\u0001"+ + "\u0000\u0000\u0000\u010d\u08c2\u0001\u0000\u0000\u0000\u010f\u08ca\u0001"+ + "\u0000\u0000\u0000\u0111\u08d2\u0001\u0000\u0000\u0000\u0113\u08d8\u0001"+ + "\u0000\u0000\u0000\u0115\u08e1\u0001\u0000\u0000\u0000\u0117\u08e8\u0001"+ + "\u0000\u0000\u0000\u0119\u08ef\u0001\u0000\u0000\u0000\u011b\u08f3\u0001"+ + "\u0000\u0000\u0000\u011d\u08f9\u0001\u0000\u0000\u0000\u011f\u08ff\u0001"+ + "\u0000\u0000\u0000\u0121\u0909\u0001\u0000\u0000\u0000\u0123\u090e\u0001"+ + "\u0000\u0000\u0000\u0125\u0914\u0001\u0000\u0000\u0000\u0127\u091b\u0001"+ + "\u0000\u0000\u0000\u0129\u0925\u0001\u0000\u0000\u0000\u012b\u0930\u0001"+ + "\u0000\u0000\u0000\u012d\u0933\u0001\u0000\u0000\u0000\u012f\u093d\u0001"+ + "\u0000\u0000\u0000\u0131\u0946\u0001\u0000\u0000\u0000\u0133\u094d\u0001"+ + "\u0000\u0000\u0000\u0135\u0953\u0001\u0000\u0000\u0000\u0137\u0956\u0001"+ + "\u0000\u0000\u0000\u0139\u095c\u0001\u0000\u0000\u0000\u013b\u0963\u0001"+ + "\u0000\u0000\u0000\u013d\u096b\u0001\u0000\u0000\u0000\u013f\u0974\u0001"+ + "\u0000\u0000\u0000\u0141\u097c\u0001\u0000\u0000\u0000\u0143\u0982\u0001"+ + "\u0000\u0000\u0000\u0145\u0992\u0001\u0000\u0000\u0000\u0147\u099d\u0001"+ + "\u0000\u0000\u0000\u0149\u09a3\u0001\u0000\u0000\u0000\u014b\u09a9\u0001"+ + "\u0000\u0000\u0000\u014d\u09b1\u0001\u0000\u0000\u0000\u014f\u09b9\u0001"+ + "\u0000\u0000\u0000\u0151\u09c2\u0001\u0000\u0000\u0000\u0153\u09c9\u0001"+ + "\u0000\u0000\u0000\u0155\u09d3\u0001\u0000\u0000\u0000\u0157\u09e1\u0001"+ + "\u0000\u0000\u0000\u0159\u09ec\u0001\u0000\u0000\u0000\u015b\u09f8\u0001"+ + "\u0000\u0000\u0000\u015d\u0a00\u0001\u0000\u0000\u0000\u015f\u0a09\u0001"+ + "\u0000\u0000\u0000\u0161\u0a14\u0001\u0000\u0000\u0000\u0163\u0a19\u0001"+ + "\u0000\u0000\u0000\u0165\u0a1e\u0001\u0000\u0000\u0000\u0167\u0a22\u0001"+ + "\u0000\u0000\u0000\u0169\u0a29\u0001\u0000\u0000\u0000\u016b\u0a2f\u0001"+ + "\u0000\u0000\u0000\u016d\u0a34\u0001\u0000\u0000\u0000\u016f\u0a3d\u0001"+ + "\u0000\u0000\u0000\u0171\u0a41\u0001\u0000\u0000\u0000\u0173\u0a4c\u0001"+ + "\u0000\u0000\u0000\u0175\u0a54\u0001\u0000\u0000\u0000\u0177\u0a5d\u0001"+ + "\u0000\u0000\u0000\u0179\u0a66\u0001\u0000\u0000\u0000\u017b\u0a6e\u0001"+ + "\u0000\u0000\u0000\u017d\u0a75\u0001\u0000\u0000\u0000\u017f\u0a7f\u0001"+ + "\u0000\u0000\u0000\u0181\u0a8a\u0001\u0000\u0000\u0000\u0183\u0a95\u0001"+ + "\u0000\u0000\u0000\u0185\u0a9d\u0001\u0000\u0000\u0000\u0187\u0aa5\u0001"+ + "\u0000\u0000\u0000\u0189\u0aae\u0001\u0000\u0000\u0000\u018b\u0ab5\u0001"+ + "\u0000\u0000\u0000\u018d\u0abc\u0001\u0000\u0000\u0000\u018f\u0ac1\u0001"+ + "\u0000\u0000\u0000\u0191\u0ac6\u0001\u0000\u0000\u0000\u0193\u0acd\u0001"+ + "\u0000\u0000\u0000\u0195\u0ad6\u0001\u0000\u0000\u0000\u0197\u0ae0\u0001"+ + "\u0000\u0000\u0000\u0199\u0ae5\u0001\u0000\u0000\u0000\u019b\u0aec\u0001"+ + "\u0000\u0000\u0000\u019d\u0af2\u0001\u0000\u0000\u0000\u019f\u0afa\u0001"+ + "\u0000\u0000\u0000\u01a1\u0b04\u0001\u0000\u0000\u0000\u01a3\u0b0e\u0001"+ + "\u0000\u0000\u0000\u01a5\u0b16\u0001\u0000\u0000\u0000\u01a7\u0b1e\u0001"+ + "\u0000\u0000\u0000\u01a9\u0b28\u0001\u0000\u0000\u0000\u01ab\u0b31\u0001"+ + "\u0000\u0000\u0000\u01ad\u0b38\u0001\u0000\u0000\u0000\u01af\u0b3e\u0001"+ + "\u0000\u0000\u0000\u01b1\u0b48\u0001\u0000\u0000\u0000\u01b3\u0b4e\u0001"+ + "\u0000\u0000\u0000\u01b5\u0b56\u0001\u0000\u0000\u0000\u01b7\u0b5f\u0001"+ + "\u0000\u0000\u0000\u01b9\u0b69\u0001\u0000\u0000\u0000\u01bb\u0b70\u0001"+ + "\u0000\u0000\u0000\u01bd\u0b78\u0001\u0000\u0000\u0000\u01bf\u0b80\u0001"+ + "\u0000\u0000\u0000\u01c1\u0b87\u0001\u0000\u0000\u0000\u01c3\u0b8c\u0001"+ + "\u0000\u0000\u0000\u01c5\u0b91\u0001\u0000\u0000\u0000\u01c7\u0b9a\u0001"+ + "\u0000\u0000\u0000\u01c9\u0b9d\u0001\u0000\u0000\u0000\u01cb\u0ba7\u0001"+ + "\u0000\u0000\u0000\u01cd\u0bb1\u0001\u0000\u0000\u0000\u01cf\u0bba\u0001"+ + "\u0000\u0000\u0000\u01d1\u0bc4\u0001\u0000\u0000\u0000\u01d3\u0bce\u0001"+ + "\u0000\u0000\u0000\u01d5\u0bd4\u0001\u0000\u0000\u0000\u01d7\u0bdc\u0001"+ + "\u0000\u0000\u0000\u01d9\u0be4\u0001\u0000\u0000\u0000\u01db\u0bed\u0001"+ + "\u0000\u0000\u0000\u01dd\u0bf4\u0001\u0000\u0000\u0000\u01df\u0c00\u0001"+ + "\u0000\u0000\u0000\u01e1\u0c07\u0001\u0000\u0000\u0000\u01e3\u0c0f\u0001"+ + "\u0000\u0000\u0000\u01e5\u0c17\u0001\u0000\u0000\u0000\u01e7\u0c21\u0001"+ + "\u0000\u0000\u0000\u01e9\u0c25\u0001\u0000\u0000\u0000\u01eb\u0c2b\u0001"+ + "\u0000\u0000\u0000\u01ed\u0c34\u0001\u0000\u0000\u0000\u01ef\u0c3a\u0001"+ + "\u0000\u0000\u0000\u01f1\u0c3f\u0001\u0000\u0000\u0000\u01f3\u0c49\u0001"+ + "\u0000\u0000\u0000\u01f5\u0c4f\u0001\u0000\u0000\u0000\u01f7\u0c56\u0001"+ + "\u0000\u0000\u0000\u01f9\u0c5b\u0001\u0000\u0000\u0000\u01fb\u0c61\u0001"+ + "\u0000\u0000\u0000\u01fd\u0c6a\u0001\u0000\u0000\u0000\u01ff\u0c6f\u0001"+ + "\u0000\u0000\u0000\u0201\u0c77\u0001\u0000\u0000\u0000\u0203\u0c7d\u0001"+ + "\u0000\u0000\u0000\u0205\u0c85\u0001\u0000\u0000\u0000\u0207\u0c92\u0001"+ + "\u0000\u0000\u0000\u0209\u0c9b\u0001\u0000\u0000\u0000\u020b\u0ca1\u0001"+ + "\u0000\u0000\u0000\u020d\u0ca8\u0001\u0000\u0000\u0000\u020f\u0cb1\u0001"+ + "\u0000\u0000\u0000\u0211\u0cb6\u0001\u0000\u0000\u0000\u0213\u0cbc\u0001"+ + "\u0000\u0000\u0000\u0215\u0cc1\u0001\u0000\u0000\u0000\u0217\u0cc6\u0001"+ + "\u0000\u0000\u0000\u0219\u0ccc\u0001\u0000\u0000\u0000\u021b\u0cd1\u0001"+ + "\u0000\u0000\u0000\u021d\u0cd4\u0001\u0000\u0000\u0000\u021f\u0cdc\u0001"+ + "\u0000\u0000\u0000\u0221\u0ce3\u0001\u0000\u0000\u0000\u0223\u0cea\u0001"+ + "\u0000\u0000\u0000\u0225\u0cf0\u0001\u0000\u0000\u0000\u0227\u0cf7\u0001"+ + "\u0000\u0000\u0000\u0229\u0cfa\u0001\u0000\u0000\u0000\u022b\u0cfe\u0001"+ + "\u0000\u0000\u0000\u022d\u0d03\u0001\u0000\u0000\u0000\u022f\u0d0c\u0001"+ + "\u0000\u0000\u0000\u0231\u0d13\u0001\u0000\u0000\u0000\u0233\u0d1b\u0001"+ + "\u0000\u0000\u0000\u0235\u0d21\u0001\u0000\u0000\u0000\u0237\u0d27\u0001"+ + "\u0000\u0000\u0000\u0239\u0d2e\u0001\u0000\u0000\u0000\u023b\u0d36\u0001"+ + "\u0000\u0000\u0000\u023d\u0d40\u0001\u0000\u0000\u0000\u023f\u0d48\u0001"+ + "\u0000\u0000\u0000\u0241\u0d51\u0001\u0000\u0000\u0000\u0243\u0d57\u0001"+ + "\u0000\u0000\u0000\u0245\u0d61\u0001\u0000\u0000\u0000\u0247\u0d69\u0001"+ + "\u0000\u0000\u0000\u0249\u0d72\u0001\u0000\u0000\u0000\u024b\u0d7b\u0001"+ + "\u0000\u0000\u0000\u024d\u0d81\u0001\u0000\u0000\u0000\u024f\u0d8c\u0001"+ + "\u0000\u0000\u0000\u0251\u0d97\u0001\u0000\u0000\u0000\u0253\u0da1\u0001"+ + "\u0000\u0000\u0000\u0255\u0da9\u0001\u0000\u0000\u0000\u0257\u0daf\u0001"+ + "\u0000\u0000\u0000\u0259\u0db5\u0001\u0000\u0000\u0000\u025b\u0dba\u0001"+ + "\u0000\u0000\u0000\u025d\u0dc3\u0001\u0000\u0000\u0000\u025f\u0dcb\u0001"+ + "\u0000\u0000\u0000\u0261\u0dd5\u0001\u0000\u0000\u0000\u0263\u0dd9\u0001"+ + "\u0000\u0000\u0000\u0265\u0de1\u0001\u0000\u0000\u0000\u0267\u0de9\u0001"+ + "\u0000\u0000\u0000\u0269\u0df2\u0001\u0000\u0000\u0000\u026b\u0dfa\u0001"+ + "\u0000\u0000\u0000\u026d\u0e01\u0001\u0000\u0000\u0000\u026f\u0e0c\u0001"+ + "\u0000\u0000\u0000\u0271\u0e14\u0001\u0000\u0000\u0000\u0273\u0e1c\u0001"+ + "\u0000\u0000\u0000\u0275\u0e22\u0001\u0000\u0000\u0000\u0277\u0e2a\u0001"+ + "\u0000\u0000\u0000\u0279\u0e33\u0001\u0000\u0000\u0000\u027b\u0e3b\u0001"+ + "\u0000\u0000\u0000\u027d\u0e42\u0001\u0000\u0000\u0000\u027f\u0e47\u0001"+ + "\u0000\u0000\u0000\u0281\u0e50\u0001\u0000\u0000\u0000\u0283\u0e55\u0001"+ + "\u0000\u0000\u0000\u0285\u0e5a\u0001\u0000\u0000\u0000\u0287\u0e64\u0001"+ + "\u0000\u0000\u0000\u0289\u0e6b\u0001\u0000\u0000\u0000\u028b\u0e72\u0001"+ + "\u0000\u0000\u0000\u028d\u0e79\u0001\u0000\u0000\u0000\u028f\u0e80\u0001"+ + "\u0000\u0000\u0000\u0291\u0e89\u0001\u0000\u0000\u0000\u0293\u0e92\u0001"+ + "\u0000\u0000\u0000\u0295\u0e9c\u0001\u0000\u0000\u0000\u0297\u0ea9\u0001"+ + "\u0000\u0000\u0000\u0299\u0eb0\u0001\u0000\u0000\u0000\u029b\u0eb8\u0001"+ + "\u0000\u0000\u0000\u029d\u0ebc\u0001\u0000\u0000\u0000\u029f\u0ec2\u0001"+ + "\u0000\u0000\u0000\u02a1\u0ec7\u0001\u0000\u0000\u0000\u02a3\u0ece\u0001"+ + "\u0000\u0000\u0000\u02a5\u0ed7\u0001\u0000\u0000\u0000\u02a7\u0ede\u0001"+ + "\u0000\u0000\u0000\u02a9\u0ee9\u0001\u0000\u0000\u0000\u02ab\u0eef\u0001"+ + "\u0000\u0000\u0000\u02ad\u0ef9\u0001\u0000\u0000\u0000\u02af\u0f04\u0001"+ + "\u0000\u0000\u0000\u02b1\u0f0a\u0001\u0000\u0000\u0000\u02b3\u0f11\u0001"+ + "\u0000\u0000\u0000\u02b5\u0f19\u0001\u0000\u0000\u0000\u02b7\u0f20\u0001"+ + "\u0000\u0000\u0000\u02b9\u0f26\u0001\u0000\u0000\u0000\u02bb\u0f2c\u0001"+ + "\u0000\u0000\u0000\u02bd\u0f33\u0001\u0000\u0000\u0000\u02bf\u0f3a\u0001"+ + "\u0000\u0000\u0000\u02c1\u0f45\u0001\u0000\u0000\u0000\u02c3\u0f4a\u0001"+ + "\u0000\u0000\u0000\u02c5\u0f53\u0001\u0000\u0000\u0000\u02c7\u0f5d\u0001"+ + "\u0000\u0000\u0000\u02c9\u0f62\u0001\u0000\u0000\u0000\u02cb\u0f6e\u0001"+ + "\u0000\u0000\u0000\u02cd\u0f76\u0001\u0000\u0000\u0000\u02cf\u0f7f\u0001"+ + "\u0000\u0000\u0000\u02d1\u0f87\u0001\u0000\u0000\u0000\u02d3\u0f8c\u0001"+ + "\u0000\u0000\u0000\u02d5\u0f92\u0001\u0000\u0000\u0000\u02d7\u0f9c\u0001"+ + "\u0000\u0000\u0000\u02d9\u0fa8\u0001\u0000\u0000\u0000\u02db\u0fb4\u0001"+ + "\u0000\u0000\u0000\u02dd\u0fbc\u0001\u0000\u0000\u0000\u02df\u0fc5\u0001"+ + "\u0000\u0000\u0000\u02e1\u0fce\u0001\u0000\u0000\u0000\u02e3\u0fd4\u0001"+ + "\u0000\u0000\u0000\u02e5\u0fdb\u0001\u0000\u0000\u0000\u02e7\u0fe2\u0001"+ + "\u0000\u0000\u0000\u02e9\u0fe8\u0001\u0000\u0000\u0000\u02eb\u0ff1\u0001"+ + "\u0000\u0000\u0000\u02ed\u0ffb\u0001\u0000\u0000\u0000\u02ef\u1003"; private static final String _serializedATNSegment1 = - "\u0000\u0000\u0301\u103b\u0001\u0000\u0000\u0000\u0303\u1040\u0001\u0000"+ - "\u0000\u0000\u0305\u1048\u0001\u0000\u0000\u0000\u0307\u104f\u0001\u0000"+ - "\u0000\u0000\u0309\u1053\u0001\u0000\u0000\u0000\u030b\u105b\u0001\u0000"+ - "\u0000\u0000\u030d\u1060\u0001\u0000\u0000\u0000\u030f\u106a\u0001\u0000"+ - "\u0000\u0000\u0311\u1073\u0001\u0000\u0000\u0000\u0313\u1077\u0001\u0000"+ - "\u0000\u0000\u0315\u107f\u0001\u0000\u0000\u0000\u0317\u1086\u0001\u0000"+ - "\u0000\u0000\u0319\u108e\u0001\u0000\u0000\u0000\u031b\u1094\u0001\u0000"+ - "\u0000\u0000\u031d\u109d\u0001\u0000\u0000\u0000\u031f\u10a3\u0001\u0000"+ - "\u0000\u0000\u0321\u10a7\u0001\u0000\u0000\u0000\u0323\u10af\u0001\u0000"+ - "\u0000\u0000\u0325\u10b8\u0001\u0000\u0000\u0000\u0327\u10be\u0001\u0000"+ - "\u0000\u0000\u0329\u10c7\u0001\u0000\u0000\u0000\u032b\u10cd\u0001\u0000"+ - "\u0000\u0000\u032d\u10d2\u0001\u0000\u0000\u0000\u032f\u10d9\u0001\u0000"+ - "\u0000\u0000\u0331\u10e1\u0001\u0000\u0000\u0000\u0333\u10e9\u0001\u0000"+ - "\u0000\u0000\u0335\u10f2\u0001\u0000\u0000\u0000\u0337\u10fc\u0001\u0000"+ - "\u0000\u0000\u0339\u1101\u0001\u0000\u0000\u0000\u033b\u1105\u0001\u0000"+ - "\u0000\u0000\u033d\u110b\u0001\u0000\u0000\u0000\u033f\u1114\u0001\u0000"+ - "\u0000\u0000\u0341\u111e\u0001\u0000\u0000\u0000\u0343\u1123\u0001\u0000"+ - "\u0000\u0000\u0345\u112d\u0001\u0000\u0000\u0000\u0347\u1133\u0001\u0000"+ - "\u0000\u0000\u0349\u1138\u0001\u0000\u0000\u0000\u034b\u113f\u0001\u0000"+ - "\u0000\u0000\u034d\u1147\u0001\u0000\u0000\u0000\u034f\u1155\u0001\u0000"+ - "\u0000\u0000\u0351\u1160\u0001\u0000\u0000\u0000\u0353\u1167\u0001\u0000"+ - "\u0000\u0000\u0355\u117a\u0001\u0000\u0000\u0000\u0357\u1196\u0001\u0000"+ - "\u0000\u0000\u0359\u11b1\u0001\u0000\u0000\u0000\u035b\u11b7\u0001\u0000"+ - "\u0000\u0000\u035d\u11c4\u0001\u0000\u0000\u0000\u035f\u11ce\u0001\u0000"+ - "\u0000\u0000\u0361\u11d9\u0001\u0000\u0000\u0000\u0363\u11e3\u0001\u0000"+ - "\u0000\u0000\u0365\u11ed\u0001\u0000\u0000\u0000\u0367\u11f6\u0001\u0000"+ - "\u0000\u0000\u0369\u11fc\u0001\u0000\u0000\u0000\u036b\u1204\u0001\u0000"+ - "\u0000\u0000\u036d\u1211\u0001\u0000\u0000\u0000\u036f\u1216\u0001\u0000"+ - "\u0000\u0000\u0371\u121e\u0001\u0000\u0000\u0000\u0373\u1225\u0001\u0000"+ - "\u0000\u0000\u0375\u122c\u0001\u0000\u0000\u0000\u0377\u1237\u0001\u0000"+ - "\u0000\u0000\u0379\u1241\u0001\u0000\u0000\u0000\u037b\u1248\u0001\u0000"+ - "\u0000\u0000\u037d\u124f\u0001\u0000\u0000\u0000\u037f\u1257\u0001\u0000"+ - "\u0000\u0000\u0381\u125f\u0001\u0000\u0000\u0000\u0383\u1269\u0001\u0000"+ - "\u0000\u0000\u0385\u1270\u0001\u0000\u0000\u0000\u0387\u1277\u0001\u0000"+ - "\u0000\u0000\u0389\u127e\u0001\u0000\u0000\u0000\u038b\u128a\u0001\u0000"+ - "\u0000\u0000\u038d\u128e\u0001\u0000\u0000\u0000\u038f\u1292\u0001\u0000"+ - "\u0000\u0000\u0391\u1298\u0001\u0000\u0000\u0000\u0393\u12a5\u0001\u0000"+ - "\u0000\u0000\u0395\u12b1\u0001\u0000\u0000\u0000\u0397\u12b5\u0001\u0000"+ - "\u0000\u0000\u0399\u12b9\u0001\u0000\u0000\u0000\u039b\u12c2\u0001\u0000"+ - "\u0000\u0000\u039d\u12ca\u0001\u0000\u0000\u0000\u039f\u12d5\u0001\u0000"+ - "\u0000\u0000\u03a1\u12db\u0001\u0000\u0000\u0000\u03a3\u12e3\u0001\u0000"+ - "\u0000\u0000\u03a5\u12ec\u0001\u0000\u0000\u0000\u03a7\u12f0\u0001\u0000"+ - "\u0000\u0000\u03a9\u12f8\u0001\u0000\u0000\u0000\u03ab\u1303\u0001\u0000"+ - "\u0000\u0000\u03ad\u130c\u0001\u0000\u0000\u0000\u03af\u1311\u0001\u0000"+ - "\u0000\u0000\u03b1\u1318\u0001\u0000\u0000\u0000\u03b3\u131d\u0001\u0000"+ - "\u0000\u0000\u03b5\u1324\u0001\u0000\u0000\u0000\u03b7\u1329\u0001\u0000"+ - "\u0000\u0000\u03b9\u1332\u0001\u0000\u0000\u0000\u03bb\u1337\u0001\u0000"+ - "\u0000\u0000\u03bd\u1343\u0001\u0000\u0000\u0000\u03bf\u134e\u0001\u0000"+ - "\u0000\u0000\u03c1\u1357\u0001\u0000\u0000\u0000\u03c3\u135f\u0001\u0000"+ - "\u0000\u0000\u03c5\u136d\u0001\u0000\u0000\u0000\u03c7\u1375\u0001\u0000"+ - "\u0000\u0000\u03c9\u1380\u0001\u0000\u0000\u0000\u03cb\u1387\u0001\u0000"+ - "\u0000\u0000\u03cd\u138e\u0001\u0000\u0000\u0000\u03cf\u1395\u0001\u0000"+ - "\u0000\u0000\u03d1\u139c\u0001\u0000\u0000\u0000\u03d3\u13a0\u0001\u0000"+ - "\u0000\u0000\u03d5\u13a4\u0001\u0000\u0000\u0000\u03d7\u13a9\u0001\u0000"+ - "\u0000\u0000\u03d9\u13ae\u0001\u0000\u0000\u0000\u03db\u13b6\u0001\u0000"+ - "\u0000\u0000\u03dd\u13bc\u0001\u0000\u0000\u0000\u03df\u13c6\u0001\u0000"+ - "\u0000\u0000\u03e1\u13cb\u0001\u0000\u0000\u0000\u03e3\u13df\u0001\u0000"+ - "\u0000\u0000\u03e5\u13f1\u0001\u0000\u0000\u0000\u03e7\u13f7\u0001\u0000"+ - "\u0000\u0000\u03e9\u1404\u0001\u0000\u0000\u0000\u03eb\u140f\u0001\u0000"+ - "\u0000\u0000\u03ed\u1415\u0001\u0000\u0000\u0000\u03ef\u141e\u0001\u0000"+ - "\u0000\u0000\u03f1\u1426\u0001\u0000\u0000\u0000\u03f3\u142a\u0001\u0000"+ - "\u0000\u0000\u03f5\u1436\u0001\u0000\u0000\u0000\u03f7\u143e\u0001\u0000"+ - "\u0000\u0000\u03f9\u1444\u0001\u0000\u0000\u0000\u03fb\u144a\u0001\u0000"+ - "\u0000\u0000\u03fd\u1452\u0001\u0000\u0000\u0000\u03ff\u145a\u0001\u0000"+ - "\u0000\u0000\u0401\u1460\u0001\u0000\u0000\u0000\u0403\u1465\u0001\u0000"+ - "\u0000\u0000\u0405\u146c\u0001\u0000\u0000\u0000\u0407\u1472\u0001\u0000"+ - "\u0000\u0000\u0409\u1478\u0001\u0000\u0000\u0000\u040b\u1481\u0001\u0000"+ - "\u0000\u0000\u040d\u1487\u0001\u0000\u0000\u0000\u040f\u148b\u0001\u0000"+ - "\u0000\u0000\u0411\u1490\u0001\u0000\u0000\u0000\u0413\u1497\u0001\u0000"+ - "\u0000\u0000\u0415\u149f\u0001\u0000\u0000\u0000\u0417\u14a9\u0001\u0000"+ - "\u0000\u0000\u0419\u14b0\u0001\u0000\u0000\u0000\u041b\u14b5\u0001\u0000"+ - "\u0000\u0000\u041d\u14ba\u0001\u0000\u0000\u0000\u041f\u14be\u0001\u0000"+ - "\u0000\u0000\u0421\u14c3\u0001\u0000\u0000\u0000\u0423\u14c8\u0001\u0000"+ - "\u0000\u0000\u0425\u14d0\u0001\u0000\u0000\u0000\u0427\u14d8\u0001\u0000"+ - "\u0000\u0000\u0429\u14dc\u0001\u0000\u0000\u0000\u042b\u14e0\u0001\u0000"+ - "\u0000\u0000\u042d\u14ea\u0001\u0000\u0000\u0000\u042f\u14f0\u0001\u0000"+ - "\u0000\u0000\u0431\u14f4\u0001\u0000\u0000\u0000\u0433\u14f8\u0001\u0000"+ - "\u0000\u0000\u0435\u14fb\u0001\u0000\u0000\u0000\u0437\u1501\u0001\u0000"+ - "\u0000\u0000\u0439\u150b\u0001\u0000\u0000\u0000\u043b\u150f\u0001\u0000"+ - "\u0000\u0000\u043d\u1512\u0001\u0000\u0000\u0000\u043f\u1518\u0001\u0000"+ - "\u0000\u0000\u0441\u1520\u0001\u0000\u0000\u0000\u0443\u1526\u0001\u0000"+ - "\u0000\u0000\u0445\u152c\u0001\u0000\u0000\u0000\u0447\u1531\u0001\u0000"+ - "\u0000\u0000\u0449\u1536\u0001\u0000\u0000\u0000\u044b\u1541\u0001\u0000"+ - "\u0000\u0000\u044d\u1547\u0001\u0000\u0000\u0000\u044f\u1554\u0001\u0000"+ - "\u0000\u0000\u0451\u155b\u0001\u0000\u0000\u0000\u0453\u1563\u0001\u0000"+ - "\u0000\u0000\u0455\u1568\u0001\u0000\u0000\u0000\u0457\u156e\u0001\u0000"+ - "\u0000\u0000\u0459\u1573\u0001\u0000\u0000\u0000\u045b\u1579\u0001\u0000"+ - "\u0000\u0000\u045d\u157e\u0001\u0000\u0000\u0000\u045f\u1584\u0001\u0000"+ - "\u0000\u0000\u0461\u158a\u0001\u0000\u0000\u0000\u0463\u1591\u0001\u0000"+ - "\u0000\u0000\u0465\u1595\u0001\u0000\u0000\u0000\u0467\u159a\u0001\u0000"+ - "\u0000\u0000\u0469\u159e\u0001\u0000\u0000\u0000\u046b\u15a3\u0001\u0000"+ - "\u0000\u0000\u046d\u15a7\u0001\u0000\u0000\u0000\u046f\u15ac\u0001\u0000"+ - "\u0000\u0000\u0471\u15b0\u0001\u0000\u0000\u0000\u0473\u15b5\u0001\u0000"+ - "\u0000\u0000\u0475\u15ba\u0001\u0000\u0000\u0000\u0477\u15bf\u0001\u0000"+ - "\u0000\u0000\u0479\u15c4\u0001\u0000\u0000\u0000\u047b\u15ca\u0001\u0000"+ - "\u0000\u0000\u047d\u15d0\u0001\u0000\u0000\u0000\u047f\u15d6\u0001\u0000"+ - "\u0000\u0000\u0481\u15e1\u0001\u0000\u0000\u0000\u0483\u15ed\u0001\u0000"+ - "\u0000\u0000\u0485\u15fe\u0001\u0000\u0000\u0000\u0487\u1604\u0001\u0000"+ - "\u0000\u0000\u0489\u1611\u0001\u0000\u0000\u0000\u048b\u1617\u0001\u0000"+ - "\u0000\u0000\u048d\u161d\u0001\u0000\u0000\u0000\u048f\u1623\u0001\u0000"+ - "\u0000\u0000\u0491\u1627\u0001\u0000\u0000\u0000\u0493\u162e\u0001\u0000"+ - "\u0000\u0000\u0495\u1638\u0001\u0000\u0000\u0000\u0497\u163f\u0001\u0000"+ - "\u0000\u0000\u0499\u1647\u0001\u0000\u0000\u0000\u049b\u164e\u0001\u0000"+ - "\u0000\u0000\u049d\u1653\u0001\u0000\u0000\u0000\u049f\u1659\u0001\u0000"+ - "\u0000\u0000\u04a1\u165d\u0001\u0000\u0000\u0000\u04a3\u1669\u0001\u0000"+ - "\u0000\u0000\u04a5\u167c\u0001\u0000\u0000\u0000\u04a7\u1688\u0001\u0000"+ - "\u0000\u0000\u04a9\u1696\u0001\u0000\u0000\u0000\u04ab\u16a5\u0001\u0000"+ - "\u0000\u0000\u04ad\u16b2\u0001\u0000\u0000\u0000\u04af\u16bf\u0001\u0000"+ - "\u0000\u0000\u04b1\u16cb\u0001\u0000\u0000\u0000\u04b3\u16d8\u0001\u0000"+ - "\u0000\u0000\u04b5\u16e7\u0001\u0000\u0000\u0000\u04b7\u16f6\u0001\u0000"+ - "\u0000\u0000\u04b9\u170c\u0001\u0000\u0000\u0000\u04bb\u1722\u0001\u0000"+ - "\u0000\u0000\u04bd\u1730\u0001\u0000\u0000\u0000\u04bf\u1737\u0001\u0000"+ - "\u0000\u0000\u04c1\u173c\u0001\u0000\u0000\u0000\u04c3\u1742\u0001\u0000"+ - "\u0000\u0000\u04c5\u174d\u0001\u0000\u0000\u0000\u04c7\u1759\u0001\u0000"+ - "\u0000\u0000\u04c9\u1769\u0001\u0000\u0000\u0000\u04cb\u1779\u0001\u0000"+ - "\u0000\u0000\u04cd\u1780\u0001\u0000\u0000\u0000\u04cf\u1787\u0001\u0000"+ - "\u0000\u0000\u04d1\u1790\u0001\u0000\u0000\u0000\u04d3\u1797\u0001\u0000"+ - "\u0000\u0000\u04d5\u17a1\u0001\u0000\u0000\u0000\u04d7\u17a8\u0001\u0000"+ - "\u0000\u0000\u04d9\u17ac\u0001\u0000\u0000\u0000\u04db\u17bc\u0001\u0000"+ - "\u0000\u0000\u04dd\u17c5\u0001\u0000\u0000\u0000\u04df\u17cf\u0001\u0000"+ - "\u0000\u0000\u04e1\u17da\u0001\u0000\u0000\u0000\u04e3\u17e3\u0001\u0000"+ - "\u0000\u0000\u04e5\u17f0\u0001\u0000\u0000\u0000\u04e7\u17fe\u0001\u0000"+ - "\u0000\u0000\u04e9\u180f\u0001\u0000\u0000\u0000\u04eb\u1819\u0001\u0000"+ - "\u0000\u0000\u04ed\u1827\u0001\u0000\u0000\u0000\u04ef\u1831\u0001\u0000"+ - "\u0000\u0000\u04f1\u1840\u0001\u0000\u0000\u0000\u04f3\u1851\u0001\u0000"+ - "\u0000\u0000\u04f5\u1855\u0001\u0000\u0000\u0000\u04f7\u1869\u0001\u0000"+ - "\u0000\u0000\u04f9\u1873\u0001\u0000\u0000\u0000\u04fb\u1889\u0001\u0000"+ - "\u0000\u0000\u04fd\u1896\u0001\u0000\u0000\u0000\u04ff\u189e\u0001\u0000"+ - "\u0000\u0000\u0501\u18a6\u0001\u0000\u0000\u0000\u0503\u18b0\u0001\u0000"+ - "\u0000\u0000\u0505\u18bd\u0001\u0000\u0000\u0000\u0507\u18c1\u0001\u0000"+ - "\u0000\u0000\u0509\u18c5\u0001\u0000\u0000\u0000\u050b\u18c7\u0001\u0000"+ - "\u0000\u0000\u050d\u18ca\u0001\u0000\u0000\u0000\u050f\u18d3\u0001\u0000"+ - "\u0000\u0000\u0511\u18d6\u0001\u0000\u0000\u0000\u0513\u18df\u0001\u0000"+ - "\u0000\u0000\u0515\u18e3\u0001\u0000\u0000\u0000\u0517\u18e7\u0001\u0000"+ - "\u0000\u0000\u0519\u18eb\u0001\u0000\u0000\u0000\u051b\u18ef\u0001\u0000"+ - "\u0000\u0000\u051d\u18f2\u0001\u0000\u0000\u0000\u051f\u18fb\u0001\u0000"+ - "\u0000\u0000\u0521\u1901\u0001\u0000\u0000\u0000\u0523\u1904\u0001\u0000"+ - "\u0000\u0000\u0525\u1908\u0001\u0000\u0000\u0000\u0527\u1911\u0001\u0000"+ - "\u0000\u0000\u0529\u1918\u0001\u0000\u0000\u0000\u052b\u191b\u0001\u0000"+ - "\u0000\u0000\u052d\u1923\u0001\u0000\u0000\u0000\u052f\u1926\u0001\u0000"+ - "\u0000\u0000\u0531\u1929\u0001\u0000\u0000\u0000\u0533\u192c\u0001\u0000"+ - "\u0000\u0000\u0535\u1934\u0001\u0000\u0000\u0000\u0537\u1937\u0001\u0000"+ - "\u0000\u0000\u0539\u193a\u0001\u0000\u0000\u0000\u053b\u193c\u0001\u0000"+ - "\u0000\u0000\u053d\u195e\u0001\u0000\u0000\u0000\u053f\u1961\u0001\u0000"+ - "\u0000\u0000\u0541\u1965\u0001\u0000\u0000\u0000\u0543\u196d\u0001\u0000"+ - "\u0000\u0000\u0545\u197d\u0001\u0000\u0000\u0000\u0547\u1988\u0001\u0000"+ - "\u0000\u0000\u0549\u198c\u0001\u0000\u0000\u0000\u054b\u1997\u0001\u0000"+ - "\u0000\u0000\u054d\u19be\u0001\u0000\u0000\u0000\u054f\u19f1\u0001\u0000"+ - "\u0000\u0000\u0551\u1a09\u0001\u0000\u0000\u0000\u0553\u1a0c\u0001\u0000"+ - "\u0000\u0000\u0555\u1a0e\u0001\u0000\u0000\u0000\u0557\u1a13\u0001\u0000"+ - "\u0000\u0000\u0559\u1a32\u0001\u0000\u0000\u0000\u055b\u1a35\u0001\u0000"+ - "\u0000\u0000\u055d\u1a3a\u0001\u0000\u0000\u0000\u055f\u1a47\u0001\u0000"+ - "\u0000\u0000\u0561\u1a4a\u0001\u0000\u0000\u0000\u0563\u1a4f\u0001\u0000"+ - "\u0000\u0000\u0565\u1a55\u0001\u0000\u0000\u0000\u0567\u1a5a\u0001\u0000"+ - "\u0000\u0000\u0569\u1a5f\u0001\u0000\u0000\u0000\u056b\u1a64\u0001\u0000"+ - "\u0000\u0000\u056d\u1a69\u0001\u0000\u0000\u0000\u056f\u1a7a\u0001\u0000"+ - "\u0000\u0000\u0571\u1a7c\u0001\u0000\u0000\u0000\u0573\u0574\u0005$\u0000"+ - "\u0000\u0574\u0006\u0001\u0000\u0000\u0000\u0575\u0576\u0005(\u0000\u0000"+ - "\u0576\b\u0001\u0000\u0000\u0000\u0577\u0578\u0005)\u0000\u0000\u0578"+ - "\n\u0001\u0000\u0000\u0000\u0579\u057a\u0005[\u0000\u0000\u057a\f\u0001"+ - "\u0000\u0000\u0000\u057b\u057c\u0005]\u0000\u0000\u057c\u000e\u0001\u0000"+ - "\u0000\u0000\u057d\u057e\u0005,\u0000\u0000\u057e\u0010\u0001\u0000\u0000"+ - "\u0000\u057f\u0580\u0005;\u0000\u0000\u0580\u0012\u0001\u0000\u0000\u0000"+ - "\u0581\u0582\u0005:\u0000\u0000\u0582\u0014\u0001\u0000\u0000\u0000\u0583"+ - "\u0584\u0005*\u0000\u0000\u0584\u0016\u0001\u0000\u0000\u0000\u0585\u0586"+ - "\u0005=\u0000\u0000\u0586\u0018\u0001\u0000\u0000\u0000\u0587\u0588\u0005"+ - ".\u0000\u0000\u0588\u001a\u0001\u0000\u0000\u0000\u0589\u058a\u0005+\u0000"+ - "\u0000\u058a\u001c\u0001\u0000\u0000\u0000\u058b\u058c\u0005-\u0000\u0000"+ - "\u058c\u001e\u0001\u0000\u0000\u0000\u058d\u058e\u0005/\u0000\u0000\u058e"+ - " \u0001\u0000\u0000\u0000\u058f\u0590\u0005^\u0000\u0000\u0590\"\u0001"+ - "\u0000\u0000\u0000\u0591\u0592\u0005<\u0000\u0000\u0592$\u0001\u0000\u0000"+ - "\u0000\u0593\u0594\u0005>\u0000\u0000\u0594&\u0001\u0000\u0000\u0000\u0595"+ - "\u0596\u0005<\u0000\u0000\u0596\u0597\u0005<\u0000\u0000\u0597(\u0001"+ - "\u0000\u0000\u0000\u0598\u0599\u0005>\u0000\u0000\u0599\u059a\u0005>\u0000"+ - "\u0000\u059a*\u0001\u0000\u0000\u0000\u059b\u059c\u0005:\u0000\u0000\u059c"+ - "\u059d\u0005=\u0000\u0000\u059d,\u0001\u0000\u0000\u0000\u059e\u059f\u0005"+ - "<\u0000\u0000\u059f\u05a0\u0005=\u0000\u0000\u05a0.\u0001\u0000\u0000"+ - "\u0000\u05a1\u05a2\u0005=\u0000\u0000\u05a2\u05a3\u0005>\u0000\u0000\u05a3"+ - "0\u0001\u0000\u0000\u0000\u05a4\u05a5\u0005>\u0000\u0000\u05a5\u05a6\u0005"+ - "=\u0000\u0000\u05a62\u0001\u0000\u0000\u0000\u05a7\u05a8\u0005.\u0000"+ - "\u0000\u05a8\u05a9\u0005.\u0000\u0000\u05a94\u0001\u0000\u0000\u0000\u05aa"+ - "\u05ab\u0005<\u0000\u0000\u05ab\u05ac\u0005>\u0000\u0000\u05ac6\u0001"+ - "\u0000\u0000\u0000\u05ad\u05ae\u0005:\u0000\u0000\u05ae\u05af\u0005:\u0000"+ - "\u0000\u05af8\u0001\u0000\u0000\u0000\u05b0\u05b1\u0005%\u0000\u0000\u05b1"+ - ":\u0001\u0000\u0000\u0000\u05b2\u05b4\u0005$\u0000\u0000\u05b3\u05b5\u0007"+ - "\u0000\u0000\u0000\u05b4\u05b3\u0001\u0000\u0000\u0000\u05b5\u05b6\u0001"+ - "\u0000\u0000\u0000\u05b6\u05b4\u0001\u0000\u0000\u0000\u05b6\u05b7\u0001"+ - "\u0000\u0000\u0000\u05b7<\u0001\u0000\u0000\u0000\u05b8\u05c8\u0003A\u001e"+ - "\u0000\u05b9\u05bd\u0005+\u0000\u0000\u05ba\u05bb\u0005-\u0000\u0000\u05bb"+ - "\u05bd\u0004\u001c\u0000\u0000\u05bc\u05b9\u0001\u0000\u0000\u0000\u05bc"+ - "\u05ba\u0001\u0000\u0000\u0000\u05bd\u05be\u0001\u0000\u0000\u0000\u05be"+ - "\u05bc\u0001\u0000\u0000\u0000\u05be\u05bf\u0001\u0000\u0000\u0000\u05bf"+ - "\u05c3\u0001\u0000\u0000\u0000\u05c0\u05c4\u0003A\u001e\u0000\u05c1\u05c2"+ - "\u0005/\u0000\u0000\u05c2\u05c4\u0004\u001c\u0001\u0000\u05c3\u05c0\u0001"+ - "\u0000\u0000\u0000\u05c3\u05c1\u0001\u0000\u0000\u0000\u05c4\u05c8\u0001"+ - "\u0000\u0000\u0000\u05c5\u05c6\u0005/\u0000\u0000\u05c6\u05c8\u0004\u001c"+ - "\u0002\u0000\u05c7\u05b8\u0001\u0000\u0000\u0000\u05c7\u05bc\u0001\u0000"+ - "\u0000\u0000\u05c7\u05c5\u0001\u0000\u0000\u0000\u05c8\u05c9\u0001\u0000"+ - "\u0000\u0000\u05c9\u05c7\u0001\u0000\u0000\u0000\u05c9\u05ca\u0001\u0000"+ - "\u0000\u0000\u05ca\u05cd\u0001\u0000\u0000\u0000\u05cb\u05cd\u0007\u0001"+ - "\u0000\u0000\u05cc\u05c7\u0001\u0000\u0000\u0000\u05cc\u05cb\u0001\u0000"+ - "\u0000\u0000\u05cd\u05ce\u0001\u0000\u0000\u0000\u05ce\u05cf\u0006\u001c"+ - "\u0000\u0000\u05cf>\u0001\u0000\u0000\u0000\u05d0\u05d6\u0003C\u001f\u0000"+ - "\u05d1\u05d2\u0005-\u0000\u0000\u05d2\u05d6\u0004\u001d\u0003\u0000\u05d3"+ - "\u05d4\u0005/\u0000\u0000\u05d4\u05d6\u0004\u001d\u0004\u0000\u05d5\u05d0"+ - "\u0001\u0000\u0000\u0000\u05d5\u05d1\u0001\u0000\u0000\u0000\u05d5\u05d3"+ - "\u0001\u0000\u0000\u0000\u05d6\u05d9\u0001\u0000\u0000\u0000\u05d7\u05d5"+ - "\u0001\u0000\u0000\u0000\u05d7\u05d8\u0001\u0000\u0000\u0000\u05d8\u05da"+ - "\u0001\u0000\u0000\u0000\u05d9\u05d7\u0001\u0000\u0000\u0000\u05da\u05dc"+ - "\u0003E \u0000\u05db\u05dd\u0003=\u001c\u0000\u05dc\u05db\u0001\u0000"+ - "\u0000\u0000\u05dc\u05dd\u0001\u0000\u0000\u0000\u05dd\u05e1\u0001\u0000"+ - "\u0000\u0000\u05de\u05e2\u0005+\u0000\u0000\u05df\u05e0\u0005-\u0000\u0000"+ - "\u05e0\u05e2\u0004\u001d\u0005\u0000\u05e1\u05de\u0001\u0000\u0000\u0000"+ - "\u05e1\u05df\u0001\u0000\u0000\u0000\u05e2\u05e3\u0001\u0000\u0000\u0000"+ - "\u05e3\u05e1\u0001\u0000\u0000\u0000\u05e3\u05e4\u0001\u0000\u0000\u0000"+ - "\u05e4\u05e5\u0001\u0000\u0000\u0000\u05e5\u05e6\u0006\u001d\u0001\u0000"+ - "\u05e6@\u0001\u0000\u0000\u0000\u05e7\u05e8\u0007\u0002\u0000\u0000\u05e8"+ - "B\u0001\u0000\u0000\u0000\u05e9\u05ea\u0007\u0003\u0000\u0000\u05eaD\u0001"+ - "\u0000\u0000\u0000\u05eb\u05ec\u0007\u0004\u0000\u0000\u05ecF\u0001\u0000"+ - "\u0000\u0000\u05ed\u05ee\u0007\u0005\u0000\u0000\u05ee\u05ef\u0007\u0006"+ - "\u0000\u0000\u05ef\u05f0\u0007\u0006\u0000\u0000\u05f0H\u0001\u0000\u0000"+ - "\u0000\u05f1\u05f2\u0007\u0005\u0000\u0000\u05f2\u05f3\u0007\u0007\u0000"+ - "\u0000\u05f3\u05f4\u0007\u0005\u0000\u0000\u05f4\u05f5\u0007\u0006\u0000"+ - "\u0000\u05f5\u05f6\u0007\b\u0000\u0000\u05f6\u05f7\u0007\t\u0000\u0000"+ - "\u05f7\u05f8\u0007\n\u0000\u0000\u05f8J\u0001\u0000\u0000\u0000\u05f9"+ - "\u05fa\u0007\u0005\u0000\u0000\u05fa\u05fb\u0007\u0007\u0000\u0000\u05fb"+ - "\u05fc\u0007\u0005\u0000\u0000\u05fc\u05fd\u0007\u0006\u0000\u0000\u05fd"+ - "\u05fe\u0007\b\u0000\u0000\u05fe\u05ff\u0007\u000b\u0000\u0000\u05ff\u0600"+ - "\u0007\n\u0000\u0000\u0600L\u0001\u0000\u0000\u0000\u0601\u0602\u0007"+ - "\u0005\u0000\u0000\u0602\u0603\u0007\u0007\u0000\u0000\u0603\u0604\u0007"+ - "\f\u0000\u0000\u0604N\u0001\u0000\u0000\u0000\u0605\u0606\u0007\u0005"+ - "\u0000\u0000\u0606\u0607\u0007\u0007\u0000\u0000\u0607\u0608\u0007\b\u0000"+ - "\u0000\u0608P\u0001\u0000\u0000\u0000\u0609\u060a\u0007\u0005\u0000\u0000"+ - "\u060a\u060b\u0007\r\u0000\u0000\u060b\u060c\u0007\r\u0000\u0000\u060c"+ - "\u060d\u0007\u0005\u0000\u0000\u060d\u060e\u0007\b\u0000\u0000\u060eR"+ - "\u0001\u0000\u0000\u0000\u060f\u0610\u0007\u0005\u0000\u0000\u0610\u0611"+ - "\u0007\t\u0000\u0000\u0611T\u0001\u0000\u0000\u0000\u0612\u0613\u0007"+ - "\u0005\u0000\u0000\u0613\u0614\u0007\t\u0000\u0000\u0614\u0615\u0007\u000e"+ - "\u0000\u0000\u0615V\u0001\u0000\u0000\u0000\u0616\u0617\u0007\u0005\u0000"+ - "\u0000\u0617\u0618\u0007\t\u0000\u0000\u0618\u0619\u0007\b\u0000\u0000"+ - "\u0619\u061a\u0007\u000f\u0000\u0000\u061a\u061b\u0007\u000f\u0000\u0000"+ - "\u061b\u061c\u0007\n\u0000\u0000\u061c\u061d\u0007\u0010\u0000\u0000\u061d"+ - "\u061e\u0007\r\u0000\u0000\u061e\u061f\u0007\u0011\u0000\u0000\u061f\u0620"+ - "\u0007\u000e\u0000\u0000\u0620X\u0001\u0000\u0000\u0000\u0621\u0622\u0007"+ - "\u0012\u0000\u0000\u0622\u0623\u0007\u0013\u0000\u0000\u0623\u0624\u0007"+ - "\u0010\u0000\u0000\u0624\u0625\u0007\u0014\u0000\u0000\u0625Z\u0001\u0000"+ - "\u0000\u0000\u0626\u0627\u0007\u000e\u0000\u0000\u0627\u0628\u0007\u0005"+ - "\u0000\u0000\u0628\u0629\u0007\t\u0000\u0000\u0629\u062a\u0007\n\u0000"+ - "\u0000\u062a\\\u0001\u0000\u0000\u0000\u062b\u062c\u0007\u000e\u0000\u0000"+ - "\u062c\u062d\u0007\u0005\u0000\u0000\u062d\u062e\u0007\t\u0000\u0000\u062e"+ - "\u062f\u0007\u0010\u0000\u0000\u062f^\u0001\u0000\u0000\u0000\u0630\u0631"+ - "\u0007\u000e\u0000\u0000\u0631\u0632\u0007\u0014\u0000\u0000\u0632\u0633"+ - "\u0007\n\u0000\u0000\u0633\u0634\u0007\u000e\u0000\u0000\u0634\u0635\u0007"+ - "\u0015\u0000\u0000\u0635`\u0001\u0000\u0000\u0000\u0636\u0637\u0007\u000e"+ - "\u0000\u0000\u0637\u0638\u0007\u0013\u0000\u0000\u0638\u0639\u0007\u0006"+ - "\u0000\u0000\u0639\u063a\u0007\u0006\u0000\u0000\u063a\u063b\u0007\u0005"+ - "\u0000\u0000\u063b\u063c\u0007\u0010\u0000\u0000\u063c\u063d\u0007\n\u0000"+ - "\u0000\u063db\u0001\u0000\u0000\u0000\u063e\u063f\u0007\u000e\u0000\u0000"+ - "\u063f\u0640\u0007\u0013\u0000\u0000\u0640\u0641\u0007\u0006\u0000\u0000"+ - "\u0641\u0642\u0007\u0016\u0000\u0000\u0642\u0643\u0007\u000f\u0000\u0000"+ - "\u0643\u0644\u0007\u0007\u0000\u0000\u0644d\u0001\u0000\u0000\u0000\u0645"+ - "\u0646\u0007\u000e\u0000\u0000\u0646\u0647\u0007\u0013\u0000\u0000\u0647"+ - "\u0648\u0007\u0007\u0000\u0000\u0648\u0649\u0007\t\u0000\u0000\u0649\u064a"+ - "\u0007\u0010\u0000\u0000\u064a\u064b\u0007\r\u0000\u0000\u064b\u064c\u0007"+ - "\u0005\u0000\u0000\u064c\u064d\u0007\u0011\u0000\u0000\u064d\u064e\u0007"+ - "\u0007\u0000\u0000\u064e\u064f\u0007\u0010\u0000\u0000\u064ff\u0001\u0000"+ - "\u0000\u0000\u0650\u0651\u0007\u000e\u0000\u0000\u0651\u0652\u0007\r\u0000"+ - "\u0000\u0652\u0653\u0007\n\u0000\u0000\u0653\u0654\u0007\u0005\u0000\u0000"+ - "\u0654\u0655\u0007\u0010\u0000\u0000\u0655\u0656\u0007\n\u0000\u0000\u0656"+ - "h\u0001\u0000\u0000\u0000\u0657\u0658\u0007\u000e\u0000\u0000\u0658\u0659"+ - "\u0007\u0016\u0000\u0000\u0659\u065a\u0007\r\u0000\u0000\u065a\u065b\u0007"+ - "\r\u0000\u0000\u065b\u065c\u0007\n\u0000\u0000\u065c\u065d\u0007\u0007"+ - "\u0000\u0000\u065d\u065e\u0007\u0010\u0000\u0000\u065e\u065f\u0005_\u0000"+ - "\u0000\u065f\u0660\u0007\u000e\u0000\u0000\u0660\u0661\u0007\u0005\u0000"+ - "\u0000\u0661\u0662\u0007\u0010\u0000\u0000\u0662\u0663\u0007\u0005\u0000"+ - "\u0000\u0663\u0664\u0007\u0006\u0000\u0000\u0664\u0665\u0007\u0013\u0000"+ - "\u0000\u0665\u0666\u0007\u0017\u0000\u0000\u0666j\u0001\u0000\u0000\u0000"+ - "\u0667\u0668\u0007\u000e\u0000\u0000\u0668\u0669\u0007\u0016\u0000\u0000"+ - "\u0669\u066a\u0007\r\u0000\u0000\u066a\u066b\u0007\r\u0000\u0000\u066b"+ - "\u066c\u0007\n\u0000\u0000\u066c\u066d\u0007\u0007\u0000\u0000\u066d\u066e"+ - "\u0007\u0010\u0000\u0000\u066e\u066f\u0005_\u0000\u0000\u066f\u0670\u0007"+ - "\f\u0000\u0000\u0670\u0671\u0007\u0005\u0000\u0000\u0671\u0672\u0007\u0010"+ - "\u0000\u0000\u0672\u0673\u0007\n\u0000\u0000\u0673l\u0001\u0000\u0000"+ - "\u0000\u0674\u0675\u0007\u000e\u0000\u0000\u0675\u0676\u0007\u0016\u0000"+ - "\u0000\u0676\u0677\u0007\r\u0000\u0000\u0677\u0678\u0007\r\u0000\u0000"+ - "\u0678\u0679\u0007\n\u0000\u0000\u0679\u067a\u0007\u0007\u0000\u0000\u067a"+ - "\u067b\u0007\u0010\u0000\u0000\u067b\u067c\u0005_\u0000\u0000\u067c\u067d"+ - "\u0007\r\u0000\u0000\u067d\u067e\u0007\u0013\u0000\u0000\u067e\u067f\u0007"+ - "\u0006\u0000\u0000\u067f\u0680\u0007\n\u0000\u0000\u0680n\u0001\u0000"+ - "\u0000\u0000\u0681\u0682\u0007\u000e\u0000\u0000\u0682\u0683\u0007\u0016"+ - "\u0000\u0000\u0683\u0684\u0007\r\u0000\u0000\u0684\u0685\u0007\r\u0000"+ - "\u0000\u0685\u0686\u0007\n\u0000\u0000\u0686\u0687\u0007\u0007\u0000\u0000"+ - "\u0687\u0688\u0007\u0010\u0000\u0000\u0688\u0689\u0005_\u0000\u0000\u0689"+ - "\u068a\u0007\u0010\u0000\u0000\u068a\u068b\u0007\u0011\u0000\u0000\u068b"+ - "\u068c\u0007\u000f\u0000\u0000\u068c\u068d\u0007\n\u0000\u0000\u068dp"+ - "\u0001\u0000\u0000\u0000\u068e\u068f\u0007\u000e\u0000\u0000\u068f\u0690"+ - "\u0007\u0016\u0000\u0000\u0690\u0691\u0007\r\u0000\u0000\u0691\u0692\u0007"+ - "\r\u0000\u0000\u0692\u0693\u0007\n\u0000\u0000\u0693\u0694\u0007\u0007"+ - "\u0000\u0000\u0694\u0695\u0007\u0010\u0000\u0000\u0695\u0696\u0005_\u0000"+ - "\u0000\u0696\u0697\u0007\u0010\u0000\u0000\u0697\u0698\u0007\u0011\u0000"+ - "\u0000\u0698\u0699\u0007\u000f\u0000\u0000\u0699\u069a\u0007\n\u0000\u0000"+ - "\u069a\u069b\u0007\t\u0000\u0000\u069b\u069c\u0007\u0010\u0000\u0000\u069c"+ - "\u069d\u0007\u0005\u0000\u0000\u069d\u069e\u0007\u000f\u0000\u0000\u069e"+ - "\u069f\u0007\u0018\u0000\u0000\u069fr\u0001\u0000\u0000\u0000\u06a0\u06a1"+ - "\u0007\u000e\u0000\u0000\u06a1\u06a2\u0007\u0016\u0000\u0000\u06a2\u06a3"+ - "\u0007\r\u0000\u0000\u06a3\u06a4\u0007\r\u0000\u0000\u06a4\u06a5\u0007"+ - "\n\u0000\u0000\u06a5\u06a6\u0007\u0007\u0000\u0000\u06a6\u06a7\u0007\u0010"+ - "\u0000\u0000\u06a7\u06a8\u0005_\u0000\u0000\u06a8\u06a9\u0007\u0016\u0000"+ - "\u0000\u06a9\u06aa\u0007\t\u0000\u0000\u06aa\u06ab\u0007\n\u0000\u0000"+ - "\u06ab\u06ac\u0007\r\u0000\u0000\u06act\u0001\u0000\u0000\u0000\u06ad"+ - "\u06ae\u0007\f\u0000\u0000\u06ae\u06af\u0007\n\u0000\u0000\u06af\u06b0"+ - "\u0007\u0019\u0000\u0000\u06b0\u06b1\u0007\u0005\u0000\u0000\u06b1\u06b2"+ - "\u0007\u0016\u0000\u0000\u06b2\u06b3\u0007\u0006\u0000\u0000\u06b3\u06b4"+ - "\u0007\u0010\u0000\u0000\u06b4v\u0001\u0000\u0000\u0000\u06b5\u06b6\u0007"+ - "\f\u0000\u0000\u06b6\u06b7\u0007\n\u0000\u0000\u06b7\u06b8\u0007\u0019"+ - "\u0000\u0000\u06b8\u06b9\u0007\n\u0000\u0000\u06b9\u06ba\u0007\r\u0000"+ - "\u0000\u06ba\u06bb\u0007\r\u0000\u0000\u06bb\u06bc\u0007\u0005\u0000\u0000"+ - "\u06bc\u06bd\u0007\u0012\u0000\u0000\u06bd\u06be\u0007\u0006\u0000\u0000"+ - "\u06be\u06bf\u0007\n\u0000\u0000\u06bfx\u0001\u0000\u0000\u0000\u06c0"+ - "\u06c1\u0007\f\u0000\u0000\u06c1\u06c2\u0007\n\u0000\u0000\u06c2\u06c3"+ - "\u0007\t\u0000\u0000\u06c3\u06c4\u0007\u000e\u0000\u0000\u06c4z\u0001"+ - "\u0000\u0000\u0000\u06c5\u06c6\u0007\f\u0000\u0000\u06c6\u06c7\u0007\u0011"+ - "\u0000\u0000\u06c7\u06c8\u0007\t\u0000\u0000\u06c8\u06c9\u0007\u0010\u0000"+ - "\u0000\u06c9\u06ca\u0007\u0011\u0000\u0000\u06ca\u06cb\u0007\u0007\u0000"+ - "\u0000\u06cb\u06cc\u0007\u000e\u0000\u0000\u06cc\u06cd\u0007\u0010\u0000"+ - "\u0000\u06cd|\u0001\u0000\u0000\u0000\u06ce\u06cf\u0007\f\u0000\u0000"+ - "\u06cf\u06d0\u0007\u0013\u0000\u0000\u06d0~\u0001\u0000\u0000\u0000\u06d1"+ - "\u06d2\u0007\n\u0000\u0000\u06d2\u06d3\u0007\u0006\u0000\u0000\u06d3\u06d4"+ - "\u0007\t\u0000\u0000\u06d4\u06d5\u0007\n\u0000\u0000\u06d5\u0080\u0001"+ - "\u0000\u0000\u0000\u06d6\u06d7\u0007\n\u0000\u0000\u06d7\u06d8\u0007\u001a"+ - "\u0000\u0000\u06d8\u06d9\u0007\u000e\u0000\u0000\u06d9\u06da\u0007\n\u0000"+ - "\u0000\u06da\u06db\u0007\u0018\u0000\u0000\u06db\u06dc\u0007\u0010\u0000"+ - "\u0000\u06dc\u0082\u0001\u0000\u0000\u0000\u06dd\u06de\u0007\u0019\u0000"+ - "\u0000\u06de\u06df\u0007\u0005\u0000\u0000\u06df\u06e0\u0007\u0006\u0000"+ - "\u0000\u06e0\u06e1\u0007\t\u0000\u0000\u06e1\u06e2\u0007\n\u0000\u0000"+ - "\u06e2\u0084\u0001\u0000\u0000\u0000\u06e3\u06e4\u0007\u0019\u0000\u0000"+ - "\u06e4\u06e5\u0007\n\u0000\u0000\u06e5\u06e6\u0007\u0010\u0000\u0000\u06e6"+ - "\u06e7\u0007\u000e\u0000\u0000\u06e7\u06e8\u0007\u0014\u0000\u0000\u06e8"+ - "\u0086\u0001\u0000\u0000\u0000\u06e9\u06ea\u0007\u0019\u0000\u0000\u06ea"+ - "\u06eb\u0007\u0013\u0000\u0000\u06eb\u06ec\u0007\r\u0000\u0000\u06ec\u0088"+ - "\u0001\u0000\u0000\u0000\u06ed\u06ee\u0007\u0019\u0000\u0000\u06ee\u06ef"+ - "\u0007\u0013\u0000\u0000\u06ef\u06f0\u0007\r\u0000\u0000\u06f0\u06f1\u0007"+ - "\n\u0000\u0000\u06f1\u06f2\u0007\u0011\u0000\u0000\u06f2\u06f3\u0007\u0017"+ - "\u0000\u0000\u06f3\u06f4\u0007\u0007\u0000\u0000\u06f4\u008a\u0001\u0000"+ - "\u0000\u0000\u06f5\u06f6\u0007\u0019\u0000\u0000\u06f6\u06f7\u0007\r\u0000"+ - "\u0000\u06f7\u06f8\u0007\u0013\u0000\u0000\u06f8\u06f9\u0007\u000f\u0000"+ - "\u0000\u06f9\u008c\u0001\u0000\u0000\u0000\u06fa\u06fb\u0007\u0017\u0000"+ - "\u0000\u06fb\u06fc\u0007\r\u0000\u0000\u06fc\u06fd\u0007\u0005\u0000\u0000"+ - "\u06fd\u06fe\u0007\u0007\u0000\u0000\u06fe\u06ff\u0007\u0010\u0000\u0000"+ - "\u06ff\u008e\u0001\u0000\u0000\u0000\u0700\u0701\u0007\u0017\u0000\u0000"+ - "\u0701\u0702\u0007\r\u0000\u0000\u0702\u0703\u0007\u0013\u0000\u0000\u0703"+ - "\u0704\u0007\u0016\u0000\u0000\u0704\u0705\u0007\u0018\u0000\u0000\u0705"+ - "\u0090\u0001\u0000\u0000\u0000\u0706\u0707\u0007\u0014\u0000\u0000\u0707"+ - "\u0708\u0007\u0005\u0000\u0000\u0708\u0709\u0007\u001b\u0000\u0000\u0709"+ - "\u070a\u0007\u0011\u0000\u0000\u070a\u070b\u0007\u0007\u0000\u0000\u070b"+ - "\u070c\u0007\u0017\u0000\u0000\u070c\u0092\u0001\u0000\u0000\u0000\u070d"+ - "\u070e\u0007\u0011\u0000\u0000\u070e\u070f\u0007\u0007\u0000\u0000\u070f"+ - "\u0094\u0001\u0000\u0000\u0000\u0710\u0711\u0007\u0011\u0000\u0000\u0711"+ - "\u0712\u0007\u0007\u0000\u0000\u0712\u0713\u0007\u0011\u0000\u0000\u0713"+ - "\u0714\u0007\u0010\u0000\u0000\u0714\u0715\u0007\u0011\u0000\u0000\u0715"+ - "\u0716\u0007\u0005\u0000\u0000\u0716\u0717\u0007\u0006\u0000\u0000\u0717"+ - "\u0718\u0007\u0006\u0000\u0000\u0718\u0719\u0007\b\u0000\u0000\u0719\u0096"+ - "\u0001\u0000\u0000\u0000\u071a\u071b\u0007\u0011\u0000\u0000\u071b\u071c"+ - "\u0007\u0007\u0000\u0000\u071c\u071d\u0007\u0010\u0000\u0000\u071d\u071e"+ - "\u0007\n\u0000\u0000\u071e\u071f\u0007\r\u0000\u0000\u071f\u0720\u0007"+ - "\t\u0000\u0000\u0720\u0721\u0007\n\u0000\u0000\u0721\u0722\u0007\u000e"+ - "\u0000\u0000\u0722\u0723\u0007\u0010\u0000\u0000\u0723\u0098\u0001\u0000"+ - "\u0000\u0000\u0724\u0725\u0007\u0011\u0000\u0000\u0725\u0726\u0007\u0007"+ - "\u0000\u0000\u0726\u0727\u0007\u0010\u0000\u0000\u0727\u0728\u0007\u0013"+ - "\u0000\u0000\u0728\u009a\u0001\u0000\u0000\u0000\u0729\u072a\u0007\u0006"+ - "\u0000\u0000\u072a\u072b\u0007\u0005\u0000\u0000\u072b\u072c\u0007\u0010"+ - "\u0000\u0000\u072c\u072d\u0007\n\u0000\u0000\u072d\u072e\u0007\r\u0000"+ - "\u0000\u072e\u072f\u0007\u0005\u0000\u0000\u072f\u0730\u0007\u0006\u0000"+ - "\u0000\u0730\u009c\u0001\u0000\u0000\u0000\u0731\u0732\u0007\u0006\u0000"+ - "\u0000\u0732\u0733\u0007\n\u0000\u0000\u0733\u0734\u0007\u0005\u0000\u0000"+ - "\u0734\u0735\u0007\f\u0000\u0000\u0735\u0736\u0007\u0011\u0000\u0000\u0736"+ - "\u0737\u0007\u0007\u0000\u0000\u0737\u0738\u0007\u0017\u0000\u0000\u0738"+ - "\u009e\u0001\u0000\u0000\u0000\u0739\u073a\u0007\u0006\u0000\u0000\u073a"+ - "\u073b\u0007\u0011\u0000\u0000\u073b\u073c\u0007\u000f\u0000\u0000\u073c"+ - "\u073d\u0007\u0011\u0000\u0000\u073d\u073e\u0007\u0010\u0000\u0000\u073e"+ - "\u00a0\u0001\u0000\u0000\u0000\u073f\u0740\u0007\u0006\u0000\u0000\u0740"+ - "\u0741\u0007\u0013\u0000\u0000\u0741\u0742\u0007\u000e\u0000\u0000\u0742"+ - "\u0743\u0007\u0005\u0000\u0000\u0743\u0744\u0007\u0006\u0000\u0000\u0744"+ - "\u0745\u0007\u0010\u0000\u0000\u0745\u0746\u0007\u0011\u0000\u0000\u0746"+ - "\u0747\u0007\u000f\u0000\u0000\u0747\u0748\u0007\n\u0000\u0000\u0748\u00a2"+ - "\u0001\u0000\u0000\u0000\u0749\u074a\u0007\u0006\u0000\u0000\u074a\u074b"+ - "\u0007\u0013\u0000\u0000\u074b\u074c\u0007\u000e\u0000\u0000\u074c\u074d"+ - "\u0007\u0005\u0000\u0000\u074d\u074e\u0007\u0006\u0000\u0000\u074e\u074f"+ - "\u0007\u0010\u0000\u0000\u074f\u0750\u0007\u0011\u0000\u0000\u0750\u0751"+ - "\u0007\u000f\u0000\u0000\u0751\u0752\u0007\n\u0000\u0000\u0752\u0753\u0007"+ - "\t\u0000\u0000\u0753\u0754\u0007\u0010\u0000\u0000\u0754\u0755\u0007\u0005"+ - "\u0000\u0000\u0755\u0756\u0007\u000f\u0000\u0000\u0756\u0757\u0007\u0018"+ - "\u0000\u0000\u0757\u00a4\u0001\u0000\u0000\u0000\u0758\u0759\u0007\u0007"+ - "\u0000\u0000\u0759\u075a\u0007\u0013\u0000\u0000\u075a\u075b\u0007\u0010"+ - "\u0000\u0000\u075b\u00a6\u0001\u0000\u0000\u0000\u075c\u075d\u0007\u0007"+ - "\u0000\u0000\u075d\u075e\u0007\u0016\u0000\u0000\u075e\u075f\u0007\u0006"+ - "\u0000\u0000\u075f\u0760\u0007\u0006\u0000\u0000\u0760\u00a8\u0001\u0000"+ - "\u0000\u0000\u0761\u0762\u0007\u0013\u0000\u0000\u0762\u0763\u0007\u0019"+ - "\u0000\u0000\u0763\u0764\u0007\u0019\u0000\u0000\u0764\u0765\u0007\t\u0000"+ - "\u0000\u0765\u0766\u0007\n\u0000\u0000\u0766\u0767\u0007\u0010\u0000\u0000"+ - "\u0767\u00aa\u0001\u0000\u0000\u0000\u0768\u0769\u0007\u0013\u0000\u0000"+ - "\u0769\u076a\u0007\u0007\u0000\u0000\u076a\u00ac\u0001\u0000\u0000\u0000"+ - "\u076b\u076c\u0007\u0013\u0000\u0000\u076c\u076d\u0007\u0007\u0000\u0000"+ - "\u076d\u076e\u0007\u0006\u0000\u0000\u076e\u076f\u0007\b\u0000\u0000\u076f"+ - "\u00ae\u0001\u0000\u0000\u0000\u0770\u0771\u0007\u0013\u0000\u0000\u0771"+ - "\u0772\u0007\r\u0000\u0000\u0772\u00b0\u0001\u0000\u0000\u0000\u0773\u0774"+ - "\u0007\u0013\u0000\u0000\u0774\u0775\u0007\r\u0000\u0000\u0775\u0776\u0007"+ - "\f\u0000\u0000\u0776\u0777\u0007\n\u0000\u0000\u0777\u0778\u0007\r\u0000"+ - "\u0000\u0778\u00b2\u0001\u0000\u0000\u0000\u0779\u077a\u0007\u0018\u0000"+ - "\u0000\u077a\u077b\u0007\u0006\u0000\u0000\u077b\u077c\u0007\u0005\u0000"+ - "\u0000\u077c\u077d\u0007\u000e\u0000\u0000\u077d\u077e\u0007\u0011\u0000"+ - "\u0000\u077e\u077f\u0007\u0007\u0000\u0000\u077f\u0780\u0007\u0017\u0000"+ - "\u0000\u0780\u00b4\u0001\u0000\u0000\u0000\u0781\u0782\u0007\u0018\u0000"+ - "\u0000\u0782\u0783\u0007\r\u0000\u0000\u0783\u0784\u0007\u0011\u0000\u0000"+ - "\u0784\u0785\u0007\u000f\u0000\u0000\u0785\u0786\u0007\u0005\u0000\u0000"+ - "\u0786\u0787\u0007\r\u0000\u0000\u0787\u0788\u0007\b\u0000\u0000\u0788"+ - "\u00b6\u0001\u0000\u0000\u0000\u0789\u078a\u0007\r\u0000\u0000\u078a\u078b"+ - "\u0007\n\u0000\u0000\u078b\u078c\u0007\u0019\u0000\u0000\u078c\u078d\u0007"+ - "\n\u0000\u0000\u078d\u078e\u0007\r\u0000\u0000\u078e\u078f\u0007\n\u0000"+ - "\u0000\u078f\u0790\u0007\u0007\u0000\u0000\u0790\u0791\u0007\u000e\u0000"+ - "\u0000\u0791\u0792\u0007\n\u0000\u0000\u0792\u0793\u0007\t\u0000\u0000"+ - "\u0793\u00b8\u0001\u0000\u0000\u0000\u0794\u0795\u0007\r\u0000\u0000\u0795"+ - "\u0796\u0007\n\u0000\u0000\u0796\u0797\u0007\u0010\u0000\u0000\u0797\u0798"+ - "\u0007\u0016\u0000\u0000\u0798\u0799\u0007\r\u0000\u0000\u0799\u079a\u0007"+ - "\u0007\u0000\u0000\u079a\u079b\u0007\u0011\u0000\u0000\u079b\u079c\u0007"+ - "\u0007\u0000\u0000\u079c\u079d\u0007\u0017\u0000\u0000\u079d\u00ba\u0001"+ - "\u0000\u0000\u0000\u079e\u079f\u0007\t\u0000\u0000\u079f\u07a0\u0007\n"+ - "\u0000\u0000\u07a0\u07a1\u0007\u0006\u0000\u0000\u07a1\u07a2\u0007\n\u0000"+ - "\u0000\u07a2\u07a3\u0007\u000e\u0000\u0000\u07a3\u07a4\u0007\u0010\u0000"+ - "\u0000\u07a4\u00bc\u0001\u0000\u0000\u0000\u07a5\u07a6\u0007\t\u0000\u0000"+ - "\u07a6\u07a7\u0007\n\u0000\u0000\u07a7\u07a8\u0007\t\u0000\u0000\u07a8"+ - "\u07a9\u0007\t\u0000\u0000\u07a9\u07aa\u0007\u0011\u0000\u0000\u07aa\u07ab"+ - "\u0007\u0013\u0000\u0000\u07ab\u07ac\u0007\u0007\u0000\u0000\u07ac\u07ad"+ - "\u0005_\u0000\u0000\u07ad\u07ae\u0007\u0016\u0000\u0000\u07ae\u07af\u0007"+ - "\t\u0000\u0000\u07af\u07b0\u0007\n\u0000\u0000\u07b0\u07b1\u0007\r\u0000"+ - "\u0000\u07b1\u00be\u0001\u0000\u0000\u0000\u07b2\u07b3\u0007\t\u0000\u0000"+ - "\u07b3\u07b4\u0007\u0013\u0000\u0000\u07b4\u07b5\u0007\u000f\u0000\u0000"+ - "\u07b5\u07b6\u0007\n\u0000\u0000\u07b6\u00c0\u0001\u0000\u0000\u0000\u07b7"+ - "\u07b8\u0007\t\u0000\u0000\u07b8\u07b9\u0007\b\u0000\u0000\u07b9\u07ba"+ - "\u0007\u000f\u0000\u0000\u07ba\u07bb\u0007\u000f\u0000\u0000\u07bb\u07bc"+ - "\u0007\n\u0000\u0000\u07bc\u07bd\u0007\u0010\u0000\u0000\u07bd\u07be\u0007"+ - "\r\u0000\u0000\u07be\u07bf\u0007\u0011\u0000\u0000\u07bf\u07c0\u0007\u000e"+ - "\u0000\u0000\u07c0\u00c2\u0001\u0000\u0000\u0000\u07c1\u07c2\u0007\u0010"+ - "\u0000\u0000\u07c2\u07c3\u0007\u0005\u0000\u0000\u07c3\u07c4\u0007\u0012"+ - "\u0000\u0000\u07c4\u07c5\u0007\u0006\u0000\u0000\u07c5\u07c6\u0007\n\u0000"+ - "\u0000\u07c6\u00c4\u0001\u0000\u0000\u0000\u07c7\u07c8\u0007\u0010\u0000"+ - "\u0000\u07c8\u07c9\u0007\u0014\u0000\u0000\u07c9\u07ca\u0007\n\u0000\u0000"+ - "\u07ca\u07cb\u0007\u0007\u0000\u0000\u07cb\u00c6\u0001\u0000\u0000\u0000"+ - "\u07cc\u07cd\u0007\u0010\u0000\u0000\u07cd\u07ce\u0007\u0013\u0000\u0000"+ - "\u07ce\u00c8\u0001\u0000\u0000\u0000\u07cf\u07d0\u0007\u0010\u0000\u0000"+ - "\u07d0\u07d1\u0007\r\u0000\u0000\u07d1\u07d2\u0007\u0005\u0000\u0000\u07d2"+ - "\u07d3\u0007\u0011\u0000\u0000\u07d3\u07d4\u0007\u0006\u0000\u0000\u07d4"+ - "\u07d5\u0007\u0011\u0000\u0000\u07d5\u07d6\u0007\u0007\u0000\u0000\u07d6"+ - "\u07d7\u0007\u0017\u0000\u0000\u07d7\u00ca\u0001\u0000\u0000\u0000\u07d8"+ - "\u07d9\u0007\u0010\u0000\u0000\u07d9\u07da\u0007\r\u0000\u0000\u07da\u07db"+ - "\u0007\u0016\u0000\u0000\u07db\u07dc\u0007\n\u0000\u0000\u07dc\u00cc\u0001"+ - "\u0000\u0000\u0000\u07dd\u07de\u0007\u0016\u0000\u0000\u07de\u07df\u0007"+ - "\u0007\u0000\u0000\u07df\u07e0\u0007\u0011\u0000\u0000\u07e0\u07e1\u0007"+ - "\u0013\u0000\u0000\u07e1\u07e2\u0007\u0007\u0000\u0000\u07e2\u00ce\u0001"+ - "\u0000\u0000\u0000\u07e3\u07e4\u0007\u0016\u0000\u0000\u07e4\u07e5\u0007"+ - "\u0007\u0000\u0000\u07e5\u07e6\u0007\u0011\u0000\u0000\u07e6\u07e7\u0007"+ - "\u001c\u0000\u0000\u07e7\u07e8\u0007\u0016\u0000\u0000\u07e8\u07e9\u0007"+ - "\n\u0000\u0000\u07e9\u00d0\u0001\u0000\u0000\u0000\u07ea\u07eb\u0007\u0016"+ - "\u0000\u0000\u07eb\u07ec\u0007\t\u0000\u0000\u07ec\u07ed\u0007\n\u0000"+ - "\u0000\u07ed\u07ee\u0007\r\u0000\u0000\u07ee\u00d2\u0001\u0000\u0000\u0000"+ - "\u07ef\u07f0\u0007\u0016\u0000\u0000\u07f0\u07f1\u0007\t\u0000\u0000\u07f1"+ - "\u07f2\u0007\u0011\u0000\u0000\u07f2\u07f3\u0007\u0007\u0000\u0000\u07f3"+ - "\u07f4\u0007\u0017\u0000\u0000\u07f4\u00d4\u0001\u0000\u0000\u0000\u07f5"+ - "\u07f6\u0007\u001b\u0000\u0000\u07f6\u07f7\u0007\u0005\u0000\u0000\u07f7"+ - "\u07f8\u0007\r\u0000\u0000\u07f8\u07f9\u0007\u0011\u0000\u0000\u07f9\u07fa"+ - "\u0007\u0005\u0000\u0000\u07fa\u07fb\u0007\f\u0000\u0000\u07fb\u07fc\u0007"+ - "\u0011\u0000\u0000\u07fc\u07fd\u0007\u000e\u0000\u0000\u07fd\u00d6\u0001"+ - "\u0000\u0000\u0000\u07fe\u07ff\u0007\u001d\u0000\u0000\u07ff\u0800\u0007"+ - "\u0014\u0000\u0000\u0800\u0801\u0007\n\u0000\u0000\u0801\u0802\u0007\u0007"+ - "\u0000\u0000\u0802\u00d8\u0001\u0000\u0000\u0000\u0803\u0804\u0007\u001d"+ - "\u0000\u0000\u0804\u0805\u0007\u0014\u0000\u0000\u0805\u0806\u0007\n\u0000"+ - "\u0000\u0806\u0807\u0007\r\u0000\u0000\u0807\u0808\u0007\n\u0000\u0000"+ - "\u0808\u00da\u0001\u0000\u0000\u0000\u0809\u080a\u0007\u001d\u0000\u0000"+ - "\u080a\u080b\u0007\u0011\u0000\u0000\u080b\u080c\u0007\u0007\u0000\u0000"+ - "\u080c\u080d\u0007\f\u0000\u0000\u080d\u080e\u0007\u0013\u0000\u0000\u080e"+ - "\u080f\u0007\u001d\u0000\u0000\u080f\u00dc\u0001\u0000\u0000\u0000\u0810"+ - "\u0811\u0007\u001d\u0000\u0000\u0811\u0812\u0007\u0011\u0000\u0000\u0812"+ - "\u0813\u0007\u0010\u0000\u0000\u0813\u0814\u0007\u0014\u0000\u0000\u0814"+ - "\u00de\u0001\u0000\u0000\u0000\u0815\u0816\u0007\u0005\u0000\u0000\u0816"+ - "\u0817\u0007\u0016\u0000\u0000\u0817\u0818\u0007\u0010\u0000\u0000\u0818"+ - "\u0819\u0007\u0014\u0000\u0000\u0819\u081a\u0007\u0013\u0000\u0000\u081a"+ - "\u081b\u0007\r\u0000\u0000\u081b\u081c\u0007\u0011\u0000\u0000\u081c\u081d"+ - "\u0007\u000b\u0000\u0000\u081d\u081e\u0007\u0005\u0000\u0000\u081e\u081f"+ - "\u0007\u0010\u0000\u0000\u081f\u0820\u0007\u0011\u0000\u0000\u0820\u0821"+ - "\u0007\u0013\u0000\u0000\u0821\u0822\u0007\u0007\u0000\u0000\u0822\u00e0"+ - "\u0001\u0000\u0000\u0000\u0823\u0824\u0007\u0012\u0000\u0000\u0824\u0825"+ - "\u0007\u0011\u0000\u0000\u0825\u0826\u0007\u0007\u0000\u0000\u0826\u0827"+ - "\u0007\u0005\u0000\u0000\u0827\u0828\u0007\r\u0000\u0000\u0828\u0829\u0007"+ - "\b\u0000\u0000\u0829\u00e2\u0001\u0000\u0000\u0000\u082a\u082b\u0007\u000e"+ - "\u0000\u0000\u082b\u082c\u0007\u0013\u0000\u0000\u082c\u082d\u0007\u0006"+ - "\u0000\u0000\u082d\u082e\u0007\u0006\u0000\u0000\u082e\u082f\u0007\u0005"+ - "\u0000\u0000\u082f\u0830\u0007\u0010\u0000\u0000\u0830\u0831\u0007\u0011"+ - "\u0000\u0000\u0831\u0832\u0007\u0013\u0000\u0000\u0832\u0833\u0007\u0007"+ - "\u0000\u0000\u0833\u00e4\u0001\u0000\u0000\u0000\u0834\u0835\u0007\u000e"+ - "\u0000\u0000\u0835\u0836\u0007\u0013\u0000\u0000\u0836\u0837\u0007\u0007"+ - "\u0000\u0000\u0837\u0838\u0007\u000e\u0000\u0000\u0838\u0839\u0007\u0016"+ - "\u0000\u0000\u0839\u083a\u0007\r\u0000\u0000\u083a\u083b\u0007\r\u0000"+ - "\u0000\u083b\u083c\u0007\n\u0000\u0000\u083c\u083d\u0007\u0007\u0000\u0000"+ - "\u083d\u083e\u0007\u0010\u0000\u0000\u083e\u083f\u0007\u0006\u0000\u0000"+ - "\u083f\u0840\u0007\b\u0000\u0000\u0840\u00e6\u0001\u0000\u0000\u0000\u0841"+ - "\u0842\u0007\u000e\u0000\u0000\u0842\u0843\u0007\r\u0000\u0000\u0843\u0844"+ - "\u0007\u0013\u0000\u0000\u0844\u0845\u0007\t\u0000\u0000\u0845\u0846\u0007"+ - "\t\u0000\u0000\u0846\u00e8\u0001\u0000\u0000\u0000\u0847\u0848\u0007\u000e"+ - "\u0000\u0000\u0848\u0849\u0007\u0016\u0000\u0000\u0849\u084a\u0007\r\u0000"+ - "\u0000\u084a\u084b\u0007\r\u0000\u0000\u084b\u084c\u0007\n\u0000\u0000"+ - "\u084c\u084d\u0007\u0007\u0000\u0000\u084d\u084e\u0007\u0010\u0000\u0000"+ - "\u084e\u084f\u0005_\u0000\u0000\u084f\u0850\u0007\t\u0000\u0000\u0850"+ - "\u0851\u0007\u000e\u0000\u0000\u0851\u0852\u0007\u0014\u0000\u0000\u0852"+ - "\u0853\u0007\n\u0000\u0000\u0853\u0854\u0007\u000f\u0000\u0000\u0854\u0855"+ - "\u0007\u0005\u0000\u0000\u0855\u00ea\u0001\u0000\u0000\u0000\u0856\u0857"+ - "\u0007\u0019\u0000\u0000\u0857\u0858\u0007\r\u0000\u0000\u0858\u0859\u0007"+ - "\n\u0000\u0000\u0859\u085a\u0007\n\u0000\u0000\u085a\u085b\u0007\u000b"+ - "\u0000\u0000\u085b\u085c\u0007\n\u0000\u0000\u085c\u00ec\u0001\u0000\u0000"+ - "\u0000\u085d\u085e\u0007\u0019\u0000\u0000\u085e\u085f\u0007\u0016\u0000"+ - "\u0000\u085f\u0860\u0007\u0006\u0000\u0000\u0860\u0861\u0007\u0006\u0000"+ - "\u0000\u0861\u00ee\u0001\u0000\u0000\u0000\u0862\u0863\u0007\u0011\u0000"+ - "\u0000\u0863\u0864\u0007\u0006\u0000\u0000\u0864\u0865\u0007\u0011\u0000"+ - "\u0000\u0865\u0866\u0007\u0015\u0000\u0000\u0866\u0867\u0007\n\u0000\u0000"+ - "\u0867\u00f0\u0001\u0000\u0000\u0000\u0868\u0869\u0007\u0011\u0000\u0000"+ - "\u0869\u086a\u0007\u0007\u0000\u0000\u086a\u086b\u0007\u0007\u0000\u0000"+ - "\u086b\u086c\u0007\n\u0000\u0000\u086c\u086d\u0007\r\u0000\u0000\u086d"+ - "\u00f2\u0001\u0000\u0000\u0000\u086e\u086f\u0007\u0011\u0000\u0000\u086f"+ - "\u0870\u0007\t\u0000\u0000\u0870\u00f4\u0001\u0000\u0000\u0000\u0871\u0872"+ - "\u0007\u0011\u0000\u0000\u0872\u0873\u0007\t\u0000\u0000\u0873\u0874\u0007"+ - "\u0007\u0000\u0000\u0874\u0875\u0007\u0016\u0000\u0000\u0875\u0876\u0007"+ - "\u0006\u0000\u0000\u0876\u0877\u0007\u0006\u0000\u0000\u0877\u00f6\u0001"+ - "\u0000\u0000\u0000\u0878\u0879\u0007\u001e\u0000\u0000\u0879\u087a\u0007"+ - "\u0013\u0000\u0000\u087a\u087b\u0007\u0011\u0000\u0000\u087b\u087c\u0007"+ - "\u0007\u0000\u0000\u087c\u00f8\u0001\u0000\u0000\u0000\u087d\u087e\u0007"+ - "\u0006\u0000\u0000\u087e\u087f\u0007\n\u0000\u0000\u087f\u0880\u0007\u0019"+ - "\u0000\u0000\u0880\u0881\u0007\u0010\u0000\u0000\u0881\u00fa\u0001\u0000"+ - "\u0000\u0000\u0882\u0883\u0007\u0006\u0000\u0000\u0883\u0884\u0007\u0011"+ - "\u0000\u0000\u0884\u0885\u0007\u0015\u0000\u0000\u0885\u0886\u0007\n\u0000"+ - "\u0000\u0886\u00fc\u0001\u0000\u0000\u0000\u0887\u0888\u0007\u0007\u0000"+ - "\u0000\u0888\u0889\u0007\u0005\u0000\u0000\u0889\u088a\u0007\u0010\u0000"+ - "\u0000\u088a\u088b\u0007\u0016\u0000\u0000\u088b\u088c\u0007\r\u0000\u0000"+ - "\u088c\u088d\u0007\u0005\u0000\u0000\u088d\u088e\u0007\u0006\u0000\u0000"+ - "\u088e\u00fe\u0001\u0000\u0000\u0000\u088f\u0890\u0007\u0007\u0000\u0000"+ - "\u0890\u0891\u0007\u0013\u0000\u0000\u0891\u0892\u0007\u0010\u0000\u0000"+ - "\u0892\u0893\u0007\u0007\u0000\u0000\u0893\u0894\u0007\u0016\u0000\u0000"+ - "\u0894\u0895\u0007\u0006\u0000\u0000\u0895\u0896\u0007\u0006\u0000\u0000"+ - "\u0896\u0100\u0001\u0000\u0000\u0000\u0897\u0898\u0007\u0013\u0000\u0000"+ - "\u0898\u0899\u0007\u0016\u0000\u0000\u0899\u089a\u0007\u0010\u0000\u0000"+ - "\u089a\u089b\u0007\n\u0000\u0000\u089b\u089c\u0007\r\u0000\u0000\u089c"+ - "\u0102\u0001\u0000\u0000\u0000\u089d\u089e\u0007\u0013\u0000\u0000\u089e"+ - "\u089f\u0007\u001b\u0000\u0000\u089f\u08a0\u0007\n\u0000\u0000\u08a0\u08a1"+ - "\u0007\r\u0000\u0000\u08a1\u0104\u0001\u0000\u0000\u0000\u08a2\u08a3\u0007"+ - "\u0013\u0000\u0000\u08a3\u08a4\u0007\u001b\u0000\u0000\u08a4\u08a5\u0007"+ - "\n\u0000\u0000\u08a5\u08a6\u0007\r\u0000\u0000\u08a6\u08a7\u0007\u0006"+ - "\u0000\u0000\u08a7\u08a8\u0007\u0005\u0000\u0000\u08a8\u08a9\u0007\u0018"+ - "\u0000\u0000\u08a9\u08aa\u0007\t\u0000\u0000\u08aa\u0106\u0001\u0000\u0000"+ - "\u0000\u08ab\u08ac\u0007\r\u0000\u0000\u08ac\u08ad\u0007\u0011\u0000\u0000"+ - "\u08ad\u08ae\u0007\u0017\u0000\u0000\u08ae\u08af\u0007\u0014\u0000\u0000"+ - "\u08af\u08b0\u0007\u0010\u0000\u0000\u08b0\u0108\u0001\u0000\u0000\u0000"+ - "\u08b1\u08b2\u0007\t\u0000\u0000\u08b2\u08b3\u0007\u0011\u0000\u0000\u08b3"+ - "\u08b4\u0007\u000f\u0000\u0000\u08b4\u08b5\u0007\u0011\u0000\u0000\u08b5"+ - "\u08b6\u0007\u0006\u0000\u0000\u08b6\u08b7\u0007\u0005\u0000\u0000\u08b7"+ - "\u08b8\u0007\r\u0000\u0000\u08b8\u010a\u0001\u0000\u0000\u0000\u08b9\u08ba"+ - "\u0007\u001b\u0000\u0000\u08ba\u08bb\u0007\n\u0000\u0000\u08bb\u08bc\u0007"+ - "\r\u0000\u0000\u08bc\u08bd\u0007\u0012\u0000\u0000\u08bd\u08be\u0007\u0013"+ - "\u0000\u0000\u08be\u08bf\u0007\t\u0000\u0000\u08bf\u08c0\u0007\n\u0000"+ - "\u0000\u08c0\u010c\u0001\u0000\u0000\u0000\u08c1\u08c2\u0007\u0005\u0000"+ - "\u0000\u08c2\u08c3\u0007\u0012\u0000\u0000\u08c3\u08c4\u0007\u0013\u0000"+ - "\u0000\u08c4\u08c5\u0007\r\u0000\u0000\u08c5\u08c6\u0007\u0010\u0000\u0000"+ - "\u08c6\u010e\u0001\u0000\u0000\u0000\u08c7\u08c8\u0007\u0005\u0000\u0000"+ - "\u08c8\u08c9\u0007\u0012\u0000\u0000\u08c9\u08ca\u0007\t\u0000\u0000\u08ca"+ - "\u08cb\u0007\u0013\u0000\u0000\u08cb\u08cc\u0007\u0006\u0000\u0000\u08cc"+ - "\u08cd\u0007\u0016\u0000\u0000\u08cd\u08ce\u0007\u0010\u0000\u0000\u08ce"+ - "\u08cf\u0007\n\u0000\u0000\u08cf\u0110\u0001\u0000\u0000\u0000\u08d0\u08d1"+ - "\u0007\u0005\u0000\u0000\u08d1\u08d2\u0007\u000e\u0000\u0000\u08d2\u08d3"+ - "\u0007\u000e\u0000\u0000\u08d3\u08d4\u0007\n\u0000\u0000\u08d4\u08d5\u0007"+ - "\t\u0000\u0000\u08d5\u08d6\u0007\t\u0000\u0000\u08d6\u0112\u0001\u0000"+ - "\u0000\u0000\u08d7\u08d8\u0007\u0005\u0000\u0000\u08d8\u08d9\u0007\u000e"+ - "\u0000\u0000\u08d9\u08da\u0007\u0010\u0000\u0000\u08da\u08db\u0007\u0011"+ - "\u0000\u0000\u08db\u08dc\u0007\u0013\u0000\u0000\u08dc\u08dd\u0007\u0007"+ - "\u0000\u0000\u08dd\u0114\u0001\u0000\u0000\u0000\u08de\u08df\u0007\u0005"+ - "\u0000\u0000\u08df\u08e0\u0007\f\u0000\u0000\u08e0\u08e1\u0007\f\u0000"+ - "\u0000\u08e1\u0116\u0001\u0000\u0000\u0000\u08e2\u08e3\u0007\u0005\u0000"+ - "\u0000\u08e3\u08e4\u0007\f\u0000\u0000\u08e4\u08e5\u0007\u000f\u0000\u0000"+ - "\u08e5\u08e6\u0007\u0011\u0000\u0000\u08e6\u08e7\u0007\u0007\u0000\u0000"+ - "\u08e7\u0118\u0001\u0000\u0000\u0000\u08e8\u08e9\u0007\u0005\u0000\u0000"+ - "\u08e9\u08ea\u0007\u0019\u0000\u0000\u08ea\u08eb\u0007\u0010\u0000\u0000"+ - "\u08eb\u08ec\u0007\n\u0000\u0000\u08ec\u08ed\u0007\r\u0000\u0000\u08ed"+ - "\u011a\u0001\u0000\u0000\u0000\u08ee\u08ef\u0007\u0005\u0000\u0000\u08ef"+ - "\u08f0\u0007\u0017\u0000\u0000\u08f0\u08f1\u0007\u0017\u0000\u0000\u08f1"+ - "\u08f2\u0007\r\u0000\u0000\u08f2\u08f3\u0007\n\u0000\u0000\u08f3\u08f4"+ - "\u0007\u0017\u0000\u0000\u08f4\u08f5\u0007\u0005\u0000\u0000\u08f5\u08f6"+ - "\u0007\u0010\u0000\u0000\u08f6\u08f7\u0007\n\u0000\u0000\u08f7\u011c\u0001"+ - "\u0000\u0000\u0000\u08f8\u08f9\u0007\u0005\u0000\u0000\u08f9\u08fa\u0007"+ - "\u0006\u0000\u0000\u08fa\u08fb\u0007\t\u0000\u0000\u08fb\u08fc\u0007\u0013"+ - "\u0000\u0000\u08fc\u011e\u0001\u0000\u0000\u0000\u08fd\u08fe\u0007\u0005"+ - "\u0000\u0000\u08fe\u08ff\u0007\u0006\u0000\u0000\u08ff\u0900\u0007\u0010"+ - "\u0000\u0000\u0900\u0901\u0007\n\u0000\u0000\u0901\u0902\u0007\r\u0000"+ - "\u0000\u0902\u0120\u0001\u0000\u0000\u0000\u0903\u0904\u0007\u0005\u0000"+ - "\u0000\u0904\u0905\u0007\u0006\u0000\u0000\u0905\u0906\u0007\u001d\u0000"+ - "\u0000\u0906\u0907\u0007\u0005\u0000\u0000\u0907\u0908\u0007\b\u0000\u0000"+ - "\u0908\u0909\u0007\t\u0000\u0000\u0909\u0122\u0001\u0000\u0000\u0000\u090a"+ - "\u090b\u0007\u0005\u0000\u0000\u090b\u090c\u0007\t\u0000\u0000\u090c\u090d"+ - "\u0007\t\u0000\u0000\u090d\u090e\u0007\n\u0000\u0000\u090e\u090f\u0007"+ - "\r\u0000\u0000\u090f\u0910\u0007\u0010\u0000\u0000\u0910\u0911\u0007\u0011"+ - "\u0000\u0000\u0911\u0912\u0007\u0013\u0000\u0000\u0912\u0913\u0007\u0007"+ - "\u0000\u0000\u0913\u0124\u0001\u0000\u0000\u0000\u0914\u0915\u0007\u0005"+ - "\u0000\u0000\u0915\u0916\u0007\t\u0000\u0000\u0916\u0917\u0007\t\u0000"+ - "\u0000\u0917\u0918\u0007\u0011\u0000\u0000\u0918\u0919\u0007\u0017\u0000"+ - "\u0000\u0919\u091a\u0007\u0007\u0000\u0000\u091a\u091b\u0007\u000f\u0000"+ - "\u0000\u091b\u091c\u0007\n\u0000\u0000\u091c\u091d\u0007\u0007\u0000\u0000"+ - "\u091d\u091e\u0007\u0010\u0000\u0000\u091e\u0126\u0001\u0000\u0000\u0000"+ - "\u091f\u0920\u0007\u0005\u0000\u0000\u0920\u0921\u0007\u0010\u0000\u0000"+ - "\u0921\u0128\u0001\u0000\u0000\u0000\u0922\u0923\u0007\u0005\u0000\u0000"+ - "\u0923\u0924\u0007\u0010\u0000\u0000\u0924\u0925\u0007\u0010\u0000\u0000"+ - "\u0925\u0926\u0007\r\u0000\u0000\u0926\u0927\u0007\u0011\u0000\u0000\u0927"+ - "\u0928\u0007\u0012\u0000\u0000\u0928\u0929\u0007\u0016\u0000\u0000\u0929"+ - "\u092a\u0007\u0010\u0000\u0000\u092a\u092b\u0007\n\u0000\u0000\u092b\u012a"+ - "\u0001\u0000\u0000\u0000\u092c\u092d\u0007\u0012\u0000\u0000\u092d\u092e"+ - "\u0007\u0005\u0000\u0000\u092e\u092f\u0007\u000e\u0000\u0000\u092f\u0930"+ - "\u0007\u0015\u0000\u0000\u0930\u0931\u0007\u001d\u0000\u0000\u0931\u0932"+ - "\u0007\u0005\u0000\u0000\u0932\u0933\u0007\r\u0000\u0000\u0933\u0934\u0007"+ - "\f\u0000\u0000\u0934\u012c\u0001\u0000\u0000\u0000\u0935\u0936\u0007\u0012"+ - "\u0000\u0000\u0936\u0937\u0007\n\u0000\u0000\u0937\u0938\u0007\u0019\u0000"+ - "\u0000\u0938\u0939\u0007\u0013\u0000\u0000\u0939\u093a\u0007\r\u0000\u0000"+ - "\u093a\u093b\u0007\n\u0000\u0000\u093b\u012e\u0001\u0000\u0000\u0000\u093c"+ - "\u093d\u0007\u0012\u0000\u0000\u093d\u093e\u0007\n\u0000\u0000\u093e\u093f"+ - "\u0007\u0017\u0000\u0000\u093f\u0940\u0007\u0011\u0000\u0000\u0940\u0941"+ - "\u0007\u0007\u0000\u0000\u0941\u0130\u0001\u0000\u0000\u0000\u0942\u0943"+ - "\u0007\u0012\u0000\u0000\u0943\u0944\u0007\b\u0000\u0000\u0944\u0132\u0001"+ - "\u0000\u0000\u0000\u0945\u0946\u0007\u000e\u0000\u0000\u0946\u0947\u0007"+ - "\u0005\u0000\u0000\u0947\u0948\u0007\u000e\u0000\u0000\u0948\u0949\u0007"+ - "\u0014\u0000\u0000\u0949\u094a\u0007\n\u0000\u0000\u094a\u0134\u0001\u0000"+ - "\u0000\u0000\u094b\u094c\u0007\u000e\u0000\u0000\u094c\u094d\u0007\u0005"+ - "\u0000\u0000\u094d\u094e\u0007\u0006\u0000\u0000\u094e\u094f\u0007\u0006"+ - "\u0000\u0000\u094f\u0950\u0007\n\u0000\u0000\u0950\u0951\u0007\f\u0000"+ - "\u0000\u0951\u0136\u0001\u0000\u0000\u0000\u0952\u0953\u0007\u000e\u0000"+ - "\u0000\u0953\u0954\u0007\u0005\u0000\u0000\u0954\u0955\u0007\t\u0000\u0000"+ - "\u0955\u0956\u0007\u000e\u0000\u0000\u0956\u0957\u0007\u0005\u0000\u0000"+ - "\u0957\u0958\u0007\f\u0000\u0000\u0958\u0959\u0007\n\u0000\u0000\u0959"+ - "\u0138\u0001\u0000\u0000\u0000\u095a\u095b\u0007\u000e\u0000\u0000\u095b"+ - "\u095c\u0007\u0005\u0000\u0000\u095c\u095d\u0007\t\u0000\u0000\u095d\u095e"+ - "\u0007\u000e\u0000\u0000\u095e\u095f\u0007\u0005\u0000\u0000\u095f\u0960"+ - "\u0007\f\u0000\u0000\u0960\u0961\u0007\n\u0000\u0000\u0961\u0962\u0007"+ - "\f\u0000\u0000\u0962\u013a\u0001\u0000\u0000\u0000\u0963\u0964\u0007\u000e"+ - "\u0000\u0000\u0964\u0965\u0007\u0005\u0000\u0000\u0965\u0966\u0007\u0010"+ - "\u0000\u0000\u0966\u0967\u0007\u0005\u0000\u0000\u0967\u0968\u0007\u0006"+ - "\u0000\u0000\u0968\u0969\u0007\u0013\u0000\u0000\u0969\u096a\u0007\u0017"+ - "\u0000\u0000\u096a\u013c\u0001\u0000\u0000\u0000\u096b\u096c\u0007\u000e"+ - "\u0000\u0000\u096c\u096d\u0007\u0014\u0000\u0000\u096d\u096e\u0007\u0005"+ - "\u0000\u0000\u096e\u096f\u0007\u0011\u0000\u0000\u096f\u0970\u0007\u0007"+ - "\u0000\u0000\u0970\u013e\u0001\u0000\u0000\u0000\u0971\u0972\u0007\u000e"+ - "\u0000\u0000\u0972\u0973\u0007\u0014\u0000\u0000\u0973\u0974\u0007\u0005"+ - "\u0000\u0000\u0974\u0975\u0007\r\u0000\u0000\u0975\u0976\u0007\u0005\u0000"+ - "\u0000\u0976\u0977\u0007\u000e\u0000\u0000\u0977\u0978\u0007\u0010\u0000"+ - "\u0000\u0978\u0979\u0007\n\u0000\u0000\u0979\u097a\u0007\r\u0000\u0000"+ - "\u097a\u097b\u0007\u0011\u0000\u0000\u097b\u097c\u0007\t\u0000\u0000\u097c"+ - "\u097d\u0007\u0010\u0000\u0000\u097d\u097e\u0007\u0011\u0000\u0000\u097e"+ - "\u097f\u0007\u000e\u0000\u0000\u097f\u0980\u0007\t\u0000\u0000\u0980\u0140"+ - "\u0001\u0000\u0000\u0000\u0981\u0982\u0007\u000e\u0000\u0000\u0982\u0983"+ - "\u0007\u0014\u0000\u0000\u0983\u0984\u0007\n\u0000\u0000\u0984\u0985\u0007"+ - "\u000e\u0000\u0000\u0985\u0986\u0007\u0015\u0000\u0000\u0986\u0987\u0007"+ - "\u0018\u0000\u0000\u0987\u0988\u0007\u0013\u0000\u0000\u0988\u0989\u0007"+ - "\u0011\u0000\u0000\u0989\u098a\u0007\u0007\u0000\u0000\u098a\u098b\u0007"+ - "\u0010\u0000\u0000\u098b\u0142\u0001\u0000\u0000\u0000\u098c\u098d\u0007"+ - "\u000e\u0000\u0000\u098d\u098e\u0007\u0006\u0000\u0000\u098e\u098f\u0007"+ - "\u0005\u0000\u0000\u098f\u0990\u0007\t\u0000\u0000\u0990\u0991\u0007\t"+ - "\u0000\u0000\u0991\u0144\u0001\u0000\u0000\u0000\u0992\u0993\u0007\u000e"+ - "\u0000\u0000\u0993\u0994\u0007\u0006\u0000\u0000\u0994\u0995\u0007\u0013"+ - "\u0000\u0000\u0995\u0996\u0007\t\u0000\u0000\u0996\u0997\u0007\n\u0000"+ - "\u0000\u0997\u0146\u0001\u0000\u0000\u0000\u0998\u0999\u0007\u000e\u0000"+ - "\u0000\u0999\u099a\u0007\u0006\u0000\u0000\u099a\u099b\u0007\u0016\u0000"+ - "\u0000\u099b\u099c\u0007\t\u0000\u0000\u099c\u099d\u0007\u0010\u0000\u0000"+ - "\u099d\u099e\u0007\n\u0000\u0000\u099e\u099f\u0007\r\u0000\u0000\u099f"+ - "\u0148\u0001\u0000\u0000\u0000\u09a0\u09a1\u0007\u000e\u0000\u0000\u09a1"+ - "\u09a2\u0007\u0013\u0000\u0000\u09a2\u09a3\u0007\u000f\u0000\u0000\u09a3"+ - "\u09a4\u0007\u000f\u0000\u0000\u09a4\u09a5\u0007\n\u0000\u0000\u09a5\u09a6"+ - "\u0007\u0007\u0000\u0000\u09a6\u09a7\u0007\u0010\u0000\u0000\u09a7\u014a"+ - "\u0001\u0000\u0000\u0000\u09a8\u09a9\u0007\u000e\u0000\u0000\u09a9\u09aa"+ - "\u0007\u0013\u0000\u0000\u09aa\u09ab\u0007\u000f\u0000\u0000\u09ab\u09ac"+ - "\u0007\u000f\u0000\u0000\u09ac\u09ad\u0007\n\u0000\u0000\u09ad\u09ae\u0007"+ - "\u0007\u0000\u0000\u09ae\u09af\u0007\u0010\u0000\u0000\u09af\u09b0\u0007"+ - "\t\u0000\u0000\u09b0\u014c\u0001\u0000\u0000\u0000\u09b1\u09b2\u0007\u000e"+ - "\u0000\u0000\u09b2\u09b3\u0007\u0013\u0000\u0000\u09b3\u09b4\u0007\u000f"+ - "\u0000\u0000\u09b4\u09b5\u0007\u000f\u0000\u0000\u09b5\u09b6\u0007\u0011"+ - "\u0000\u0000\u09b6\u09b7\u0007\u0010\u0000\u0000\u09b7\u014e\u0001\u0000"+ - "\u0000\u0000\u09b8\u09b9\u0007\u000e\u0000\u0000\u09b9\u09ba\u0007\u0013"+ - "\u0000\u0000\u09ba\u09bb\u0007\u000f\u0000\u0000\u09bb\u09bc\u0007\u000f"+ - "\u0000\u0000\u09bc\u09bd\u0007\u0011\u0000\u0000\u09bd\u09be\u0007\u0010"+ - "\u0000\u0000\u09be\u09bf\u0007\u0010\u0000\u0000\u09bf\u09c0\u0007\n\u0000"+ - "\u0000\u09c0\u09c1\u0007\f\u0000\u0000\u09c1\u0150\u0001\u0000\u0000\u0000"+ - "\u09c2\u09c3\u0007\u000e\u0000\u0000\u09c3\u09c4\u0007\u0013\u0000\u0000"+ - "\u09c4\u09c5\u0007\u0007\u0000\u0000\u09c5\u09c6\u0007\u0019\u0000\u0000"+ - "\u09c6\u09c7\u0007\u0011\u0000\u0000\u09c7\u09c8\u0007\u0017\u0000\u0000"+ - "\u09c8\u09c9\u0007\u0016\u0000\u0000\u09c9\u09ca\u0007\r\u0000\u0000\u09ca"+ - "\u09cb\u0007\u0005\u0000\u0000\u09cb\u09cc\u0007\u0010\u0000\u0000\u09cc"+ - "\u09cd\u0007\u0011\u0000\u0000\u09cd\u09ce\u0007\u0013\u0000\u0000\u09ce"+ - "\u09cf\u0007\u0007\u0000\u0000\u09cf\u0152\u0001\u0000\u0000\u0000\u09d0"+ - "\u09d1\u0007\u000e\u0000\u0000\u09d1\u09d2\u0007\u0013\u0000\u0000\u09d2"+ - "\u09d3\u0007\u0007\u0000\u0000\u09d3\u09d4\u0007\u0007\u0000\u0000\u09d4"+ - "\u09d5\u0007\n\u0000\u0000\u09d5\u09d6\u0007\u000e\u0000\u0000\u09d6\u09d7"+ - "\u0007\u0010\u0000\u0000\u09d7\u09d8\u0007\u0011\u0000\u0000\u09d8\u09d9"+ - "\u0007\u0013\u0000\u0000\u09d9\u09da\u0007\u0007\u0000\u0000\u09da\u0154"+ - "\u0001\u0000\u0000\u0000\u09db\u09dc\u0007\u000e\u0000\u0000\u09dc\u09dd"+ - "\u0007\u0013\u0000\u0000\u09dd\u09de\u0007\u0007\u0000\u0000\u09de\u09df"+ - "\u0007\t\u0000\u0000\u09df\u09e0\u0007\u0010\u0000\u0000\u09e0\u09e1\u0007"+ - "\r\u0000\u0000\u09e1\u09e2\u0007\u0005\u0000\u0000\u09e2\u09e3\u0007\u0011"+ - "\u0000\u0000\u09e3\u09e4\u0007\u0007\u0000\u0000\u09e4\u09e5\u0007\u0010"+ - "\u0000\u0000\u09e5\u09e6\u0007\t\u0000\u0000\u09e6\u0156\u0001\u0000\u0000"+ - "\u0000\u09e7\u09e8\u0007\u000e\u0000\u0000\u09e8\u09e9\u0007\u0013\u0000"+ - "\u0000\u09e9\u09ea\u0007\u0007\u0000\u0000\u09ea\u09eb\u0007\u0010\u0000"+ - "\u0000\u09eb\u09ec\u0007\n\u0000\u0000\u09ec\u09ed\u0007\u0007\u0000\u0000"+ - "\u09ed\u09ee\u0007\u0010\u0000\u0000\u09ee\u0158\u0001\u0000\u0000\u0000"+ - "\u09ef\u09f0\u0007\u000e\u0000\u0000\u09f0\u09f1\u0007\u0013\u0000\u0000"+ - "\u09f1\u09f2\u0007\u0007\u0000\u0000\u09f2\u09f3\u0007\u0010\u0000\u0000"+ - "\u09f3\u09f4\u0007\u0011\u0000\u0000\u09f4\u09f5\u0007\u0007\u0000\u0000"+ - "\u09f5\u09f6\u0007\u0016\u0000\u0000\u09f6\u09f7\u0007\n\u0000\u0000\u09f7"+ - "\u015a\u0001\u0000\u0000\u0000\u09f8\u09f9\u0007\u000e\u0000\u0000\u09f9"+ - "\u09fa\u0007\u0013\u0000\u0000\u09fa\u09fb\u0007\u0007\u0000\u0000\u09fb"+ - "\u09fc\u0007\u001b\u0000\u0000\u09fc\u09fd\u0007\n\u0000\u0000\u09fd\u09fe"+ - "\u0007\r\u0000\u0000\u09fe\u09ff\u0007\t\u0000\u0000\u09ff\u0a00\u0007"+ - "\u0011\u0000\u0000\u0a00\u0a01\u0007\u0013\u0000\u0000\u0a01\u0a02\u0007"+ - "\u0007\u0000\u0000\u0a02\u015c\u0001\u0000\u0000\u0000\u0a03\u0a04\u0007"+ - "\u000e\u0000\u0000\u0a04\u0a05\u0007\u0013\u0000\u0000\u0a05\u0a06\u0007"+ - "\u0018\u0000\u0000\u0a06\u0a07\u0007\b\u0000\u0000\u0a07\u015e\u0001\u0000"+ - "\u0000\u0000\u0a08\u0a09\u0007\u000e\u0000\u0000\u0a09\u0a0a\u0007\u0013"+ - "\u0000\u0000\u0a0a\u0a0b\u0007\t\u0000\u0000\u0a0b\u0a0c\u0007\u0010\u0000"+ - "\u0000\u0a0c\u0160\u0001\u0000\u0000\u0000\u0a0d\u0a0e\u0007\u000e\u0000"+ - "\u0000\u0a0e\u0a0f\u0007\t\u0000\u0000\u0a0f\u0a10\u0007\u001b\u0000\u0000"+ - "\u0a10\u0162\u0001\u0000\u0000\u0000\u0a11\u0a12\u0007\u000e\u0000\u0000"+ - "\u0a12\u0a13\u0007\u0016\u0000\u0000\u0a13\u0a14\u0007\r\u0000\u0000\u0a14"+ - "\u0a15\u0007\t\u0000\u0000\u0a15\u0a16\u0007\u0013\u0000\u0000\u0a16\u0a17"+ - "\u0007\r\u0000\u0000\u0a17\u0164\u0001\u0000\u0000\u0000\u0a18\u0a19\u0007"+ - "\u000e\u0000\u0000\u0a19\u0a1a\u0007\b\u0000\u0000\u0a1a\u0a1b\u0007\u000e"+ - "\u0000\u0000\u0a1b\u0a1c\u0007\u0006\u0000\u0000\u0a1c\u0a1d\u0007\n\u0000"+ - "\u0000\u0a1d\u0166\u0001\u0000\u0000\u0000\u0a1e\u0a1f\u0007\f\u0000\u0000"+ - "\u0a1f\u0a20\u0007\u0005\u0000\u0000\u0a20\u0a21\u0007\u0010\u0000\u0000"+ - "\u0a21\u0a22\u0007\u0005\u0000\u0000\u0a22\u0168\u0001\u0000\u0000\u0000"+ - "\u0a23\u0a24\u0007\f\u0000\u0000\u0a24\u0a25\u0007\u0005\u0000\u0000\u0a25"+ - "\u0a26\u0007\u0010\u0000\u0000\u0a26\u0a27\u0007\u0005\u0000\u0000\u0a27"+ - "\u0a28\u0007\u0012\u0000\u0000\u0a28\u0a29\u0007\u0005\u0000\u0000\u0a29"+ - "\u0a2a\u0007\t\u0000\u0000\u0a2a\u0a2b\u0007\n\u0000\u0000\u0a2b\u016a"+ - "\u0001\u0000\u0000\u0000\u0a2c\u0a2d\u0007\f\u0000\u0000\u0a2d\u0a2e\u0007"+ - "\u0005\u0000\u0000\u0a2e\u0a2f\u0007\b\u0000\u0000\u0a2f\u016c\u0001\u0000"+ - "\u0000\u0000\u0a30\u0a31\u0007\f\u0000\u0000\u0a31\u0a32\u0007\n\u0000"+ - "\u0000\u0a32\u0a33\u0007\u0005\u0000\u0000\u0a33\u0a34\u0007\u0006\u0000"+ - "\u0000\u0a34\u0a35\u0007\u0006\u0000\u0000\u0a35\u0a36\u0007\u0013\u0000"+ - "\u0000\u0a36\u0a37\u0007\u000e\u0000\u0000\u0a37\u0a38\u0007\u0005\u0000"+ - "\u0000\u0a38\u0a39\u0007\u0010\u0000\u0000\u0a39\u0a3a\u0007\n\u0000\u0000"+ - "\u0a3a\u016e\u0001\u0000\u0000\u0000\u0a3b\u0a3c\u0007\f\u0000\u0000\u0a3c"+ - "\u0a3d\u0007\n\u0000\u0000\u0a3d\u0a3e\u0007\u000e\u0000\u0000\u0a3e\u0a3f"+ - "\u0007\u0006\u0000\u0000\u0a3f\u0a40\u0007\u0005\u0000\u0000\u0a40\u0a41"+ - "\u0007\r\u0000\u0000\u0a41\u0a42\u0007\n\u0000\u0000\u0a42\u0170\u0001"+ - "\u0000\u0000\u0000\u0a43\u0a44\u0007\f\u0000\u0000\u0a44\u0a45\u0007\n"+ - "\u0000\u0000\u0a45\u0a46\u0007\u0019\u0000\u0000\u0a46\u0a47\u0007\u0005"+ - "\u0000\u0000\u0a47\u0a48\u0007\u0016\u0000\u0000\u0a48\u0a49\u0007\u0006"+ - "\u0000\u0000\u0a49\u0a4a\u0007\u0010\u0000\u0000\u0a4a\u0a4b\u0007\t\u0000"+ - "\u0000\u0a4b\u0172\u0001\u0000\u0000\u0000\u0a4c\u0a4d\u0007\f\u0000\u0000"+ - "\u0a4d\u0a4e\u0007\n\u0000\u0000\u0a4e\u0a4f\u0007\u0019\u0000\u0000\u0a4f"+ - "\u0a50\u0007\n\u0000\u0000\u0a50\u0a51\u0007\r\u0000\u0000\u0a51\u0a52"+ - "\u0007\r\u0000\u0000\u0a52\u0a53\u0007\n\u0000\u0000\u0a53\u0a54\u0007"+ - "\f\u0000\u0000\u0a54\u0174\u0001\u0000\u0000\u0000\u0a55\u0a56\u0007\f"+ - "\u0000\u0000\u0a56\u0a57\u0007\n\u0000\u0000\u0a57\u0a58\u0007\u0019\u0000"+ - "\u0000\u0a58\u0a59\u0007\u0011\u0000\u0000\u0a59\u0a5a\u0007\u0007\u0000"+ - "\u0000\u0a5a\u0a5b\u0007\n\u0000\u0000\u0a5b\u0a5c\u0007\r\u0000\u0000"+ - "\u0a5c\u0176\u0001\u0000\u0000\u0000\u0a5d\u0a5e\u0007\f\u0000\u0000\u0a5e"+ - "\u0a5f\u0007\n\u0000\u0000\u0a5f\u0a60\u0007\u0006\u0000\u0000\u0a60\u0a61"+ - "\u0007\n\u0000\u0000\u0a61\u0a62\u0007\u0010\u0000\u0000\u0a62\u0a63\u0007"+ - "\n\u0000\u0000\u0a63\u0178\u0001\u0000\u0000\u0000\u0a64\u0a65\u0007\f"+ - "\u0000\u0000\u0a65\u0a66\u0007\n\u0000\u0000\u0a66\u0a67\u0007\u0006\u0000"+ - "\u0000\u0a67\u0a68\u0007\u0011\u0000\u0000\u0a68\u0a69\u0007\u000f\u0000"+ - "\u0000\u0a69\u0a6a\u0007\u0011\u0000\u0000\u0a6a\u0a6b\u0007\u0010\u0000"+ + "\u0001\u0000\u0000\u0000\u02f1\u100b\u0001\u0000\u0000\u0000\u02f3\u1010"+ + "\u0001\u0000\u0000\u0000\u02f5\u1019\u0001\u0000\u0000\u0000\u02f7\u1024"+ + "\u0001\u0000\u0000\u0000\u02f9\u102c\u0001\u0000\u0000\u0000\u02fb\u1031"+ + "\u0001\u0000\u0000\u0000\u02fd\u1039\u0001\u0000\u0000\u0000\u02ff\u103f"+ + "\u0001\u0000\u0000\u0000\u0301\u1043\u0001\u0000\u0000\u0000\u0303\u1048"+ + "\u0001\u0000\u0000\u0000\u0305\u104c\u0001\u0000\u0000\u0000\u0307\u1051"+ + "\u0001\u0000\u0000\u0000\u0309\u1059\u0001\u0000\u0000\u0000\u030b\u1060"+ + "\u0001\u0000\u0000\u0000\u030d\u1064\u0001\u0000\u0000\u0000\u030f\u106c"+ + "\u0001\u0000\u0000\u0000\u0311\u1071\u0001\u0000\u0000\u0000\u0313\u107b"+ + "\u0001\u0000\u0000\u0000\u0315\u1084\u0001\u0000\u0000\u0000\u0317\u1088"+ + "\u0001\u0000\u0000\u0000\u0319\u1090\u0001\u0000\u0000\u0000\u031b\u1097"+ + "\u0001\u0000\u0000\u0000\u031d\u109f\u0001\u0000\u0000\u0000\u031f\u10a5"+ + "\u0001\u0000\u0000\u0000\u0321\u10ae\u0001\u0000\u0000\u0000\u0323\u10b4"+ + "\u0001\u0000\u0000\u0000\u0325\u10b8\u0001\u0000\u0000\u0000\u0327\u10c0"+ + "\u0001\u0000\u0000\u0000\u0329\u10c9\u0001\u0000\u0000\u0000\u032b\u10cf"+ + "\u0001\u0000\u0000\u0000\u032d\u10d8\u0001\u0000\u0000\u0000\u032f\u10de"+ + "\u0001\u0000\u0000\u0000\u0331\u10e3\u0001\u0000\u0000\u0000\u0333\u10ea"+ + "\u0001\u0000\u0000\u0000\u0335\u10f2\u0001\u0000\u0000\u0000\u0337\u10fa"+ + "\u0001\u0000\u0000\u0000\u0339\u1103\u0001\u0000\u0000\u0000\u033b\u110d"+ + "\u0001\u0000\u0000\u0000\u033d\u1112\u0001\u0000\u0000\u0000\u033f\u1116"+ + "\u0001\u0000\u0000\u0000\u0341\u111c\u0001\u0000\u0000\u0000\u0343\u1125"+ + "\u0001\u0000\u0000\u0000\u0345\u112f\u0001\u0000\u0000\u0000\u0347\u1134"+ + "\u0001\u0000\u0000\u0000\u0349\u113e\u0001\u0000\u0000\u0000\u034b\u1144"+ + "\u0001\u0000\u0000\u0000\u034d\u1149\u0001\u0000\u0000\u0000\u034f\u1150"+ + "\u0001\u0000\u0000\u0000\u0351\u1158\u0001\u0000\u0000\u0000\u0353\u1166"+ + "\u0001\u0000\u0000\u0000\u0355\u1171\u0001\u0000\u0000\u0000\u0357\u1178"+ + "\u0001\u0000\u0000\u0000\u0359\u118b\u0001\u0000\u0000\u0000\u035b\u11a7"+ + "\u0001\u0000\u0000\u0000\u035d\u11c2\u0001\u0000\u0000\u0000\u035f\u11c8"+ + "\u0001\u0000\u0000\u0000\u0361\u11d5\u0001\u0000\u0000\u0000\u0363\u11df"+ + "\u0001\u0000\u0000\u0000\u0365\u11ea\u0001\u0000\u0000\u0000\u0367\u11f4"+ + "\u0001\u0000\u0000\u0000\u0369\u11fe\u0001\u0000\u0000\u0000\u036b\u1207"+ + "\u0001\u0000\u0000\u0000\u036d\u120d\u0001\u0000\u0000\u0000\u036f\u1215"+ + "\u0001\u0000\u0000\u0000\u0371\u1222\u0001\u0000\u0000\u0000\u0373\u1227"+ + "\u0001\u0000\u0000\u0000\u0375\u122f\u0001\u0000\u0000\u0000\u0377\u1236"+ + "\u0001\u0000\u0000\u0000\u0379\u123d\u0001\u0000\u0000\u0000\u037b\u1248"+ + "\u0001\u0000\u0000\u0000\u037d\u1252\u0001\u0000\u0000\u0000\u037f\u1259"+ + "\u0001\u0000\u0000\u0000\u0381\u1260\u0001\u0000\u0000\u0000\u0383\u1268"+ + "\u0001\u0000\u0000\u0000\u0385\u1270\u0001\u0000\u0000\u0000\u0387\u127a"+ + "\u0001\u0000\u0000\u0000\u0389\u1281\u0001\u0000\u0000\u0000\u038b\u1288"+ + "\u0001\u0000\u0000\u0000\u038d\u128f\u0001\u0000\u0000\u0000\u038f\u129b"+ + "\u0001\u0000\u0000\u0000\u0391\u129f\u0001\u0000\u0000\u0000\u0393\u12a3"+ + "\u0001\u0000\u0000\u0000\u0395\u12a9\u0001\u0000\u0000\u0000\u0397\u12b6"+ + "\u0001\u0000\u0000\u0000\u0399\u12c2\u0001\u0000\u0000\u0000\u039b\u12c6"+ + "\u0001\u0000\u0000\u0000\u039d\u12ca\u0001\u0000\u0000\u0000\u039f\u12d3"+ + "\u0001\u0000\u0000\u0000\u03a1\u12db\u0001\u0000\u0000\u0000\u03a3\u12e6"+ + "\u0001\u0000\u0000\u0000\u03a5\u12ec\u0001\u0000\u0000\u0000\u03a7\u12f4"+ + "\u0001\u0000\u0000\u0000\u03a9\u12fd\u0001\u0000\u0000\u0000\u03ab\u1301"+ + "\u0001\u0000\u0000\u0000\u03ad\u1309\u0001\u0000\u0000\u0000\u03af\u1314"+ + "\u0001\u0000\u0000\u0000\u03b1\u131d\u0001\u0000\u0000\u0000\u03b3\u1322"+ + "\u0001\u0000\u0000\u0000\u03b5\u1329\u0001\u0000\u0000\u0000\u03b7\u132e"+ + "\u0001\u0000\u0000\u0000\u03b9\u1335\u0001\u0000\u0000\u0000\u03bb\u133a"+ + "\u0001\u0000\u0000\u0000\u03bd\u1343\u0001\u0000\u0000\u0000\u03bf\u1348"+ + "\u0001\u0000\u0000\u0000\u03c1\u1354\u0001\u0000\u0000\u0000\u03c3\u135f"+ + "\u0001\u0000\u0000\u0000\u03c5\u1368\u0001\u0000\u0000\u0000\u03c7\u1370"+ + "\u0001\u0000\u0000\u0000\u03c9\u137e\u0001\u0000\u0000\u0000\u03cb\u1386"+ + "\u0001\u0000\u0000\u0000\u03cd\u1391\u0001\u0000\u0000\u0000\u03cf\u1398"+ + "\u0001\u0000\u0000\u0000\u03d1\u139f\u0001\u0000\u0000\u0000\u03d3\u13a6"+ + "\u0001\u0000\u0000\u0000\u03d5\u13ad\u0001\u0000\u0000\u0000\u03d7\u13b1"+ + "\u0001\u0000\u0000\u0000\u03d9\u13b5\u0001\u0000\u0000\u0000\u03db\u13ba"+ + "\u0001\u0000\u0000\u0000\u03dd\u13bf\u0001\u0000\u0000\u0000\u03df\u13c7"+ + "\u0001\u0000\u0000\u0000\u03e1\u13cd\u0001\u0000\u0000\u0000\u03e3\u13d7"+ + "\u0001\u0000\u0000\u0000\u03e5\u13dc\u0001\u0000\u0000\u0000\u03e7\u13f0"+ + "\u0001\u0000\u0000\u0000\u03e9\u1402\u0001\u0000\u0000\u0000\u03eb\u1408"+ + "\u0001\u0000\u0000\u0000\u03ed\u1415\u0001\u0000\u0000\u0000\u03ef\u1420"+ + "\u0001\u0000\u0000\u0000\u03f1\u1426\u0001\u0000\u0000\u0000\u03f3\u142f"+ + "\u0001\u0000\u0000\u0000\u03f5\u1437\u0001\u0000\u0000\u0000\u03f7\u143b"+ + "\u0001\u0000\u0000\u0000\u03f9\u1447\u0001\u0000\u0000\u0000\u03fb\u144f"+ + "\u0001\u0000\u0000\u0000\u03fd\u1455\u0001\u0000\u0000\u0000\u03ff\u145b"+ + "\u0001\u0000\u0000\u0000\u0401\u1463\u0001\u0000\u0000\u0000\u0403\u146b"+ + "\u0001\u0000\u0000\u0000\u0405\u1471\u0001\u0000\u0000\u0000\u0407\u1476"+ + "\u0001\u0000\u0000\u0000\u0409\u147d\u0001\u0000\u0000\u0000\u040b\u1483"+ + "\u0001\u0000\u0000\u0000\u040d\u1489\u0001\u0000\u0000\u0000\u040f\u1492"+ + "\u0001\u0000\u0000\u0000\u0411\u1498\u0001\u0000\u0000\u0000\u0413\u149c"+ + "\u0001\u0000\u0000\u0000\u0415\u14a1\u0001\u0000\u0000\u0000\u0417\u14a8"+ + "\u0001\u0000\u0000\u0000\u0419\u14b0\u0001\u0000\u0000\u0000\u041b\u14ba"+ + "\u0001\u0000\u0000\u0000\u041d\u14c1\u0001\u0000\u0000\u0000\u041f\u14c6"+ + "\u0001\u0000\u0000\u0000\u0421\u14cb\u0001\u0000\u0000\u0000\u0423\u14cf"+ + "\u0001\u0000\u0000\u0000\u0425\u14d4\u0001\u0000\u0000\u0000\u0427\u14d9"+ + "\u0001\u0000\u0000\u0000\u0429\u14e1\u0001\u0000\u0000\u0000\u042b\u14e9"+ + "\u0001\u0000\u0000\u0000\u042d\u14ed\u0001\u0000\u0000\u0000\u042f\u14f1"+ + "\u0001\u0000\u0000\u0000\u0431\u14fb\u0001\u0000\u0000\u0000\u0433\u1501"+ + "\u0001\u0000\u0000\u0000\u0435\u1505\u0001\u0000\u0000\u0000\u0437\u1509"+ + "\u0001\u0000\u0000\u0000\u0439\u150c\u0001\u0000\u0000\u0000\u043b\u1512"+ + "\u0001\u0000\u0000\u0000\u043d\u151c\u0001\u0000\u0000\u0000\u043f\u1520"+ + "\u0001\u0000\u0000\u0000\u0441\u1523\u0001\u0000\u0000\u0000\u0443\u1529"+ + "\u0001\u0000\u0000\u0000\u0445\u1531\u0001\u0000\u0000\u0000\u0447\u1537"+ + "\u0001\u0000\u0000\u0000\u0449\u153d\u0001\u0000\u0000\u0000\u044b\u1542"+ + "\u0001\u0000\u0000\u0000\u044d\u1547\u0001\u0000\u0000\u0000\u044f\u1552"+ + "\u0001\u0000\u0000\u0000\u0451\u1558\u0001\u0000\u0000\u0000\u0453\u1565"+ + "\u0001\u0000\u0000\u0000\u0455\u156c\u0001\u0000\u0000\u0000\u0457\u1574"+ + "\u0001\u0000\u0000\u0000\u0459\u1579\u0001\u0000\u0000\u0000\u045b\u157f"+ + "\u0001\u0000\u0000\u0000\u045d\u1584\u0001\u0000\u0000\u0000\u045f\u158a"+ + "\u0001\u0000\u0000\u0000\u0461\u158f\u0001\u0000\u0000\u0000\u0463\u1595"+ + "\u0001\u0000\u0000\u0000\u0465\u159b\u0001\u0000\u0000\u0000\u0467\u15a2"+ + "\u0001\u0000\u0000\u0000\u0469\u15a6\u0001\u0000\u0000\u0000\u046b\u15ab"+ + "\u0001\u0000\u0000\u0000\u046d\u15af\u0001\u0000\u0000\u0000\u046f\u15b4"+ + "\u0001\u0000\u0000\u0000\u0471\u15b8\u0001\u0000\u0000\u0000\u0473\u15bd"+ + "\u0001\u0000\u0000\u0000\u0475\u15c1\u0001\u0000\u0000\u0000\u0477\u15c6"+ + "\u0001\u0000\u0000\u0000\u0479\u15cb\u0001\u0000\u0000\u0000\u047b\u15d0"+ + "\u0001\u0000\u0000\u0000\u047d\u15d5\u0001\u0000\u0000\u0000\u047f\u15db"+ + "\u0001\u0000\u0000\u0000\u0481\u15e1\u0001\u0000\u0000\u0000\u0483\u15e7"+ + "\u0001\u0000\u0000\u0000\u0485\u15f2\u0001\u0000\u0000\u0000\u0487\u15fe"+ + "\u0001\u0000\u0000\u0000\u0489\u160f\u0001\u0000\u0000\u0000\u048b\u1615"+ + "\u0001\u0000\u0000\u0000\u048d\u1622\u0001\u0000\u0000\u0000\u048f\u1628"+ + "\u0001\u0000\u0000\u0000\u0491\u162e\u0001\u0000\u0000\u0000\u0493\u1634"+ + "\u0001\u0000\u0000\u0000\u0495\u1638\u0001\u0000\u0000\u0000\u0497\u163f"+ + "\u0001\u0000\u0000\u0000\u0499\u1649\u0001\u0000\u0000\u0000\u049b\u1650"+ + "\u0001\u0000\u0000\u0000\u049d\u1658\u0001\u0000\u0000\u0000\u049f\u165f"+ + "\u0001\u0000\u0000\u0000\u04a1\u1664\u0001\u0000\u0000\u0000\u04a3\u166a"+ + "\u0001\u0000\u0000\u0000\u04a5\u166e\u0001\u0000\u0000\u0000\u04a7\u167a"+ + "\u0001\u0000\u0000\u0000\u04a9\u168d\u0001\u0000\u0000\u0000\u04ab\u1699"+ + "\u0001\u0000\u0000\u0000\u04ad\u16a7\u0001\u0000\u0000\u0000\u04af\u16b6"+ + "\u0001\u0000\u0000\u0000\u04b1\u16c3\u0001\u0000\u0000\u0000\u04b3\u16d0"+ + "\u0001\u0000\u0000\u0000\u04b5\u16dc\u0001\u0000\u0000\u0000\u04b7\u16e9"+ + "\u0001\u0000\u0000\u0000\u04b9\u16f8\u0001\u0000\u0000\u0000\u04bb\u1707"+ + "\u0001\u0000\u0000\u0000\u04bd\u171d\u0001\u0000\u0000\u0000\u04bf\u1733"+ + "\u0001\u0000\u0000\u0000\u04c1\u1741\u0001\u0000\u0000\u0000\u04c3\u1748"+ + "\u0001\u0000\u0000\u0000\u04c5\u174d\u0001\u0000\u0000\u0000\u04c7\u1753"+ + "\u0001\u0000\u0000\u0000\u04c9\u175e\u0001\u0000\u0000\u0000\u04cb\u176a"+ + "\u0001\u0000\u0000\u0000\u04cd\u177a\u0001\u0000\u0000\u0000\u04cf\u178a"+ + "\u0001\u0000\u0000\u0000\u04d1\u1791\u0001\u0000\u0000\u0000\u04d3\u1798"+ + "\u0001\u0000\u0000\u0000\u04d5\u17a1\u0001\u0000\u0000\u0000\u04d7\u17a8"+ + "\u0001\u0000\u0000\u0000\u04d9\u17b2\u0001\u0000\u0000\u0000\u04db\u17b9"+ + "\u0001\u0000\u0000\u0000\u04dd\u17bd\u0001\u0000\u0000\u0000\u04df\u17cd"+ + "\u0001\u0000\u0000\u0000\u04e1\u17d6\u0001\u0000\u0000\u0000\u04e3\u17e0"+ + "\u0001\u0000\u0000\u0000\u04e5\u17eb\u0001\u0000\u0000\u0000\u04e7\u17f4"+ + "\u0001\u0000\u0000\u0000\u04e9\u1801\u0001\u0000\u0000\u0000\u04eb\u180f"+ + "\u0001\u0000\u0000\u0000\u04ed\u1820\u0001\u0000\u0000\u0000\u04ef\u182a"+ + "\u0001\u0000\u0000\u0000\u04f1\u1838\u0001\u0000\u0000\u0000\u04f3\u1842"+ + "\u0001\u0000\u0000\u0000\u04f5\u1851\u0001\u0000\u0000\u0000\u04f7\u1862"+ + "\u0001\u0000\u0000\u0000\u04f9\u1866\u0001\u0000\u0000\u0000\u04fb\u187a"+ + "\u0001\u0000\u0000\u0000\u04fd\u1884\u0001\u0000\u0000\u0000\u04ff\u189a"+ + "\u0001\u0000\u0000\u0000\u0501\u18a7\u0001\u0000\u0000\u0000\u0503\u18af"+ + "\u0001\u0000\u0000\u0000\u0505\u18b7\u0001\u0000\u0000\u0000\u0507\u18c1"+ + "\u0001\u0000\u0000\u0000\u0509\u18ce\u0001\u0000\u0000\u0000\u050b\u18d2"+ + "\u0001\u0000\u0000\u0000\u050d\u18d6\u0001\u0000\u0000\u0000\u050f\u18d8"+ + "\u0001\u0000\u0000\u0000\u0511\u18db\u0001\u0000\u0000\u0000\u0513\u18e4"+ + "\u0001\u0000\u0000\u0000\u0515\u18e7\u0001\u0000\u0000\u0000\u0517\u18f0"+ + "\u0001\u0000\u0000\u0000\u0519\u18f4\u0001\u0000\u0000\u0000\u051b\u18f8"+ + "\u0001\u0000\u0000\u0000\u051d\u18fc\u0001\u0000\u0000\u0000\u051f\u1900"+ + "\u0001\u0000\u0000\u0000\u0521\u1903\u0001\u0000\u0000\u0000\u0523\u190c"+ + "\u0001\u0000\u0000\u0000\u0525\u1912\u0001\u0000\u0000\u0000\u0527\u1915"+ + "\u0001\u0000\u0000\u0000\u0529\u1919\u0001\u0000\u0000\u0000\u052b\u1922"+ + "\u0001\u0000\u0000\u0000\u052d\u1929\u0001\u0000\u0000\u0000\u052f\u192c"+ + "\u0001\u0000\u0000\u0000\u0531\u1934\u0001\u0000\u0000\u0000\u0533\u1937"+ + "\u0001\u0000\u0000\u0000\u0535\u193a\u0001\u0000\u0000\u0000\u0537\u193d"+ + "\u0001\u0000\u0000\u0000\u0539\u1945\u0001\u0000\u0000\u0000\u053b\u1948"+ + "\u0001\u0000\u0000\u0000\u053d\u194b\u0001\u0000\u0000\u0000\u053f\u194d"+ + "\u0001\u0000\u0000\u0000\u0541\u196f\u0001\u0000\u0000\u0000\u0543\u1972"+ + "\u0001\u0000\u0000\u0000\u0545\u1976\u0001\u0000\u0000\u0000\u0547\u197e"+ + "\u0001\u0000\u0000\u0000\u0549\u198e\u0001\u0000\u0000\u0000\u054b\u1999"+ + "\u0001\u0000\u0000\u0000\u054d\u199d\u0001\u0000\u0000\u0000\u054f\u19a8"+ + "\u0001\u0000\u0000\u0000\u0551\u19cf\u0001\u0000\u0000\u0000\u0553\u1a02"+ + "\u0001\u0000\u0000\u0000\u0555\u1a1a\u0001\u0000\u0000\u0000\u0557\u1a1d"+ + "\u0001\u0000\u0000\u0000\u0559\u1a1f\u0001\u0000\u0000\u0000\u055b\u1a24"+ + "\u0001\u0000\u0000\u0000\u055d\u1a43\u0001\u0000\u0000\u0000\u055f\u1a46"+ + "\u0001\u0000\u0000\u0000\u0561\u1a4b\u0001\u0000\u0000\u0000\u0563\u1a58"+ + "\u0001\u0000\u0000\u0000\u0565\u1a5b\u0001\u0000\u0000\u0000\u0567\u1a60"+ + "\u0001\u0000\u0000\u0000\u0569\u1a66\u0001\u0000\u0000\u0000\u056b\u1a6b"+ + "\u0001\u0000\u0000\u0000\u056d\u1a70\u0001\u0000\u0000\u0000\u056f\u1a75"+ + "\u0001\u0000\u0000\u0000\u0571\u1a7a\u0001\u0000\u0000\u0000\u0573\u1a8b"+ + "\u0001\u0000\u0000\u0000\u0575\u1a8d\u0001\u0000\u0000\u0000\u0577\u0578"+ + "\u0005$\u0000\u0000\u0578\u0006\u0001\u0000\u0000\u0000\u0579\u057a\u0005"+ + "(\u0000\u0000\u057a\b\u0001\u0000\u0000\u0000\u057b\u057c\u0005)\u0000"+ + "\u0000\u057c\n\u0001\u0000\u0000\u0000\u057d\u057e\u0005[\u0000\u0000"+ + "\u057e\f\u0001\u0000\u0000\u0000\u057f\u0580\u0005]\u0000\u0000\u0580"+ + "\u000e\u0001\u0000\u0000\u0000\u0581\u0582\u0005,\u0000\u0000\u0582\u0010"+ + "\u0001\u0000\u0000\u0000\u0583\u0584\u0005;\u0000\u0000\u0584\u0012\u0001"+ + "\u0000\u0000\u0000\u0585\u0586\u0005:\u0000\u0000\u0586\u0014\u0001\u0000"+ + "\u0000\u0000\u0587\u0588\u0005*\u0000\u0000\u0588\u0016\u0001\u0000\u0000"+ + "\u0000\u0589\u058a\u0005=\u0000\u0000\u058a\u0018\u0001\u0000\u0000\u0000"+ + "\u058b\u058c\u0005.\u0000\u0000\u058c\u001a\u0001\u0000\u0000\u0000\u058d"+ + "\u058e\u0005+\u0000\u0000\u058e\u001c\u0001\u0000\u0000\u0000\u058f\u0590"+ + "\u0005-\u0000\u0000\u0590\u001e\u0001\u0000\u0000\u0000\u0591\u0592\u0005"+ + "/\u0000\u0000\u0592 \u0001\u0000\u0000\u0000\u0593\u0594\u0005^\u0000"+ + "\u0000\u0594\"\u0001\u0000\u0000\u0000\u0595\u0596\u0005<\u0000\u0000"+ + "\u0596$\u0001\u0000\u0000\u0000\u0597\u0598\u0005>\u0000\u0000\u0598&"+ + "\u0001\u0000\u0000\u0000\u0599\u059a\u0005<\u0000\u0000\u059a\u059b\u0005"+ + "<\u0000\u0000\u059b(\u0001\u0000\u0000\u0000\u059c\u059d\u0005>\u0000"+ + "\u0000\u059d\u059e\u0005>\u0000\u0000\u059e*\u0001\u0000\u0000\u0000\u059f"+ + "\u05a0\u0005:\u0000\u0000\u05a0\u05a1\u0005=\u0000\u0000\u05a1,\u0001"+ + "\u0000\u0000\u0000\u05a2\u05a3\u0005<\u0000\u0000\u05a3\u05a4\u0005=\u0000"+ + "\u0000\u05a4.\u0001\u0000\u0000\u0000\u05a5\u05a6\u0005=\u0000\u0000\u05a6"+ + "\u05a7\u0005>\u0000\u0000\u05a70\u0001\u0000\u0000\u0000\u05a8\u05a9\u0005"+ + ">\u0000\u0000\u05a9\u05aa\u0005=\u0000\u0000\u05aa2\u0001\u0000\u0000"+ + "\u0000\u05ab\u05ac\u0005.\u0000\u0000\u05ac\u05ad\u0005.\u0000\u0000\u05ad"+ + "4\u0001\u0000\u0000\u0000\u05ae\u05af\u0005<\u0000\u0000\u05af\u05b0\u0005"+ + ">\u0000\u0000\u05b06\u0001\u0000\u0000\u0000\u05b1\u05b2\u0005:\u0000"+ + "\u0000\u05b2\u05b3\u0005:\u0000\u0000\u05b38\u0001\u0000\u0000\u0000\u05b4"+ + "\u05b5\u0005%\u0000\u0000\u05b5:\u0001\u0000\u0000\u0000\u05b6\u05b8\u0005"+ + "$\u0000\u0000\u05b7\u05b9\u0007\u0000\u0000\u0000\u05b8\u05b7\u0001\u0000"+ + "\u0000\u0000\u05b9\u05ba\u0001\u0000\u0000\u0000\u05ba\u05b8\u0001\u0000"+ + "\u0000\u0000\u05ba\u05bb\u0001\u0000\u0000\u0000\u05bb<\u0001\u0000\u0000"+ + "\u0000\u05bc\u05cc\u0003A\u001e\u0000\u05bd\u05c1\u0005+\u0000\u0000\u05be"+ + "\u05bf\u0005-\u0000\u0000\u05bf\u05c1\u0004\u001c\u0000\u0000\u05c0\u05bd"+ + "\u0001\u0000\u0000\u0000\u05c0\u05be\u0001\u0000\u0000\u0000\u05c1\u05c2"+ + "\u0001\u0000\u0000\u0000\u05c2\u05c0\u0001\u0000\u0000\u0000\u05c2\u05c3"+ + "\u0001\u0000\u0000\u0000\u05c3\u05c7\u0001\u0000\u0000\u0000\u05c4\u05c8"+ + "\u0003A\u001e\u0000\u05c5\u05c6\u0005/\u0000\u0000\u05c6\u05c8\u0004\u001c"+ + "\u0001\u0000\u05c7\u05c4\u0001\u0000\u0000\u0000\u05c7\u05c5\u0001\u0000"+ + "\u0000\u0000\u05c8\u05cc\u0001\u0000\u0000\u0000\u05c9\u05ca\u0005/\u0000"+ + "\u0000\u05ca\u05cc\u0004\u001c\u0002\u0000\u05cb\u05bc\u0001\u0000\u0000"+ + "\u0000\u05cb\u05c0\u0001\u0000\u0000\u0000\u05cb\u05c9\u0001\u0000\u0000"+ + "\u0000\u05cc\u05cd\u0001\u0000\u0000\u0000\u05cd\u05cb\u0001\u0000\u0000"+ + "\u0000\u05cd\u05ce\u0001\u0000\u0000\u0000\u05ce\u05d1\u0001\u0000\u0000"+ + "\u0000\u05cf\u05d1\u0007\u0001\u0000\u0000\u05d0\u05cb\u0001\u0000\u0000"+ + "\u0000\u05d0\u05cf\u0001\u0000\u0000\u0000\u05d1\u05d2\u0001\u0000\u0000"+ + "\u0000\u05d2\u05d3\u0006\u001c\u0000\u0000\u05d3>\u0001\u0000\u0000\u0000"+ + "\u05d4\u05da\u0003C\u001f\u0000\u05d5\u05d6\u0005-\u0000\u0000\u05d6\u05da"+ + "\u0004\u001d\u0003\u0000\u05d7\u05d8\u0005/\u0000\u0000\u05d8\u05da\u0004"+ + "\u001d\u0004\u0000\u05d9\u05d4\u0001\u0000\u0000\u0000\u05d9\u05d5\u0001"+ + "\u0000\u0000\u0000\u05d9\u05d7\u0001\u0000\u0000\u0000\u05da\u05dd\u0001"+ + "\u0000\u0000\u0000\u05db\u05d9\u0001\u0000\u0000\u0000\u05db\u05dc\u0001"+ + "\u0000\u0000\u0000\u05dc\u05de\u0001\u0000\u0000\u0000\u05dd\u05db\u0001"+ + "\u0000\u0000\u0000\u05de\u05e0\u0003E \u0000\u05df\u05e1\u0003=\u001c"+ + "\u0000\u05e0\u05df\u0001\u0000\u0000\u0000\u05e0\u05e1\u0001\u0000\u0000"+ + "\u0000\u05e1\u05e5\u0001\u0000\u0000\u0000\u05e2\u05e6\u0005+\u0000\u0000"+ + "\u05e3\u05e4\u0005-\u0000\u0000\u05e4\u05e6\u0004\u001d\u0005\u0000\u05e5"+ + "\u05e2\u0001\u0000\u0000\u0000\u05e5\u05e3\u0001\u0000\u0000\u0000\u05e6"+ + "\u05e7\u0001\u0000\u0000\u0000\u05e7\u05e5\u0001\u0000\u0000\u0000\u05e7"+ + "\u05e8\u0001\u0000\u0000\u0000\u05e8\u05e9\u0001\u0000\u0000\u0000\u05e9"+ + "\u05ea\u0006\u001d\u0001\u0000\u05ea@\u0001\u0000\u0000\u0000\u05eb\u05ec"+ + "\u0007\u0002\u0000\u0000\u05ecB\u0001\u0000\u0000\u0000\u05ed\u05ee\u0007"+ + "\u0003\u0000\u0000\u05eeD\u0001\u0000\u0000\u0000\u05ef\u05f0\u0007\u0004"+ + "\u0000\u0000\u05f0F\u0001\u0000\u0000\u0000\u05f1\u05f2\u0007\u0005\u0000"+ + "\u0000\u05f2\u05f3\u0007\u0006\u0000\u0000\u05f3\u05f4\u0007\u0006\u0000"+ + "\u0000\u05f4H\u0001\u0000\u0000\u0000\u05f5\u05f6\u0007\u0005\u0000\u0000"+ + "\u05f6\u05f7\u0007\u0007\u0000\u0000\u05f7\u05f8\u0007\u0005\u0000\u0000"+ + "\u05f8\u05f9\u0007\u0006\u0000\u0000\u05f9\u05fa\u0007\b\u0000\u0000\u05fa"+ + "\u05fb\u0007\t\u0000\u0000\u05fb\u05fc\u0007\n\u0000\u0000\u05fcJ\u0001"+ + "\u0000\u0000\u0000\u05fd\u05fe\u0007\u0005\u0000\u0000\u05fe\u05ff\u0007"+ + "\u0007\u0000\u0000\u05ff\u0600\u0007\u0005\u0000\u0000\u0600\u0601\u0007"+ + "\u0006\u0000\u0000\u0601\u0602\u0007\b\u0000\u0000\u0602\u0603\u0007\u000b"+ + "\u0000\u0000\u0603\u0604\u0007\n\u0000\u0000\u0604L\u0001\u0000\u0000"+ + "\u0000\u0605\u0606\u0007\u0005\u0000\u0000\u0606\u0607\u0007\u0007\u0000"+ + "\u0000\u0607\u0608\u0007\f\u0000\u0000\u0608N\u0001\u0000\u0000\u0000"+ + "\u0609\u060a\u0007\u0005\u0000\u0000\u060a\u060b\u0007\u0007\u0000\u0000"+ + "\u060b\u060c\u0007\b\u0000\u0000\u060cP\u0001\u0000\u0000\u0000\u060d"+ + "\u060e\u0007\u0005\u0000\u0000\u060e\u060f\u0007\r\u0000\u0000\u060f\u0610"+ + "\u0007\r\u0000\u0000\u0610\u0611\u0007\u0005\u0000\u0000\u0611\u0612\u0007"+ + "\b\u0000\u0000\u0612R\u0001\u0000\u0000\u0000\u0613\u0614\u0007\u0005"+ + "\u0000\u0000\u0614\u0615\u0007\t\u0000\u0000\u0615T\u0001\u0000\u0000"+ + "\u0000\u0616\u0617\u0007\u0005\u0000\u0000\u0617\u0618\u0007\t\u0000\u0000"+ + "\u0618\u0619\u0007\u000e\u0000\u0000\u0619V\u0001\u0000\u0000\u0000\u061a"+ + "\u061b\u0007\u0005\u0000\u0000\u061b\u061c\u0007\t\u0000\u0000\u061c\u061d"+ + "\u0007\b\u0000\u0000\u061d\u061e\u0007\u000f\u0000\u0000\u061e\u061f\u0007"+ + "\u000f\u0000\u0000\u061f\u0620\u0007\n\u0000\u0000\u0620\u0621\u0007\u0010"+ + "\u0000\u0000\u0621\u0622\u0007\r\u0000\u0000\u0622\u0623\u0007\u0011\u0000"+ + "\u0000\u0623\u0624\u0007\u000e\u0000\u0000\u0624X\u0001\u0000\u0000\u0000"+ + "\u0625\u0626\u0007\u0012\u0000\u0000\u0626\u0627\u0007\u0013\u0000\u0000"+ + "\u0627\u0628\u0007\u0010\u0000\u0000\u0628\u0629\u0007\u0014\u0000\u0000"+ + "\u0629Z\u0001\u0000\u0000\u0000\u062a\u062b\u0007\u000e\u0000\u0000\u062b"+ + "\u062c\u0007\u0005\u0000\u0000\u062c\u062d\u0007\t\u0000\u0000\u062d\u062e"+ + "\u0007\n\u0000\u0000\u062e\\\u0001\u0000\u0000\u0000\u062f\u0630\u0007"+ + "\u000e\u0000\u0000\u0630\u0631\u0007\u0005\u0000\u0000\u0631\u0632\u0007"+ + "\t\u0000\u0000\u0632\u0633\u0007\u0010\u0000\u0000\u0633^\u0001\u0000"+ + "\u0000\u0000\u0634\u0635\u0007\u000e\u0000\u0000\u0635\u0636\u0007\u0014"+ + "\u0000\u0000\u0636\u0637\u0007\n\u0000\u0000\u0637\u0638\u0007\u000e\u0000"+ + "\u0000\u0638\u0639\u0007\u0015\u0000\u0000\u0639`\u0001\u0000\u0000\u0000"+ + "\u063a\u063b\u0007\u000e\u0000\u0000\u063b\u063c\u0007\u0013\u0000\u0000"+ + "\u063c\u063d\u0007\u0006\u0000\u0000\u063d\u063e\u0007\u0006\u0000\u0000"+ + "\u063e\u063f\u0007\u0005\u0000\u0000\u063f\u0640\u0007\u0010\u0000\u0000"+ + "\u0640\u0641\u0007\n\u0000\u0000\u0641b\u0001\u0000\u0000\u0000\u0642"+ + "\u0643\u0007\u000e\u0000\u0000\u0643\u0644\u0007\u0013\u0000\u0000\u0644"+ + "\u0645\u0007\u0006\u0000\u0000\u0645\u0646\u0007\u0016\u0000\u0000\u0646"+ + "\u0647\u0007\u000f\u0000\u0000\u0647\u0648\u0007\u0007\u0000\u0000\u0648"+ + "d\u0001\u0000\u0000\u0000\u0649\u064a\u0007\u000e\u0000\u0000\u064a\u064b"+ + "\u0007\u0013\u0000\u0000\u064b\u064c\u0007\u0007\u0000\u0000\u064c\u064d"+ + "\u0007\t\u0000\u0000\u064d\u064e\u0007\u0010\u0000\u0000\u064e\u064f\u0007"+ + "\r\u0000\u0000\u064f\u0650\u0007\u0005\u0000\u0000\u0650\u0651\u0007\u0011"+ + "\u0000\u0000\u0651\u0652\u0007\u0007\u0000\u0000\u0652\u0653\u0007\u0010"+ + "\u0000\u0000\u0653f\u0001\u0000\u0000\u0000\u0654\u0655\u0007\u000e\u0000"+ + "\u0000\u0655\u0656\u0007\r\u0000\u0000\u0656\u0657\u0007\n\u0000\u0000"+ + "\u0657\u0658\u0007\u0005\u0000\u0000\u0658\u0659\u0007\u0010\u0000\u0000"+ + "\u0659\u065a\u0007\n\u0000\u0000\u065ah\u0001\u0000\u0000\u0000\u065b"+ + "\u065c\u0007\u000e\u0000\u0000\u065c\u065d\u0007\u0016\u0000\u0000\u065d"+ + "\u065e\u0007\r\u0000\u0000\u065e\u065f\u0007\r\u0000\u0000\u065f\u0660"+ + "\u0007\n\u0000\u0000\u0660\u0661\u0007\u0007\u0000\u0000\u0661\u0662\u0007"+ + "\u0010\u0000\u0000\u0662\u0663\u0005_\u0000\u0000\u0663\u0664\u0007\u000e"+ + "\u0000\u0000\u0664\u0665\u0007\u0005\u0000\u0000\u0665\u0666\u0007\u0010"+ + "\u0000\u0000\u0666\u0667\u0007\u0005\u0000\u0000\u0667\u0668\u0007\u0006"+ + "\u0000\u0000\u0668\u0669\u0007\u0013\u0000\u0000\u0669\u066a\u0007\u0017"+ + "\u0000\u0000\u066aj\u0001\u0000\u0000\u0000\u066b\u066c\u0007\u000e\u0000"+ + "\u0000\u066c\u066d\u0007\u0016\u0000\u0000\u066d\u066e\u0007\r\u0000\u0000"+ + "\u066e\u066f\u0007\r\u0000\u0000\u066f\u0670\u0007\n\u0000\u0000\u0670"+ + "\u0671\u0007\u0007\u0000\u0000\u0671\u0672\u0007\u0010\u0000\u0000\u0672"+ + "\u0673\u0005_\u0000\u0000\u0673\u0674\u0007\f\u0000\u0000\u0674\u0675"+ + "\u0007\u0005\u0000\u0000\u0675\u0676\u0007\u0010\u0000\u0000\u0676\u0677"+ + "\u0007\n\u0000\u0000\u0677l\u0001\u0000\u0000\u0000\u0678\u0679\u0007"+ + "\u000e\u0000\u0000\u0679\u067a\u0007\u0016\u0000\u0000\u067a\u067b\u0007"+ + "\r\u0000\u0000\u067b\u067c\u0007\r\u0000\u0000\u067c\u067d\u0007\n\u0000"+ + "\u0000\u067d\u067e\u0007\u0007\u0000\u0000\u067e\u067f\u0007\u0010\u0000"+ + "\u0000\u067f\u0680\u0005_\u0000\u0000\u0680\u0681\u0007\r\u0000\u0000"+ + "\u0681\u0682\u0007\u0013\u0000\u0000\u0682\u0683\u0007\u0006\u0000\u0000"+ + "\u0683\u0684\u0007\n\u0000\u0000\u0684n\u0001\u0000\u0000\u0000\u0685"+ + "\u0686\u0007\u000e\u0000\u0000\u0686\u0687\u0007\u0016\u0000\u0000\u0687"+ + "\u0688\u0007\r\u0000\u0000\u0688\u0689\u0007\r\u0000\u0000\u0689\u068a"+ + "\u0007\n\u0000\u0000\u068a\u068b\u0007\u0007\u0000\u0000\u068b\u068c\u0007"+ + "\u0010\u0000\u0000\u068c\u068d\u0005_\u0000\u0000\u068d\u068e\u0007\u0010"+ + "\u0000\u0000\u068e\u068f\u0007\u0011\u0000\u0000\u068f\u0690\u0007\u000f"+ + "\u0000\u0000\u0690\u0691\u0007\n\u0000\u0000\u0691p\u0001\u0000\u0000"+ + "\u0000\u0692\u0693\u0007\u000e\u0000\u0000\u0693\u0694\u0007\u0016\u0000"+ + "\u0000\u0694\u0695\u0007\r\u0000\u0000\u0695\u0696\u0007\r\u0000\u0000"+ + "\u0696\u0697\u0007\n\u0000\u0000\u0697\u0698\u0007\u0007\u0000\u0000\u0698"+ + "\u0699\u0007\u0010\u0000\u0000\u0699\u069a\u0005_\u0000\u0000\u069a\u069b"+ + "\u0007\u0010\u0000\u0000\u069b\u069c\u0007\u0011\u0000\u0000\u069c\u069d"+ + "\u0007\u000f\u0000\u0000\u069d\u069e\u0007\n\u0000\u0000\u069e\u069f\u0007"+ + "\t\u0000\u0000\u069f\u06a0\u0007\u0010\u0000\u0000\u06a0\u06a1\u0007\u0005"+ + "\u0000\u0000\u06a1\u06a2\u0007\u000f\u0000\u0000\u06a2\u06a3\u0007\u0018"+ + "\u0000\u0000\u06a3r\u0001\u0000\u0000\u0000\u06a4\u06a5\u0007\u000e\u0000"+ + "\u0000\u06a5\u06a6\u0007\u0016\u0000\u0000\u06a6\u06a7\u0007\r\u0000\u0000"+ + "\u06a7\u06a8\u0007\r\u0000\u0000\u06a8\u06a9\u0007\n\u0000\u0000\u06a9"+ + "\u06aa\u0007\u0007\u0000\u0000\u06aa\u06ab\u0007\u0010\u0000\u0000\u06ab"+ + "\u06ac\u0005_\u0000\u0000\u06ac\u06ad\u0007\u0016\u0000\u0000\u06ad\u06ae"+ + "\u0007\t\u0000\u0000\u06ae\u06af\u0007\n\u0000\u0000\u06af\u06b0\u0007"+ + "\r\u0000\u0000\u06b0t\u0001\u0000\u0000\u0000\u06b1\u06b2\u0007\f\u0000"+ + "\u0000\u06b2\u06b3\u0007\n\u0000\u0000\u06b3\u06b4\u0007\u0019\u0000\u0000"+ + "\u06b4\u06b5\u0007\u0005\u0000\u0000\u06b5\u06b6\u0007\u0016\u0000\u0000"+ + "\u06b6\u06b7\u0007\u0006\u0000\u0000\u06b7\u06b8\u0007\u0010\u0000\u0000"+ + "\u06b8v\u0001\u0000\u0000\u0000\u06b9\u06ba\u0007\f\u0000\u0000\u06ba"+ + "\u06bb\u0007\n\u0000\u0000\u06bb\u06bc\u0007\u0019\u0000\u0000\u06bc\u06bd"+ + "\u0007\n\u0000\u0000\u06bd\u06be\u0007\r\u0000\u0000\u06be\u06bf\u0007"+ + "\r\u0000\u0000\u06bf\u06c0\u0007\u0005\u0000\u0000\u06c0\u06c1\u0007\u0012"+ + "\u0000\u0000\u06c1\u06c2\u0007\u0006\u0000\u0000\u06c2\u06c3\u0007\n\u0000"+ + "\u0000\u06c3x\u0001\u0000\u0000\u0000\u06c4\u06c5\u0007\f\u0000\u0000"+ + "\u06c5\u06c6\u0007\n\u0000\u0000\u06c6\u06c7\u0007\t\u0000\u0000\u06c7"+ + "\u06c8\u0007\u000e\u0000\u0000\u06c8z\u0001\u0000\u0000\u0000\u06c9\u06ca"+ + "\u0007\f\u0000\u0000\u06ca\u06cb\u0007\u0011\u0000\u0000\u06cb\u06cc\u0007"+ + "\t\u0000\u0000\u06cc\u06cd\u0007\u0010\u0000\u0000\u06cd\u06ce\u0007\u0011"+ + "\u0000\u0000\u06ce\u06cf\u0007\u0007\u0000\u0000\u06cf\u06d0\u0007\u000e"+ + "\u0000\u0000\u06d0\u06d1\u0007\u0010\u0000\u0000\u06d1|\u0001\u0000\u0000"+ + "\u0000\u06d2\u06d3\u0007\f\u0000\u0000\u06d3\u06d4\u0007\u0013\u0000\u0000"+ + "\u06d4~\u0001\u0000\u0000\u0000\u06d5\u06d6\u0007\n\u0000\u0000\u06d6"+ + "\u06d7\u0007\u0006\u0000\u0000\u06d7\u06d8\u0007\t\u0000\u0000\u06d8\u06d9"+ + "\u0007\n\u0000\u0000\u06d9\u0080\u0001\u0000\u0000\u0000\u06da\u06db\u0007"+ + "\n\u0000\u0000\u06db\u06dc\u0007\u001a\u0000\u0000\u06dc\u06dd\u0007\u000e"+ + "\u0000\u0000\u06dd\u06de\u0007\n\u0000\u0000\u06de\u06df\u0007\u0018\u0000"+ + "\u0000\u06df\u06e0\u0007\u0010\u0000\u0000\u06e0\u0082\u0001\u0000\u0000"+ + "\u0000\u06e1\u06e2\u0007\u0019\u0000\u0000\u06e2\u06e3\u0007\u0005\u0000"+ + "\u0000\u06e3\u06e4\u0007\u0006\u0000\u0000\u06e4\u06e5\u0007\t\u0000\u0000"+ + "\u06e5\u06e6\u0007\n\u0000\u0000\u06e6\u0084\u0001\u0000\u0000\u0000\u06e7"+ + "\u06e8\u0007\u0019\u0000\u0000\u06e8\u06e9\u0007\n\u0000\u0000\u06e9\u06ea"+ + "\u0007\u0010\u0000\u0000\u06ea\u06eb\u0007\u000e\u0000\u0000\u06eb\u06ec"+ + "\u0007\u0014\u0000\u0000\u06ec\u0086\u0001\u0000\u0000\u0000\u06ed\u06ee"+ + "\u0007\u0019\u0000\u0000\u06ee\u06ef\u0007\u0013\u0000\u0000\u06ef\u06f0"+ + "\u0007\r\u0000\u0000\u06f0\u0088\u0001\u0000\u0000\u0000\u06f1\u06f2\u0007"+ + "\u0019\u0000\u0000\u06f2\u06f3\u0007\u0013\u0000\u0000\u06f3\u06f4\u0007"+ + "\r\u0000\u0000\u06f4\u06f5\u0007\n\u0000\u0000\u06f5\u06f6\u0007\u0011"+ + "\u0000\u0000\u06f6\u06f7\u0007\u0017\u0000\u0000\u06f7\u06f8\u0007\u0007"+ + "\u0000\u0000\u06f8\u008a\u0001\u0000\u0000\u0000\u06f9\u06fa\u0007\u0019"+ + "\u0000\u0000\u06fa\u06fb\u0007\r\u0000\u0000\u06fb\u06fc\u0007\u0013\u0000"+ + "\u0000\u06fc\u06fd\u0007\u000f\u0000\u0000\u06fd\u008c\u0001\u0000\u0000"+ + "\u0000\u06fe\u06ff\u0007\u0017\u0000\u0000\u06ff\u0700\u0007\r\u0000\u0000"+ + "\u0700\u0701\u0007\u0005\u0000\u0000\u0701\u0702\u0007\u0007\u0000\u0000"+ + "\u0702\u0703\u0007\u0010\u0000\u0000\u0703\u008e\u0001\u0000\u0000\u0000"+ + "\u0704\u0705\u0007\u0017\u0000\u0000\u0705\u0706\u0007\r\u0000\u0000\u0706"+ + "\u0707\u0007\u0013\u0000\u0000\u0707\u0708\u0007\u0016\u0000\u0000\u0708"+ + "\u0709\u0007\u0018\u0000\u0000\u0709\u0090\u0001\u0000\u0000\u0000\u070a"+ + "\u070b\u0007\u0014\u0000\u0000\u070b\u070c\u0007\u0005\u0000\u0000\u070c"+ + "\u070d\u0007\u001b\u0000\u0000\u070d\u070e\u0007\u0011\u0000\u0000\u070e"+ + "\u070f\u0007\u0007\u0000\u0000\u070f\u0710\u0007\u0017\u0000\u0000\u0710"+ + "\u0092\u0001\u0000\u0000\u0000\u0711\u0712\u0007\u0011\u0000\u0000\u0712"+ + "\u0713\u0007\u0007\u0000\u0000\u0713\u0094\u0001\u0000\u0000\u0000\u0714"+ + "\u0715\u0007\u0011\u0000\u0000\u0715\u0716\u0007\u0007\u0000\u0000\u0716"+ + "\u0717\u0007\u0011\u0000\u0000\u0717\u0718\u0007\u0010\u0000\u0000\u0718"+ + "\u0719\u0007\u0011\u0000\u0000\u0719\u071a\u0007\u0005\u0000\u0000\u071a"+ + "\u071b\u0007\u0006\u0000\u0000\u071b\u071c\u0007\u0006\u0000\u0000\u071c"+ + "\u071d\u0007\b\u0000\u0000\u071d\u0096\u0001\u0000\u0000\u0000\u071e\u071f"+ + "\u0007\u0011\u0000\u0000\u071f\u0720\u0007\u0007\u0000\u0000\u0720\u0721"+ + "\u0007\u0010\u0000\u0000\u0721\u0722\u0007\n\u0000\u0000\u0722\u0723\u0007"+ + "\r\u0000\u0000\u0723\u0724\u0007\t\u0000\u0000\u0724\u0725\u0007\n\u0000"+ + "\u0000\u0725\u0726\u0007\u000e\u0000\u0000\u0726\u0727\u0007\u0010\u0000"+ + "\u0000\u0727\u0098\u0001\u0000\u0000\u0000\u0728\u0729\u0007\u0011\u0000"+ + "\u0000\u0729\u072a\u0007\u0007\u0000\u0000\u072a\u072b\u0007\u0010\u0000"+ + "\u0000\u072b\u072c\u0007\u0013\u0000\u0000\u072c\u009a\u0001\u0000\u0000"+ + "\u0000\u072d\u072e\u0007\u0006\u0000\u0000\u072e\u072f\u0007\u0005\u0000"+ + "\u0000\u072f\u0730\u0007\u0010\u0000\u0000\u0730\u0731\u0007\n\u0000\u0000"+ + "\u0731\u0732\u0007\r\u0000\u0000\u0732\u0733\u0007\u0005\u0000\u0000\u0733"+ + "\u0734\u0007\u0006\u0000\u0000\u0734\u009c\u0001\u0000\u0000\u0000\u0735"+ + "\u0736\u0007\u0006\u0000\u0000\u0736\u0737\u0007\n\u0000\u0000\u0737\u0738"+ + "\u0007\u0005\u0000\u0000\u0738\u0739\u0007\f\u0000\u0000\u0739\u073a\u0007"+ + "\u0011\u0000\u0000\u073a\u073b\u0007\u0007\u0000\u0000\u073b\u073c\u0007"+ + "\u0017\u0000\u0000\u073c\u009e\u0001\u0000\u0000\u0000\u073d\u073e\u0007"+ + "\u0006\u0000\u0000\u073e\u073f\u0007\u0011\u0000\u0000\u073f\u0740\u0007"+ + "\u000f\u0000\u0000\u0740\u0741\u0007\u0011\u0000\u0000\u0741\u0742\u0007"+ + "\u0010\u0000\u0000\u0742\u00a0\u0001\u0000\u0000\u0000\u0743\u0744\u0007"+ + "\u0006\u0000\u0000\u0744\u0745\u0007\u0013\u0000\u0000\u0745\u0746\u0007"+ + "\u000e\u0000\u0000\u0746\u0747\u0007\u0005\u0000\u0000\u0747\u0748\u0007"+ + "\u0006\u0000\u0000\u0748\u0749\u0007\u0010\u0000\u0000\u0749\u074a\u0007"+ + "\u0011\u0000\u0000\u074a\u074b\u0007\u000f\u0000\u0000\u074b\u074c\u0007"+ + "\n\u0000\u0000\u074c\u00a2\u0001\u0000\u0000\u0000\u074d\u074e\u0007\u0006"+ + "\u0000\u0000\u074e\u074f\u0007\u0013\u0000\u0000\u074f\u0750\u0007\u000e"+ + "\u0000\u0000\u0750\u0751\u0007\u0005\u0000\u0000\u0751\u0752\u0007\u0006"+ + "\u0000\u0000\u0752\u0753\u0007\u0010\u0000\u0000\u0753\u0754\u0007\u0011"+ + "\u0000\u0000\u0754\u0755\u0007\u000f\u0000\u0000\u0755\u0756\u0007\n\u0000"+ + "\u0000\u0756\u0757\u0007\t\u0000\u0000\u0757\u0758\u0007\u0010\u0000\u0000"+ + "\u0758\u0759\u0007\u0005\u0000\u0000\u0759\u075a\u0007\u000f\u0000\u0000"+ + "\u075a\u075b\u0007\u0018\u0000\u0000\u075b\u00a4\u0001\u0000\u0000\u0000"+ + "\u075c\u075d\u0007\u0007\u0000\u0000\u075d\u075e\u0007\u0013\u0000\u0000"+ + "\u075e\u075f\u0007\u0010\u0000\u0000\u075f\u00a6\u0001\u0000\u0000\u0000"+ + "\u0760\u0761\u0007\u0007\u0000\u0000\u0761\u0762\u0007\u0016\u0000\u0000"+ + "\u0762\u0763\u0007\u0006\u0000\u0000\u0763\u0764\u0007\u0006\u0000\u0000"+ + "\u0764\u00a8\u0001\u0000\u0000\u0000\u0765\u0766\u0007\u0013\u0000\u0000"+ + "\u0766\u0767\u0007\u0019\u0000\u0000\u0767\u0768\u0007\u0019\u0000\u0000"+ + "\u0768\u0769\u0007\t\u0000\u0000\u0769\u076a\u0007\n\u0000\u0000\u076a"+ + "\u076b\u0007\u0010\u0000\u0000\u076b\u00aa\u0001\u0000\u0000\u0000\u076c"+ + "\u076d\u0007\u0013\u0000\u0000\u076d\u076e\u0007\u0007\u0000\u0000\u076e"+ + "\u00ac\u0001\u0000\u0000\u0000\u076f\u0770\u0007\u0013\u0000\u0000\u0770"+ + "\u0771\u0007\u0007\u0000\u0000\u0771\u0772\u0007\u0006\u0000\u0000\u0772"+ + "\u0773\u0007\b\u0000\u0000\u0773\u00ae\u0001\u0000\u0000\u0000\u0774\u0775"+ + "\u0007\u0013\u0000\u0000\u0775\u0776\u0007\r\u0000\u0000\u0776\u00b0\u0001"+ + "\u0000\u0000\u0000\u0777\u0778\u0007\u0013\u0000\u0000\u0778\u0779\u0007"+ + "\r\u0000\u0000\u0779\u077a\u0007\f\u0000\u0000\u077a\u077b\u0007\n\u0000"+ + "\u0000\u077b\u077c\u0007\r\u0000\u0000\u077c\u00b2\u0001\u0000\u0000\u0000"+ + "\u077d\u077e\u0007\u0018\u0000\u0000\u077e\u077f\u0007\u0006\u0000\u0000"+ + "\u077f\u0780\u0007\u0005\u0000\u0000\u0780\u0781\u0007\u000e\u0000\u0000"+ + "\u0781\u0782\u0007\u0011\u0000\u0000\u0782\u0783\u0007\u0007\u0000\u0000"+ + "\u0783\u0784\u0007\u0017\u0000\u0000\u0784\u00b4\u0001\u0000\u0000\u0000"+ + "\u0785\u0786\u0007\u0018\u0000\u0000\u0786\u0787\u0007\r\u0000\u0000\u0787"+ + "\u0788\u0007\u0011\u0000\u0000\u0788\u0789\u0007\u000f\u0000\u0000\u0789"+ + "\u078a\u0007\u0005\u0000\u0000\u078a\u078b\u0007\r\u0000\u0000\u078b\u078c"+ + "\u0007\b\u0000\u0000\u078c\u00b6\u0001\u0000\u0000\u0000\u078d\u078e\u0007"+ + "\r\u0000\u0000\u078e\u078f\u0007\n\u0000\u0000\u078f\u0790\u0007\u0019"+ + "\u0000\u0000\u0790\u0791\u0007\n\u0000\u0000\u0791\u0792\u0007\r\u0000"+ + "\u0000\u0792\u0793\u0007\n\u0000\u0000\u0793\u0794\u0007\u0007\u0000\u0000"+ + "\u0794\u0795\u0007\u000e\u0000\u0000\u0795\u0796\u0007\n\u0000\u0000\u0796"+ + "\u0797\u0007\t\u0000\u0000\u0797\u00b8\u0001\u0000\u0000\u0000\u0798\u0799"+ + "\u0007\r\u0000\u0000\u0799\u079a\u0007\n\u0000\u0000\u079a\u079b\u0007"+ + "\u0010\u0000\u0000\u079b\u079c\u0007\u0016\u0000\u0000\u079c\u079d\u0007"+ + "\r\u0000\u0000\u079d\u079e\u0007\u0007\u0000\u0000\u079e\u079f\u0007\u0011"+ + "\u0000\u0000\u079f\u07a0\u0007\u0007\u0000\u0000\u07a0\u07a1\u0007\u0017"+ + "\u0000\u0000\u07a1\u00ba\u0001\u0000\u0000\u0000\u07a2\u07a3\u0007\t\u0000"+ + "\u0000\u07a3\u07a4\u0007\n\u0000\u0000\u07a4\u07a5\u0007\u0006\u0000\u0000"+ + "\u07a5\u07a6\u0007\n\u0000\u0000\u07a6\u07a7\u0007\u000e\u0000\u0000\u07a7"+ + "\u07a8\u0007\u0010\u0000\u0000\u07a8\u00bc\u0001\u0000\u0000\u0000\u07a9"+ + "\u07aa\u0007\t\u0000\u0000\u07aa\u07ab\u0007\n\u0000\u0000\u07ab\u07ac"+ + "\u0007\t\u0000\u0000\u07ac\u07ad\u0007\t\u0000\u0000\u07ad\u07ae\u0007"+ + "\u0011\u0000\u0000\u07ae\u07af\u0007\u0013\u0000\u0000\u07af\u07b0\u0007"+ + "\u0007\u0000\u0000\u07b0\u07b1\u0005_\u0000\u0000\u07b1\u07b2\u0007\u0016"+ + "\u0000\u0000\u07b2\u07b3\u0007\t\u0000\u0000\u07b3\u07b4\u0007\n\u0000"+ + "\u0000\u07b4\u07b5\u0007\r\u0000\u0000\u07b5\u00be\u0001\u0000\u0000\u0000"+ + "\u07b6\u07b7\u0007\t\u0000\u0000\u07b7\u07b8\u0007\u0013\u0000\u0000\u07b8"+ + "\u07b9\u0007\u000f\u0000\u0000\u07b9\u07ba\u0007\n\u0000\u0000\u07ba\u00c0"+ + "\u0001\u0000\u0000\u0000\u07bb\u07bc\u0007\t\u0000\u0000\u07bc\u07bd\u0007"+ + "\b\u0000\u0000\u07bd\u07be\u0007\u000f\u0000\u0000\u07be\u07bf\u0007\u000f"+ + "\u0000\u0000\u07bf\u07c0\u0007\n\u0000\u0000\u07c0\u07c1\u0007\u0010\u0000"+ + "\u0000\u07c1\u07c2\u0007\r\u0000\u0000\u07c2\u07c3\u0007\u0011\u0000\u0000"+ + "\u07c3\u07c4\u0007\u000e\u0000\u0000\u07c4\u00c2\u0001\u0000\u0000\u0000"+ + "\u07c5\u07c6\u0007\u0010\u0000\u0000\u07c6\u07c7\u0007\u0005\u0000\u0000"+ + "\u07c7\u07c8\u0007\u0012\u0000\u0000\u07c8\u07c9\u0007\u0006\u0000\u0000"+ + "\u07c9\u07ca\u0007\n\u0000\u0000\u07ca\u00c4\u0001\u0000\u0000\u0000\u07cb"+ + "\u07cc\u0007\u0010\u0000\u0000\u07cc\u07cd\u0007\u0014\u0000\u0000\u07cd"+ + "\u07ce\u0007\n\u0000\u0000\u07ce\u07cf\u0007\u0007\u0000\u0000\u07cf\u00c6"+ + "\u0001\u0000\u0000\u0000\u07d0\u07d1\u0007\u0010\u0000\u0000\u07d1\u07d2"+ + "\u0007\u0013\u0000\u0000\u07d2\u00c8\u0001\u0000\u0000\u0000\u07d3\u07d4"+ + "\u0007\u0010\u0000\u0000\u07d4\u07d5\u0007\u0013\u0000\u0000\u07d5\u07d6"+ + "\u0007\u0018\u0000\u0000\u07d6\u07d7\u0007\u0011\u0000\u0000\u07d7\u07d8"+ + "\u0007\u000e\u0000\u0000\u07d8\u00ca\u0001\u0000\u0000\u0000\u07d9\u07da"+ + "\u0007\t\u0000\u0000\u07da\u07db\u0007\u0010\u0000\u0000\u07db\u07dc\u0007"+ + "\r\u0000\u0000\u07dc\u07dd\u0007\n\u0000\u0000\u07dd\u07de\u0007\u0005"+ + "\u0000\u0000\u07de\u07df\u0007\u000f\u0000\u0000\u07df\u00cc\u0001\u0000"+ + "\u0000\u0000\u07e0\u07e1\u0007\u0010\u0000\u0000\u07e1\u07e2\u0007\r\u0000"+ + "\u0000\u07e2\u07e3\u0007\u0005\u0000\u0000\u07e3\u07e4\u0007\u0011\u0000"+ + "\u0000\u07e4\u07e5\u0007\u0006\u0000\u0000\u07e5\u07e6\u0007\u0011\u0000"+ + "\u0000\u07e6\u07e7\u0007\u0007\u0000\u0000\u07e7\u07e8\u0007\u0017\u0000"+ + "\u0000\u07e8\u00ce\u0001\u0000\u0000\u0000\u07e9\u07ea\u0007\u0010\u0000"+ + "\u0000\u07ea\u07eb\u0007\r\u0000\u0000\u07eb\u07ec\u0007\u0016\u0000\u0000"+ + "\u07ec\u07ed\u0007\n\u0000\u0000\u07ed\u00d0\u0001\u0000\u0000\u0000\u07ee"+ + "\u07ef\u0007\u0016\u0000\u0000\u07ef\u07f0\u0007\u0007\u0000\u0000\u07f0"+ + "\u07f1\u0007\u0011\u0000\u0000\u07f1\u07f2\u0007\u0013\u0000\u0000\u07f2"+ + "\u07f3\u0007\u0007\u0000\u0000\u07f3\u00d2\u0001\u0000\u0000\u0000\u07f4"+ + "\u07f5\u0007\u0016\u0000\u0000\u07f5\u07f6\u0007\u0007\u0000\u0000\u07f6"+ + "\u07f7\u0007\u0011\u0000\u0000\u07f7\u07f8\u0007\u001c\u0000\u0000\u07f8"+ + "\u07f9\u0007\u0016\u0000\u0000\u07f9\u07fa\u0007\n\u0000\u0000\u07fa\u00d4"+ + "\u0001\u0000\u0000\u0000\u07fb\u07fc\u0007\u0016\u0000\u0000\u07fc\u07fd"+ + "\u0007\t\u0000\u0000\u07fd\u07fe\u0007\n\u0000\u0000\u07fe\u07ff\u0007"+ + "\r\u0000\u0000\u07ff\u00d6\u0001\u0000\u0000\u0000\u0800\u0801\u0007\u0016"+ + "\u0000\u0000\u0801\u0802\u0007\t\u0000\u0000\u0802\u0803\u0007\u0011\u0000"+ + "\u0000\u0803\u0804\u0007\u0007\u0000\u0000\u0804\u0805\u0007\u0017\u0000"+ + "\u0000\u0805\u00d8\u0001\u0000\u0000\u0000\u0806\u0807\u0007\u001b\u0000"+ + "\u0000\u0807\u0808\u0007\u0005\u0000\u0000\u0808\u0809\u0007\r\u0000\u0000"+ + "\u0809\u080a\u0007\u0011\u0000\u0000\u080a\u080b\u0007\u0005\u0000\u0000"+ + "\u080b\u080c\u0007\f\u0000\u0000\u080c\u080d\u0007\u0011\u0000\u0000\u080d"+ + "\u080e\u0007\u000e\u0000\u0000\u080e\u00da\u0001\u0000\u0000\u0000\u080f"+ + "\u0810\u0007\u001d\u0000\u0000\u0810\u0811\u0007\u0014\u0000\u0000\u0811"+ + "\u0812\u0007\n\u0000\u0000\u0812\u0813\u0007\u0007\u0000\u0000\u0813\u00dc"+ + "\u0001\u0000\u0000\u0000\u0814\u0815\u0007\u001d\u0000\u0000\u0815\u0816"+ + "\u0007\u0014\u0000\u0000\u0816\u0817\u0007\n\u0000\u0000\u0817\u0818\u0007"+ + "\r\u0000\u0000\u0818\u0819\u0007\n\u0000\u0000\u0819\u00de\u0001\u0000"+ + "\u0000\u0000\u081a\u081b\u0007\u001d\u0000\u0000\u081b\u081c\u0007\u0011"+ + "\u0000\u0000\u081c\u081d\u0007\u0007\u0000\u0000\u081d\u081e\u0007\f\u0000"+ + "\u0000\u081e\u081f\u0007\u0013\u0000\u0000\u081f\u0820\u0007\u001d\u0000"+ + "\u0000\u0820\u00e0\u0001\u0000\u0000\u0000\u0821\u0822\u0007\u001d\u0000"+ + "\u0000\u0822\u0823\u0007\u0011\u0000\u0000\u0823\u0824\u0007\u0010\u0000"+ + "\u0000\u0824\u0825\u0007\u0014\u0000\u0000\u0825\u00e2\u0001\u0000\u0000"+ + "\u0000\u0826\u0827\u0007\u0005\u0000\u0000\u0827\u0828\u0007\u0016\u0000"+ + "\u0000\u0828\u0829\u0007\u0010\u0000\u0000\u0829\u082a\u0007\u0014\u0000"+ + "\u0000\u082a\u082b\u0007\u0013\u0000\u0000\u082b\u082c\u0007\r\u0000\u0000"+ + "\u082c\u082d\u0007\u0011\u0000\u0000\u082d\u082e\u0007\u000b\u0000\u0000"+ + "\u082e\u082f\u0007\u0005\u0000\u0000\u082f\u0830\u0007\u0010\u0000\u0000"+ + "\u0830\u0831\u0007\u0011\u0000\u0000\u0831\u0832\u0007\u0013\u0000\u0000"+ + "\u0832\u0833\u0007\u0007\u0000\u0000\u0833\u00e4\u0001\u0000\u0000\u0000"+ + "\u0834\u0835\u0007\u0012\u0000\u0000\u0835\u0836\u0007\u0011\u0000\u0000"+ + "\u0836\u0837\u0007\u0007\u0000\u0000\u0837\u0838\u0007\u0005\u0000\u0000"+ + "\u0838\u0839\u0007\r\u0000\u0000\u0839\u083a\u0007\b\u0000\u0000\u083a"+ + "\u00e6\u0001\u0000\u0000\u0000\u083b\u083c\u0007\u000e\u0000\u0000\u083c"+ + "\u083d\u0007\u0013\u0000\u0000\u083d\u083e\u0007\u0006\u0000\u0000\u083e"+ + "\u083f\u0007\u0006\u0000\u0000\u083f\u0840\u0007\u0005\u0000\u0000\u0840"+ + "\u0841\u0007\u0010\u0000\u0000\u0841\u0842\u0007\u0011\u0000\u0000\u0842"+ + "\u0843\u0007\u0013\u0000\u0000\u0843\u0844\u0007\u0007\u0000\u0000\u0844"+ + "\u00e8\u0001\u0000\u0000\u0000\u0845\u0846\u0007\u000e\u0000\u0000\u0846"+ + "\u0847\u0007\u0013\u0000\u0000\u0847\u0848\u0007\u0007\u0000\u0000\u0848"+ + "\u0849\u0007\u000e\u0000\u0000\u0849\u084a\u0007\u0016\u0000\u0000\u084a"+ + "\u084b\u0007\r\u0000\u0000\u084b\u084c\u0007\r\u0000\u0000\u084c\u084d"+ + "\u0007\n\u0000\u0000\u084d\u084e\u0007\u0007\u0000\u0000\u084e\u084f\u0007"+ + "\u0010\u0000\u0000\u084f\u0850\u0007\u0006\u0000\u0000\u0850\u0851\u0007"+ + "\b\u0000\u0000\u0851\u00ea\u0001\u0000\u0000\u0000\u0852\u0853\u0007\u000e"+ + "\u0000\u0000\u0853\u0854\u0007\r\u0000\u0000\u0854\u0855\u0007\u0013\u0000"+ + "\u0000\u0855\u0856\u0007\t\u0000\u0000\u0856\u0857\u0007\t\u0000\u0000"+ + "\u0857\u00ec\u0001\u0000\u0000\u0000\u0858\u0859\u0007\u000e\u0000\u0000"+ + "\u0859\u085a\u0007\u0016\u0000\u0000\u085a\u085b\u0007\r\u0000\u0000\u085b"+ + "\u085c\u0007\r\u0000\u0000\u085c\u085d\u0007\n\u0000\u0000\u085d\u085e"+ + "\u0007\u0007\u0000\u0000\u085e\u085f\u0007\u0010\u0000\u0000\u085f\u0860"+ + "\u0005_\u0000\u0000\u0860\u0861\u0007\t\u0000\u0000\u0861\u0862\u0007"+ + "\u000e\u0000\u0000\u0862\u0863\u0007\u0014\u0000\u0000\u0863\u0864\u0007"+ + "\n\u0000\u0000\u0864\u0865\u0007\u000f\u0000\u0000\u0865\u0866\u0007\u0005"+ + "\u0000\u0000\u0866\u00ee\u0001\u0000\u0000\u0000\u0867\u0868\u0007\u0019"+ + "\u0000\u0000\u0868\u0869\u0007\r\u0000\u0000\u0869\u086a\u0007\n\u0000"+ + "\u0000\u086a\u086b\u0007\n\u0000\u0000\u086b\u086c\u0007\u000b\u0000\u0000"+ + "\u086c\u086d\u0007\n\u0000\u0000\u086d\u00f0\u0001\u0000\u0000\u0000\u086e"+ + "\u086f\u0007\u0019\u0000\u0000\u086f\u0870\u0007\u0016\u0000\u0000\u0870"+ + "\u0871\u0007\u0006\u0000\u0000\u0871\u0872\u0007\u0006\u0000\u0000\u0872"+ + "\u00f2\u0001\u0000\u0000\u0000\u0873\u0874\u0007\u0011\u0000\u0000\u0874"+ + "\u0875\u0007\u0006\u0000\u0000\u0875\u0876\u0007\u0011\u0000\u0000\u0876"+ + "\u0877\u0007\u0015\u0000\u0000\u0877\u0878\u0007\n\u0000\u0000\u0878\u00f4"+ + "\u0001\u0000\u0000\u0000\u0879\u087a\u0007\u0011\u0000\u0000\u087a\u087b"+ + "\u0007\u0007\u0000\u0000\u087b\u087c\u0007\u0007\u0000\u0000\u087c\u087d"+ + "\u0007\n\u0000\u0000\u087d\u087e\u0007\r\u0000\u0000\u087e\u00f6\u0001"+ + "\u0000\u0000\u0000\u087f\u0880\u0007\u0011\u0000\u0000\u0880\u0881\u0007"+ + "\t\u0000\u0000\u0881\u00f8\u0001\u0000\u0000\u0000\u0882\u0883\u0007\u0011"+ + "\u0000\u0000\u0883\u0884\u0007\t\u0000\u0000\u0884\u0885\u0007\u0007\u0000"+ + "\u0000\u0885\u0886\u0007\u0016\u0000\u0000\u0886\u0887\u0007\u0006\u0000"+ + "\u0000\u0887\u0888\u0007\u0006\u0000\u0000\u0888\u00fa\u0001\u0000\u0000"+ + "\u0000\u0889\u088a\u0007\u001e\u0000\u0000\u088a\u088b\u0007\u0013\u0000"+ + "\u0000\u088b\u088c\u0007\u0011\u0000\u0000\u088c\u088d\u0007\u0007\u0000"+ + "\u0000\u088d\u00fc\u0001\u0000\u0000\u0000\u088e\u088f\u0007\u0006\u0000"+ + "\u0000\u088f\u0890\u0007\n\u0000\u0000\u0890\u0891\u0007\u0019\u0000\u0000"+ + "\u0891\u0892\u0007\u0010\u0000\u0000\u0892\u00fe\u0001\u0000\u0000\u0000"+ + "\u0893\u0894\u0007\u0006\u0000\u0000\u0894\u0895\u0007\u0011\u0000\u0000"+ + "\u0895\u0896\u0007\u0015\u0000\u0000\u0896\u0897\u0007\n\u0000\u0000\u0897"+ + "\u0100\u0001\u0000\u0000\u0000\u0898\u0899\u0007\u0007\u0000\u0000\u0899"+ + "\u089a\u0007\u0005\u0000\u0000\u089a\u089b\u0007\u0010\u0000\u0000\u089b"+ + "\u089c\u0007\u0016\u0000\u0000\u089c\u089d\u0007\r\u0000\u0000\u089d\u089e"+ + "\u0007\u0005\u0000\u0000\u089e\u089f\u0007\u0006\u0000\u0000\u089f\u0102"+ + "\u0001\u0000\u0000\u0000\u08a0\u08a1\u0007\u0007\u0000\u0000\u08a1\u08a2"+ + "\u0007\u0013\u0000\u0000\u08a2\u08a3\u0007\u0010\u0000\u0000\u08a3\u08a4"+ + "\u0007\u0007\u0000\u0000\u08a4\u08a5\u0007\u0016\u0000\u0000\u08a5\u08a6"+ + "\u0007\u0006\u0000\u0000\u08a6\u08a7\u0007\u0006\u0000\u0000\u08a7\u0104"+ + "\u0001\u0000\u0000\u0000\u08a8\u08a9\u0007\u0013\u0000\u0000\u08a9\u08aa"+ + "\u0007\u0016\u0000\u0000\u08aa\u08ab\u0007\u0010\u0000\u0000\u08ab\u08ac"+ + "\u0007\n\u0000\u0000\u08ac\u08ad\u0007\r\u0000\u0000\u08ad\u0106\u0001"+ + "\u0000\u0000\u0000\u08ae\u08af\u0007\u0013\u0000\u0000\u08af\u08b0\u0007"+ + "\u001b\u0000\u0000\u08b0\u08b1\u0007\n\u0000\u0000\u08b1\u08b2\u0007\r"+ + "\u0000\u0000\u08b2\u0108\u0001\u0000\u0000\u0000\u08b3\u08b4\u0007\u0013"+ + "\u0000\u0000\u08b4\u08b5\u0007\u001b\u0000\u0000\u08b5\u08b6\u0007\n\u0000"+ + "\u0000\u08b6\u08b7\u0007\r\u0000\u0000\u08b7\u08b8\u0007\u0006\u0000\u0000"+ + "\u08b8\u08b9\u0007\u0005\u0000\u0000\u08b9\u08ba\u0007\u0018\u0000\u0000"+ + "\u08ba\u08bb\u0007\t\u0000\u0000\u08bb\u010a\u0001\u0000\u0000\u0000\u08bc"+ + "\u08bd\u0007\r\u0000\u0000\u08bd\u08be\u0007\u0011\u0000\u0000\u08be\u08bf"+ + "\u0007\u0017\u0000\u0000\u08bf\u08c0\u0007\u0014\u0000\u0000\u08c0\u08c1"+ + "\u0007\u0010\u0000\u0000\u08c1\u010c\u0001\u0000\u0000\u0000\u08c2\u08c3"+ + "\u0007\t\u0000\u0000\u08c3\u08c4\u0007\u0011\u0000\u0000\u08c4\u08c5\u0007"+ + "\u000f\u0000\u0000\u08c5\u08c6\u0007\u0011\u0000\u0000\u08c6\u08c7\u0007"+ + "\u0006\u0000\u0000\u08c7\u08c8\u0007\u0005\u0000\u0000\u08c8\u08c9\u0007"+ + "\r\u0000\u0000\u08c9\u010e\u0001\u0000\u0000\u0000\u08ca\u08cb\u0007\u001b"+ + "\u0000\u0000\u08cb\u08cc\u0007\n\u0000\u0000\u08cc\u08cd\u0007\r\u0000"+ + "\u0000\u08cd\u08ce\u0007\u0012\u0000\u0000\u08ce\u08cf\u0007\u0013\u0000"+ + "\u0000\u08cf\u08d0\u0007\t\u0000\u0000\u08d0\u08d1\u0007\n\u0000\u0000"+ + "\u08d1\u0110\u0001\u0000\u0000\u0000\u08d2\u08d3\u0007\u0005\u0000\u0000"+ + "\u08d3\u08d4\u0007\u0012\u0000\u0000\u08d4\u08d5\u0007\u0013\u0000\u0000"+ + "\u08d5\u08d6\u0007\r\u0000\u0000\u08d6\u08d7\u0007\u0010\u0000\u0000\u08d7"+ + "\u0112\u0001\u0000\u0000\u0000\u08d8\u08d9\u0007\u0005\u0000\u0000\u08d9"+ + "\u08da\u0007\u0012\u0000\u0000\u08da\u08db\u0007\t\u0000\u0000\u08db\u08dc"+ + "\u0007\u0013\u0000\u0000\u08dc\u08dd\u0007\u0006\u0000\u0000\u08dd\u08de"+ + "\u0007\u0016\u0000\u0000\u08de\u08df\u0007\u0010\u0000\u0000\u08df\u08e0"+ + "\u0007\n\u0000\u0000\u08e0\u0114\u0001\u0000\u0000\u0000\u08e1\u08e2\u0007"+ + "\u0005\u0000\u0000\u08e2\u08e3\u0007\u000e\u0000\u0000\u08e3\u08e4\u0007"+ + "\u000e\u0000\u0000\u08e4\u08e5\u0007\n\u0000\u0000\u08e5\u08e6\u0007\t"+ + "\u0000\u0000\u08e6\u08e7\u0007\t\u0000\u0000\u08e7\u0116\u0001\u0000\u0000"+ + "\u0000\u08e8\u08e9\u0007\u0005\u0000\u0000\u08e9\u08ea\u0007\u000e\u0000"+ + "\u0000\u08ea\u08eb\u0007\u0010\u0000\u0000\u08eb\u08ec\u0007\u0011\u0000"+ + "\u0000\u08ec\u08ed\u0007\u0013\u0000\u0000\u08ed\u08ee\u0007\u0007\u0000"+ + "\u0000\u08ee\u0118\u0001\u0000\u0000\u0000\u08ef\u08f0\u0007\u0005\u0000"+ + "\u0000\u08f0\u08f1\u0007\f\u0000\u0000\u08f1\u08f2\u0007\f\u0000\u0000"+ + "\u08f2\u011a\u0001\u0000\u0000\u0000\u08f3\u08f4\u0007\u0005\u0000\u0000"+ + "\u08f4\u08f5\u0007\f\u0000\u0000\u08f5\u08f6\u0007\u000f\u0000\u0000\u08f6"+ + "\u08f7\u0007\u0011\u0000\u0000\u08f7\u08f8\u0007\u0007\u0000\u0000\u08f8"+ + "\u011c\u0001\u0000\u0000\u0000\u08f9\u08fa\u0007\u0005\u0000\u0000\u08fa"+ + "\u08fb\u0007\u0019\u0000\u0000\u08fb\u08fc\u0007\u0010\u0000\u0000\u08fc"+ + "\u08fd\u0007\n\u0000\u0000\u08fd\u08fe\u0007\r\u0000\u0000\u08fe\u011e"+ + "\u0001\u0000\u0000\u0000\u08ff\u0900\u0007\u0005\u0000\u0000\u0900\u0901"+ + "\u0007\u0017\u0000\u0000\u0901\u0902\u0007\u0017\u0000\u0000\u0902\u0903"+ + "\u0007\r\u0000\u0000\u0903\u0904\u0007\n\u0000\u0000\u0904\u0905\u0007"+ + "\u0017\u0000\u0000\u0905\u0906\u0007\u0005\u0000\u0000\u0906\u0907\u0007"+ + "\u0010\u0000\u0000\u0907\u0908\u0007\n\u0000\u0000\u0908\u0120\u0001\u0000"+ + "\u0000\u0000\u0909\u090a\u0007\u0005\u0000\u0000\u090a\u090b\u0007\u0006"+ + "\u0000\u0000\u090b\u090c\u0007\t\u0000\u0000\u090c\u090d\u0007\u0013\u0000"+ + "\u0000\u090d\u0122\u0001\u0000\u0000\u0000\u090e\u090f\u0007\u0005\u0000"+ + "\u0000\u090f\u0910\u0007\u0006\u0000\u0000\u0910\u0911\u0007\u0010\u0000"+ + "\u0000\u0911\u0912\u0007\n\u0000\u0000\u0912\u0913\u0007\r\u0000\u0000"+ + "\u0913\u0124\u0001\u0000\u0000\u0000\u0914\u0915\u0007\u0005\u0000\u0000"+ + "\u0915\u0916\u0007\u0006\u0000\u0000\u0916\u0917\u0007\u001d\u0000\u0000"+ + "\u0917\u0918\u0007\u0005\u0000\u0000\u0918\u0919\u0007\b\u0000\u0000\u0919"+ + "\u091a\u0007\t\u0000\u0000\u091a\u0126\u0001\u0000\u0000\u0000\u091b\u091c"+ + "\u0007\u0005\u0000\u0000\u091c\u091d\u0007\t\u0000\u0000\u091d\u091e\u0007"+ + "\t\u0000\u0000\u091e\u091f\u0007\n\u0000\u0000\u091f\u0920\u0007\r\u0000"+ + "\u0000\u0920\u0921\u0007\u0010\u0000\u0000\u0921\u0922\u0007\u0011\u0000"+ + "\u0000\u0922\u0923\u0007\u0013\u0000\u0000\u0923\u0924\u0007\u0007\u0000"+ + "\u0000\u0924\u0128\u0001\u0000\u0000\u0000\u0925\u0926\u0007\u0005\u0000"+ + "\u0000\u0926\u0927\u0007\t\u0000\u0000\u0927\u0928\u0007\t\u0000\u0000"+ + "\u0928\u0929\u0007\u0011\u0000\u0000\u0929\u092a\u0007\u0017\u0000\u0000"+ + "\u092a\u092b\u0007\u0007\u0000\u0000\u092b\u092c\u0007\u000f\u0000\u0000"+ + "\u092c\u092d\u0007\n\u0000\u0000\u092d\u092e\u0007\u0007\u0000\u0000\u092e"+ + "\u092f\u0007\u0010\u0000\u0000\u092f\u012a\u0001\u0000\u0000\u0000\u0930"+ + "\u0931\u0007\u0005\u0000\u0000\u0931\u0932\u0007\u0010\u0000\u0000\u0932"+ + "\u012c\u0001\u0000\u0000\u0000\u0933\u0934\u0007\u0005\u0000\u0000\u0934"+ + "\u0935\u0007\u0010\u0000\u0000\u0935\u0936\u0007\u0010\u0000\u0000\u0936"+ + "\u0937\u0007\r\u0000\u0000\u0937\u0938\u0007\u0011\u0000\u0000\u0938\u0939"+ + "\u0007\u0012\u0000\u0000\u0939\u093a\u0007\u0016\u0000\u0000\u093a\u093b"+ + "\u0007\u0010\u0000\u0000\u093b\u093c\u0007\n\u0000\u0000\u093c\u012e\u0001"+ + "\u0000\u0000\u0000\u093d\u093e\u0007\u0012\u0000\u0000\u093e\u093f\u0007"+ + "\u0005\u0000\u0000\u093f\u0940\u0007\u000e\u0000\u0000\u0940\u0941\u0007"+ + "\u0015\u0000\u0000\u0941\u0942\u0007\u001d\u0000\u0000\u0942\u0943\u0007"+ + "\u0005\u0000\u0000\u0943\u0944\u0007\r\u0000\u0000\u0944\u0945\u0007\f"+ + "\u0000\u0000\u0945\u0130\u0001\u0000\u0000\u0000\u0946\u0947\u0007\u0012"+ + "\u0000\u0000\u0947\u0948\u0007\n\u0000\u0000\u0948\u0949\u0007\u0019\u0000"+ + "\u0000\u0949\u094a\u0007\u0013\u0000\u0000\u094a\u094b\u0007\r\u0000\u0000"+ + "\u094b\u094c\u0007\n\u0000\u0000\u094c\u0132\u0001\u0000\u0000\u0000\u094d"+ + "\u094e\u0007\u0012\u0000\u0000\u094e\u094f\u0007\n\u0000\u0000\u094f\u0950"+ + "\u0007\u0017\u0000\u0000\u0950\u0951\u0007\u0011\u0000\u0000\u0951\u0952"+ + "\u0007\u0007\u0000\u0000\u0952\u0134\u0001\u0000\u0000\u0000\u0953\u0954"+ + "\u0007\u0012\u0000\u0000\u0954\u0955\u0007\b\u0000\u0000\u0955\u0136\u0001"+ + "\u0000\u0000\u0000\u0956\u0957\u0007\u000e\u0000\u0000\u0957\u0958\u0007"+ + "\u0005\u0000\u0000\u0958\u0959\u0007\u000e\u0000\u0000\u0959\u095a\u0007"+ + "\u0014\u0000\u0000\u095a\u095b\u0007\n\u0000\u0000\u095b\u0138\u0001\u0000"+ + "\u0000\u0000\u095c\u095d\u0007\u000e\u0000\u0000\u095d\u095e\u0007\u0005"+ + "\u0000\u0000\u095e\u095f\u0007\u0006\u0000\u0000\u095f\u0960\u0007\u0006"+ + "\u0000\u0000\u0960\u0961\u0007\n\u0000\u0000\u0961\u0962\u0007\f\u0000"+ + "\u0000\u0962\u013a\u0001\u0000\u0000\u0000\u0963\u0964\u0007\u000e\u0000"+ + "\u0000\u0964\u0965\u0007\u0005\u0000\u0000\u0965\u0966\u0007\t\u0000\u0000"+ + "\u0966\u0967\u0007\u000e\u0000\u0000\u0967\u0968\u0007\u0005\u0000\u0000"+ + "\u0968\u0969\u0007\f\u0000\u0000\u0969\u096a\u0007\n\u0000\u0000\u096a"+ + "\u013c\u0001\u0000\u0000\u0000\u096b\u096c\u0007\u000e\u0000\u0000\u096c"+ + "\u096d\u0007\u0005\u0000\u0000\u096d\u096e\u0007\t\u0000\u0000\u096e\u096f"+ + "\u0007\u000e\u0000\u0000\u096f\u0970\u0007\u0005\u0000\u0000\u0970\u0971"+ + "\u0007\f\u0000\u0000\u0971\u0972\u0007\n\u0000\u0000\u0972\u0973\u0007"+ + "\f\u0000\u0000\u0973\u013e\u0001\u0000\u0000\u0000\u0974\u0975\u0007\u000e"+ + "\u0000\u0000\u0975\u0976\u0007\u0005\u0000\u0000\u0976\u0977\u0007\u0010"+ + "\u0000\u0000\u0977\u0978\u0007\u0005\u0000\u0000\u0978\u0979\u0007\u0006"+ + "\u0000\u0000\u0979\u097a\u0007\u0013\u0000\u0000\u097a\u097b\u0007\u0017"+ + "\u0000\u0000\u097b\u0140\u0001\u0000\u0000\u0000\u097c\u097d\u0007\u000e"+ + "\u0000\u0000\u097d\u097e\u0007\u0014\u0000\u0000\u097e\u097f\u0007\u0005"+ + "\u0000\u0000\u097f\u0980\u0007\u0011\u0000\u0000\u0980\u0981\u0007\u0007"+ + "\u0000\u0000\u0981\u0142\u0001\u0000\u0000\u0000\u0982\u0983\u0007\u000e"+ + "\u0000\u0000\u0983\u0984\u0007\u0014\u0000\u0000\u0984\u0985\u0007\u0005"+ + "\u0000\u0000\u0985\u0986\u0007\r\u0000\u0000\u0986\u0987\u0007\u0005\u0000"+ + "\u0000\u0987\u0988\u0007\u000e\u0000\u0000\u0988\u0989\u0007\u0010\u0000"+ + "\u0000\u0989\u098a\u0007\n\u0000\u0000\u098a\u098b\u0007\r\u0000\u0000"+ + "\u098b\u098c\u0007\u0011\u0000\u0000\u098c\u098d\u0007\t\u0000\u0000\u098d"+ + "\u098e\u0007\u0010\u0000\u0000\u098e\u098f\u0007\u0011\u0000\u0000\u098f"+ + "\u0990\u0007\u000e\u0000\u0000\u0990\u0991\u0007\t\u0000\u0000\u0991\u0144"+ + "\u0001\u0000\u0000\u0000\u0992\u0993\u0007\u000e\u0000\u0000\u0993\u0994"+ + "\u0007\u0014\u0000\u0000\u0994\u0995\u0007\n\u0000\u0000\u0995\u0996\u0007"+ + "\u000e\u0000\u0000\u0996\u0997\u0007\u0015\u0000\u0000\u0997\u0998\u0007"+ + "\u0018\u0000\u0000\u0998\u0999\u0007\u0013\u0000\u0000\u0999\u099a\u0007"+ + "\u0011\u0000\u0000\u099a\u099b\u0007\u0007\u0000\u0000\u099b\u099c\u0007"+ + "\u0010\u0000\u0000\u099c\u0146\u0001\u0000\u0000\u0000\u099d\u099e\u0007"+ + "\u000e\u0000\u0000\u099e\u099f\u0007\u0006\u0000\u0000\u099f\u09a0\u0007"+ + "\u0005\u0000\u0000\u09a0\u09a1\u0007\t\u0000\u0000\u09a1\u09a2\u0007\t"+ + "\u0000\u0000\u09a2\u0148\u0001\u0000\u0000\u0000\u09a3\u09a4\u0007\u000e"+ + "\u0000\u0000\u09a4\u09a5\u0007\u0006\u0000\u0000\u09a5\u09a6\u0007\u0013"+ + "\u0000\u0000\u09a6\u09a7\u0007\t\u0000\u0000\u09a7\u09a8\u0007\n\u0000"+ + "\u0000\u09a8\u014a\u0001\u0000\u0000\u0000\u09a9\u09aa\u0007\u000e\u0000"+ + "\u0000\u09aa\u09ab\u0007\u0006\u0000\u0000\u09ab\u09ac\u0007\u0016\u0000"+ + "\u0000\u09ac\u09ad\u0007\t\u0000\u0000\u09ad\u09ae\u0007\u0010\u0000\u0000"+ + "\u09ae\u09af\u0007\n\u0000\u0000\u09af\u09b0\u0007\r\u0000\u0000\u09b0"+ + "\u014c\u0001\u0000\u0000\u0000\u09b1\u09b2\u0007\u000e\u0000\u0000\u09b2"+ + "\u09b3\u0007\u0013\u0000\u0000\u09b3\u09b4\u0007\u000f\u0000\u0000\u09b4"+ + "\u09b5\u0007\u000f\u0000\u0000\u09b5\u09b6\u0007\n\u0000\u0000\u09b6\u09b7"+ + "\u0007\u0007\u0000\u0000\u09b7\u09b8\u0007\u0010\u0000\u0000\u09b8\u014e"+ + "\u0001\u0000\u0000\u0000\u09b9\u09ba\u0007\u000e\u0000\u0000\u09ba\u09bb"+ + "\u0007\u0013\u0000\u0000\u09bb\u09bc\u0007\u000f\u0000\u0000\u09bc\u09bd"+ + "\u0007\u000f\u0000\u0000\u09bd\u09be\u0007\n\u0000\u0000\u09be\u09bf\u0007"+ + "\u0007\u0000\u0000\u09bf\u09c0\u0007\u0010\u0000\u0000\u09c0\u09c1\u0007"+ + "\t\u0000\u0000\u09c1\u0150\u0001\u0000\u0000\u0000\u09c2\u09c3\u0007\u000e"+ + "\u0000\u0000\u09c3\u09c4\u0007\u0013\u0000\u0000\u09c4\u09c5\u0007\u000f"+ + "\u0000\u0000\u09c5\u09c6\u0007\u000f\u0000\u0000\u09c6\u09c7\u0007\u0011"+ + "\u0000\u0000\u09c7\u09c8\u0007\u0010\u0000\u0000\u09c8\u0152\u0001\u0000"+ + "\u0000\u0000\u09c9\u09ca\u0007\u000e\u0000\u0000\u09ca\u09cb\u0007\u0013"+ + "\u0000\u0000\u09cb\u09cc\u0007\u000f\u0000\u0000\u09cc\u09cd\u0007\u000f"+ + "\u0000\u0000\u09cd\u09ce\u0007\u0011\u0000\u0000\u09ce\u09cf\u0007\u0010"+ + "\u0000\u0000\u09cf\u09d0\u0007\u0010\u0000\u0000\u09d0\u09d1\u0007\n\u0000"+ + "\u0000\u09d1\u09d2\u0007\f\u0000\u0000\u09d2\u0154\u0001\u0000\u0000\u0000"+ + "\u09d3\u09d4\u0007\u000e\u0000\u0000\u09d4\u09d5\u0007\u0013\u0000\u0000"+ + "\u09d5\u09d6\u0007\u0007\u0000\u0000\u09d6\u09d7\u0007\u0019\u0000\u0000"+ + "\u09d7\u09d8\u0007\u0011\u0000\u0000\u09d8\u09d9\u0007\u0017\u0000\u0000"+ + "\u09d9\u09da\u0007\u0016\u0000\u0000\u09da\u09db\u0007\r\u0000\u0000\u09db"+ + "\u09dc\u0007\u0005\u0000\u0000\u09dc\u09dd\u0007\u0010\u0000\u0000\u09dd"+ + "\u09de\u0007\u0011\u0000\u0000\u09de\u09df\u0007\u0013\u0000\u0000\u09df"+ + "\u09e0\u0007\u0007\u0000\u0000\u09e0\u0156\u0001\u0000\u0000\u0000\u09e1"+ + "\u09e2\u0007\u000e\u0000\u0000\u09e2\u09e3\u0007\u0013\u0000\u0000\u09e3"+ + "\u09e4\u0007\u0007\u0000\u0000\u09e4\u09e5\u0007\u0007\u0000\u0000\u09e5"+ + "\u09e6\u0007\n\u0000\u0000\u09e6\u09e7\u0007\u000e\u0000\u0000\u09e7\u09e8"+ + "\u0007\u0010\u0000\u0000\u09e8\u09e9\u0007\u0011\u0000\u0000\u09e9\u09ea"+ + "\u0007\u0013\u0000\u0000\u09ea\u09eb\u0007\u0007\u0000\u0000\u09eb\u0158"+ + "\u0001\u0000\u0000\u0000\u09ec\u09ed\u0007\u000e\u0000\u0000\u09ed\u09ee"+ + "\u0007\u0013\u0000\u0000\u09ee\u09ef\u0007\u0007\u0000\u0000\u09ef\u09f0"+ + "\u0007\t\u0000\u0000\u09f0\u09f1\u0007\u0010\u0000\u0000\u09f1\u09f2\u0007"+ + "\r\u0000\u0000\u09f2\u09f3\u0007\u0005\u0000\u0000\u09f3\u09f4\u0007\u0011"+ + "\u0000\u0000\u09f4\u09f5\u0007\u0007\u0000\u0000\u09f5\u09f6\u0007\u0010"+ + "\u0000\u0000\u09f6\u09f7\u0007\t\u0000\u0000\u09f7\u015a\u0001\u0000\u0000"+ + "\u0000\u09f8\u09f9\u0007\u000e\u0000\u0000\u09f9\u09fa\u0007\u0013\u0000"+ + "\u0000\u09fa\u09fb\u0007\u0007\u0000\u0000\u09fb\u09fc\u0007\u0010\u0000"+ + "\u0000\u09fc\u09fd\u0007\n\u0000\u0000\u09fd\u09fe\u0007\u0007\u0000\u0000"+ + "\u09fe\u09ff\u0007\u0010\u0000\u0000\u09ff\u015c\u0001\u0000\u0000\u0000"+ + "\u0a00\u0a01\u0007\u000e\u0000\u0000\u0a01\u0a02\u0007\u0013\u0000\u0000"+ + "\u0a02\u0a03\u0007\u0007\u0000\u0000\u0a03\u0a04\u0007\u0010\u0000\u0000"+ + "\u0a04\u0a05\u0007\u0011\u0000\u0000\u0a05\u0a06\u0007\u0007\u0000\u0000"+ + "\u0a06\u0a07\u0007\u0016\u0000\u0000\u0a07\u0a08\u0007\n\u0000\u0000\u0a08"+ + "\u015e\u0001\u0000\u0000\u0000\u0a09\u0a0a\u0007\u000e\u0000\u0000\u0a0a"+ + "\u0a0b\u0007\u0013\u0000\u0000\u0a0b\u0a0c\u0007\u0007\u0000\u0000\u0a0c"+ + "\u0a0d\u0007\u001b\u0000\u0000\u0a0d\u0a0e\u0007\n\u0000\u0000\u0a0e\u0a0f"+ + "\u0007\r\u0000\u0000\u0a0f\u0a10\u0007\t\u0000\u0000\u0a10\u0a11\u0007"+ + "\u0011\u0000\u0000\u0a11\u0a12\u0007\u0013\u0000\u0000\u0a12\u0a13\u0007"+ + "\u0007\u0000\u0000\u0a13\u0160\u0001\u0000\u0000\u0000\u0a14\u0a15\u0007"+ + "\u000e\u0000\u0000\u0a15\u0a16\u0007\u0013\u0000\u0000\u0a16\u0a17\u0007"+ + "\u0018\u0000\u0000\u0a17\u0a18\u0007\b\u0000\u0000\u0a18\u0162\u0001\u0000"+ + "\u0000\u0000\u0a19\u0a1a\u0007\u000e\u0000\u0000\u0a1a\u0a1b\u0007\u0013"+ + "\u0000\u0000\u0a1b\u0a1c\u0007\t\u0000\u0000\u0a1c\u0a1d\u0007\u0010\u0000"+ + "\u0000\u0a1d\u0164\u0001\u0000\u0000\u0000\u0a1e\u0a1f\u0007\u000e\u0000"+ + "\u0000\u0a1f\u0a20\u0007\t\u0000\u0000\u0a20\u0a21\u0007\u001b\u0000\u0000"+ + "\u0a21\u0166\u0001\u0000\u0000\u0000\u0a22\u0a23\u0007\u000e\u0000\u0000"+ + "\u0a23\u0a24\u0007\u0016\u0000\u0000\u0a24\u0a25\u0007\r\u0000\u0000\u0a25"+ + "\u0a26\u0007\t\u0000\u0000\u0a26\u0a27\u0007\u0013\u0000\u0000\u0a27\u0a28"+ + "\u0007\r\u0000\u0000\u0a28\u0168\u0001\u0000\u0000\u0000\u0a29\u0a2a\u0007"+ + "\u000e\u0000\u0000\u0a2a\u0a2b\u0007\b\u0000\u0000\u0a2b\u0a2c\u0007\u000e"+ + "\u0000\u0000\u0a2c\u0a2d\u0007\u0006\u0000\u0000\u0a2d\u0a2e\u0007\n\u0000"+ + "\u0000\u0a2e\u016a\u0001\u0000\u0000\u0000\u0a2f\u0a30\u0007\f\u0000\u0000"+ + "\u0a30\u0a31\u0007\u0005\u0000\u0000\u0a31\u0a32\u0007\u0010\u0000\u0000"+ + "\u0a32\u0a33\u0007\u0005\u0000\u0000\u0a33\u016c\u0001\u0000\u0000\u0000"+ + "\u0a34\u0a35\u0007\f\u0000\u0000\u0a35\u0a36\u0007\u0005\u0000\u0000\u0a36"+ + "\u0a37\u0007\u0010\u0000\u0000\u0a37\u0a38\u0007\u0005\u0000\u0000\u0a38"+ + "\u0a39\u0007\u0012\u0000\u0000\u0a39\u0a3a\u0007\u0005\u0000\u0000\u0a3a"+ + "\u0a3b\u0007\t\u0000\u0000\u0a3b\u0a3c\u0007\n\u0000\u0000\u0a3c\u016e"+ + "\u0001\u0000\u0000\u0000\u0a3d\u0a3e\u0007\f\u0000\u0000\u0a3e\u0a3f\u0007"+ + "\u0005\u0000\u0000\u0a3f\u0a40\u0007\b\u0000\u0000\u0a40\u0170\u0001\u0000"+ + "\u0000\u0000\u0a41\u0a42\u0007\f\u0000\u0000\u0a42\u0a43\u0007\n\u0000"+ + "\u0000\u0a43\u0a44\u0007\u0005\u0000\u0000\u0a44\u0a45\u0007\u0006\u0000"+ + "\u0000\u0a45\u0a46\u0007\u0006\u0000\u0000\u0a46\u0a47\u0007\u0013\u0000"+ + "\u0000\u0a47\u0a48\u0007\u000e\u0000\u0000\u0a48\u0a49\u0007\u0005\u0000"+ + "\u0000\u0a49\u0a4a\u0007\u0010\u0000\u0000\u0a4a\u0a4b\u0007\n\u0000\u0000"+ + "\u0a4b\u0172\u0001\u0000\u0000\u0000\u0a4c\u0a4d\u0007\f\u0000\u0000\u0a4d"+ + "\u0a4e\u0007\n\u0000\u0000\u0a4e\u0a4f\u0007\u000e\u0000\u0000\u0a4f\u0a50"+ + "\u0007\u0006\u0000\u0000\u0a50\u0a51\u0007\u0005\u0000\u0000\u0a51\u0a52"+ + "\u0007\r\u0000\u0000\u0a52\u0a53\u0007\n\u0000\u0000\u0a53\u0174\u0001"+ + "\u0000\u0000\u0000\u0a54\u0a55\u0007\f\u0000\u0000\u0a55\u0a56\u0007\n"+ + "\u0000\u0000\u0a56\u0a57\u0007\u0019\u0000\u0000\u0a57\u0a58\u0007\u0005"+ + "\u0000\u0000\u0a58\u0a59\u0007\u0016\u0000\u0000\u0a59\u0a5a\u0007\u0006"+ + "\u0000\u0000\u0a5a\u0a5b\u0007\u0010\u0000\u0000\u0a5b\u0a5c\u0007\t\u0000"+ + "\u0000\u0a5c\u0176\u0001\u0000\u0000\u0000\u0a5d\u0a5e\u0007\f\u0000\u0000"+ + "\u0a5e\u0a5f\u0007\n\u0000\u0000\u0a5f\u0a60\u0007\u0019\u0000\u0000\u0a60"+ + "\u0a61\u0007\n\u0000\u0000\u0a61\u0a62\u0007\r\u0000\u0000\u0a62\u0a63"+ + "\u0007\r\u0000\u0000\u0a63\u0a64\u0007\n\u0000\u0000\u0a64\u0a65\u0007"+ + "\f\u0000\u0000\u0a65\u0178\u0001\u0000\u0000\u0000\u0a66\u0a67\u0007\f"+ + "\u0000\u0000\u0a67\u0a68\u0007\n\u0000\u0000\u0a68\u0a69\u0007\u0019\u0000"+ + "\u0000\u0a69\u0a6a\u0007\u0011\u0000\u0000\u0a6a\u0a6b\u0007\u0007\u0000"+ "\u0000\u0a6b\u0a6c\u0007\n\u0000\u0000\u0a6c\u0a6d\u0007\r\u0000\u0000"+ "\u0a6d\u017a\u0001\u0000\u0000\u0000\u0a6e\u0a6f\u0007\f\u0000\u0000\u0a6f"+ "\u0a70\u0007\n\u0000\u0000\u0a70\u0a71\u0007\u0006\u0000\u0000\u0a71\u0a72"+ - "\u0007\u0011\u0000\u0000\u0a72\u0a73\u0007\u000f\u0000\u0000\u0a73\u0a74"+ - "\u0007\u0011\u0000\u0000\u0a74\u0a75\u0007\u0010\u0000\u0000\u0a75\u0a76"+ - "\u0007\n\u0000\u0000\u0a76\u0a77\u0007\r\u0000\u0000\u0a77\u0a78\u0007"+ - "\t\u0000\u0000\u0a78\u017c\u0001\u0000\u0000\u0000\u0a79\u0a7a\u0007\f"+ - "\u0000\u0000\u0a7a\u0a7b\u0007\u0011\u0000\u0000\u0a7b\u0a7c\u0007\u000e"+ - "\u0000\u0000\u0a7c\u0a7d\u0007\u0010\u0000\u0000\u0a7d\u0a7e\u0007\u0011"+ - "\u0000\u0000\u0a7e\u0a7f\u0007\u0013\u0000\u0000\u0a7f\u0a80\u0007\u0007"+ - "\u0000\u0000\u0a80\u0a81\u0007\u0005\u0000\u0000\u0a81\u0a82\u0007\r\u0000"+ - "\u0000\u0a82\u0a83\u0007\b\u0000\u0000\u0a83\u017e\u0001\u0000\u0000\u0000"+ - "\u0a84\u0a85\u0007\f\u0000\u0000\u0a85\u0a86\u0007\u0011\u0000\u0000\u0a86"+ - "\u0a87\u0007\t\u0000\u0000\u0a87\u0a88\u0007\u0005\u0000\u0000\u0a88\u0a89"+ - "\u0007\u0012\u0000\u0000\u0a89\u0a8a\u0007\u0006\u0000\u0000\u0a8a\u0a8b"+ - "\u0007\n\u0000\u0000\u0a8b\u0180\u0001\u0000\u0000\u0000\u0a8c\u0a8d\u0007"+ - "\f\u0000\u0000\u0a8d\u0a8e\u0007\u0011\u0000\u0000\u0a8e\u0a8f\u0007\t"+ - "\u0000\u0000\u0a8f\u0a90\u0007\u000e\u0000\u0000\u0a90\u0a91\u0007\u0005"+ - "\u0000\u0000\u0a91\u0a92\u0007\r\u0000\u0000\u0a92\u0a93\u0007\f\u0000"+ - "\u0000\u0a93\u0182\u0001\u0000\u0000\u0000\u0a94\u0a95\u0007\f\u0000\u0000"+ - "\u0a95\u0a96\u0007\u0013\u0000\u0000\u0a96\u0a97\u0007\u000e\u0000\u0000"+ - "\u0a97\u0a98\u0007\u0016\u0000\u0000\u0a98\u0a99\u0007\u000f\u0000\u0000"+ - "\u0a99\u0a9a\u0007\n\u0000\u0000\u0a9a\u0a9b\u0007\u0007\u0000\u0000\u0a9b"+ - "\u0a9c\u0007\u0010\u0000\u0000\u0a9c\u0184\u0001\u0000\u0000\u0000\u0a9d"+ - "\u0a9e\u0007\f\u0000\u0000\u0a9e\u0a9f\u0007\u0013\u0000\u0000\u0a9f\u0aa0"+ - "\u0007\u000f\u0000\u0000\u0aa0\u0aa1\u0007\u0005\u0000\u0000\u0aa1\u0aa2"+ - "\u0007\u0011\u0000\u0000\u0aa2\u0aa3\u0007\u0007\u0000\u0000\u0aa3\u0186"+ - "\u0001\u0000\u0000\u0000\u0aa4\u0aa5\u0007\f\u0000\u0000\u0aa5\u0aa6\u0007"+ - "\u0013\u0000\u0000\u0aa6\u0aa7\u0007\u0016\u0000\u0000\u0aa7\u0aa8\u0007"+ - "\u0012\u0000\u0000\u0aa8\u0aa9\u0007\u0006\u0000\u0000\u0aa9\u0aaa\u0007"+ - "\n\u0000\u0000\u0aaa\u0188\u0001\u0000\u0000\u0000\u0aab\u0aac\u0007\f"+ - "\u0000\u0000\u0aac\u0aad\u0007\r\u0000\u0000\u0aad\u0aae\u0007\u0013\u0000"+ - "\u0000\u0aae\u0aaf\u0007\u0018\u0000\u0000\u0aaf\u018a\u0001\u0000\u0000"+ - "\u0000\u0ab0\u0ab1\u0007\n\u0000\u0000\u0ab1\u0ab2\u0007\u0005\u0000\u0000"+ - "\u0ab2\u0ab3\u0007\u000e\u0000\u0000\u0ab3\u0ab4\u0007\u0014\u0000\u0000"+ - "\u0ab4\u018c\u0001\u0000\u0000\u0000\u0ab5\u0ab6\u0007\n\u0000\u0000\u0ab6"+ - "\u0ab7\u0007\u0007\u0000\u0000\u0ab7\u0ab8\u0007\u0005\u0000\u0000\u0ab8"+ - "\u0ab9\u0007\u0012\u0000\u0000\u0ab9\u0aba\u0007\u0006\u0000\u0000\u0aba"+ - "\u0abb\u0007\n\u0000\u0000\u0abb\u018e\u0001\u0000\u0000\u0000\u0abc\u0abd"+ - "\u0007\n\u0000\u0000\u0abd\u0abe\u0007\u0007\u0000\u0000\u0abe\u0abf\u0007"+ - "\u000e\u0000\u0000\u0abf\u0ac0\u0007\u0013\u0000\u0000\u0ac0\u0ac1\u0007"+ - "\f\u0000\u0000\u0ac1\u0ac2\u0007\u0011\u0000\u0000\u0ac2\u0ac3\u0007\u0007"+ - "\u0000\u0000\u0ac3\u0ac4\u0007\u0017\u0000\u0000\u0ac4\u0190\u0001\u0000"+ - "\u0000\u0000\u0ac5\u0ac6\u0007\n\u0000\u0000\u0ac6\u0ac7\u0007\u0007\u0000"+ - "\u0000\u0ac7\u0ac8\u0007\u000e\u0000\u0000\u0ac8\u0ac9\u0007\r\u0000\u0000"+ - "\u0ac9\u0aca\u0007\b\u0000\u0000\u0aca\u0acb\u0007\u0018\u0000\u0000\u0acb"+ - "\u0acc\u0007\u0010\u0000\u0000\u0acc\u0acd\u0007\n\u0000\u0000\u0acd\u0ace"+ - "\u0007\f\u0000\u0000\u0ace\u0192\u0001\u0000\u0000\u0000\u0acf\u0ad0\u0007"+ - "\n\u0000\u0000\u0ad0\u0ad1\u0007\u0007\u0000\u0000\u0ad1\u0ad2\u0007\u0016"+ - "\u0000\u0000\u0ad2\u0ad3\u0007\u000f\u0000\u0000\u0ad3\u0194\u0001\u0000"+ - "\u0000\u0000\u0ad4\u0ad5\u0007\n\u0000\u0000\u0ad5\u0ad6\u0007\t\u0000"+ - "\u0000\u0ad6\u0ad7\u0007\u000e\u0000\u0000\u0ad7\u0ad8\u0007\u0005\u0000"+ - "\u0000\u0ad8\u0ad9\u0007\u0018\u0000\u0000\u0ad9\u0ada\u0007\n\u0000\u0000"+ - "\u0ada\u0196\u0001\u0000\u0000\u0000\u0adb\u0adc\u0007\n\u0000\u0000\u0adc"+ - "\u0add\u0007\u001b\u0000\u0000\u0add\u0ade\u0007\n\u0000\u0000\u0ade\u0adf"+ - "\u0007\u0007\u0000\u0000\u0adf\u0ae0\u0007\u0010\u0000\u0000\u0ae0\u0198"+ - "\u0001\u0000\u0000\u0000\u0ae1\u0ae2\u0007\n\u0000\u0000\u0ae2\u0ae3\u0007"+ - "\u001a\u0000\u0000\u0ae3\u0ae4\u0007\u000e\u0000\u0000\u0ae4\u0ae5\u0007"+ - "\u0006\u0000\u0000\u0ae5\u0ae6\u0007\u0016\u0000\u0000\u0ae6\u0ae7\u0007"+ - "\f\u0000\u0000\u0ae7\u0ae8\u0007\n\u0000\u0000\u0ae8\u019a\u0001\u0000"+ - "\u0000\u0000\u0ae9\u0aea\u0007\n\u0000\u0000\u0aea\u0aeb\u0007\u001a\u0000"+ - "\u0000\u0aeb\u0aec\u0007\u000e\u0000\u0000\u0aec\u0aed\u0007\u0006\u0000"+ - "\u0000\u0aed\u0aee\u0007\u0016\u0000\u0000\u0aee\u0aef\u0007\f\u0000\u0000"+ - "\u0aef\u0af0\u0007\u0011\u0000\u0000\u0af0\u0af1\u0007\u0007\u0000\u0000"+ - "\u0af1\u0af2\u0007\u0017\u0000\u0000\u0af2\u019c\u0001\u0000\u0000\u0000"+ - "\u0af3\u0af4\u0007\n\u0000\u0000\u0af4\u0af5\u0007\u001a\u0000\u0000\u0af5"+ - "\u0af6\u0007\u000e\u0000\u0000\u0af6\u0af7\u0007\u0006\u0000\u0000\u0af7"+ - "\u0af8\u0007\u0016\u0000\u0000\u0af8\u0af9\u0007\t\u0000\u0000\u0af9\u0afa"+ - "\u0007\u0011\u0000\u0000\u0afa\u0afb\u0007\u001b\u0000\u0000\u0afb\u0afc"+ - "\u0007\n\u0000\u0000\u0afc\u019e\u0001\u0000\u0000\u0000\u0afd\u0afe\u0007"+ - "\n\u0000\u0000\u0afe\u0aff\u0007\u001a\u0000\u0000\u0aff\u0b00\u0007\n"+ - "\u0000\u0000\u0b00\u0b01\u0007\u000e\u0000\u0000\u0b01\u0b02\u0007\u0016"+ - "\u0000\u0000\u0b02\u0b03\u0007\u0010\u0000\u0000\u0b03\u0b04\u0007\n\u0000"+ - "\u0000\u0b04\u01a0\u0001\u0000\u0000\u0000\u0b05\u0b06\u0007\n\u0000\u0000"+ - "\u0b06\u0b07\u0007\u001a\u0000\u0000\u0b07\u0b08\u0007\u0018\u0000\u0000"+ - "\u0b08\u0b09\u0007\u0006\u0000\u0000\u0b09\u0b0a\u0007\u0005\u0000\u0000"+ - "\u0b0a\u0b0b\u0007\u0011\u0000\u0000\u0b0b\u0b0c\u0007\u0007\u0000\u0000"+ - "\u0b0c\u01a2\u0001\u0000\u0000\u0000\u0b0d\u0b0e\u0007\n\u0000\u0000\u0b0e"+ - "\u0b0f\u0007\u001a\u0000\u0000\u0b0f\u0b10\u0007\u0010\u0000\u0000\u0b10"+ - "\u0b11\u0007\n\u0000\u0000\u0b11\u0b12\u0007\u0007\u0000\u0000\u0b12\u0b13"+ - "\u0007\t\u0000\u0000\u0b13\u0b14\u0007\u0011\u0000\u0000\u0b14\u0b15\u0007"+ - "\u0013\u0000\u0000\u0b15\u0b16\u0007\u0007\u0000\u0000\u0b16\u01a4\u0001"+ - "\u0000\u0000\u0000\u0b17\u0b18\u0007\n\u0000\u0000\u0b18\u0b19\u0007\u001a"+ - "\u0000\u0000\u0b19\u0b1a\u0007\u0010\u0000\u0000\u0b1a\u0b1b\u0007\n\u0000"+ - "\u0000\u0b1b\u0b1c\u0007\r\u0000\u0000\u0b1c\u0b1d\u0007\u0007\u0000\u0000"+ - "\u0b1d\u0b1e\u0007\u0005\u0000\u0000\u0b1e\u0b1f\u0007\u0006\u0000\u0000"+ - "\u0b1f\u01a6\u0001\u0000\u0000\u0000\u0b20\u0b21\u0007\u0019\u0000\u0000"+ - "\u0b21\u0b22\u0007\u0005\u0000\u0000\u0b22\u0b23\u0007\u000f\u0000\u0000"+ - "\u0b23\u0b24\u0007\u0011\u0000\u0000\u0b24\u0b25\u0007\u0006\u0000\u0000"+ - "\u0b25\u0b26\u0007\b\u0000\u0000\u0b26\u01a8\u0001\u0000\u0000\u0000\u0b27"+ - "\u0b28\u0007\u0019\u0000\u0000\u0b28\u0b29\u0007\u0011\u0000\u0000\u0b29"+ - "\u0b2a\u0007\r\u0000\u0000\u0b2a\u0b2b\u0007\t\u0000\u0000\u0b2b\u0b2c"+ - "\u0007\u0010\u0000\u0000\u0b2c\u01aa\u0001\u0000\u0000\u0000\u0b2d\u0b2e"+ - "\u0007\u0019\u0000\u0000\u0b2e\u0b2f\u0007\u0013\u0000\u0000\u0b2f\u0b30"+ - "\u0007\u0006\u0000\u0000\u0b30\u0b31\u0007\u0006\u0000\u0000\u0b31\u0b32"+ - "\u0007\u0013\u0000\u0000\u0b32\u0b33\u0007\u001d\u0000\u0000\u0b33\u0b34"+ - "\u0007\u0011\u0000\u0000\u0b34\u0b35\u0007\u0007\u0000\u0000\u0b35\u0b36"+ - "\u0007\u0017\u0000\u0000\u0b36\u01ac\u0001\u0000\u0000\u0000\u0b37\u0b38"+ - "\u0007\u0019\u0000\u0000\u0b38\u0b39\u0007\u0013\u0000\u0000\u0b39\u0b3a"+ - "\u0007\r\u0000\u0000\u0b3a\u0b3b\u0007\u000e\u0000\u0000\u0b3b\u0b3c\u0007"+ - "\n\u0000\u0000\u0b3c\u01ae\u0001\u0000\u0000\u0000\u0b3d\u0b3e\u0007\u0019"+ - "\u0000\u0000\u0b3e\u0b3f\u0007\u0013\u0000\u0000\u0b3f\u0b40\u0007\r\u0000"+ - "\u0000\u0b40\u0b41\u0007\u001d\u0000\u0000\u0b41\u0b42\u0007\u0005\u0000"+ - "\u0000\u0b42\u0b43\u0007\r\u0000\u0000\u0b43\u0b44\u0007\f\u0000\u0000"+ - "\u0b44\u01b0\u0001\u0000\u0000\u0000\u0b45\u0b46\u0007\u0019\u0000\u0000"+ - "\u0b46\u0b47\u0007\u0016\u0000\u0000\u0b47\u0b48\u0007\u0007\u0000\u0000"+ - "\u0b48\u0b49\u0007\u000e\u0000\u0000\u0b49\u0b4a\u0007\u0010\u0000\u0000"+ - "\u0b4a\u0b4b\u0007\u0011\u0000\u0000\u0b4b\u0b4c\u0007\u0013\u0000\u0000"+ - "\u0b4c\u0b4d\u0007\u0007\u0000\u0000\u0b4d\u01b2\u0001\u0000\u0000\u0000"+ - "\u0b4e\u0b4f\u0007\u0019\u0000\u0000\u0b4f\u0b50\u0007\u0016\u0000\u0000"+ - "\u0b50\u0b51\u0007\u0007\u0000\u0000\u0b51\u0b52\u0007\u000e\u0000\u0000"+ - "\u0b52\u0b53\u0007\u0010\u0000\u0000\u0b53\u0b54\u0007\u0011\u0000\u0000"+ - "\u0b54\u0b55\u0007\u0013\u0000\u0000\u0b55\u0b56\u0007\u0007\u0000\u0000"+ - "\u0b56\u0b57\u0007\t\u0000\u0000\u0b57\u01b4\u0001\u0000\u0000\u0000\u0b58"+ - "\u0b59\u0007\u0017\u0000\u0000\u0b59\u0b5a\u0007\u0006\u0000\u0000\u0b5a"+ - "\u0b5b\u0007\u0013\u0000\u0000\u0b5b\u0b5c\u0007\u0012\u0000\u0000\u0b5c"+ - "\u0b5d\u0007\u0005\u0000\u0000\u0b5d\u0b5e\u0007\u0006\u0000\u0000\u0b5e"+ - "\u01b6\u0001\u0000\u0000\u0000\u0b5f\u0b60\u0007\u0017\u0000\u0000\u0b60"+ - "\u0b61\u0007\r\u0000\u0000\u0b61\u0b62\u0007\u0005\u0000\u0000\u0b62\u0b63"+ - "\u0007\u0007\u0000\u0000\u0b63\u0b64\u0007\u0010\u0000\u0000\u0b64\u0b65"+ - "\u0007\n\u0000\u0000\u0b65\u0b66\u0007\f\u0000\u0000\u0b66\u01b8\u0001"+ - "\u0000\u0000\u0000\u0b67\u0b68\u0007\u0014\u0000\u0000\u0b68\u0b69\u0007"+ - "\u0005\u0000\u0000\u0b69\u0b6a\u0007\u0007\u0000\u0000\u0b6a\u0b6b\u0007"+ - "\f\u0000\u0000\u0b6b\u0b6c\u0007\u0006\u0000\u0000\u0b6c\u0b6d\u0007\n"+ - "\u0000\u0000\u0b6d\u0b6e\u0007\r\u0000\u0000\u0b6e\u01ba\u0001\u0000\u0000"+ - "\u0000\u0b6f\u0b70\u0007\u0014\u0000\u0000\u0b70\u0b71\u0007\n\u0000\u0000"+ - "\u0b71\u0b72\u0007\u0005\u0000\u0000\u0b72\u0b73\u0007\f\u0000\u0000\u0b73"+ - "\u0b74\u0007\n\u0000\u0000\u0b74\u0b75\u0007\r\u0000\u0000\u0b75\u01bc"+ - "\u0001\u0000\u0000\u0000\u0b76\u0b77\u0007\u0014\u0000\u0000\u0b77\u0b78"+ - "\u0007\u0013\u0000\u0000\u0b78\u0b79\u0007\u0006\u0000\u0000\u0b79\u0b7a"+ - "\u0007\f\u0000\u0000\u0b7a\u01be\u0001\u0000\u0000\u0000\u0b7b\u0b7c\u0007"+ - "\u0014\u0000\u0000\u0b7c\u0b7d\u0007\u0013\u0000\u0000\u0b7d\u0b7e\u0007"+ - "\u0016\u0000\u0000\u0b7e\u0b7f\u0007\r\u0000\u0000\u0b7f\u01c0\u0001\u0000"+ - "\u0000\u0000\u0b80\u0b81\u0007\u0011\u0000\u0000\u0b81\u0b82\u0007\f\u0000"+ - "\u0000\u0b82\u0b83\u0007\n\u0000\u0000\u0b83\u0b84\u0007\u0007\u0000\u0000"+ - "\u0b84\u0b85\u0007\u0010\u0000\u0000\u0b85\u0b86\u0007\u0011\u0000\u0000"+ - "\u0b86\u0b87\u0007\u0010\u0000\u0000\u0b87\u0b88\u0007\b\u0000\u0000\u0b88"+ - "\u01c2\u0001\u0000\u0000\u0000\u0b89\u0b8a\u0007\u0011\u0000\u0000\u0b8a"+ - "\u0b8b\u0007\u0019\u0000\u0000\u0b8b\u01c4\u0001\u0000\u0000\u0000\u0b8c"+ - "\u0b8d\u0007\u0011\u0000\u0000\u0b8d\u0b8e\u0007\u000f\u0000\u0000\u0b8e"+ - "\u0b8f\u0007\u000f\u0000\u0000\u0b8f\u0b90\u0007\n\u0000\u0000\u0b90\u0b91"+ - "\u0007\f\u0000\u0000\u0b91\u0b92\u0007\u0011\u0000\u0000\u0b92\u0b93\u0007"+ - "\u0005\u0000\u0000\u0b93\u0b94\u0007\u0010\u0000\u0000\u0b94\u0b95\u0007"+ - "\n\u0000\u0000\u0b95\u01c6\u0001\u0000\u0000\u0000\u0b96\u0b97\u0007\u0011"+ - "\u0000\u0000\u0b97\u0b98\u0007\u000f\u0000\u0000\u0b98\u0b99\u0007\u000f"+ - "\u0000\u0000\u0b99\u0b9a\u0007\u0016\u0000\u0000\u0b9a\u0b9b\u0007\u0010"+ - "\u0000\u0000\u0b9b\u0b9c\u0007\u0005\u0000\u0000\u0b9c\u0b9d\u0007\u0012"+ - "\u0000\u0000\u0b9d\u0b9e\u0007\u0006\u0000\u0000\u0b9e\u0b9f\u0007\n\u0000"+ - "\u0000\u0b9f\u01c8\u0001\u0000\u0000\u0000\u0ba0\u0ba1\u0007\u0011\u0000"+ - "\u0000\u0ba1\u0ba2\u0007\u000f\u0000\u0000\u0ba2\u0ba3\u0007\u0018\u0000"+ - "\u0000\u0ba3\u0ba4\u0007\u0006\u0000\u0000\u0ba4\u0ba5\u0007\u0011\u0000"+ - "\u0000\u0ba5\u0ba6\u0007\u000e\u0000\u0000\u0ba6\u0ba7\u0007\u0011\u0000"+ - "\u0000\u0ba7\u0ba8\u0007\u0010\u0000\u0000\u0ba8\u01ca\u0001\u0000\u0000"+ - "\u0000\u0ba9\u0baa\u0007\u0011\u0000\u0000\u0baa\u0bab\u0007\u0007\u0000"+ - "\u0000\u0bab\u0bac\u0007\u000e\u0000\u0000\u0bac\u0bad\u0007\u0006\u0000"+ - "\u0000\u0bad\u0bae\u0007\u0016\u0000\u0000\u0bae\u0baf\u0007\f\u0000\u0000"+ - "\u0baf\u0bb0\u0007\u0011\u0000\u0000\u0bb0\u0bb1\u0007\u0007\u0000\u0000"+ - "\u0bb1\u0bb2\u0007\u0017\u0000\u0000\u0bb2\u01cc\u0001\u0000\u0000\u0000"+ - "\u0bb3\u0bb4\u0007\u0011\u0000\u0000\u0bb4\u0bb5\u0007\u0007\u0000\u0000"+ - "\u0bb5\u0bb6\u0007\u000e\u0000\u0000\u0bb6\u0bb7\u0007\r\u0000\u0000\u0bb7"+ - "\u0bb8\u0007\n\u0000\u0000\u0bb8\u0bb9\u0007\u000f\u0000\u0000\u0bb9\u0bba"+ - "\u0007\n\u0000\u0000\u0bba\u0bbb\u0007\u0007\u0000\u0000\u0bbb\u0bbc\u0007"+ - "\u0010\u0000\u0000\u0bbc\u01ce\u0001\u0000\u0000\u0000\u0bbd\u0bbe\u0007"+ - "\u0011\u0000\u0000\u0bbe\u0bbf\u0007\u0007\u0000\u0000\u0bbf\u0bc0\u0007"+ - "\f\u0000\u0000\u0bc0\u0bc1\u0007\n\u0000\u0000\u0bc1\u0bc2\u0007\u001a"+ - "\u0000\u0000\u0bc2\u01d0\u0001\u0000\u0000\u0000\u0bc3\u0bc4\u0007\u0011"+ - "\u0000\u0000\u0bc4\u0bc5\u0007\u0007\u0000\u0000\u0bc5\u0bc6\u0007\f\u0000"+ - "\u0000\u0bc6\u0bc7\u0007\n\u0000\u0000\u0bc7\u0bc8\u0007\u001a\u0000\u0000"+ - "\u0bc8\u0bc9\u0007\n\u0000\u0000\u0bc9\u0bca\u0007\t\u0000\u0000\u0bca"+ - "\u01d2\u0001\u0000\u0000\u0000\u0bcb\u0bcc\u0007\u0011\u0000\u0000\u0bcc"+ - "\u0bcd\u0007\u0007\u0000\u0000\u0bcd\u0bce\u0007\u0014\u0000\u0000\u0bce"+ - "\u0bcf\u0007\n\u0000\u0000\u0bcf\u0bd0\u0007\r\u0000\u0000\u0bd0\u0bd1"+ - "\u0007\u0011\u0000\u0000\u0bd1\u0bd2\u0007\u0010\u0000\u0000\u0bd2\u01d4"+ - "\u0001\u0000\u0000\u0000\u0bd3\u0bd4\u0007\u0011\u0000\u0000\u0bd4\u0bd5"+ - "\u0007\u0007\u0000\u0000\u0bd5\u0bd6\u0007\u0014\u0000\u0000\u0bd6\u0bd7"+ - "\u0007\n\u0000\u0000\u0bd7\u0bd8\u0007\r\u0000\u0000\u0bd8\u0bd9\u0007"+ - "\u0011\u0000\u0000\u0bd9\u0bda\u0007\u0010\u0000\u0000\u0bda\u0bdb\u0007"+ - "\t\u0000\u0000\u0bdb\u01d6\u0001\u0000\u0000\u0000\u0bdc\u0bdd\u0007\u0011"+ - "\u0000\u0000\u0bdd\u0bde\u0007\u0007\u0000\u0000\u0bde\u0bdf\u0007\u0006"+ - "\u0000\u0000\u0bdf\u0be0\u0007\u0011\u0000\u0000\u0be0\u0be1\u0007\u0007"+ - "\u0000\u0000\u0be1\u0be2\u0007\n\u0000\u0000\u0be2\u01d8\u0001\u0000\u0000"+ - "\u0000\u0be3\u0be4\u0007\u0011\u0000\u0000\u0be4\u0be5\u0007\u0007\u0000"+ - "\u0000\u0be5\u0be6\u0007\t\u0000\u0000\u0be6\u0be7\u0007\n\u0000\u0000"+ - "\u0be7\u0be8\u0007\u0007\u0000\u0000\u0be8\u0be9\u0007\t\u0000\u0000\u0be9"+ - "\u0bea\u0007\u0011\u0000\u0000\u0bea\u0beb\u0007\u0010\u0000\u0000\u0beb"+ - "\u0bec\u0007\u0011\u0000\u0000\u0bec\u0bed\u0007\u001b\u0000\u0000\u0bed"+ - "\u0bee\u0007\n\u0000\u0000\u0bee\u01da\u0001\u0000\u0000\u0000\u0bef\u0bf0"+ - "\u0007\u0011\u0000\u0000\u0bf0\u0bf1\u0007\u0007\u0000\u0000\u0bf1\u0bf2"+ - "\u0007\t\u0000\u0000\u0bf2\u0bf3\u0007\n\u0000\u0000\u0bf3\u0bf4\u0007"+ - "\r\u0000\u0000\u0bf4\u0bf5\u0007\u0010\u0000\u0000\u0bf5\u01dc\u0001\u0000"+ - "\u0000\u0000\u0bf6\u0bf7\u0007\u0011\u0000\u0000\u0bf7\u0bf8\u0007\u0007"+ - "\u0000\u0000\u0bf8\u0bf9\u0007\t\u0000\u0000\u0bf9\u0bfa\u0007\u0010\u0000"+ - "\u0000\u0bfa\u0bfb\u0007\n\u0000\u0000\u0bfb\u0bfc\u0007\u0005\u0000\u0000"+ - "\u0bfc\u0bfd\u0007\f\u0000\u0000\u0bfd\u01de\u0001\u0000\u0000\u0000\u0bfe"+ - "\u0bff\u0007\u0011\u0000\u0000\u0bff\u0c00\u0007\u0007\u0000\u0000\u0c00"+ - "\u0c01\u0007\u001b\u0000\u0000\u0c01\u0c02\u0007\u0013\u0000\u0000\u0c02"+ - "\u0c03\u0007\u0015\u0000\u0000\u0c03\u0c04\u0007\n\u0000\u0000\u0c04\u0c05"+ - "\u0007\r\u0000\u0000\u0c05\u01e0\u0001\u0000\u0000\u0000\u0c06\u0c07\u0007"+ - "\u0011\u0000\u0000\u0c07\u0c08\u0007\t\u0000\u0000\u0c08\u0c09\u0007\u0013"+ - "\u0000\u0000\u0c09\u0c0a\u0007\u0006\u0000\u0000\u0c0a\u0c0b\u0007\u0005"+ - "\u0000\u0000\u0c0b\u0c0c\u0007\u0010\u0000\u0000\u0c0c\u0c0d\u0007\u0011"+ - "\u0000\u0000\u0c0d\u0c0e\u0007\u0013\u0000\u0000\u0c0e\u0c0f\u0007\u0007"+ - "\u0000\u0000\u0c0f\u01e2\u0001\u0000\u0000\u0000\u0c10\u0c11\u0007\u0015"+ - "\u0000\u0000\u0c11\u0c12\u0007\n\u0000\u0000\u0c12\u0c13\u0007\b\u0000"+ - "\u0000\u0c13\u01e4\u0001\u0000\u0000\u0000\u0c14\u0c15\u0007\u0006\u0000"+ - "\u0000\u0c15\u0c16\u0007\u0005\u0000\u0000\u0c16\u0c17\u0007\u0012\u0000"+ - "\u0000\u0c17\u0c18\u0007\n\u0000\u0000\u0c18\u0c19\u0007\u0006\u0000\u0000"+ - "\u0c19\u01e6\u0001\u0000\u0000\u0000\u0c1a\u0c1b\u0007\u0006\u0000\u0000"+ - "\u0c1b\u0c1c\u0007\u0005\u0000\u0000\u0c1c\u0c1d\u0007\u0007\u0000\u0000"+ - "\u0c1d\u0c1e\u0007\u0017\u0000\u0000\u0c1e\u0c1f\u0007\u0016\u0000\u0000"+ - "\u0c1f\u0c20\u0007\u0005\u0000\u0000\u0c20\u0c21\u0007\u0017\u0000\u0000"+ - "\u0c21\u0c22\u0007\n\u0000\u0000\u0c22\u01e8\u0001\u0000\u0000\u0000\u0c23"+ - "\u0c24\u0007\u0006\u0000\u0000\u0c24\u0c25\u0007\u0005\u0000\u0000\u0c25"+ - "\u0c26\u0007\r\u0000\u0000\u0c26\u0c27\u0007\u0017\u0000\u0000\u0c27\u0c28"+ - "\u0007\n\u0000\u0000\u0c28\u01ea\u0001\u0000\u0000\u0000\u0c29\u0c2a\u0007"+ - "\u0006\u0000\u0000\u0c2a\u0c2b\u0007\u0005\u0000\u0000\u0c2b\u0c2c\u0007"+ - "\t\u0000\u0000\u0c2c\u0c2d\u0007\u0010\u0000\u0000\u0c2d\u01ec\u0001\u0000"+ - "\u0000\u0000\u0c2e\u0c2f\u0007\u0006\u0000\u0000\u0c2f\u0c30\u0007\n\u0000"+ - "\u0000\u0c30\u0c31\u0007\u0005\u0000\u0000\u0c31\u0c32\u0007\u0015\u0000"+ - "\u0000\u0c32\u0c33\u0007\u0018\u0000\u0000\u0c33\u0c34\u0007\r\u0000\u0000"+ - "\u0c34\u0c35\u0007\u0013\u0000\u0000\u0c35\u0c36\u0007\u0013\u0000\u0000"+ - "\u0c36\u0c37\u0007\u0019\u0000\u0000\u0c37\u01ee\u0001\u0000\u0000\u0000"+ - "\u0c38\u0c39\u0007\u0006\u0000\u0000\u0c39\u0c3a\u0007\n\u0000\u0000\u0c3a"+ - "\u0c3b\u0007\u001b\u0000\u0000\u0c3b\u0c3c\u0007\n\u0000\u0000\u0c3c\u0c3d"+ - "\u0007\u0006\u0000\u0000\u0c3d\u01f0\u0001\u0000\u0000\u0000\u0c3e\u0c3f"+ - "\u0007\u0006\u0000\u0000\u0c3f\u0c40\u0007\u0011\u0000\u0000\u0c40\u0c41"+ - "\u0007\t\u0000\u0000\u0c41\u0c42\u0007\u0010\u0000\u0000\u0c42\u0c43\u0007"+ - "\n\u0000\u0000\u0c43\u0c44\u0007\u0007\u0000\u0000\u0c44\u01f2\u0001\u0000"+ - "\u0000\u0000\u0c45\u0c46\u0007\u0006\u0000\u0000\u0c46\u0c47\u0007\u0013"+ - "\u0000\u0000\u0c47\u0c48\u0007\u0005\u0000\u0000\u0c48\u0c49\u0007\f\u0000"+ - "\u0000\u0c49\u01f4\u0001\u0000\u0000\u0000\u0c4a\u0c4b\u0007\u0006\u0000"+ - "\u0000\u0c4b\u0c4c\u0007\u0013\u0000\u0000\u0c4c\u0c4d\u0007\u000e\u0000"+ - "\u0000\u0c4d\u0c4e\u0007\u0005\u0000\u0000\u0c4e\u0c4f\u0007\u0006\u0000"+ - "\u0000\u0c4f\u01f6\u0001\u0000\u0000\u0000\u0c50\u0c51\u0007\u0006\u0000"+ - "\u0000\u0c51\u0c52\u0007\u0013\u0000\u0000\u0c52\u0c53\u0007\u000e\u0000"+ - "\u0000\u0c53\u0c54\u0007\u0005\u0000\u0000\u0c54\u0c55\u0007\u0010\u0000"+ - "\u0000\u0c55\u0c56\u0007\u0011\u0000\u0000\u0c56\u0c57\u0007\u0013\u0000"+ - "\u0000\u0c57\u0c58\u0007\u0007\u0000\u0000\u0c58\u01f8\u0001\u0000\u0000"+ - "\u0000\u0c59\u0c5a\u0007\u0006\u0000\u0000\u0c5a\u0c5b\u0007\u0013\u0000"+ - "\u0000\u0c5b\u0c5c\u0007\u000e\u0000\u0000\u0c5c\u0c5d\u0007\u0015\u0000"+ - "\u0000\u0c5d\u01fa\u0001\u0000\u0000\u0000\u0c5e\u0c5f\u0007\u000f\u0000"+ - "\u0000\u0c5f\u0c60\u0007\u0005\u0000\u0000\u0c60\u0c61\u0007\u0018\u0000"+ - "\u0000\u0c61\u0c62\u0007\u0018\u0000\u0000\u0c62\u0c63\u0007\u0011\u0000"+ - "\u0000\u0c63\u0c64\u0007\u0007\u0000\u0000\u0c64\u0c65\u0007\u0017\u0000"+ - "\u0000\u0c65\u01fc\u0001\u0000\u0000\u0000\u0c66\u0c67\u0007\u000f\u0000"+ - "\u0000\u0c67\u0c68\u0007\u0005\u0000\u0000\u0c68\u0c69\u0007\u0010\u0000"+ - "\u0000\u0c69\u0c6a\u0007\u000e\u0000\u0000\u0c6a\u0c6b\u0007\u0014\u0000"+ - "\u0000\u0c6b\u01fe\u0001\u0000\u0000\u0000\u0c6c\u0c6d\u0007\u000f\u0000"+ - "\u0000\u0c6d\u0c6e\u0007\u0005\u0000\u0000\u0c6e\u0c6f\u0007\u0010\u0000"+ - "\u0000\u0c6f\u0c70\u0007\u000e\u0000\u0000\u0c70\u0c71\u0007\u0014\u0000"+ - "\u0000\u0c71\u0c72\u0007\n\u0000\u0000\u0c72\u0c73\u0007\f\u0000\u0000"+ - "\u0c73\u0200\u0001\u0000\u0000\u0000\u0c74\u0c75\u0007\u000f\u0000\u0000"+ - "\u0c75\u0c76\u0007\u0005\u0000\u0000\u0c76\u0c77\u0007\u0010\u0000\u0000"+ - "\u0c77\u0c78\u0007\n\u0000\u0000\u0c78\u0c79\u0007\r\u0000\u0000\u0c79"+ - "\u0c7a\u0007\u0011\u0000\u0000\u0c7a\u0c7b\u0007\u0005\u0000\u0000\u0c7b"+ - "\u0c7c\u0007\u0006\u0000\u0000\u0c7c\u0c7d\u0007\u0011\u0000\u0000\u0c7d"+ - "\u0c7e\u0007\u000b\u0000\u0000\u0c7e\u0c7f\u0007\n\u0000\u0000\u0c7f\u0c80"+ - "\u0007\f\u0000\u0000\u0c80\u0202\u0001\u0000\u0000\u0000\u0c81\u0c82\u0007"+ - "\u000f\u0000\u0000\u0c82\u0c83\u0007\u0005\u0000\u0000\u0c83\u0c84\u0007"+ - "\u001a\u0000\u0000\u0c84\u0c85\u0007\u001b\u0000\u0000\u0c85\u0c86\u0007"+ - "\u0005\u0000\u0000\u0c86\u0c87\u0007\u0006\u0000\u0000\u0c87\u0c88\u0007"+ - "\u0016\u0000\u0000\u0c88\u0c89\u0007\n\u0000\u0000\u0c89\u0204\u0001\u0000"+ - "\u0000\u0000\u0c8a\u0c8b\u0007\u000f\u0000\u0000\u0c8b\u0c8c\u0007\n\u0000"+ - "\u0000\u0c8c\u0c8d\u0007\r\u0000\u0000\u0c8d\u0c8e\u0007\u0017\u0000\u0000"+ - "\u0c8e\u0c8f\u0007\n\u0000\u0000\u0c8f\u0206\u0001\u0000\u0000\u0000\u0c90"+ - "\u0c91\u0007\u000f\u0000\u0000\u0c91\u0c92\u0007\u0011\u0000\u0000\u0c92"+ - "\u0c93\u0007\u0007\u0000\u0000\u0c93\u0c94\u0007\u0016\u0000\u0000\u0c94"+ - "\u0c95\u0007\u0010\u0000\u0000\u0c95\u0c96\u0007\n\u0000\u0000\u0c96\u0208"+ - "\u0001\u0000\u0000\u0000\u0c97\u0c98\u0007\u000f\u0000\u0000\u0c98\u0c99"+ - "\u0007\u0011\u0000\u0000\u0c99\u0c9a\u0007\u0007\u0000\u0000\u0c9a\u0c9b"+ - "\u0007\u001b\u0000\u0000\u0c9b\u0c9c\u0007\u0005\u0000\u0000\u0c9c\u0c9d"+ - "\u0007\u0006\u0000\u0000\u0c9d\u0c9e\u0007\u0016\u0000\u0000\u0c9e\u0c9f"+ - "\u0007\n\u0000\u0000\u0c9f\u020a\u0001\u0000\u0000\u0000\u0ca0\u0ca1\u0007"+ - "\u000f\u0000\u0000\u0ca1\u0ca2\u0007\u0013\u0000\u0000\u0ca2\u0ca3\u0007"+ - "\f\u0000\u0000\u0ca3\u0ca4\u0007\n\u0000\u0000\u0ca4\u020c\u0001\u0000"+ - "\u0000\u0000\u0ca5\u0ca6\u0007\u000f\u0000\u0000\u0ca6\u0ca7\u0007\u0013"+ - "\u0000\u0000\u0ca7\u0ca8\u0007\u0007\u0000\u0000\u0ca8\u0ca9\u0007\u0010"+ - "\u0000\u0000\u0ca9\u0caa\u0007\u0014\u0000\u0000\u0caa\u020e\u0001\u0000"+ - "\u0000\u0000\u0cab\u0cac\u0007\u000f\u0000\u0000\u0cac\u0cad\u0007\u0013"+ - "\u0000\u0000\u0cad\u0cae\u0007\u001b\u0000\u0000\u0cae\u0caf\u0007\n\u0000"+ - "\u0000\u0caf\u0210\u0001\u0000\u0000\u0000\u0cb0\u0cb1\u0007\u0007\u0000"+ - "\u0000\u0cb1\u0cb2\u0007\u0005\u0000\u0000\u0cb2\u0cb3\u0007\u000f\u0000"+ - "\u0000\u0cb3\u0cb4\u0007\n\u0000\u0000\u0cb4\u0212\u0001\u0000\u0000\u0000"+ - "\u0cb5\u0cb6\u0007\u0007\u0000\u0000\u0cb6\u0cb7\u0007\u0005\u0000\u0000"+ - "\u0cb7\u0cb8\u0007\u000f\u0000\u0000\u0cb8\u0cb9\u0007\n\u0000\u0000\u0cb9"+ - "\u0cba\u0007\t\u0000\u0000\u0cba\u0214\u0001\u0000\u0000\u0000\u0cbb\u0cbc"+ - "\u0007\u0007\u0000\u0000\u0cbc\u0cbd\u0007\n\u0000\u0000\u0cbd\u0cbe\u0007"+ - "\u001a\u0000\u0000\u0cbe\u0cbf\u0007\u0010\u0000\u0000\u0cbf\u0216\u0001"+ - "\u0000\u0000\u0000\u0cc0\u0cc1\u0007\u0007\u0000\u0000\u0cc1\u0cc2\u0007"+ - "\u0013\u0000\u0000\u0cc2\u0218\u0001\u0000\u0000\u0000\u0cc3\u0cc4\u0007"+ - "\u0007\u0000\u0000\u0cc4\u0cc5\u0007\u0013\u0000\u0000\u0cc5\u0cc6\u0007"+ - "\u0010\u0000\u0000\u0cc6\u0cc7\u0007\u0014\u0000\u0000\u0cc7\u0cc8\u0007"+ - "\u0011\u0000\u0000\u0cc8\u0cc9\u0007\u0007\u0000\u0000\u0cc9\u0cca\u0007"+ - "\u0017\u0000\u0000\u0cca\u021a\u0001\u0000\u0000\u0000\u0ccb\u0ccc\u0007"+ - "\u0007\u0000\u0000\u0ccc\u0ccd\u0007\u0013\u0000\u0000\u0ccd\u0cce\u0007"+ - "\u0010\u0000\u0000\u0cce\u0ccf\u0007\u0011\u0000\u0000\u0ccf\u0cd0\u0007"+ - "\u0019\u0000\u0000\u0cd0\u0cd1\u0007\b\u0000\u0000\u0cd1\u021c\u0001\u0000"+ - "\u0000\u0000\u0cd2\u0cd3\u0007\u0007\u0000\u0000\u0cd3\u0cd4\u0007\u0013"+ - "\u0000\u0000\u0cd4\u0cd5\u0007\u001d\u0000\u0000\u0cd5\u0cd6\u0007\u0005"+ - "\u0000\u0000\u0cd6\u0cd7\u0007\u0011\u0000\u0000\u0cd7\u0cd8\u0007\u0010"+ - "\u0000\u0000\u0cd8\u021e\u0001\u0000\u0000\u0000\u0cd9\u0cda\u0007\u0007"+ - "\u0000\u0000\u0cda\u0cdb\u0007\u0016\u0000\u0000\u0cdb\u0cdc\u0007\u0006"+ - "\u0000\u0000\u0cdc\u0cdd\u0007\u0006\u0000\u0000\u0cdd\u0cde\u0007\t\u0000"+ - "\u0000\u0cde\u0220\u0001\u0000\u0000\u0000\u0cdf\u0ce0\u0007\u0013\u0000"+ - "\u0000\u0ce0\u0ce1\u0007\u0012\u0000\u0000\u0ce1\u0ce2\u0007\u001e\u0000"+ - "\u0000\u0ce2\u0ce3\u0007\n\u0000\u0000\u0ce3\u0ce4\u0007\u000e\u0000\u0000"+ - "\u0ce4\u0ce5\u0007\u0010\u0000\u0000\u0ce5\u0222\u0001\u0000\u0000\u0000"+ - "\u0ce6\u0ce7\u0007\u0013\u0000\u0000\u0ce7\u0ce8\u0007\u0019\u0000\u0000"+ - "\u0ce8\u0224\u0001\u0000\u0000\u0000\u0ce9\u0cea\u0007\u0013\u0000\u0000"+ - "\u0cea\u0ceb\u0007\u0019\u0000\u0000\u0ceb\u0cec\u0007\u0019\u0000\u0000"+ - "\u0cec\u0226\u0001\u0000\u0000\u0000\u0ced\u0cee\u0007\u0013\u0000\u0000"+ - "\u0cee\u0cef\u0007\u0011\u0000\u0000\u0cef\u0cf0\u0007\f\u0000\u0000\u0cf0"+ - "\u0cf1\u0007\t\u0000\u0000\u0cf1\u0228\u0001\u0000\u0000\u0000\u0cf2\u0cf3"+ - "\u0007\u0013\u0000\u0000\u0cf3\u0cf4\u0007\u0018\u0000\u0000\u0cf4\u0cf5"+ - "\u0007\n\u0000\u0000\u0cf5\u0cf6\u0007\r\u0000\u0000\u0cf6\u0cf7\u0007"+ - "\u0005\u0000\u0000\u0cf7\u0cf8\u0007\u0010\u0000\u0000\u0cf8\u0cf9\u0007"+ - "\u0013\u0000\u0000\u0cf9\u0cfa\u0007\r\u0000\u0000\u0cfa\u022a\u0001\u0000"+ - "\u0000\u0000\u0cfb\u0cfc\u0007\u0013\u0000\u0000\u0cfc\u0cfd\u0007\u0018"+ - "\u0000\u0000\u0cfd\u0cfe\u0007\u0010\u0000\u0000\u0cfe\u0cff\u0007\u0011"+ - "\u0000\u0000\u0cff\u0d00\u0007\u0013\u0000\u0000\u0d00\u0d01\u0007\u0007"+ - "\u0000\u0000\u0d01\u022c\u0001\u0000\u0000\u0000\u0d02\u0d03\u0007\u0013"+ - "\u0000\u0000\u0d03\u0d04\u0007\u0018\u0000\u0000\u0d04\u0d05\u0007\u0010"+ - "\u0000\u0000\u0d05\u0d06\u0007\u0011\u0000\u0000\u0d06\u0d07\u0007\u0013"+ - "\u0000\u0000\u0d07\u0d08\u0007\u0007\u0000\u0000\u0d08\u0d09\u0007\t\u0000"+ - "\u0000\u0d09\u022e\u0001\u0000\u0000\u0000\u0d0a\u0d0b\u0007\u0013\u0000"+ - "\u0000\u0d0b\u0d0c\u0007\u001d\u0000\u0000\u0d0c\u0d0d\u0007\u0007\u0000"+ - "\u0000\u0d0d\u0d0e\u0007\n\u0000\u0000\u0d0e\u0d0f\u0007\f\u0000\u0000"+ - "\u0d0f\u0230\u0001\u0000\u0000\u0000\u0d10\u0d11\u0007\u0013\u0000\u0000"+ - "\u0d11\u0d12\u0007\u001d\u0000\u0000\u0d12\u0d13\u0007\u0007\u0000\u0000"+ - "\u0d13\u0d14\u0007\n\u0000\u0000\u0d14\u0d15\u0007\r\u0000\u0000\u0d15"+ - "\u0232\u0001\u0000\u0000\u0000\u0d16\u0d17\u0007\u0018\u0000\u0000\u0d17"+ - "\u0d18\u0007\u0005\u0000\u0000\u0d18\u0d19\u0007\r\u0000\u0000\u0d19\u0d1a"+ - "\u0007\t\u0000\u0000\u0d1a\u0d1b\u0007\n\u0000\u0000\u0d1b\u0d1c\u0007"+ - "\r\u0000\u0000\u0d1c\u0234\u0001\u0000\u0000\u0000\u0d1d\u0d1e\u0007\u0018"+ - "\u0000\u0000\u0d1e\u0d1f\u0007\u0005\u0000\u0000\u0d1f\u0d20\u0007\r\u0000"+ - "\u0000\u0d20\u0d21\u0007\u0010\u0000\u0000\u0d21\u0d22\u0007\u0011\u0000"+ - "\u0000\u0d22\u0d23\u0007\u0005\u0000\u0000\u0d23\u0d24\u0007\u0006\u0000"+ - "\u0000\u0d24\u0236\u0001\u0000\u0000\u0000\u0d25\u0d26\u0007\u0018\u0000"+ - "\u0000\u0d26\u0d27\u0007\u0005\u0000\u0000\u0d27\u0d28\u0007\r\u0000\u0000"+ - "\u0d28\u0d29\u0007\u0010\u0000\u0000\u0d29\u0d2a\u0007\u0011\u0000\u0000"+ - "\u0d2a\u0d2b\u0007\u0010\u0000\u0000\u0d2b\u0d2c\u0007\u0011\u0000\u0000"+ - "\u0d2c\u0d2d\u0007\u0013\u0000\u0000\u0d2d\u0d2e\u0007\u0007\u0000\u0000"+ - "\u0d2e\u0238\u0001\u0000\u0000\u0000\u0d2f\u0d30\u0007\u0018\u0000\u0000"+ - "\u0d30\u0d31\u0007\u0005\u0000\u0000\u0d31\u0d32\u0007\t\u0000\u0000\u0d32"+ - "\u0d33\u0007\t\u0000\u0000\u0d33\u0d34\u0007\u0011\u0000\u0000\u0d34\u0d35"+ - "\u0007\u0007\u0000\u0000\u0d35\u0d36\u0007\u0017\u0000\u0000\u0d36\u023a"+ - "\u0001\u0000\u0000\u0000\u0d37\u0d38\u0007\u0018\u0000\u0000\u0d38\u0d39"+ - "\u0007\u0005\u0000\u0000\u0d39\u0d3a\u0007\t\u0000\u0000\u0d3a\u0d3b\u0007"+ - "\t\u0000\u0000\u0d3b\u0d3c\u0007\u001d\u0000\u0000\u0d3c\u0d3d\u0007\u0013"+ - "\u0000\u0000\u0d3d\u0d3e\u0007\r\u0000\u0000\u0d3e\u0d3f\u0007\f\u0000"+ - "\u0000\u0d3f\u023c\u0001\u0000\u0000\u0000\u0d40\u0d41\u0007\u0018\u0000"+ - "\u0000\u0d41\u0d42\u0007\u0006\u0000\u0000\u0d42\u0d43\u0007\u0005\u0000"+ - "\u0000\u0d43\u0d44\u0007\u0007\u0000\u0000\u0d44\u0d45\u0007\t\u0000\u0000"+ - "\u0d45\u023e\u0001\u0000\u0000\u0000\u0d46\u0d47\u0007\u0018\u0000\u0000"+ - "\u0d47\u0d48\u0007\r\u0000\u0000\u0d48\u0d49\u0007\n\u0000\u0000\u0d49"+ - "\u0d4a\u0007\u000e\u0000\u0000\u0d4a\u0d4b\u0007\n\u0000\u0000\u0d4b\u0d4c"+ - "\u0007\f\u0000\u0000\u0d4c\u0d4d\u0007\u0011\u0000\u0000\u0d4d\u0d4e\u0007"+ - "\u0007\u0000\u0000\u0d4e\u0d4f\u0007\u0017\u0000\u0000\u0d4f\u0240\u0001"+ - "\u0000\u0000\u0000\u0d50\u0d51\u0007\u0018\u0000\u0000\u0d51\u0d52\u0007"+ - "\r\u0000\u0000\u0d52\u0d53\u0007\n\u0000\u0000\u0d53\u0d54\u0007\u0018"+ - "\u0000\u0000\u0d54\u0d55\u0007\u0005\u0000\u0000\u0d55\u0d56\u0007\r\u0000"+ - "\u0000\u0d56\u0d57\u0007\n\u0000\u0000\u0d57\u0242\u0001\u0000\u0000\u0000"+ - "\u0d58\u0d59\u0007\u0018\u0000\u0000\u0d59\u0d5a\u0007\r\u0000\u0000\u0d5a"+ - "\u0d5b\u0007\n\u0000\u0000\u0d5b\u0d5c\u0007\u0018\u0000\u0000\u0d5c\u0d5d"+ - "\u0007\u0005\u0000\u0000\u0d5d\u0d5e\u0007\r\u0000\u0000\u0d5e\u0d5f\u0007"+ - "\n\u0000\u0000\u0d5f\u0d60\u0007\f\u0000\u0000\u0d60\u0244\u0001\u0000"+ - "\u0000\u0000\u0d61\u0d62\u0007\u0018\u0000\u0000\u0d62\u0d63\u0007\r\u0000"+ - "\u0000\u0d63\u0d64\u0007\n\u0000\u0000\u0d64\u0d65\u0007\t\u0000\u0000"+ - "\u0d65\u0d66\u0007\n\u0000\u0000\u0d66\u0d67\u0007\r\u0000\u0000\u0d67"+ - "\u0d68\u0007\u001b\u0000\u0000\u0d68\u0d69\u0007\n\u0000\u0000\u0d69\u0246"+ - "\u0001\u0000\u0000\u0000\u0d6a\u0d6b\u0007\u0018\u0000\u0000\u0d6b\u0d6c"+ - "\u0007\r\u0000\u0000\u0d6c\u0d6d\u0007\u0011\u0000\u0000\u0d6d\u0d6e\u0007"+ - "\u0013\u0000\u0000\u0d6e\u0d6f\u0007\r\u0000\u0000\u0d6f\u0248\u0001\u0000"+ - "\u0000\u0000\u0d70\u0d71\u0007\u0018\u0000\u0000\u0d71\u0d72\u0007\r\u0000"+ - "\u0000\u0d72\u0d73\u0007\u0011\u0000\u0000\u0d73\u0d74\u0007\u001b\u0000"+ - "\u0000\u0d74\u0d75\u0007\u0011\u0000\u0000\u0d75\u0d76\u0007\u0006\u0000"+ - "\u0000\u0d76\u0d77\u0007\n\u0000\u0000\u0d77\u0d78\u0007\u0017\u0000\u0000"+ - "\u0d78\u0d79\u0007\n\u0000\u0000\u0d79\u0d7a\u0007\t\u0000\u0000\u0d7a"+ - "\u024a\u0001\u0000\u0000\u0000\u0d7b\u0d7c\u0007\u0018\u0000\u0000\u0d7c"+ - "\u0d7d\u0007\r\u0000\u0000\u0d7d\u0d7e\u0007\u0013\u0000\u0000\u0d7e\u0d7f"+ - "\u0007\u000e\u0000\u0000\u0d7f\u0d80\u0007\n\u0000\u0000\u0d80\u0d81\u0007"+ - "\f\u0000\u0000\u0d81\u0d82\u0007\u0016\u0000\u0000\u0d82\u0d83\u0007\r"+ - "\u0000\u0000\u0d83\u0d84\u0007\u0005\u0000\u0000\u0d84\u0d85\u0007\u0006"+ - "\u0000\u0000\u0d85\u024c\u0001\u0000\u0000\u0000\u0d86\u0d87\u0007\u0018"+ - "\u0000\u0000\u0d87\u0d88\u0007\r\u0000\u0000\u0d88\u0d89\u0007\u0013\u0000"+ - "\u0000\u0d89\u0d8a\u0007\u000e\u0000\u0000\u0d8a\u0d8b\u0007\n\u0000\u0000"+ - "\u0d8b\u0d8c\u0007\f\u0000\u0000\u0d8c\u0d8d\u0007\u0016\u0000\u0000\u0d8d"+ - "\u0d8e\u0007\r\u0000\u0000\u0d8e\u0d8f\u0007\n\u0000\u0000\u0d8f\u024e"+ - "\u0001\u0000\u0000\u0000\u0d90\u0d91\u0007\u0018\u0000\u0000\u0d91\u0d92"+ - "\u0007\r\u0000\u0000\u0d92\u0d93\u0007\u0013\u0000\u0000\u0d93\u0d94\u0007"+ - "\u0017\u0000\u0000\u0d94\u0d95\u0007\r\u0000\u0000\u0d95\u0d96\u0007\u0005"+ - "\u0000\u0000\u0d96\u0d97\u0007\u000f\u0000\u0000\u0d97\u0250\u0001\u0000"+ - "\u0000\u0000\u0d98\u0d99\u0007\u001c\u0000\u0000\u0d99\u0d9a\u0007\u0016"+ - "\u0000\u0000\u0d9a\u0d9b\u0007\u0013\u0000\u0000\u0d9b\u0d9c\u0007\u0010"+ - "\u0000\u0000\u0d9c\u0d9d\u0007\n\u0000\u0000\u0d9d\u0252\u0001\u0000\u0000"+ - "\u0000\u0d9e\u0d9f\u0007\r\u0000\u0000\u0d9f\u0da0\u0007\u0005\u0000\u0000"+ - "\u0da0\u0da1\u0007\u0007\u0000\u0000\u0da1\u0da2\u0007\u0017\u0000\u0000"+ - "\u0da2\u0da3\u0007\n\u0000\u0000\u0da3\u0254\u0001\u0000\u0000\u0000\u0da4"+ - "\u0da5\u0007\r\u0000\u0000\u0da5\u0da6\u0007\n\u0000\u0000\u0da6\u0da7"+ - "\u0007\u0005\u0000\u0000\u0da7\u0da8\u0007\f\u0000\u0000\u0da8\u0256\u0001"+ - "\u0000\u0000\u0000\u0da9\u0daa\u0007\r\u0000\u0000\u0daa\u0dab\u0007\n"+ - "\u0000\u0000\u0dab\u0dac\u0007\u0005\u0000\u0000\u0dac\u0dad\u0007\t\u0000"+ - "\u0000\u0dad\u0dae\u0007\t\u0000\u0000\u0dae\u0daf\u0007\u0011\u0000\u0000"+ - "\u0daf\u0db0\u0007\u0017\u0000\u0000\u0db0\u0db1\u0007\u0007\u0000\u0000"+ - "\u0db1\u0258\u0001\u0000\u0000\u0000\u0db2\u0db3\u0007\r\u0000\u0000\u0db3"+ - "\u0db4\u0007\n\u0000\u0000\u0db4\u0db5\u0007\u000e\u0000\u0000\u0db5\u0db6"+ - "\u0007\u0014\u0000\u0000\u0db6\u0db7\u0007\n\u0000\u0000\u0db7\u0db8\u0007"+ - "\u000e\u0000\u0000\u0db8\u0db9\u0007\u0015\u0000\u0000\u0db9\u025a\u0001"+ + "\u0007\n\u0000\u0000\u0a72\u0a73\u0007\u0010\u0000\u0000\u0a73\u0a74\u0007"+ + "\n\u0000\u0000\u0a74\u017c\u0001\u0000\u0000\u0000\u0a75\u0a76\u0007\f"+ + "\u0000\u0000\u0a76\u0a77\u0007\n\u0000\u0000\u0a77\u0a78\u0007\u0006\u0000"+ + "\u0000\u0a78\u0a79\u0007\u0011\u0000\u0000\u0a79\u0a7a\u0007\u000f\u0000"+ + "\u0000\u0a7a\u0a7b\u0007\u0011\u0000\u0000\u0a7b\u0a7c\u0007\u0010\u0000"+ + "\u0000\u0a7c\u0a7d\u0007\n\u0000\u0000\u0a7d\u0a7e\u0007\r\u0000\u0000"+ + "\u0a7e\u017e\u0001\u0000\u0000\u0000\u0a7f\u0a80\u0007\f\u0000\u0000\u0a80"+ + "\u0a81\u0007\n\u0000\u0000\u0a81\u0a82\u0007\u0006\u0000\u0000\u0a82\u0a83"+ + "\u0007\u0011\u0000\u0000\u0a83\u0a84\u0007\u000f\u0000\u0000\u0a84\u0a85"+ + "\u0007\u0011\u0000\u0000\u0a85\u0a86\u0007\u0010\u0000\u0000\u0a86\u0a87"+ + "\u0007\n\u0000\u0000\u0a87\u0a88\u0007\r\u0000\u0000\u0a88\u0a89\u0007"+ + "\t\u0000\u0000\u0a89\u0180\u0001\u0000\u0000\u0000\u0a8a\u0a8b\u0007\f"+ + "\u0000\u0000\u0a8b\u0a8c\u0007\u0011\u0000\u0000\u0a8c\u0a8d\u0007\u000e"+ + "\u0000\u0000\u0a8d\u0a8e\u0007\u0010\u0000\u0000\u0a8e\u0a8f\u0007\u0011"+ + "\u0000\u0000\u0a8f\u0a90\u0007\u0013\u0000\u0000\u0a90\u0a91\u0007\u0007"+ + "\u0000\u0000\u0a91\u0a92\u0007\u0005\u0000\u0000\u0a92\u0a93\u0007\r\u0000"+ + "\u0000\u0a93\u0a94\u0007\b\u0000\u0000\u0a94\u0182\u0001\u0000\u0000\u0000"+ + "\u0a95\u0a96\u0007\f\u0000\u0000\u0a96\u0a97\u0007\u0011\u0000\u0000\u0a97"+ + "\u0a98\u0007\t\u0000\u0000\u0a98\u0a99\u0007\u0005\u0000\u0000\u0a99\u0a9a"+ + "\u0007\u0012\u0000\u0000\u0a9a\u0a9b\u0007\u0006\u0000\u0000\u0a9b\u0a9c"+ + "\u0007\n\u0000\u0000\u0a9c\u0184\u0001\u0000\u0000\u0000\u0a9d\u0a9e\u0007"+ + "\f\u0000\u0000\u0a9e\u0a9f\u0007\u0011\u0000\u0000\u0a9f\u0aa0\u0007\t"+ + "\u0000\u0000\u0aa0\u0aa1\u0007\u000e\u0000\u0000\u0aa1\u0aa2\u0007\u0005"+ + "\u0000\u0000\u0aa2\u0aa3\u0007\r\u0000\u0000\u0aa3\u0aa4\u0007\f\u0000"+ + "\u0000\u0aa4\u0186\u0001\u0000\u0000\u0000\u0aa5\u0aa6\u0007\f\u0000\u0000"+ + "\u0aa6\u0aa7\u0007\u0013\u0000\u0000\u0aa7\u0aa8\u0007\u000e\u0000\u0000"+ + "\u0aa8\u0aa9\u0007\u0016\u0000\u0000\u0aa9\u0aaa\u0007\u000f\u0000\u0000"+ + "\u0aaa\u0aab\u0007\n\u0000\u0000\u0aab\u0aac\u0007\u0007\u0000\u0000\u0aac"+ + "\u0aad\u0007\u0010\u0000\u0000\u0aad\u0188\u0001\u0000\u0000\u0000\u0aae"+ + "\u0aaf\u0007\f\u0000\u0000\u0aaf\u0ab0\u0007\u0013\u0000\u0000\u0ab0\u0ab1"+ + "\u0007\u000f\u0000\u0000\u0ab1\u0ab2\u0007\u0005\u0000\u0000\u0ab2\u0ab3"+ + "\u0007\u0011\u0000\u0000\u0ab3\u0ab4\u0007\u0007\u0000\u0000\u0ab4\u018a"+ + "\u0001\u0000\u0000\u0000\u0ab5\u0ab6\u0007\f\u0000\u0000\u0ab6\u0ab7\u0007"+ + "\u0013\u0000\u0000\u0ab7\u0ab8\u0007\u0016\u0000\u0000\u0ab8\u0ab9\u0007"+ + "\u0012\u0000\u0000\u0ab9\u0aba\u0007\u0006\u0000\u0000\u0aba\u0abb\u0007"+ + "\n\u0000\u0000\u0abb\u018c\u0001\u0000\u0000\u0000\u0abc\u0abd\u0007\f"+ + "\u0000\u0000\u0abd\u0abe\u0007\r\u0000\u0000\u0abe\u0abf\u0007\u0013\u0000"+ + "\u0000\u0abf\u0ac0\u0007\u0018\u0000\u0000\u0ac0\u018e\u0001\u0000\u0000"+ + "\u0000\u0ac1\u0ac2\u0007\n\u0000\u0000\u0ac2\u0ac3\u0007\u0005\u0000\u0000"+ + "\u0ac3\u0ac4\u0007\u000e\u0000\u0000\u0ac4\u0ac5\u0007\u0014\u0000\u0000"+ + "\u0ac5\u0190\u0001\u0000\u0000\u0000\u0ac6\u0ac7\u0007\n\u0000\u0000\u0ac7"+ + "\u0ac8\u0007\u0007\u0000\u0000\u0ac8\u0ac9\u0007\u0005\u0000\u0000\u0ac9"+ + "\u0aca\u0007\u0012\u0000\u0000\u0aca\u0acb\u0007\u0006\u0000\u0000\u0acb"+ + "\u0acc\u0007\n\u0000\u0000\u0acc\u0192\u0001\u0000\u0000\u0000\u0acd\u0ace"+ + "\u0007\n\u0000\u0000\u0ace\u0acf\u0007\u0007\u0000\u0000\u0acf\u0ad0\u0007"+ + "\u000e\u0000\u0000\u0ad0\u0ad1\u0007\u0013\u0000\u0000\u0ad1\u0ad2\u0007"+ + "\f\u0000\u0000\u0ad2\u0ad3\u0007\u0011\u0000\u0000\u0ad3\u0ad4\u0007\u0007"+ + "\u0000\u0000\u0ad4\u0ad5\u0007\u0017\u0000\u0000\u0ad5\u0194\u0001\u0000"+ + "\u0000\u0000\u0ad6\u0ad7\u0007\n\u0000\u0000\u0ad7\u0ad8\u0007\u0007\u0000"+ + "\u0000\u0ad8\u0ad9\u0007\u000e\u0000\u0000\u0ad9\u0ada\u0007\r\u0000\u0000"+ + "\u0ada\u0adb\u0007\b\u0000\u0000\u0adb\u0adc\u0007\u0018\u0000\u0000\u0adc"+ + "\u0add\u0007\u0010\u0000\u0000\u0add\u0ade\u0007\n\u0000\u0000\u0ade\u0adf"+ + "\u0007\f\u0000\u0000\u0adf\u0196\u0001\u0000\u0000\u0000\u0ae0\u0ae1\u0007"+ + "\n\u0000\u0000\u0ae1\u0ae2\u0007\u0007\u0000\u0000\u0ae2\u0ae3\u0007\u0016"+ + "\u0000\u0000\u0ae3\u0ae4\u0007\u000f\u0000\u0000\u0ae4\u0198\u0001\u0000"+ + "\u0000\u0000\u0ae5\u0ae6\u0007\n\u0000\u0000\u0ae6\u0ae7\u0007\t\u0000"+ + "\u0000\u0ae7\u0ae8\u0007\u000e\u0000\u0000\u0ae8\u0ae9\u0007\u0005\u0000"+ + "\u0000\u0ae9\u0aea\u0007\u0018\u0000\u0000\u0aea\u0aeb\u0007\n\u0000\u0000"+ + "\u0aeb\u019a\u0001\u0000\u0000\u0000\u0aec\u0aed\u0007\n\u0000\u0000\u0aed"+ + "\u0aee\u0007\u001b\u0000\u0000\u0aee\u0aef\u0007\n\u0000\u0000\u0aef\u0af0"+ + "\u0007\u0007\u0000\u0000\u0af0\u0af1\u0007\u0010\u0000\u0000\u0af1\u019c"+ + "\u0001\u0000\u0000\u0000\u0af2\u0af3\u0007\n\u0000\u0000\u0af3\u0af4\u0007"+ + "\u001a\u0000\u0000\u0af4\u0af5\u0007\u000e\u0000\u0000\u0af5\u0af6\u0007"+ + "\u0006\u0000\u0000\u0af6\u0af7\u0007\u0016\u0000\u0000\u0af7\u0af8\u0007"+ + "\f\u0000\u0000\u0af8\u0af9\u0007\n\u0000\u0000\u0af9\u019e\u0001\u0000"+ + "\u0000\u0000\u0afa\u0afb\u0007\n\u0000\u0000\u0afb\u0afc\u0007\u001a\u0000"+ + "\u0000\u0afc\u0afd\u0007\u000e\u0000\u0000\u0afd\u0afe\u0007\u0006\u0000"+ + "\u0000\u0afe\u0aff\u0007\u0016\u0000\u0000\u0aff\u0b00\u0007\f\u0000\u0000"+ + "\u0b00\u0b01\u0007\u0011\u0000\u0000\u0b01\u0b02\u0007\u0007\u0000\u0000"+ + "\u0b02\u0b03\u0007\u0017\u0000\u0000\u0b03\u01a0\u0001\u0000\u0000\u0000"+ + "\u0b04\u0b05\u0007\n\u0000\u0000\u0b05\u0b06\u0007\u001a\u0000\u0000\u0b06"+ + "\u0b07\u0007\u000e\u0000\u0000\u0b07\u0b08\u0007\u0006\u0000\u0000\u0b08"+ + "\u0b09\u0007\u0016\u0000\u0000\u0b09\u0b0a\u0007\t\u0000\u0000\u0b0a\u0b0b"+ + "\u0007\u0011\u0000\u0000\u0b0b\u0b0c\u0007\u001b\u0000\u0000\u0b0c\u0b0d"+ + "\u0007\n\u0000\u0000\u0b0d\u01a2\u0001\u0000\u0000\u0000\u0b0e\u0b0f\u0007"+ + "\n\u0000\u0000\u0b0f\u0b10\u0007\u001a\u0000\u0000\u0b10\u0b11\u0007\n"+ + "\u0000\u0000\u0b11\u0b12\u0007\u000e\u0000\u0000\u0b12\u0b13\u0007\u0016"+ + "\u0000\u0000\u0b13\u0b14\u0007\u0010\u0000\u0000\u0b14\u0b15\u0007\n\u0000"+ + "\u0000\u0b15\u01a4\u0001\u0000\u0000\u0000\u0b16\u0b17\u0007\n\u0000\u0000"+ + "\u0b17\u0b18\u0007\u001a\u0000\u0000\u0b18\u0b19\u0007\u0018\u0000\u0000"+ + "\u0b19\u0b1a\u0007\u0006\u0000\u0000\u0b1a\u0b1b\u0007\u0005\u0000\u0000"+ + "\u0b1b\u0b1c\u0007\u0011\u0000\u0000\u0b1c\u0b1d\u0007\u0007\u0000\u0000"+ + "\u0b1d\u01a6\u0001\u0000\u0000\u0000\u0b1e\u0b1f\u0007\n\u0000\u0000\u0b1f"+ + "\u0b20\u0007\u001a\u0000\u0000\u0b20\u0b21\u0007\u0010\u0000\u0000\u0b21"+ + "\u0b22\u0007\n\u0000\u0000\u0b22\u0b23\u0007\u0007\u0000\u0000\u0b23\u0b24"+ + "\u0007\t\u0000\u0000\u0b24\u0b25\u0007\u0011\u0000\u0000\u0b25\u0b26\u0007"+ + "\u0013\u0000\u0000\u0b26\u0b27\u0007\u0007\u0000\u0000\u0b27\u01a8\u0001"+ + "\u0000\u0000\u0000\u0b28\u0b29\u0007\n\u0000\u0000\u0b29\u0b2a\u0007\u001a"+ + "\u0000\u0000\u0b2a\u0b2b\u0007\u0010\u0000\u0000\u0b2b\u0b2c\u0007\n\u0000"+ + "\u0000\u0b2c\u0b2d\u0007\r\u0000\u0000\u0b2d\u0b2e\u0007\u0007\u0000\u0000"+ + "\u0b2e\u0b2f\u0007\u0005\u0000\u0000\u0b2f\u0b30\u0007\u0006\u0000\u0000"+ + "\u0b30\u01aa\u0001\u0000\u0000\u0000\u0b31\u0b32\u0007\u0019\u0000\u0000"+ + "\u0b32\u0b33\u0007\u0005\u0000\u0000\u0b33\u0b34\u0007\u000f\u0000\u0000"+ + "\u0b34\u0b35\u0007\u0011\u0000\u0000\u0b35\u0b36\u0007\u0006\u0000\u0000"+ + "\u0b36\u0b37\u0007\b\u0000\u0000\u0b37\u01ac\u0001\u0000\u0000\u0000\u0b38"+ + "\u0b39\u0007\u0019\u0000\u0000\u0b39\u0b3a\u0007\u0011\u0000\u0000\u0b3a"+ + "\u0b3b\u0007\r\u0000\u0000\u0b3b\u0b3c\u0007\t\u0000\u0000\u0b3c\u0b3d"+ + "\u0007\u0010\u0000\u0000\u0b3d\u01ae\u0001\u0000\u0000\u0000\u0b3e\u0b3f"+ + "\u0007\u0019\u0000\u0000\u0b3f\u0b40\u0007\u0013\u0000\u0000\u0b40\u0b41"+ + "\u0007\u0006\u0000\u0000\u0b41\u0b42\u0007\u0006\u0000\u0000\u0b42\u0b43"+ + "\u0007\u0013\u0000\u0000\u0b43\u0b44\u0007\u001d\u0000\u0000\u0b44\u0b45"+ + "\u0007\u0011\u0000\u0000\u0b45\u0b46\u0007\u0007\u0000\u0000\u0b46\u0b47"+ + "\u0007\u0017\u0000\u0000\u0b47\u01b0\u0001\u0000\u0000\u0000\u0b48\u0b49"+ + "\u0007\u0019\u0000\u0000\u0b49\u0b4a\u0007\u0013\u0000\u0000\u0b4a\u0b4b"+ + "\u0007\r\u0000\u0000\u0b4b\u0b4c\u0007\u000e\u0000\u0000\u0b4c\u0b4d\u0007"+ + "\n\u0000\u0000\u0b4d\u01b2\u0001\u0000\u0000\u0000\u0b4e\u0b4f\u0007\u0019"+ + "\u0000\u0000\u0b4f\u0b50\u0007\u0013\u0000\u0000\u0b50\u0b51\u0007\r\u0000"+ + "\u0000\u0b51\u0b52\u0007\u001d\u0000\u0000\u0b52\u0b53\u0007\u0005\u0000"+ + "\u0000\u0b53\u0b54\u0007\r\u0000\u0000\u0b54\u0b55\u0007\f\u0000\u0000"+ + "\u0b55\u01b4\u0001\u0000\u0000\u0000\u0b56\u0b57\u0007\u0019\u0000\u0000"+ + "\u0b57\u0b58\u0007\u0016\u0000\u0000\u0b58\u0b59\u0007\u0007\u0000\u0000"+ + "\u0b59\u0b5a\u0007\u000e\u0000\u0000\u0b5a\u0b5b\u0007\u0010\u0000\u0000"+ + "\u0b5b\u0b5c\u0007\u0011\u0000\u0000\u0b5c\u0b5d\u0007\u0013\u0000\u0000"+ + "\u0b5d\u0b5e\u0007\u0007\u0000\u0000\u0b5e\u01b6\u0001\u0000\u0000\u0000"+ + "\u0b5f\u0b60\u0007\u0019\u0000\u0000\u0b60\u0b61\u0007\u0016\u0000\u0000"+ + "\u0b61\u0b62\u0007\u0007\u0000\u0000\u0b62\u0b63\u0007\u000e\u0000\u0000"+ + "\u0b63\u0b64\u0007\u0010\u0000\u0000\u0b64\u0b65\u0007\u0011\u0000\u0000"+ + "\u0b65\u0b66\u0007\u0013\u0000\u0000\u0b66\u0b67\u0007\u0007\u0000\u0000"+ + "\u0b67\u0b68\u0007\t\u0000\u0000\u0b68\u01b8\u0001\u0000\u0000\u0000\u0b69"+ + "\u0b6a\u0007\u0017\u0000\u0000\u0b6a\u0b6b\u0007\u0006\u0000\u0000\u0b6b"+ + "\u0b6c\u0007\u0013\u0000\u0000\u0b6c\u0b6d\u0007\u0012\u0000\u0000\u0b6d"+ + "\u0b6e\u0007\u0005\u0000\u0000\u0b6e\u0b6f\u0007\u0006\u0000\u0000\u0b6f"+ + "\u01ba\u0001\u0000\u0000\u0000\u0b70\u0b71\u0007\u0017\u0000\u0000\u0b71"+ + "\u0b72\u0007\r\u0000\u0000\u0b72\u0b73\u0007\u0005\u0000\u0000\u0b73\u0b74"+ + "\u0007\u0007\u0000\u0000\u0b74\u0b75\u0007\u0010\u0000\u0000\u0b75\u0b76"+ + "\u0007\n\u0000\u0000\u0b76\u0b77\u0007\f\u0000\u0000\u0b77\u01bc\u0001"+ + "\u0000\u0000\u0000\u0b78\u0b79\u0007\u0014\u0000\u0000\u0b79\u0b7a\u0007"+ + "\u0005\u0000\u0000\u0b7a\u0b7b\u0007\u0007\u0000\u0000\u0b7b\u0b7c\u0007"+ + "\f\u0000\u0000\u0b7c\u0b7d\u0007\u0006\u0000\u0000\u0b7d\u0b7e\u0007\n"+ + "\u0000\u0000\u0b7e\u0b7f\u0007\r\u0000\u0000\u0b7f\u01be\u0001\u0000\u0000"+ + "\u0000\u0b80\u0b81\u0007\u0014\u0000\u0000\u0b81\u0b82\u0007\n\u0000\u0000"+ + "\u0b82\u0b83\u0007\u0005\u0000\u0000\u0b83\u0b84\u0007\f\u0000\u0000\u0b84"+ + "\u0b85\u0007\n\u0000\u0000\u0b85\u0b86\u0007\r\u0000\u0000\u0b86\u01c0"+ + "\u0001\u0000\u0000\u0000\u0b87\u0b88\u0007\u0014\u0000\u0000\u0b88\u0b89"+ + "\u0007\u0013\u0000\u0000\u0b89\u0b8a\u0007\u0006\u0000\u0000\u0b8a\u0b8b"+ + "\u0007\f\u0000\u0000\u0b8b\u01c2\u0001\u0000\u0000\u0000\u0b8c\u0b8d\u0007"+ + "\u0014\u0000\u0000\u0b8d\u0b8e\u0007\u0013\u0000\u0000\u0b8e\u0b8f\u0007"+ + "\u0016\u0000\u0000\u0b8f\u0b90\u0007\r\u0000\u0000\u0b90\u01c4\u0001\u0000"+ + "\u0000\u0000\u0b91\u0b92\u0007\u0011\u0000\u0000\u0b92\u0b93\u0007\f\u0000"+ + "\u0000\u0b93\u0b94\u0007\n\u0000\u0000\u0b94\u0b95\u0007\u0007\u0000\u0000"+ + "\u0b95\u0b96\u0007\u0010\u0000\u0000\u0b96\u0b97\u0007\u0011\u0000\u0000"+ + "\u0b97\u0b98\u0007\u0010\u0000\u0000\u0b98\u0b99\u0007\b\u0000\u0000\u0b99"+ + "\u01c6\u0001\u0000\u0000\u0000\u0b9a\u0b9b\u0007\u0011\u0000\u0000\u0b9b"+ + "\u0b9c\u0007\u0019\u0000\u0000\u0b9c\u01c8\u0001\u0000\u0000\u0000\u0b9d"+ + "\u0b9e\u0007\u0011\u0000\u0000\u0b9e\u0b9f\u0007\u000f\u0000\u0000\u0b9f"+ + "\u0ba0\u0007\u000f\u0000\u0000\u0ba0\u0ba1\u0007\n\u0000\u0000\u0ba1\u0ba2"+ + "\u0007\f\u0000\u0000\u0ba2\u0ba3\u0007\u0011\u0000\u0000\u0ba3\u0ba4\u0007"+ + "\u0005\u0000\u0000\u0ba4\u0ba5\u0007\u0010\u0000\u0000\u0ba5\u0ba6\u0007"+ + "\n\u0000\u0000\u0ba6\u01ca\u0001\u0000\u0000\u0000\u0ba7\u0ba8\u0007\u0011"+ + "\u0000\u0000\u0ba8\u0ba9\u0007\u000f\u0000\u0000\u0ba9\u0baa\u0007\u000f"+ + "\u0000\u0000\u0baa\u0bab\u0007\u0016\u0000\u0000\u0bab\u0bac\u0007\u0010"+ + "\u0000\u0000\u0bac\u0bad\u0007\u0005\u0000\u0000\u0bad\u0bae\u0007\u0012"+ + "\u0000\u0000\u0bae\u0baf\u0007\u0006\u0000\u0000\u0baf\u0bb0\u0007\n\u0000"+ + "\u0000\u0bb0\u01cc\u0001\u0000\u0000\u0000\u0bb1\u0bb2\u0007\u0011\u0000"+ + "\u0000\u0bb2\u0bb3\u0007\u000f\u0000\u0000\u0bb3\u0bb4\u0007\u0018\u0000"+ + "\u0000\u0bb4\u0bb5\u0007\u0006\u0000\u0000\u0bb5\u0bb6\u0007\u0011\u0000"+ + "\u0000\u0bb6\u0bb7\u0007\u000e\u0000\u0000\u0bb7\u0bb8\u0007\u0011\u0000"+ + "\u0000\u0bb8\u0bb9\u0007\u0010\u0000\u0000\u0bb9\u01ce\u0001\u0000\u0000"+ + "\u0000\u0bba\u0bbb\u0007\u0011\u0000\u0000\u0bbb\u0bbc\u0007\u0007\u0000"+ + "\u0000\u0bbc\u0bbd\u0007\u000e\u0000\u0000\u0bbd\u0bbe\u0007\u0006\u0000"+ + "\u0000\u0bbe\u0bbf\u0007\u0016\u0000\u0000\u0bbf\u0bc0\u0007\f\u0000\u0000"+ + "\u0bc0\u0bc1\u0007\u0011\u0000\u0000\u0bc1\u0bc2\u0007\u0007\u0000\u0000"+ + "\u0bc2\u0bc3\u0007\u0017\u0000\u0000\u0bc3\u01d0\u0001\u0000\u0000\u0000"+ + "\u0bc4\u0bc5\u0007\u0011\u0000\u0000\u0bc5\u0bc6\u0007\u0007\u0000\u0000"+ + "\u0bc6\u0bc7\u0007\u000e\u0000\u0000\u0bc7\u0bc8\u0007\r\u0000\u0000\u0bc8"+ + "\u0bc9\u0007\n\u0000\u0000\u0bc9\u0bca\u0007\u000f\u0000\u0000\u0bca\u0bcb"+ + "\u0007\n\u0000\u0000\u0bcb\u0bcc\u0007\u0007\u0000\u0000\u0bcc\u0bcd\u0007"+ + "\u0010\u0000\u0000\u0bcd\u01d2\u0001\u0000\u0000\u0000\u0bce\u0bcf\u0007"+ + "\u0011\u0000\u0000\u0bcf\u0bd0\u0007\u0007\u0000\u0000\u0bd0\u0bd1\u0007"+ + "\f\u0000\u0000\u0bd1\u0bd2\u0007\n\u0000\u0000\u0bd2\u0bd3\u0007\u001a"+ + "\u0000\u0000\u0bd3\u01d4\u0001\u0000\u0000\u0000\u0bd4\u0bd5\u0007\u0011"+ + "\u0000\u0000\u0bd5\u0bd6\u0007\u0007\u0000\u0000\u0bd6\u0bd7\u0007\f\u0000"+ + "\u0000\u0bd7\u0bd8\u0007\n\u0000\u0000\u0bd8\u0bd9\u0007\u001a\u0000\u0000"+ + "\u0bd9\u0bda\u0007\n\u0000\u0000\u0bda\u0bdb\u0007\t\u0000\u0000\u0bdb"+ + "\u01d6\u0001\u0000\u0000\u0000\u0bdc\u0bdd\u0007\u0011\u0000\u0000\u0bdd"+ + "\u0bde\u0007\u0007\u0000\u0000\u0bde\u0bdf\u0007\u0014\u0000\u0000\u0bdf"+ + "\u0be0\u0007\n\u0000\u0000\u0be0\u0be1\u0007\r\u0000\u0000\u0be1\u0be2"+ + "\u0007\u0011\u0000\u0000\u0be2\u0be3\u0007\u0010\u0000\u0000\u0be3\u01d8"+ + "\u0001\u0000\u0000\u0000\u0be4\u0be5\u0007\u0011\u0000\u0000\u0be5\u0be6"+ + "\u0007\u0007\u0000\u0000\u0be6\u0be7\u0007\u0014\u0000\u0000\u0be7\u0be8"+ + "\u0007\n\u0000\u0000\u0be8\u0be9\u0007\r\u0000\u0000\u0be9\u0bea\u0007"+ + "\u0011\u0000\u0000\u0bea\u0beb\u0007\u0010\u0000\u0000\u0beb\u0bec\u0007"+ + "\t\u0000\u0000\u0bec\u01da\u0001\u0000\u0000\u0000\u0bed\u0bee\u0007\u0011"+ + "\u0000\u0000\u0bee\u0bef\u0007\u0007\u0000\u0000\u0bef\u0bf0\u0007\u0006"+ + "\u0000\u0000\u0bf0\u0bf1\u0007\u0011\u0000\u0000\u0bf1\u0bf2\u0007\u0007"+ + "\u0000\u0000\u0bf2\u0bf3\u0007\n\u0000\u0000\u0bf3\u01dc\u0001\u0000\u0000"+ + "\u0000\u0bf4\u0bf5\u0007\u0011\u0000\u0000\u0bf5\u0bf6\u0007\u0007\u0000"+ + "\u0000\u0bf6\u0bf7\u0007\t\u0000\u0000\u0bf7\u0bf8\u0007\n\u0000\u0000"+ + "\u0bf8\u0bf9\u0007\u0007\u0000\u0000\u0bf9\u0bfa\u0007\t\u0000\u0000\u0bfa"+ + "\u0bfb\u0007\u0011\u0000\u0000\u0bfb\u0bfc\u0007\u0010\u0000\u0000\u0bfc"+ + "\u0bfd\u0007\u0011\u0000\u0000\u0bfd\u0bfe\u0007\u001b\u0000\u0000\u0bfe"+ + "\u0bff\u0007\n\u0000\u0000\u0bff\u01de\u0001\u0000\u0000\u0000\u0c00\u0c01"+ + "\u0007\u0011\u0000\u0000\u0c01\u0c02\u0007\u0007\u0000\u0000\u0c02\u0c03"+ + "\u0007\t\u0000\u0000\u0c03\u0c04\u0007\n\u0000\u0000\u0c04\u0c05\u0007"+ + "\r\u0000\u0000\u0c05\u0c06\u0007\u0010\u0000\u0000\u0c06\u01e0\u0001\u0000"+ + "\u0000\u0000\u0c07\u0c08\u0007\u0011\u0000\u0000\u0c08\u0c09\u0007\u0007"+ + "\u0000\u0000\u0c09\u0c0a\u0007\t\u0000\u0000\u0c0a\u0c0b\u0007\u0010\u0000"+ + "\u0000\u0c0b\u0c0c\u0007\n\u0000\u0000\u0c0c\u0c0d\u0007\u0005\u0000\u0000"+ + "\u0c0d\u0c0e\u0007\f\u0000\u0000\u0c0e\u01e2\u0001\u0000\u0000\u0000\u0c0f"+ + "\u0c10\u0007\u0011\u0000\u0000\u0c10\u0c11\u0007\u0007\u0000\u0000\u0c11"+ + "\u0c12\u0007\u001b\u0000\u0000\u0c12\u0c13\u0007\u0013\u0000\u0000\u0c13"+ + "\u0c14\u0007\u0015\u0000\u0000\u0c14\u0c15\u0007\n\u0000\u0000\u0c15\u0c16"+ + "\u0007\r\u0000\u0000\u0c16\u01e4\u0001\u0000\u0000\u0000\u0c17\u0c18\u0007"+ + "\u0011\u0000\u0000\u0c18\u0c19\u0007\t\u0000\u0000\u0c19\u0c1a\u0007\u0013"+ + "\u0000\u0000\u0c1a\u0c1b\u0007\u0006\u0000\u0000\u0c1b\u0c1c\u0007\u0005"+ + "\u0000\u0000\u0c1c\u0c1d\u0007\u0010\u0000\u0000\u0c1d\u0c1e\u0007\u0011"+ + "\u0000\u0000\u0c1e\u0c1f\u0007\u0013\u0000\u0000\u0c1f\u0c20\u0007\u0007"+ + "\u0000\u0000\u0c20\u01e6\u0001\u0000\u0000\u0000\u0c21\u0c22\u0007\u0015"+ + "\u0000\u0000\u0c22\u0c23\u0007\n\u0000\u0000\u0c23\u0c24\u0007\b\u0000"+ + "\u0000\u0c24\u01e8\u0001\u0000\u0000\u0000\u0c25\u0c26\u0007\u0006\u0000"+ + "\u0000\u0c26\u0c27\u0007\u0005\u0000\u0000\u0c27\u0c28\u0007\u0012\u0000"+ + "\u0000\u0c28\u0c29\u0007\n\u0000\u0000\u0c29\u0c2a\u0007\u0006\u0000\u0000"+ + "\u0c2a\u01ea\u0001\u0000\u0000\u0000\u0c2b\u0c2c\u0007\u0006\u0000\u0000"+ + "\u0c2c\u0c2d\u0007\u0005\u0000\u0000\u0c2d\u0c2e\u0007\u0007\u0000\u0000"+ + "\u0c2e\u0c2f\u0007\u0017\u0000\u0000\u0c2f\u0c30\u0007\u0016\u0000\u0000"+ + "\u0c30\u0c31\u0007\u0005\u0000\u0000\u0c31\u0c32\u0007\u0017\u0000\u0000"+ + "\u0c32\u0c33\u0007\n\u0000\u0000\u0c33\u01ec\u0001\u0000\u0000\u0000\u0c34"+ + "\u0c35\u0007\u0006\u0000\u0000\u0c35\u0c36\u0007\u0005\u0000\u0000\u0c36"+ + "\u0c37\u0007\r\u0000\u0000\u0c37\u0c38\u0007\u0017\u0000\u0000\u0c38\u0c39"+ + "\u0007\n\u0000\u0000\u0c39\u01ee\u0001\u0000\u0000\u0000\u0c3a\u0c3b\u0007"+ + "\u0006\u0000\u0000\u0c3b\u0c3c\u0007\u0005\u0000\u0000\u0c3c\u0c3d\u0007"+ + "\t\u0000\u0000\u0c3d\u0c3e\u0007\u0010\u0000\u0000\u0c3e\u01f0\u0001\u0000"+ + "\u0000\u0000\u0c3f\u0c40\u0007\u0006\u0000\u0000\u0c40\u0c41\u0007\n\u0000"+ + "\u0000\u0c41\u0c42\u0007\u0005\u0000\u0000\u0c42\u0c43\u0007\u0015\u0000"+ + "\u0000\u0c43\u0c44\u0007\u0018\u0000\u0000\u0c44\u0c45\u0007\r\u0000\u0000"+ + "\u0c45\u0c46\u0007\u0013\u0000\u0000\u0c46\u0c47\u0007\u0013\u0000\u0000"+ + "\u0c47\u0c48\u0007\u0019\u0000\u0000\u0c48\u01f2\u0001\u0000\u0000\u0000"+ + "\u0c49\u0c4a\u0007\u0006\u0000\u0000\u0c4a\u0c4b\u0007\n\u0000\u0000\u0c4b"+ + "\u0c4c\u0007\u001b\u0000\u0000\u0c4c\u0c4d\u0007\n\u0000\u0000\u0c4d\u0c4e"+ + "\u0007\u0006\u0000\u0000\u0c4e\u01f4\u0001\u0000\u0000\u0000\u0c4f\u0c50"+ + "\u0007\u0006\u0000\u0000\u0c50\u0c51\u0007\u0011\u0000\u0000\u0c51\u0c52"+ + "\u0007\t\u0000\u0000\u0c52\u0c53\u0007\u0010\u0000\u0000\u0c53\u0c54\u0007"+ + "\n\u0000\u0000\u0c54\u0c55\u0007\u0007\u0000\u0000\u0c55\u01f6\u0001\u0000"+ + "\u0000\u0000\u0c56\u0c57\u0007\u0006\u0000\u0000\u0c57\u0c58\u0007\u0013"+ + "\u0000\u0000\u0c58\u0c59\u0007\u0005\u0000\u0000\u0c59\u0c5a\u0007\f\u0000"+ + "\u0000\u0c5a\u01f8\u0001\u0000\u0000\u0000\u0c5b\u0c5c\u0007\u0006\u0000"+ + "\u0000\u0c5c\u0c5d\u0007\u0013\u0000\u0000\u0c5d\u0c5e\u0007\u000e\u0000"+ + "\u0000\u0c5e\u0c5f\u0007\u0005\u0000\u0000\u0c5f\u0c60\u0007\u0006\u0000"+ + "\u0000\u0c60\u01fa\u0001\u0000\u0000\u0000\u0c61\u0c62\u0007\u0006\u0000"+ + "\u0000\u0c62\u0c63\u0007\u0013\u0000\u0000\u0c63\u0c64\u0007\u000e\u0000"+ + "\u0000\u0c64\u0c65\u0007\u0005\u0000\u0000\u0c65\u0c66\u0007\u0010\u0000"+ + "\u0000\u0c66\u0c67\u0007\u0011\u0000\u0000\u0c67\u0c68\u0007\u0013\u0000"+ + "\u0000\u0c68\u0c69\u0007\u0007\u0000\u0000\u0c69\u01fc\u0001\u0000\u0000"+ + "\u0000\u0c6a\u0c6b\u0007\u0006\u0000\u0000\u0c6b\u0c6c\u0007\u0013\u0000"+ + "\u0000\u0c6c\u0c6d\u0007\u000e\u0000\u0000\u0c6d\u0c6e\u0007\u0015\u0000"+ + "\u0000\u0c6e\u01fe\u0001\u0000\u0000\u0000\u0c6f\u0c70\u0007\u000f\u0000"+ + "\u0000\u0c70\u0c71\u0007\u0005\u0000\u0000\u0c71\u0c72\u0007\u0018\u0000"+ + "\u0000\u0c72\u0c73\u0007\u0018\u0000\u0000\u0c73\u0c74\u0007\u0011\u0000"+ + "\u0000\u0c74\u0c75\u0007\u0007\u0000\u0000\u0c75\u0c76\u0007\u0017\u0000"+ + "\u0000\u0c76\u0200\u0001\u0000\u0000\u0000\u0c77\u0c78\u0007\u000f\u0000"+ + "\u0000\u0c78\u0c79\u0007\u0005\u0000\u0000\u0c79\u0c7a\u0007\u0010\u0000"+ + "\u0000\u0c7a\u0c7b\u0007\u000e\u0000\u0000\u0c7b\u0c7c\u0007\u0014\u0000"+ + "\u0000\u0c7c\u0202\u0001\u0000\u0000\u0000\u0c7d\u0c7e\u0007\u000f\u0000"+ + "\u0000\u0c7e\u0c7f\u0007\u0005\u0000\u0000\u0c7f\u0c80\u0007\u0010\u0000"+ + "\u0000\u0c80\u0c81\u0007\u000e\u0000\u0000\u0c81\u0c82\u0007\u0014\u0000"+ + "\u0000\u0c82\u0c83\u0007\n\u0000\u0000\u0c83\u0c84\u0007\f\u0000\u0000"+ + "\u0c84\u0204\u0001\u0000\u0000\u0000\u0c85\u0c86\u0007\u000f\u0000\u0000"+ + "\u0c86\u0c87\u0007\u0005\u0000\u0000\u0c87\u0c88\u0007\u0010\u0000\u0000"+ + "\u0c88\u0c89\u0007\n\u0000\u0000\u0c89\u0c8a\u0007\r\u0000\u0000\u0c8a"+ + "\u0c8b\u0007\u0011\u0000\u0000\u0c8b\u0c8c\u0007\u0005\u0000\u0000\u0c8c"+ + "\u0c8d\u0007\u0006\u0000\u0000\u0c8d\u0c8e\u0007\u0011\u0000\u0000\u0c8e"+ + "\u0c8f\u0007\u000b\u0000\u0000\u0c8f\u0c90\u0007\n\u0000\u0000\u0c90\u0c91"+ + "\u0007\f\u0000\u0000\u0c91\u0206\u0001\u0000\u0000\u0000\u0c92\u0c93\u0007"+ + "\u000f\u0000\u0000\u0c93\u0c94\u0007\u0005\u0000\u0000\u0c94\u0c95\u0007"+ + "\u001a\u0000\u0000\u0c95\u0c96\u0007\u001b\u0000\u0000\u0c96\u0c97\u0007"+ + "\u0005\u0000\u0000\u0c97\u0c98\u0007\u0006\u0000\u0000\u0c98\u0c99\u0007"+ + "\u0016\u0000\u0000\u0c99\u0c9a\u0007\n\u0000\u0000\u0c9a\u0208\u0001\u0000"+ + "\u0000\u0000\u0c9b\u0c9c\u0007\u000f\u0000\u0000\u0c9c\u0c9d\u0007\n\u0000"+ + "\u0000\u0c9d\u0c9e\u0007\r\u0000\u0000\u0c9e\u0c9f\u0007\u0017\u0000\u0000"+ + "\u0c9f\u0ca0\u0007\n\u0000\u0000\u0ca0\u020a\u0001\u0000\u0000\u0000\u0ca1"+ + "\u0ca2\u0007\u000f\u0000\u0000\u0ca2\u0ca3\u0007\u0011\u0000\u0000\u0ca3"+ + "\u0ca4\u0007\u0007\u0000\u0000\u0ca4\u0ca5\u0007\u0016\u0000\u0000\u0ca5"+ + "\u0ca6\u0007\u0010\u0000\u0000\u0ca6\u0ca7\u0007\n\u0000\u0000\u0ca7\u020c"+ + "\u0001\u0000\u0000\u0000\u0ca8\u0ca9\u0007\u000f\u0000\u0000\u0ca9\u0caa"+ + "\u0007\u0011\u0000\u0000\u0caa\u0cab\u0007\u0007\u0000\u0000\u0cab\u0cac"+ + "\u0007\u001b\u0000\u0000\u0cac\u0cad\u0007\u0005\u0000\u0000\u0cad\u0cae"+ + "\u0007\u0006\u0000\u0000\u0cae\u0caf\u0007\u0016\u0000\u0000\u0caf\u0cb0"+ + "\u0007\n\u0000\u0000\u0cb0\u020e\u0001\u0000\u0000\u0000\u0cb1\u0cb2\u0007"+ + "\u000f\u0000\u0000\u0cb2\u0cb3\u0007\u0013\u0000\u0000\u0cb3\u0cb4\u0007"+ + "\f\u0000\u0000\u0cb4\u0cb5\u0007\n\u0000\u0000\u0cb5\u0210\u0001\u0000"+ + "\u0000\u0000\u0cb6\u0cb7\u0007\u000f\u0000\u0000\u0cb7\u0cb8\u0007\u0013"+ + "\u0000\u0000\u0cb8\u0cb9\u0007\u0007\u0000\u0000\u0cb9\u0cba\u0007\u0010"+ + "\u0000\u0000\u0cba\u0cbb\u0007\u0014\u0000\u0000\u0cbb\u0212\u0001\u0000"+ + "\u0000\u0000\u0cbc\u0cbd\u0007\u000f\u0000\u0000\u0cbd\u0cbe\u0007\u0013"+ + "\u0000\u0000\u0cbe\u0cbf\u0007\u001b\u0000\u0000\u0cbf\u0cc0\u0007\n\u0000"+ + "\u0000\u0cc0\u0214\u0001\u0000\u0000\u0000\u0cc1\u0cc2\u0007\u0007\u0000"+ + "\u0000\u0cc2\u0cc3\u0007\u0005\u0000\u0000\u0cc3\u0cc4\u0007\u000f\u0000"+ + "\u0000\u0cc4\u0cc5\u0007\n\u0000\u0000\u0cc5\u0216\u0001\u0000\u0000\u0000"+ + "\u0cc6\u0cc7\u0007\u0007\u0000\u0000\u0cc7\u0cc8\u0007\u0005\u0000\u0000"+ + "\u0cc8\u0cc9\u0007\u000f\u0000\u0000\u0cc9\u0cca\u0007\n\u0000\u0000\u0cca"+ + "\u0ccb\u0007\t\u0000\u0000\u0ccb\u0218\u0001\u0000\u0000\u0000\u0ccc\u0ccd"+ + "\u0007\u0007\u0000\u0000\u0ccd\u0cce\u0007\n\u0000\u0000\u0cce\u0ccf\u0007"+ + "\u001a\u0000\u0000\u0ccf\u0cd0\u0007\u0010\u0000\u0000\u0cd0\u021a\u0001"+ + "\u0000\u0000\u0000\u0cd1\u0cd2\u0007\u0007\u0000\u0000\u0cd2\u0cd3\u0007"+ + "\u0013\u0000\u0000\u0cd3\u021c\u0001\u0000\u0000\u0000\u0cd4\u0cd5\u0007"+ + "\u0007\u0000\u0000\u0cd5\u0cd6\u0007\u0013\u0000\u0000\u0cd6\u0cd7\u0007"+ + "\u0010\u0000\u0000\u0cd7\u0cd8\u0007\u0014\u0000\u0000\u0cd8\u0cd9\u0007"+ + "\u0011\u0000\u0000\u0cd9\u0cda\u0007\u0007\u0000\u0000\u0cda\u0cdb\u0007"+ + "\u0017\u0000\u0000\u0cdb\u021e\u0001\u0000\u0000\u0000\u0cdc\u0cdd\u0007"+ + "\u0007\u0000\u0000\u0cdd\u0cde\u0007\u0013\u0000\u0000\u0cde\u0cdf\u0007"+ + "\u0010\u0000\u0000\u0cdf\u0ce0\u0007\u0011\u0000\u0000\u0ce0\u0ce1\u0007"+ + "\u0019\u0000\u0000\u0ce1\u0ce2\u0007\b\u0000\u0000\u0ce2\u0220\u0001\u0000"+ + "\u0000\u0000\u0ce3\u0ce4\u0007\u0007\u0000\u0000\u0ce4\u0ce5\u0007\u0013"+ + "\u0000\u0000\u0ce5\u0ce6\u0007\u001d\u0000\u0000\u0ce6\u0ce7\u0007\u0005"+ + "\u0000\u0000\u0ce7\u0ce8\u0007\u0011\u0000\u0000\u0ce8\u0ce9\u0007\u0010"+ + "\u0000\u0000\u0ce9\u0222\u0001\u0000\u0000\u0000\u0cea\u0ceb\u0007\u0007"+ + "\u0000\u0000\u0ceb\u0cec\u0007\u0016\u0000\u0000\u0cec\u0ced\u0007\u0006"+ + "\u0000\u0000\u0ced\u0cee\u0007\u0006\u0000\u0000\u0cee\u0cef\u0007\t\u0000"+ + "\u0000\u0cef\u0224\u0001\u0000\u0000\u0000\u0cf0\u0cf1\u0007\u0013\u0000"+ + "\u0000\u0cf1\u0cf2\u0007\u0012\u0000\u0000\u0cf2\u0cf3\u0007\u001e\u0000"+ + "\u0000\u0cf3\u0cf4\u0007\n\u0000\u0000\u0cf4\u0cf5\u0007\u000e\u0000\u0000"+ + "\u0cf5\u0cf6\u0007\u0010\u0000\u0000\u0cf6\u0226\u0001\u0000\u0000\u0000"+ + "\u0cf7\u0cf8\u0007\u0013\u0000\u0000\u0cf8\u0cf9\u0007\u0019\u0000\u0000"+ + "\u0cf9\u0228\u0001\u0000\u0000\u0000\u0cfa\u0cfb\u0007\u0013\u0000\u0000"+ + "\u0cfb\u0cfc\u0007\u0019\u0000\u0000\u0cfc\u0cfd\u0007\u0019\u0000\u0000"+ + "\u0cfd\u022a\u0001\u0000\u0000\u0000\u0cfe\u0cff\u0007\u0013\u0000\u0000"+ + "\u0cff\u0d00\u0007\u0011\u0000\u0000\u0d00\u0d01\u0007\f\u0000\u0000\u0d01"+ + "\u0d02\u0007\t\u0000\u0000\u0d02\u022c\u0001\u0000\u0000\u0000\u0d03\u0d04"+ + "\u0007\u0013\u0000\u0000\u0d04\u0d05\u0007\u0018\u0000\u0000\u0d05\u0d06"+ + "\u0007\n\u0000\u0000\u0d06\u0d07\u0007\r\u0000\u0000\u0d07\u0d08\u0007"+ + "\u0005\u0000\u0000\u0d08\u0d09\u0007\u0010\u0000\u0000\u0d09\u0d0a\u0007"+ + "\u0013\u0000\u0000\u0d0a\u0d0b\u0007\r\u0000\u0000\u0d0b\u022e\u0001\u0000"+ + "\u0000\u0000\u0d0c\u0d0d\u0007\u0013\u0000\u0000\u0d0d\u0d0e\u0007\u0018"+ + "\u0000\u0000\u0d0e\u0d0f\u0007\u0010\u0000\u0000\u0d0f\u0d10\u0007\u0011"+ + "\u0000\u0000\u0d10\u0d11\u0007\u0013\u0000\u0000\u0d11\u0d12\u0007\u0007"+ + "\u0000\u0000\u0d12\u0230\u0001\u0000\u0000\u0000\u0d13\u0d14\u0007\u0013"+ + "\u0000\u0000\u0d14\u0d15\u0007\u0018\u0000\u0000\u0d15\u0d16\u0007\u0010"+ + "\u0000\u0000\u0d16\u0d17\u0007\u0011\u0000\u0000\u0d17\u0d18\u0007\u0013"+ + "\u0000\u0000\u0d18\u0d19\u0007\u0007\u0000\u0000\u0d19\u0d1a\u0007\t\u0000"+ + "\u0000\u0d1a\u0232\u0001\u0000\u0000\u0000\u0d1b\u0d1c\u0007\u0013\u0000"+ + "\u0000\u0d1c\u0d1d\u0007\u001d\u0000\u0000\u0d1d\u0d1e\u0007\u0007\u0000"+ + "\u0000\u0d1e\u0d1f\u0007\n\u0000\u0000\u0d1f\u0d20\u0007\f\u0000\u0000"+ + "\u0d20\u0234\u0001\u0000\u0000\u0000\u0d21\u0d22\u0007\u0013\u0000\u0000"+ + "\u0d22\u0d23\u0007\u001d\u0000\u0000\u0d23\u0d24\u0007\u0007\u0000\u0000"+ + "\u0d24\u0d25\u0007\n\u0000\u0000\u0d25\u0d26\u0007\r\u0000\u0000\u0d26"+ + "\u0236\u0001\u0000\u0000\u0000\u0d27\u0d28\u0007\u0018\u0000\u0000\u0d28"+ + "\u0d29\u0007\u0005\u0000\u0000\u0d29\u0d2a\u0007\r\u0000\u0000\u0d2a\u0d2b"+ + "\u0007\t\u0000\u0000\u0d2b\u0d2c\u0007\n\u0000\u0000\u0d2c\u0d2d\u0007"+ + "\r\u0000\u0000\u0d2d\u0238\u0001\u0000\u0000\u0000\u0d2e\u0d2f\u0007\u0018"+ + "\u0000\u0000\u0d2f\u0d30\u0007\u0005\u0000\u0000\u0d30\u0d31\u0007\r\u0000"+ + "\u0000\u0d31\u0d32\u0007\u0010\u0000\u0000\u0d32\u0d33\u0007\u0011\u0000"+ + "\u0000\u0d33\u0d34\u0007\u0005\u0000\u0000\u0d34\u0d35\u0007\u0006\u0000"+ + "\u0000\u0d35\u023a\u0001\u0000\u0000\u0000\u0d36\u0d37\u0007\u0018\u0000"+ + "\u0000\u0d37\u0d38\u0007\u0005\u0000\u0000\u0d38\u0d39\u0007\r\u0000\u0000"+ + "\u0d39\u0d3a\u0007\u0010\u0000\u0000\u0d3a\u0d3b\u0007\u0011\u0000\u0000"+ + "\u0d3b\u0d3c\u0007\u0010\u0000\u0000\u0d3c\u0d3d\u0007\u0011\u0000\u0000"+ + "\u0d3d\u0d3e\u0007\u0013\u0000\u0000\u0d3e\u0d3f\u0007\u0007\u0000\u0000"+ + "\u0d3f\u023c\u0001\u0000\u0000\u0000\u0d40\u0d41\u0007\u0018\u0000\u0000"+ + "\u0d41\u0d42\u0007\u0005\u0000\u0000\u0d42\u0d43\u0007\t\u0000\u0000\u0d43"+ + "\u0d44\u0007\t\u0000\u0000\u0d44\u0d45\u0007\u0011\u0000\u0000\u0d45\u0d46"+ + "\u0007\u0007\u0000\u0000\u0d46\u0d47\u0007\u0017\u0000\u0000\u0d47\u023e"+ + "\u0001\u0000\u0000\u0000\u0d48\u0d49\u0007\u0018\u0000\u0000\u0d49\u0d4a"+ + "\u0007\u0005\u0000\u0000\u0d4a\u0d4b\u0007\t\u0000\u0000\u0d4b\u0d4c\u0007"+ + "\t\u0000\u0000\u0d4c\u0d4d\u0007\u001d\u0000\u0000\u0d4d\u0d4e\u0007\u0013"+ + "\u0000\u0000\u0d4e\u0d4f\u0007\r\u0000\u0000\u0d4f\u0d50\u0007\f\u0000"+ + "\u0000\u0d50\u0240\u0001\u0000\u0000\u0000\u0d51\u0d52\u0007\u0018\u0000"+ + "\u0000\u0d52\u0d53\u0007\u0006\u0000\u0000\u0d53\u0d54\u0007\u0005\u0000"+ + "\u0000\u0d54\u0d55\u0007\u0007\u0000\u0000\u0d55\u0d56\u0007\t\u0000\u0000"+ + "\u0d56\u0242\u0001\u0000\u0000\u0000\u0d57\u0d58\u0007\u0018\u0000\u0000"+ + "\u0d58\u0d59\u0007\r\u0000\u0000\u0d59\u0d5a\u0007\n\u0000\u0000\u0d5a"+ + "\u0d5b\u0007\u000e\u0000\u0000\u0d5b\u0d5c\u0007\n\u0000\u0000\u0d5c\u0d5d"+ + "\u0007\f\u0000\u0000\u0d5d\u0d5e\u0007\u0011\u0000\u0000\u0d5e\u0d5f\u0007"+ + "\u0007\u0000\u0000\u0d5f\u0d60\u0007\u0017\u0000\u0000\u0d60\u0244\u0001"+ + "\u0000\u0000\u0000\u0d61\u0d62\u0007\u0018\u0000\u0000\u0d62\u0d63\u0007"+ + "\r\u0000\u0000\u0d63\u0d64\u0007\n\u0000\u0000\u0d64\u0d65\u0007\u0018"+ + "\u0000\u0000\u0d65\u0d66\u0007\u0005\u0000\u0000\u0d66\u0d67\u0007\r\u0000"+ + "\u0000\u0d67\u0d68\u0007\n\u0000\u0000\u0d68\u0246\u0001\u0000\u0000\u0000"+ + "\u0d69\u0d6a\u0007\u0018\u0000\u0000\u0d6a\u0d6b\u0007\r\u0000\u0000\u0d6b"+ + "\u0d6c\u0007\n\u0000\u0000\u0d6c\u0d6d\u0007\u0018\u0000\u0000\u0d6d\u0d6e"+ + "\u0007\u0005\u0000\u0000\u0d6e\u0d6f\u0007\r\u0000\u0000\u0d6f\u0d70\u0007"+ + "\n\u0000\u0000\u0d70\u0d71\u0007\f\u0000\u0000\u0d71\u0248\u0001\u0000"+ + "\u0000\u0000\u0d72\u0d73\u0007\u0018\u0000\u0000\u0d73\u0d74\u0007\r\u0000"+ + "\u0000\u0d74\u0d75\u0007\n\u0000\u0000\u0d75\u0d76\u0007\t\u0000\u0000"+ + "\u0d76\u0d77\u0007\n\u0000\u0000\u0d77\u0d78\u0007\r\u0000\u0000\u0d78"+ + "\u0d79\u0007\u001b\u0000\u0000\u0d79\u0d7a\u0007\n\u0000\u0000\u0d7a\u024a"+ + "\u0001\u0000\u0000\u0000\u0d7b\u0d7c\u0007\u0018\u0000\u0000\u0d7c\u0d7d"+ + "\u0007\r\u0000\u0000\u0d7d\u0d7e\u0007\u0011\u0000\u0000\u0d7e\u0d7f\u0007"+ + "\u0013\u0000\u0000\u0d7f\u0d80\u0007\r\u0000\u0000\u0d80\u024c\u0001\u0000"+ + "\u0000\u0000\u0d81\u0d82\u0007\u0018\u0000\u0000\u0d82\u0d83\u0007\r\u0000"+ + "\u0000\u0d83\u0d84\u0007\u0011\u0000\u0000\u0d84\u0d85\u0007\u001b\u0000"+ + "\u0000\u0d85\u0d86\u0007\u0011\u0000\u0000\u0d86\u0d87\u0007\u0006\u0000"+ + "\u0000\u0d87\u0d88\u0007\n\u0000\u0000\u0d88\u0d89\u0007\u0017\u0000\u0000"+ + "\u0d89\u0d8a\u0007\n\u0000\u0000\u0d8a\u0d8b\u0007\t\u0000\u0000\u0d8b"+ + "\u024e\u0001\u0000\u0000\u0000\u0d8c\u0d8d\u0007\u0018\u0000\u0000\u0d8d"+ + "\u0d8e\u0007\r\u0000\u0000\u0d8e\u0d8f\u0007\u0013\u0000\u0000\u0d8f\u0d90"+ + "\u0007\u000e\u0000\u0000\u0d90\u0d91\u0007\n\u0000\u0000\u0d91\u0d92\u0007"+ + "\f\u0000\u0000\u0d92\u0d93\u0007\u0016\u0000\u0000\u0d93\u0d94\u0007\r"+ + "\u0000\u0000\u0d94\u0d95\u0007\u0005\u0000\u0000\u0d95\u0d96\u0007\u0006"+ + "\u0000\u0000\u0d96\u0250\u0001\u0000\u0000\u0000\u0d97\u0d98\u0007\u0018"+ + "\u0000\u0000\u0d98\u0d99\u0007\r\u0000\u0000\u0d99\u0d9a\u0007\u0013\u0000"+ + "\u0000\u0d9a\u0d9b\u0007\u000e\u0000\u0000\u0d9b\u0d9c\u0007\n\u0000\u0000"+ + "\u0d9c\u0d9d\u0007\f\u0000\u0000\u0d9d\u0d9e\u0007\u0016\u0000\u0000\u0d9e"+ + "\u0d9f\u0007\r\u0000\u0000\u0d9f\u0da0\u0007\n\u0000\u0000\u0da0\u0252"+ + "\u0001\u0000\u0000\u0000\u0da1\u0da2\u0007\u0018\u0000\u0000\u0da2\u0da3"+ + "\u0007\r\u0000\u0000\u0da3\u0da4\u0007\u0013\u0000\u0000\u0da4\u0da5\u0007"+ + "\u0017\u0000\u0000\u0da5\u0da6\u0007\r\u0000\u0000\u0da6\u0da7\u0007\u0005"+ + "\u0000\u0000\u0da7\u0da8\u0007\u000f\u0000\u0000\u0da8\u0254\u0001\u0000"+ + "\u0000\u0000\u0da9\u0daa\u0007\u001c\u0000\u0000\u0daa\u0dab\u0007\u0016"+ + "\u0000\u0000\u0dab\u0dac\u0007\u0013\u0000\u0000\u0dac\u0dad\u0007\u0010"+ + "\u0000\u0000\u0dad\u0dae\u0007\n\u0000\u0000\u0dae\u0256\u0001\u0000\u0000"+ + "\u0000\u0daf\u0db0\u0007\r\u0000\u0000\u0db0\u0db1\u0007\u0005\u0000\u0000"+ + "\u0db1\u0db2\u0007\u0007\u0000\u0000\u0db2\u0db3\u0007\u0017\u0000\u0000"+ + "\u0db3\u0db4\u0007\n\u0000\u0000\u0db4\u0258\u0001\u0000\u0000\u0000\u0db5"+ + "\u0db6\u0007\r\u0000\u0000\u0db6\u0db7\u0007\n\u0000\u0000\u0db7\u0db8"+ + "\u0007\u0005\u0000\u0000\u0db8\u0db9\u0007\f\u0000\u0000\u0db9\u025a\u0001"+ "\u0000\u0000\u0000\u0dba\u0dbb\u0007\r\u0000\u0000\u0dbb\u0dbc\u0007\n"+ - "\u0000\u0000\u0dbc\u0dbd\u0007\u000e\u0000\u0000\u0dbd\u0dbe\u0007\u0016"+ - "\u0000\u0000\u0dbe\u0dbf\u0007\r\u0000\u0000\u0dbf\u0dc0\u0007\t\u0000"+ - "\u0000\u0dc0\u0dc1\u0007\u0011\u0000\u0000\u0dc1\u0dc2\u0007\u001b\u0000"+ - "\u0000\u0dc2\u0dc3\u0007\n\u0000\u0000\u0dc3\u025c\u0001\u0000\u0000\u0000"+ - "\u0dc4\u0dc5\u0007\r\u0000\u0000\u0dc5\u0dc6\u0007\n\u0000\u0000\u0dc6"+ - "\u0dc7\u0007\u0019\u0000\u0000\u0dc7\u025e\u0001\u0000\u0000\u0000\u0dc8"+ - "\u0dc9\u0007\r\u0000\u0000\u0dc9\u0dca\u0007\n\u0000\u0000\u0dca\u0dcb"+ - "\u0007\u0019\u0000\u0000\u0dcb\u0dcc\u0007\r\u0000\u0000\u0dcc\u0dcd\u0007"+ - "\n\u0000\u0000\u0dcd\u0dce\u0007\t\u0000\u0000\u0dce\u0dcf\u0007\u0014"+ - "\u0000\u0000\u0dcf\u0260\u0001\u0000\u0000\u0000\u0dd0\u0dd1\u0007\r\u0000"+ - "\u0000\u0dd1\u0dd2\u0007\n\u0000\u0000\u0dd2\u0dd3\u0007\u0011\u0000\u0000"+ - "\u0dd3\u0dd4\u0007\u0007\u0000\u0000\u0dd4\u0dd5\u0007\f\u0000\u0000\u0dd5"+ - "\u0dd6\u0007\n\u0000\u0000\u0dd6\u0dd7\u0007\u001a\u0000\u0000\u0dd7\u0262"+ - "\u0001\u0000\u0000\u0000\u0dd8\u0dd9\u0007\r\u0000\u0000\u0dd9\u0dda\u0007"+ - "\n\u0000\u0000\u0dda\u0ddb\u0007\u0006\u0000\u0000\u0ddb\u0ddc\u0007\u0005"+ - "\u0000\u0000\u0ddc\u0ddd\u0007\u0010\u0000\u0000\u0ddd\u0dde\u0007\u0011"+ - "\u0000\u0000\u0dde\u0ddf\u0007\u001b\u0000\u0000\u0ddf\u0de0\u0007\n\u0000"+ - "\u0000\u0de0\u0264\u0001\u0000\u0000\u0000\u0de1\u0de2\u0007\r\u0000\u0000"+ - "\u0de2\u0de3\u0007\n\u0000\u0000\u0de3\u0de4\u0007\u0006\u0000\u0000\u0de4"+ - "\u0de5\u0007\n\u0000\u0000\u0de5\u0de6\u0007\u0005\u0000\u0000\u0de6\u0de7"+ - "\u0007\t\u0000\u0000\u0de7\u0de8\u0007\n\u0000\u0000\u0de8\u0266\u0001"+ - "\u0000\u0000\u0000\u0de9\u0dea\u0007\r\u0000\u0000\u0dea\u0deb\u0007\n"+ - "\u0000\u0000\u0deb\u0dec\u0007\u0007\u0000\u0000\u0dec\u0ded\u0007\u0005"+ - "\u0000\u0000\u0ded\u0dee\u0007\u000f\u0000\u0000\u0dee\u0def\u0007\n\u0000"+ - "\u0000\u0def\u0268\u0001\u0000\u0000\u0000\u0df0\u0df1\u0007\r\u0000\u0000"+ - "\u0df1\u0df2\u0007\n\u0000\u0000\u0df2\u0df3\u0007\u0018\u0000\u0000\u0df3"+ - "\u0df4\u0007\n\u0000\u0000\u0df4\u0df5\u0007\u0005\u0000\u0000\u0df5\u0df6"+ - "\u0007\u0010\u0000\u0000\u0df6\u0df7\u0007\u0005\u0000\u0000\u0df7\u0df8"+ - "\u0007\u0012\u0000\u0000\u0df8\u0df9\u0007\u0006\u0000\u0000\u0df9\u0dfa"+ - "\u0007\n\u0000\u0000\u0dfa\u026a\u0001\u0000\u0000\u0000\u0dfb\u0dfc\u0007"+ - "\r\u0000\u0000\u0dfc\u0dfd\u0007\n\u0000\u0000\u0dfd\u0dfe\u0007\u0018"+ - "\u0000\u0000\u0dfe\u0dff\u0007\u0006\u0000\u0000\u0dff\u0e00\u0007\u0005"+ - "\u0000\u0000\u0e00\u0e01\u0007\u000e\u0000\u0000\u0e01\u0e02\u0007\n\u0000"+ - "\u0000\u0e02\u026c\u0001\u0000\u0000\u0000\u0e03\u0e04\u0007\r\u0000\u0000"+ - "\u0e04\u0e05\u0007\n\u0000\u0000\u0e05\u0e06\u0007\u0018\u0000\u0000\u0e06"+ - "\u0e07\u0007\u0006\u0000\u0000\u0e07\u0e08\u0007\u0011\u0000\u0000\u0e08"+ - "\u0e09\u0007\u000e\u0000\u0000\u0e09\u0e0a\u0007\u0005\u0000\u0000\u0e0a"+ - "\u026e\u0001\u0000\u0000\u0000\u0e0b\u0e0c\u0007\r\u0000\u0000\u0e0c\u0e0d"+ - "\u0007\n\u0000\u0000\u0e0d\u0e0e\u0007\t\u0000\u0000\u0e0e\u0e0f\u0007"+ - "\n\u0000\u0000\u0e0f\u0e10\u0007\u0010\u0000\u0000\u0e10\u0270\u0001\u0000"+ - "\u0000\u0000\u0e11\u0e12\u0007\r\u0000\u0000\u0e12\u0e13\u0007\n\u0000"+ - "\u0000\u0e13\u0e14\u0007\t\u0000\u0000\u0e14\u0e15\u0007\u0010\u0000\u0000"+ - "\u0e15\u0e16\u0007\u0005\u0000\u0000\u0e16\u0e17\u0007\r\u0000\u0000\u0e17"+ - "\u0e18\u0007\u0010\u0000\u0000\u0e18\u0272\u0001\u0000\u0000\u0000\u0e19"+ - "\u0e1a\u0007\r\u0000\u0000\u0e1a\u0e1b\u0007\n\u0000\u0000\u0e1b\u0e1c"+ - "\u0007\t\u0000\u0000\u0e1c\u0e1d\u0007\u0010\u0000\u0000\u0e1d\u0e1e\u0007"+ - "\r\u0000\u0000\u0e1e\u0e1f\u0007\u0011\u0000\u0000\u0e1f\u0e20\u0007\u000e"+ - "\u0000\u0000\u0e20\u0e21\u0007\u0010\u0000\u0000\u0e21\u0274\u0001\u0000"+ + "\u0000\u0000\u0dbc\u0dbd\u0007\u0005\u0000\u0000\u0dbd\u0dbe\u0007\t\u0000"+ + "\u0000\u0dbe\u0dbf\u0007\t\u0000\u0000\u0dbf\u0dc0\u0007\u0011\u0000\u0000"+ + "\u0dc0\u0dc1\u0007\u0017\u0000\u0000\u0dc1\u0dc2\u0007\u0007\u0000\u0000"+ + "\u0dc2\u025c\u0001\u0000\u0000\u0000\u0dc3\u0dc4\u0007\r\u0000\u0000\u0dc4"+ + "\u0dc5\u0007\n\u0000\u0000\u0dc5\u0dc6\u0007\u000e\u0000\u0000\u0dc6\u0dc7"+ + "\u0007\u0014\u0000\u0000\u0dc7\u0dc8\u0007\n\u0000\u0000\u0dc8\u0dc9\u0007"+ + "\u000e\u0000\u0000\u0dc9\u0dca\u0007\u0015\u0000\u0000\u0dca\u025e\u0001"+ + "\u0000\u0000\u0000\u0dcb\u0dcc\u0007\r\u0000\u0000\u0dcc\u0dcd\u0007\n"+ + "\u0000\u0000\u0dcd\u0dce\u0007\u000e\u0000\u0000\u0dce\u0dcf\u0007\u0016"+ + "\u0000\u0000\u0dcf\u0dd0\u0007\r\u0000\u0000\u0dd0\u0dd1\u0007\t\u0000"+ + "\u0000\u0dd1\u0dd2\u0007\u0011\u0000\u0000\u0dd2\u0dd3\u0007\u001b\u0000"+ + "\u0000\u0dd3\u0dd4\u0007\n\u0000\u0000\u0dd4\u0260\u0001\u0000\u0000\u0000"+ + "\u0dd5\u0dd6\u0007\r\u0000\u0000\u0dd6\u0dd7\u0007\n\u0000\u0000\u0dd7"+ + "\u0dd8\u0007\u0019\u0000\u0000\u0dd8\u0262\u0001\u0000\u0000\u0000\u0dd9"+ + "\u0dda\u0007\r\u0000\u0000\u0dda\u0ddb\u0007\n\u0000\u0000\u0ddb\u0ddc"+ + "\u0007\u0019\u0000\u0000\u0ddc\u0ddd\u0007\r\u0000\u0000\u0ddd\u0dde\u0007"+ + "\n\u0000\u0000\u0dde\u0ddf\u0007\t\u0000\u0000\u0ddf\u0de0\u0007\u0014"+ + "\u0000\u0000\u0de0\u0264\u0001\u0000\u0000\u0000\u0de1\u0de2\u0007\r\u0000"+ + "\u0000\u0de2\u0de3\u0007\n\u0000\u0000\u0de3\u0de4\u0007\u0011\u0000\u0000"+ + "\u0de4\u0de5\u0007\u0007\u0000\u0000\u0de5\u0de6\u0007\f\u0000\u0000\u0de6"+ + "\u0de7\u0007\n\u0000\u0000\u0de7\u0de8\u0007\u001a\u0000\u0000\u0de8\u0266"+ + "\u0001\u0000\u0000\u0000\u0de9\u0dea\u0007\r\u0000\u0000\u0dea\u0deb\u0007"+ + "\n\u0000\u0000\u0deb\u0dec\u0007\u0006\u0000\u0000\u0dec\u0ded\u0007\u0005"+ + "\u0000\u0000\u0ded\u0dee\u0007\u0010\u0000\u0000\u0dee\u0def\u0007\u0011"+ + "\u0000\u0000\u0def\u0df0\u0007\u001b\u0000\u0000\u0df0\u0df1\u0007\n\u0000"+ + "\u0000\u0df1\u0268\u0001\u0000\u0000\u0000\u0df2\u0df3\u0007\r\u0000\u0000"+ + "\u0df3\u0df4\u0007\n\u0000\u0000\u0df4\u0df5\u0007\u0006\u0000\u0000\u0df5"+ + "\u0df6\u0007\n\u0000\u0000\u0df6\u0df7\u0007\u0005\u0000\u0000\u0df7\u0df8"+ + "\u0007\t\u0000\u0000\u0df8\u0df9\u0007\n\u0000\u0000\u0df9\u026a\u0001"+ + "\u0000\u0000\u0000\u0dfa\u0dfb\u0007\r\u0000\u0000\u0dfb\u0dfc\u0007\n"+ + "\u0000\u0000\u0dfc\u0dfd\u0007\u0007\u0000\u0000\u0dfd\u0dfe\u0007\u0005"+ + "\u0000\u0000\u0dfe\u0dff\u0007\u000f\u0000\u0000\u0dff\u0e00\u0007\n\u0000"+ + "\u0000\u0e00\u026c\u0001\u0000\u0000\u0000\u0e01\u0e02\u0007\r\u0000\u0000"+ + "\u0e02\u0e03\u0007\n\u0000\u0000\u0e03\u0e04\u0007\u0018\u0000\u0000\u0e04"+ + "\u0e05\u0007\n\u0000\u0000\u0e05\u0e06\u0007\u0005\u0000\u0000\u0e06\u0e07"+ + "\u0007\u0010\u0000\u0000\u0e07\u0e08\u0007\u0005\u0000\u0000\u0e08\u0e09"+ + "\u0007\u0012\u0000\u0000\u0e09\u0e0a\u0007\u0006\u0000\u0000\u0e0a\u0e0b"+ + "\u0007\n\u0000\u0000\u0e0b\u026e\u0001\u0000\u0000\u0000\u0e0c\u0e0d\u0007"+ + "\r\u0000\u0000\u0e0d\u0e0e\u0007\n\u0000\u0000\u0e0e\u0e0f\u0007\u0018"+ + "\u0000\u0000\u0e0f\u0e10\u0007\u0006\u0000\u0000\u0e10\u0e11\u0007\u0005"+ + "\u0000\u0000\u0e11\u0e12\u0007\u000e\u0000\u0000\u0e12\u0e13\u0007\n\u0000"+ + "\u0000\u0e13\u0270\u0001\u0000\u0000\u0000\u0e14\u0e15\u0007\r\u0000\u0000"+ + "\u0e15\u0e16\u0007\n\u0000\u0000\u0e16\u0e17\u0007\u0018\u0000\u0000\u0e17"+ + "\u0e18\u0007\u0006\u0000\u0000\u0e18\u0e19\u0007\u0011\u0000\u0000\u0e19"+ + "\u0e1a\u0007\u000e\u0000\u0000\u0e1a\u0e1b\u0007\u0005\u0000\u0000\u0e1b"+ + "\u0272\u0001\u0000\u0000\u0000\u0e1c\u0e1d\u0007\r\u0000\u0000\u0e1d\u0e1e"+ + "\u0007\n\u0000\u0000\u0e1e\u0e1f\u0007\t\u0000\u0000\u0e1f\u0e20\u0007"+ + "\n\u0000\u0000\u0e20\u0e21\u0007\u0010\u0000\u0000\u0e21\u0274\u0001\u0000"+ "\u0000\u0000\u0e22\u0e23\u0007\r\u0000\u0000\u0e23\u0e24\u0007\n\u0000"+ - "\u0000\u0e24\u0e25\u0007\u0010\u0000\u0000\u0e25\u0e26\u0007\u0016\u0000"+ - "\u0000\u0e26\u0e27\u0007\r\u0000\u0000\u0e27\u0e28\u0007\u0007\u0000\u0000"+ - "\u0e28\u0e29\u0007\t\u0000\u0000\u0e29\u0276\u0001\u0000\u0000\u0000\u0e2a"+ + "\u0000\u0e24\u0e25\u0007\t\u0000\u0000\u0e25\u0e26\u0007\u0010\u0000\u0000"+ + "\u0e26\u0e27\u0007\u0005\u0000\u0000\u0e27\u0e28\u0007\r\u0000\u0000\u0e28"+ + "\u0e29\u0007\u0010\u0000\u0000\u0e29\u0276\u0001\u0000\u0000\u0000\u0e2a"+ "\u0e2b\u0007\r\u0000\u0000\u0e2b\u0e2c\u0007\n\u0000\u0000\u0e2c\u0e2d"+ - "\u0007\u001b\u0000\u0000\u0e2d\u0e2e\u0007\u0013\u0000\u0000\u0e2e\u0e2f"+ - "\u0007\u0015\u0000\u0000\u0e2f\u0e30\u0007\n\u0000\u0000\u0e30\u0278\u0001"+ - "\u0000\u0000\u0000\u0e31\u0e32\u0007\r\u0000\u0000\u0e32\u0e33\u0007\u0013"+ - "\u0000\u0000\u0e33\u0e34\u0007\u0006\u0000\u0000\u0e34\u0e35\u0007\n\u0000"+ - "\u0000\u0e35\u027a\u0001\u0000\u0000\u0000\u0e36\u0e37\u0007\r\u0000\u0000"+ - "\u0e37\u0e38\u0007\u0013\u0000\u0000\u0e38\u0e39\u0007\u0006\u0000\u0000"+ - "\u0e39\u0e3a\u0007\u0006\u0000\u0000\u0e3a\u0e3b\u0007\u0012\u0000\u0000"+ - "\u0e3b\u0e3c\u0007\u0005\u0000\u0000\u0e3c\u0e3d\u0007\u000e\u0000\u0000"+ - "\u0e3d\u0e3e\u0007\u0015\u0000\u0000\u0e3e\u027c\u0001\u0000\u0000\u0000"+ - "\u0e3f\u0e40\u0007\r\u0000\u0000\u0e40\u0e41\u0007\u0013\u0000\u0000\u0e41"+ - "\u0e42\u0007\u001d\u0000\u0000\u0e42\u0e43\u0007\t\u0000\u0000\u0e43\u027e"+ - "\u0001\u0000\u0000\u0000\u0e44\u0e45\u0007\r\u0000\u0000\u0e45\u0e46\u0007"+ - "\u0016\u0000\u0000\u0e46\u0e47\u0007\u0006\u0000\u0000\u0e47\u0e48\u0007"+ - "\n\u0000\u0000\u0e48\u0280\u0001\u0000\u0000\u0000\u0e49\u0e4a\u0007\t"+ - "\u0000\u0000\u0e4a\u0e4b\u0007\u0005\u0000\u0000\u0e4b\u0e4c\u0007\u001b"+ - "\u0000\u0000\u0e4c\u0e4d\u0007\n\u0000\u0000\u0e4d\u0e4e\u0007\u0018\u0000"+ - "\u0000\u0e4e\u0e4f\u0007\u0013\u0000\u0000\u0e4f\u0e50\u0007\u0011\u0000"+ - "\u0000\u0e50\u0e51\u0007\u0007\u0000\u0000\u0e51\u0e52\u0007\u0010\u0000"+ - "\u0000\u0e52\u0282\u0001\u0000\u0000\u0000\u0e53\u0e54\u0007\t\u0000\u0000"+ - "\u0e54\u0e55\u0007\u000e\u0000\u0000\u0e55\u0e56\u0007\u0014\u0000\u0000"+ - "\u0e56\u0e57\u0007\n\u0000\u0000\u0e57\u0e58\u0007\u000f\u0000\u0000\u0e58"+ - "\u0e59\u0007\u0005\u0000\u0000\u0e59\u0284\u0001\u0000\u0000\u0000\u0e5a"+ - "\u0e5b\u0007\t\u0000\u0000\u0e5b\u0e5c\u0007\u000e\u0000\u0000\u0e5c\u0e5d"+ - "\u0007\r\u0000\u0000\u0e5d\u0e5e\u0007\u0013\u0000\u0000\u0e5e\u0e5f\u0007"+ - "\u0006\u0000\u0000\u0e5f\u0e60\u0007\u0006\u0000\u0000\u0e60\u0286\u0001"+ - "\u0000\u0000\u0000\u0e61\u0e62\u0007\t\u0000\u0000\u0e62\u0e63\u0007\n"+ - "\u0000\u0000\u0e63\u0e64\u0007\u0005\u0000\u0000\u0e64\u0e65\u0007\r\u0000"+ - "\u0000\u0e65\u0e66\u0007\u000e\u0000\u0000\u0e66\u0e67\u0007\u0014\u0000"+ - "\u0000\u0e67\u0288\u0001\u0000\u0000\u0000\u0e68\u0e69\u0007\t\u0000\u0000"+ - "\u0e69\u0e6a\u0007\n\u0000\u0000\u0e6a\u0e6b\u0007\u000e\u0000\u0000\u0e6b"+ - "\u0e6c\u0007\u0013\u0000\u0000\u0e6c\u0e6d\u0007\u0007\u0000\u0000\u0e6d"+ - "\u0e6e\u0007\f\u0000\u0000\u0e6e\u028a\u0001\u0000\u0000\u0000\u0e6f\u0e70"+ - "\u0007\t\u0000\u0000\u0e70\u0e71\u0007\n\u0000\u0000\u0e71\u0e72\u0007"+ - "\u000e\u0000\u0000\u0e72\u0e73\u0007\u0016\u0000\u0000\u0e73\u0e74\u0007"+ - "\r\u0000\u0000\u0e74\u0e75\u0007\u0011\u0000\u0000\u0e75\u0e76\u0007\u0010"+ - "\u0000\u0000\u0e76\u0e77\u0007\b\u0000\u0000\u0e77\u028c\u0001\u0000\u0000"+ - "\u0000\u0e78\u0e79\u0007\t\u0000\u0000\u0e79\u0e7a\u0007\n\u0000\u0000"+ - "\u0e7a\u0e7b\u0007\u001c\u0000\u0000\u0e7b\u0e7c\u0007\u0016\u0000\u0000"+ - "\u0e7c\u0e7d\u0007\n\u0000\u0000\u0e7d\u0e7e\u0007\u0007\u0000\u0000\u0e7e"+ - "\u0e7f\u0007\u000e\u0000\u0000\u0e7f\u0e80\u0007\n\u0000\u0000\u0e80\u028e"+ - "\u0001\u0000\u0000\u0000\u0e81\u0e82\u0007\t\u0000\u0000\u0e82\u0e83\u0007"+ - "\n\u0000\u0000\u0e83\u0e84\u0007\u001c\u0000\u0000\u0e84\u0e85\u0007\u0016"+ - "\u0000\u0000\u0e85\u0e86\u0007\n\u0000\u0000\u0e86\u0e87\u0007\u0007\u0000"+ - "\u0000\u0e87\u0e88\u0007\u000e\u0000\u0000\u0e88\u0e89\u0007\n\u0000\u0000"+ - "\u0e89\u0e8a\u0007\t\u0000\u0000\u0e8a\u0290\u0001\u0000\u0000\u0000\u0e8b"+ - "\u0e8c\u0007\t\u0000\u0000\u0e8c\u0e8d\u0007\n\u0000\u0000\u0e8d\u0e8e"+ - "\u0007\r\u0000\u0000\u0e8e\u0e8f\u0007\u0011\u0000\u0000\u0e8f\u0e90\u0007"+ - "\u0005\u0000\u0000\u0e90\u0e91\u0007\u0006\u0000\u0000\u0e91\u0e92\u0007"+ - "\u0011\u0000\u0000\u0e92\u0e93\u0007\u000b\u0000\u0000\u0e93\u0e94\u0007"+ - "\u0005\u0000\u0000\u0e94\u0e95\u0007\u0012\u0000\u0000\u0e95\u0e96\u0007"+ - "\u0006\u0000\u0000\u0e96\u0e97\u0007\n\u0000\u0000\u0e97\u0292\u0001\u0000"+ - "\u0000\u0000\u0e98\u0e99\u0007\t\u0000\u0000\u0e99\u0e9a\u0007\n\u0000"+ - "\u0000\u0e9a\u0e9b\u0007\r\u0000\u0000\u0e9b\u0e9c\u0007\u001b\u0000\u0000"+ - "\u0e9c\u0e9d\u0007\n\u0000\u0000\u0e9d\u0e9e\u0007\r\u0000\u0000\u0e9e"+ - "\u0294\u0001\u0000\u0000\u0000\u0e9f\u0ea0\u0007\t\u0000\u0000\u0ea0\u0ea1"+ - "\u0007\n\u0000\u0000\u0ea1\u0ea2\u0007\t\u0000\u0000\u0ea2\u0ea3\u0007"+ - "\t\u0000\u0000\u0ea3\u0ea4\u0007\u0011\u0000\u0000\u0ea4\u0ea5\u0007\u0013"+ - "\u0000\u0000\u0ea5\u0ea6\u0007\u0007\u0000\u0000\u0ea6\u0296\u0001\u0000"+ - "\u0000\u0000\u0ea7\u0ea8\u0007\t\u0000\u0000\u0ea8\u0ea9\u0007\n\u0000"+ - "\u0000\u0ea9\u0eaa\u0007\u0010\u0000\u0000\u0eaa\u0298\u0001\u0000\u0000"+ - "\u0000\u0eab\u0eac\u0007\t\u0000\u0000\u0eac\u0ead\u0007\u0014\u0000\u0000"+ - "\u0ead\u0eae\u0007\u0005\u0000\u0000\u0eae\u0eaf\u0007\r\u0000\u0000\u0eaf"+ - "\u0eb0\u0007\n\u0000\u0000\u0eb0\u029a\u0001\u0000\u0000\u0000\u0eb1\u0eb2"+ - "\u0007\t\u0000\u0000\u0eb2\u0eb3\u0007\u0014\u0000\u0000\u0eb3\u0eb4\u0007"+ - "\u0013\u0000\u0000\u0eb4\u0eb5\u0007\u001d\u0000\u0000\u0eb5\u029c\u0001"+ - "\u0000\u0000\u0000\u0eb6\u0eb7\u0007\t\u0000\u0000\u0eb7\u0eb8\u0007\u0011"+ - "\u0000\u0000\u0eb8\u0eb9\u0007\u000f\u0000\u0000\u0eb9\u0eba\u0007\u0018"+ - "\u0000\u0000\u0eba\u0ebb\u0007\u0006\u0000\u0000\u0ebb\u0ebc\u0007\n\u0000"+ - "\u0000\u0ebc\u029e\u0001\u0000\u0000\u0000\u0ebd\u0ebe\u0007\t\u0000\u0000"+ - "\u0ebe\u0ebf\u0007\u0007\u0000\u0000\u0ebf\u0ec0\u0007\u0005\u0000\u0000"+ - "\u0ec0\u0ec1\u0007\u0018\u0000\u0000\u0ec1\u0ec2\u0007\t\u0000\u0000\u0ec2"+ - "\u0ec3\u0007\u0014\u0000\u0000\u0ec3\u0ec4\u0007\u0013\u0000\u0000\u0ec4"+ - "\u0ec5\u0007\u0010\u0000\u0000\u0ec5\u02a0\u0001\u0000\u0000\u0000\u0ec6"+ - "\u0ec7\u0007\t\u0000\u0000\u0ec7\u0ec8\u0007\u0010\u0000\u0000\u0ec8\u0ec9"+ - "\u0007\u0005\u0000\u0000\u0ec9\u0eca\u0007\u0012\u0000\u0000\u0eca\u0ecb"+ - "\u0007\u0006\u0000\u0000\u0ecb\u0ecc\u0007\n\u0000\u0000\u0ecc\u02a2\u0001"+ - "\u0000\u0000\u0000\u0ecd\u0ece\u0007\t\u0000\u0000\u0ece\u0ecf\u0007\u0010"+ - "\u0000\u0000\u0ecf\u0ed0\u0007\u0005\u0000\u0000\u0ed0\u0ed1\u0007\u0007"+ - "\u0000\u0000\u0ed1\u0ed2\u0007\f\u0000\u0000\u0ed2\u0ed3\u0007\u0005\u0000"+ - "\u0000\u0ed3\u0ed4\u0007\u0006\u0000\u0000\u0ed4\u0ed5\u0007\u0013\u0000"+ - "\u0000\u0ed5\u0ed6\u0007\u0007\u0000\u0000\u0ed6\u0ed7\u0007\n\u0000\u0000"+ - "\u0ed7\u02a4\u0001\u0000\u0000\u0000\u0ed8\u0ed9\u0007\t\u0000\u0000\u0ed9"+ - "\u0eda\u0007\u0010\u0000\u0000\u0eda\u0edb\u0007\u0005\u0000\u0000\u0edb"+ - "\u0edc\u0007\r\u0000\u0000\u0edc\u0edd\u0007\u0010\u0000\u0000\u0edd\u02a6"+ - "\u0001\u0000\u0000\u0000\u0ede\u0edf\u0007\t\u0000\u0000\u0edf\u0ee0\u0007"+ - "\u0010\u0000\u0000\u0ee0\u0ee1\u0007\u0005\u0000\u0000\u0ee1\u0ee2\u0007"+ - "\u0010\u0000\u0000\u0ee2\u0ee3\u0007\n\u0000\u0000\u0ee3\u0ee4\u0007\u000f"+ - "\u0000\u0000\u0ee4\u0ee5\u0007\n\u0000\u0000\u0ee5\u0ee6\u0007\u0007\u0000"+ - "\u0000\u0ee6\u0ee7\u0007\u0010\u0000\u0000\u0ee7\u02a8\u0001\u0000\u0000"+ - "\u0000\u0ee8\u0ee9\u0007\t\u0000\u0000\u0ee9\u0eea\u0007\u0010\u0000\u0000"+ - "\u0eea\u0eeb\u0007\u0005\u0000\u0000\u0eeb\u0eec\u0007\u0010\u0000\u0000"+ - "\u0eec\u0eed\u0007\u0011\u0000\u0000\u0eed\u0eee\u0007\t\u0000\u0000\u0eee"+ - "\u0eef\u0007\u0010\u0000\u0000\u0eef\u0ef0\u0007\u0011\u0000\u0000\u0ef0"+ - "\u0ef1\u0007\u000e\u0000\u0000\u0ef1\u0ef2\u0007\t\u0000\u0000\u0ef2\u02aa"+ - "\u0001\u0000\u0000\u0000\u0ef3\u0ef4\u0007\t\u0000\u0000\u0ef4\u0ef5\u0007"+ - "\u0010\u0000\u0000\u0ef5\u0ef6\u0007\f\u0000\u0000\u0ef6\u0ef7\u0007\u0011"+ - "\u0000\u0000\u0ef7\u0ef8\u0007\u0007\u0000\u0000\u0ef8\u02ac\u0001\u0000"+ - "\u0000\u0000\u0ef9\u0efa\u0007\t\u0000\u0000\u0efa\u0efb\u0007\u0010\u0000"+ - "\u0000\u0efb\u0efc\u0007\f\u0000\u0000\u0efc\u0efd\u0007\u0013\u0000\u0000"+ - "\u0efd\u0efe\u0007\u0016\u0000\u0000\u0efe\u0eff\u0007\u0010\u0000\u0000"+ - "\u0eff\u02ae\u0001\u0000\u0000\u0000\u0f00\u0f01\u0007\t\u0000\u0000\u0f01"+ - "\u0f02\u0007\u0010\u0000\u0000\u0f02\u0f03\u0007\u0013\u0000\u0000\u0f03"+ - "\u0f04\u0007\r\u0000\u0000\u0f04\u0f05\u0007\u0005\u0000\u0000\u0f05\u0f06"+ - "\u0007\u0017\u0000\u0000\u0f06\u0f07\u0007\n\u0000\u0000\u0f07\u02b0\u0001"+ - "\u0000\u0000\u0000\u0f08\u0f09\u0007\t\u0000\u0000\u0f09\u0f0a\u0007\u0010"+ - "\u0000\u0000\u0f0a\u0f0b\u0007\r\u0000\u0000\u0f0b\u0f0c\u0007\u0011\u0000"+ - "\u0000\u0f0c\u0f0d\u0007\u000e\u0000\u0000\u0f0d\u0f0e\u0007\u0010\u0000"+ - "\u0000\u0f0e\u02b2\u0001\u0000\u0000\u0000\u0f0f\u0f10\u0007\t\u0000\u0000"+ - "\u0f10\u0f11\u0007\u0010\u0000\u0000\u0f11\u0f12\u0007\r\u0000\u0000\u0f12"+ - "\u0f13\u0007\u0011\u0000\u0000\u0f13\u0f14\u0007\u0018\u0000\u0000\u0f14"+ - "\u02b4\u0001\u0000\u0000\u0000\u0f15\u0f16\u0007\t\u0000\u0000\u0f16\u0f17"+ - "\u0007\b\u0000\u0000\u0f17\u0f18\u0007\t\u0000\u0000\u0f18\u0f19\u0007"+ - "\u0011\u0000\u0000\u0f19\u0f1a\u0007\f\u0000\u0000\u0f1a\u02b6\u0001\u0000"+ - "\u0000\u0000\u0f1b\u0f1c\u0007\t\u0000\u0000\u0f1c\u0f1d\u0007\b\u0000"+ - "\u0000\u0f1d\u0f1e\u0007\t\u0000\u0000\u0f1e\u0f1f\u0007\u0010\u0000\u0000"+ - "\u0f1f\u0f20\u0007\n\u0000\u0000\u0f20\u0f21\u0007\u000f\u0000\u0000\u0f21"+ - "\u02b8\u0001\u0000\u0000\u0000\u0f22\u0f23\u0007\u0010\u0000\u0000\u0f23"+ - "\u0f24\u0007\u0005\u0000\u0000\u0f24\u0f25\u0007\u0012\u0000\u0000\u0f25"+ - "\u0f26\u0007\u0006\u0000\u0000\u0f26\u0f27\u0007\n\u0000\u0000\u0f27\u0f28"+ - "\u0007\t\u0000\u0000\u0f28\u02ba\u0001\u0000\u0000\u0000\u0f29\u0f2a\u0007"+ - "\u0010\u0000\u0000\u0f2a\u0f2b\u0007\u0005\u0000\u0000\u0f2b\u0f2c\u0007"+ - "\u0012\u0000\u0000\u0f2c\u0f2d\u0007\u0006\u0000\u0000\u0f2d\u0f2e\u0007"+ - "\n\u0000\u0000\u0f2e\u0f2f\u0007\t\u0000\u0000\u0f2f\u0f30\u0007\u0018"+ - "\u0000\u0000\u0f30\u0f31\u0007\u0005\u0000\u0000\u0f31\u0f32\u0007\u000e"+ - "\u0000\u0000\u0f32\u0f33\u0007\n\u0000\u0000\u0f33\u02bc\u0001\u0000\u0000"+ - "\u0000\u0f34\u0f35\u0007\u0010\u0000\u0000\u0f35\u0f36\u0007\n\u0000\u0000"+ - "\u0f36\u0f37\u0007\u000f\u0000\u0000\u0f37\u0f38\u0007\u0018\u0000\u0000"+ - "\u0f38\u02be\u0001\u0000\u0000\u0000\u0f39\u0f3a\u0007\u0010\u0000\u0000"+ - "\u0f3a\u0f3b\u0007\n\u0000\u0000\u0f3b\u0f3c\u0007\u000f\u0000\u0000\u0f3c"+ - "\u0f3d\u0007\u0018\u0000\u0000\u0f3d\u0f3e\u0007\u0006\u0000\u0000\u0f3e"+ - "\u0f3f\u0007\u0005\u0000\u0000\u0f3f\u0f40\u0007\u0010\u0000\u0000\u0f40"+ - "\u0f41\u0007\n\u0000\u0000\u0f41\u02c0\u0001\u0000\u0000\u0000\u0f42\u0f43"+ - "\u0007\u0010\u0000\u0000\u0f43\u0f44\u0007\n\u0000\u0000\u0f44\u0f45\u0007"+ - "\u000f\u0000\u0000\u0f45\u0f46\u0007\u0018\u0000\u0000\u0f46\u0f47\u0007"+ - "\u0013\u0000\u0000\u0f47\u0f48\u0007\r\u0000\u0000\u0f48\u0f49\u0007\u0005"+ - "\u0000\u0000\u0f49\u0f4a\u0007\r\u0000\u0000\u0f4a\u0f4b\u0007\b\u0000"+ - "\u0000\u0f4b\u02c2\u0001\u0000\u0000\u0000\u0f4c\u0f4d\u0007\u0010\u0000"+ - "\u0000\u0f4d\u0f4e\u0007\n\u0000\u0000\u0f4e\u0f4f\u0007\u001a\u0000\u0000"+ - "\u0f4f\u0f50\u0007\u0010\u0000\u0000\u0f50\u02c4\u0001\u0000\u0000\u0000"+ - "\u0f51\u0f52\u0007\u0010\u0000\u0000\u0f52\u0f53\u0007\r\u0000\u0000\u0f53"+ - "\u0f54\u0007\u0005\u0000\u0000\u0f54\u0f55\u0007\u0007\u0000\u0000\u0f55"+ - "\u0f56\u0007\t\u0000\u0000\u0f56\u0f57\u0007\u0005\u0000\u0000\u0f57\u0f58"+ - "\u0007\u000e\u0000\u0000\u0f58\u0f59\u0007\u0010\u0000\u0000\u0f59\u0f5a"+ - "\u0007\u0011\u0000\u0000\u0f5a\u0f5b\u0007\u0013\u0000\u0000\u0f5b\u0f5c"+ - "\u0007\u0007\u0000\u0000\u0f5c\u02c6\u0001\u0000\u0000\u0000\u0f5d\u0f5e"+ - "\u0007\u0010\u0000\u0000\u0f5e\u0f5f\u0007\r\u0000\u0000\u0f5f\u0f60\u0007"+ - "\u0011\u0000\u0000\u0f60\u0f61\u0007\u0017\u0000\u0000\u0f61\u0f62\u0007"+ - "\u0017\u0000\u0000\u0f62\u0f63\u0007\n\u0000\u0000\u0f63\u0f64\u0007\r"+ - "\u0000\u0000\u0f64\u02c8\u0001\u0000\u0000\u0000\u0f65\u0f66\u0007\u0010"+ - "\u0000\u0000\u0f66\u0f67\u0007\r\u0000\u0000\u0f67\u0f68\u0007\u0016\u0000"+ - "\u0000\u0f68\u0f69\u0007\u0007\u0000\u0000\u0f69\u0f6a\u0007\u000e\u0000"+ - "\u0000\u0f6a\u0f6b\u0007\u0005\u0000\u0000\u0f6b\u0f6c\u0007\u0010\u0000"+ - "\u0000\u0f6c\u0f6d\u0007\n\u0000\u0000\u0f6d\u02ca\u0001\u0000\u0000\u0000"+ - "\u0f6e\u0f6f\u0007\u0010\u0000\u0000\u0f6f\u0f70\u0007\r\u0000\u0000\u0f70"+ - "\u0f71\u0007\u0016\u0000\u0000\u0f71\u0f72\u0007\t\u0000\u0000\u0f72\u0f73"+ - "\u0007\u0010\u0000\u0000\u0f73\u0f74\u0007\n\u0000\u0000\u0f74\u0f75\u0007"+ - "\f\u0000\u0000\u0f75\u02cc\u0001\u0000\u0000\u0000\u0f76\u0f77\u0007\u0010"+ - "\u0000\u0000\u0f77\u0f78\u0007\b\u0000\u0000\u0f78\u0f79\u0007\u0018\u0000"+ - "\u0000\u0f79\u0f7a\u0007\n\u0000\u0000\u0f7a\u02ce\u0001\u0000\u0000\u0000"+ - "\u0f7b\u0f7c\u0007\u0010\u0000\u0000\u0f7c\u0f7d\u0007\b\u0000\u0000\u0f7d"+ - "\u0f7e\u0007\u0018\u0000\u0000\u0f7e\u0f7f\u0007\n\u0000\u0000\u0f7f\u0f80"+ - "\u0007\t\u0000\u0000\u0f80\u02d0\u0001\u0000\u0000\u0000\u0f81\u0f82\u0007"+ - "\u0016\u0000\u0000\u0f82\u0f83\u0007\u0007\u0000\u0000\u0f83\u0f84\u0007"+ - "\u0012\u0000\u0000\u0f84\u0f85\u0007\u0013\u0000\u0000\u0f85\u0f86\u0007"+ - "\u0016\u0000\u0000\u0f86\u0f87\u0007\u0007\u0000\u0000\u0f87\u0f88\u0007"+ - "\f\u0000\u0000\u0f88\u0f89\u0007\n\u0000\u0000\u0f89\u0f8a\u0007\f\u0000"+ - "\u0000\u0f8a\u02d2\u0001\u0000\u0000\u0000\u0f8b\u0f8c\u0007\u0016\u0000"+ - "\u0000\u0f8c\u0f8d\u0007\u0007\u0000\u0000\u0f8d\u0f8e\u0007\u000e\u0000"+ - "\u0000\u0f8e\u0f8f\u0007\u0013\u0000\u0000\u0f8f\u0f90\u0007\u000f\u0000"+ - "\u0000\u0f90\u0f91\u0007\u000f\u0000\u0000\u0f91\u0f92\u0007\u0011\u0000"+ - "\u0000\u0f92\u0f93\u0007\u0010\u0000\u0000\u0f93\u0f94\u0007\u0010\u0000"+ - "\u0000\u0f94\u0f95\u0007\n\u0000\u0000\u0f95\u0f96\u0007\f\u0000\u0000"+ - "\u0f96\u02d4\u0001\u0000\u0000\u0000\u0f97\u0f98\u0007\u0016\u0000\u0000"+ - "\u0f98\u0f99\u0007\u0007\u0000\u0000\u0f99\u0f9a\u0007\n\u0000\u0000\u0f9a"+ - "\u0f9b\u0007\u0007\u0000\u0000\u0f9b\u0f9c\u0007\u000e\u0000\u0000\u0f9c"+ - "\u0f9d\u0007\r\u0000\u0000\u0f9d\u0f9e\u0007\b\u0000\u0000\u0f9e\u0f9f"+ - "\u0007\u0018\u0000\u0000\u0f9f\u0fa0\u0007\u0010\u0000\u0000\u0fa0\u0fa1"+ - "\u0007\n\u0000\u0000\u0fa1\u0fa2\u0007\f\u0000\u0000\u0fa2\u02d6\u0001"+ - "\u0000\u0000\u0000\u0fa3\u0fa4\u0007\u0016\u0000\u0000\u0fa4\u0fa5\u0007"+ - "\u0007\u0000\u0000\u0fa5\u0fa6\u0007\u0015\u0000\u0000\u0fa6\u0fa7\u0007"+ - "\u0007\u0000\u0000\u0fa7\u0fa8\u0007\u0013\u0000\u0000\u0fa8\u0fa9\u0007"+ - "\u001d\u0000\u0000\u0fa9\u0faa\u0007\u0007\u0000\u0000\u0faa\u02d8\u0001"+ - "\u0000\u0000\u0000\u0fab\u0fac\u0007\u0016\u0000\u0000\u0fac\u0fad\u0007"+ - "\u0007\u0000\u0000\u0fad\u0fae\u0007\u0006\u0000\u0000\u0fae\u0faf\u0007"+ - "\u0011\u0000\u0000\u0faf\u0fb0\u0007\t\u0000\u0000\u0fb0\u0fb1\u0007\u0010"+ - "\u0000\u0000\u0fb1\u0fb2\u0007\n\u0000\u0000\u0fb2\u0fb3\u0007\u0007\u0000"+ - "\u0000\u0fb3\u02da\u0001\u0000\u0000\u0000\u0fb4\u0fb5\u0007\u0016\u0000"+ - "\u0000\u0fb5\u0fb6\u0007\u0007\u0000\u0000\u0fb6\u0fb7\u0007\u0006\u0000"+ - "\u0000\u0fb7\u0fb8\u0007\u0013\u0000\u0000\u0fb8\u0fb9\u0007\u0017\u0000"+ - "\u0000\u0fb9\u0fba\u0007\u0017\u0000\u0000\u0fba\u0fbb\u0007\n\u0000\u0000"+ - "\u0fbb\u0fbc\u0007\f\u0000\u0000\u0fbc\u02dc\u0001\u0000\u0000\u0000\u0fbd"+ - "\u0fbe\u0007\u0016\u0000\u0000\u0fbe\u0fbf\u0007\u0007\u0000\u0000\u0fbf"+ - "\u0fc0\u0007\u0010\u0000\u0000\u0fc0\u0fc1\u0007\u0011\u0000\u0000\u0fc1"+ - "\u0fc2\u0007\u0006\u0000\u0000\u0fc2\u02de\u0001\u0000\u0000\u0000\u0fc3"+ - "\u0fc4\u0007\u0016\u0000\u0000\u0fc4\u0fc5\u0007\u0018\u0000\u0000\u0fc5"+ - "\u0fc6\u0007\f\u0000\u0000\u0fc6\u0fc7\u0007\u0005\u0000\u0000\u0fc7\u0fc8"+ - "\u0007\u0010\u0000\u0000\u0fc8\u0fc9\u0007\n\u0000\u0000\u0fc9\u02e0\u0001"+ - "\u0000\u0000\u0000\u0fca\u0fcb\u0007\u001b\u0000\u0000\u0fcb\u0fcc\u0007"+ - "\u0005\u0000\u0000\u0fcc\u0fcd\u0007\u000e\u0000\u0000\u0fcd\u0fce\u0007"+ - "\u0016\u0000\u0000\u0fce\u0fcf\u0007\u0016\u0000\u0000\u0fcf\u0fd0\u0007"+ - "\u000f\u0000\u0000\u0fd0\u02e2\u0001\u0000\u0000\u0000\u0fd1\u0fd2\u0007"+ - "\u001b\u0000\u0000\u0fd2\u0fd3\u0007\u0005\u0000\u0000\u0fd3\u0fd4\u0007"+ - "\u0006\u0000\u0000\u0fd4\u0fd5\u0007\u0011\u0000\u0000\u0fd5\u0fd6\u0007"+ - "\f\u0000\u0000\u0fd6\u02e4\u0001\u0000\u0000\u0000\u0fd7\u0fd8\u0007\u001b"+ - "\u0000\u0000\u0fd8\u0fd9\u0007\u0005\u0000\u0000\u0fd9\u0fda\u0007\u0006"+ - "\u0000\u0000\u0fda\u0fdb\u0007\u0011\u0000\u0000\u0fdb\u0fdc\u0007\f\u0000"+ - "\u0000\u0fdc\u0fdd\u0007\u0005\u0000\u0000\u0fdd\u0fde\u0007\u0010\u0000"+ - "\u0000\u0fde\u0fdf\u0007\n\u0000\u0000\u0fdf\u02e6\u0001\u0000\u0000\u0000"+ - "\u0fe0\u0fe1\u0007\u001b\u0000\u0000\u0fe1\u0fe2\u0007\u0005\u0000\u0000"+ - "\u0fe2\u0fe3\u0007\u0006\u0000\u0000\u0fe3\u0fe4\u0007\u0011\u0000\u0000"+ - "\u0fe4\u0fe5\u0007\f\u0000\u0000\u0fe5\u0fe6\u0007\u0005\u0000\u0000\u0fe6"+ - "\u0fe7\u0007\u0010\u0000\u0000\u0fe7\u0fe8\u0007\u0013\u0000\u0000\u0fe8"+ - "\u0fe9\u0007\r\u0000\u0000\u0fe9\u02e8\u0001\u0000\u0000\u0000\u0fea\u0feb"+ - "\u0007\u001b\u0000\u0000\u0feb\u0fec\u0007\u0005\u0000\u0000\u0fec\u0fed"+ - "\u0007\r\u0000\u0000\u0fed\u0fee\u0007\b\u0000\u0000\u0fee\u0fef\u0007"+ - "\u0011\u0000\u0000\u0fef\u0ff0\u0007\u0007\u0000\u0000\u0ff0\u0ff1\u0007"+ - "\u0017\u0000\u0000\u0ff1\u02ea\u0001\u0000\u0000\u0000\u0ff2\u0ff3\u0007"+ - "\u001b\u0000\u0000\u0ff3\u0ff4\u0007\n\u0000\u0000\u0ff4\u0ff5\u0007\r"+ - "\u0000\u0000\u0ff5\u0ff6\u0007\t\u0000\u0000\u0ff6\u0ff7\u0007\u0011\u0000"+ - "\u0000\u0ff7\u0ff8\u0007\u0013\u0000\u0000\u0ff8\u0ff9\u0007\u0007\u0000"+ - "\u0000\u0ff9\u02ec\u0001\u0000\u0000\u0000\u0ffa\u0ffb\u0007\u001b\u0000"+ - "\u0000\u0ffb\u0ffc\u0007\u0011\u0000\u0000\u0ffc\u0ffd\u0007\n\u0000\u0000"+ - "\u0ffd\u0ffe\u0007\u001d\u0000\u0000\u0ffe\u02ee\u0001\u0000\u0000\u0000"+ - "\u0fff\u1000\u0007\u001b\u0000\u0000\u1000\u1001\u0007\u0013\u0000\u0000"+ - "\u1001\u1002\u0007\u0006\u0000\u0000\u1002\u1003\u0007\u0005\u0000\u0000"+ - "\u1003\u1004\u0007\u0010\u0000\u0000\u1004\u1005\u0007\u0011\u0000\u0000"+ - "\u1005\u1006\u0007\u0006\u0000\u0000\u1006\u1007\u0007\n\u0000\u0000\u1007"+ - "\u02f0\u0001\u0000\u0000\u0000\u1008\u1009\u0007\u001d\u0000\u0000\u1009"+ - "\u100a\u0007\u0014\u0000\u0000\u100a\u100b\u0007\u0011\u0000\u0000\u100b"+ - "\u100c\u0007\u0010\u0000\u0000\u100c\u100d\u0007\n\u0000\u0000\u100d\u100e"+ - "\u0007\t\u0000\u0000\u100e\u100f\u0007\u0018\u0000\u0000\u100f\u1010\u0007"+ - "\u0005\u0000\u0000\u1010\u1011\u0007\u000e\u0000\u0000\u1011\u1012\u0007"+ - "\n\u0000\u0000\u1012\u02f2\u0001\u0000\u0000\u0000\u1013\u1014\u0007\u001d"+ - "\u0000\u0000\u1014\u1015\u0007\u0011\u0000\u0000\u1015\u1016\u0007\u0010"+ - "\u0000\u0000\u1016\u1017\u0007\u0014\u0000\u0000\u1017\u1018\u0007\u0013"+ - "\u0000\u0000\u1018\u1019\u0007\u0016\u0000\u0000\u1019\u101a\u0007\u0010"+ - "\u0000\u0000\u101a\u02f4\u0001\u0000\u0000\u0000\u101b\u101c\u0007\u001d"+ - "\u0000\u0000\u101c\u101d\u0007\u0013\u0000\u0000\u101d\u101e\u0007\r\u0000"+ - "\u0000\u101e\u101f\u0007\u0015\u0000\u0000\u101f\u02f6\u0001\u0000\u0000"+ - "\u0000\u1020\u1021\u0007\u001d\u0000\u0000\u1021\u1022\u0007\r\u0000\u0000"+ - "\u1022\u1023\u0007\u0005\u0000\u0000\u1023\u1024\u0007\u0018\u0000\u0000"+ - "\u1024\u1025\u0007\u0018\u0000\u0000\u1025\u1026\u0007\n\u0000\u0000\u1026"+ - "\u1027\u0007\r\u0000\u0000\u1027\u02f8\u0001\u0000\u0000\u0000\u1028\u1029"+ - "\u0007\u001d\u0000\u0000\u1029\u102a\u0007\r\u0000\u0000\u102a\u102b\u0007"+ - "\u0011\u0000\u0000\u102b\u102c\u0007\u0010\u0000\u0000\u102c\u102d\u0007"+ - "\n\u0000\u0000\u102d\u02fa\u0001\u0000\u0000\u0000\u102e\u102f\u0007\u001a"+ - "\u0000\u0000\u102f\u1030\u0007\u000f\u0000\u0000\u1030\u1031\u0007\u0006"+ - "\u0000\u0000\u1031\u02fc\u0001\u0000\u0000\u0000\u1032\u1033\u0007\b\u0000"+ - "\u0000\u1033\u1034\u0007\n\u0000\u0000\u1034\u1035\u0007\u0005\u0000\u0000"+ - "\u1035\u1036\u0007\r\u0000\u0000\u1036\u02fe\u0001\u0000\u0000\u0000\u1037"+ - "\u1038\u0007\b\u0000\u0000\u1038\u1039\u0007\n\u0000\u0000\u1039\u103a"+ - "\u0007\t\u0000\u0000\u103a\u0300\u0001\u0000\u0000\u0000\u103b\u103c\u0007"+ - "\u000b\u0000\u0000\u103c\u103d\u0007\u0013\u0000\u0000\u103d\u103e\u0007"+ - "\u0007\u0000\u0000\u103e\u103f\u0007\n\u0000\u0000\u103f\u0302\u0001\u0000"+ - "\u0000\u0000\u1040\u1041\u0007\u0012\u0000\u0000\u1041\u1042\u0007\n\u0000"+ - "\u0000\u1042\u1043\u0007\u0010\u0000\u0000\u1043\u1044\u0007\u001d\u0000"+ - "\u0000\u1044\u1045\u0007\n\u0000\u0000\u1045\u1046\u0007\n\u0000\u0000"+ - "\u1046\u1047\u0007\u0007\u0000\u0000\u1047\u0304\u0001\u0000\u0000\u0000"+ - "\u1048\u1049\u0007\u0012\u0000\u0000\u1049\u104a\u0007\u0011\u0000\u0000"+ - "\u104a\u104b\u0007\u0017\u0000\u0000\u104b\u104c\u0007\u0011\u0000\u0000"+ - "\u104c\u104d\u0007\u0007\u0000\u0000\u104d\u104e\u0007\u0010\u0000\u0000"+ - "\u104e\u0306\u0001\u0000\u0000\u0000\u104f\u1050\u0007\u0012\u0000\u0000"+ - "\u1050\u1051\u0007\u0011\u0000\u0000\u1051\u1052\u0007\u0010\u0000\u0000"+ - "\u1052\u0308\u0001\u0000\u0000\u0000\u1053\u1054\u0007\u0012\u0000\u0000"+ - "\u1054\u1055\u0007\u0013\u0000\u0000\u1055\u1056\u0007\u0013\u0000\u0000"+ - "\u1056\u1057\u0007\u0006\u0000\u0000\u1057\u1058\u0007\n\u0000\u0000\u1058"+ - "\u1059\u0007\u0005\u0000\u0000\u1059\u105a\u0007\u0007\u0000\u0000\u105a"+ - "\u030a\u0001\u0000\u0000\u0000\u105b\u105c\u0007\u000e\u0000\u0000\u105c"+ - "\u105d\u0007\u0014\u0000\u0000\u105d\u105e\u0007\u0005\u0000\u0000\u105e"+ - "\u105f\u0007\r\u0000\u0000\u105f\u030c\u0001\u0000\u0000\u0000\u1060\u1061"+ - "\u0007\u000e\u0000\u0000\u1061\u1062\u0007\u0014\u0000\u0000\u1062\u1063"+ - "\u0007\u0005\u0000\u0000\u1063\u1064\u0007\r\u0000\u0000\u1064\u1065\u0007"+ - "\u0005\u0000\u0000\u1065\u1066\u0007\u000e\u0000\u0000\u1066\u1067\u0007"+ - "\u0010\u0000\u0000\u1067\u1068\u0007\n\u0000\u0000\u1068\u1069\u0007\r"+ - "\u0000\u0000\u1069\u030e\u0001\u0000\u0000\u0000\u106a\u106b\u0007\u000e"+ - "\u0000\u0000\u106b\u106c\u0007\u0013\u0000\u0000\u106c\u106d\u0007\u0005"+ - "\u0000\u0000\u106d\u106e\u0007\u0006\u0000\u0000\u106e\u106f\u0007\n\u0000"+ - "\u0000\u106f\u1070\u0007\t\u0000\u0000\u1070\u1071\u0007\u000e\u0000\u0000"+ - "\u1071\u1072\u0007\n\u0000\u0000\u1072\u0310\u0001\u0000\u0000\u0000\u1073"+ - "\u1074\u0007\f\u0000\u0000\u1074\u1075\u0007\n\u0000\u0000\u1075\u1076"+ - "\u0007\u000e\u0000\u0000\u1076\u0312\u0001\u0000\u0000\u0000\u1077\u1078"+ - "\u0007\f\u0000\u0000\u1078\u1079\u0007\n\u0000\u0000\u1079\u107a\u0007"+ - "\u000e\u0000\u0000\u107a\u107b\u0007\u0011\u0000\u0000\u107b\u107c\u0007"+ - "\u000f\u0000\u0000\u107c\u107d\u0007\u0005\u0000\u0000\u107d\u107e\u0007"+ - "\u0006\u0000\u0000\u107e\u0314\u0001\u0000\u0000\u0000\u107f\u1080\u0007"+ - "\n\u0000\u0000\u1080\u1081\u0007\u001a\u0000\u0000\u1081\u1082\u0007\u0011"+ - "\u0000\u0000\u1082\u1083\u0007\t\u0000\u0000\u1083\u1084\u0007\u0010\u0000"+ - "\u0000\u1084\u1085\u0007\t\u0000\u0000\u1085\u0316\u0001\u0000\u0000\u0000"+ - "\u1086\u1087\u0007\n\u0000\u0000\u1087\u1088\u0007\u001a\u0000\u0000\u1088"+ - "\u1089\u0007\u0010\u0000\u0000\u1089\u108a\u0007\r\u0000\u0000\u108a\u108b"+ - "\u0007\u0005\u0000\u0000\u108b\u108c\u0007\u000e\u0000\u0000\u108c\u108d"+ - "\u0007\u0010\u0000\u0000\u108d\u0318\u0001\u0000\u0000\u0000\u108e\u108f"+ - "\u0007\u0019\u0000\u0000\u108f\u1090\u0007\u0006\u0000\u0000\u1090\u1091"+ - "\u0007\u0013\u0000\u0000\u1091\u1092\u0007\u0005\u0000\u0000\u1092\u1093"+ - "\u0007\u0010\u0000\u0000\u1093\u031a\u0001\u0000\u0000\u0000\u1094\u1095"+ - "\u0007\u0017\u0000\u0000\u1095\u1096\u0007\r\u0000\u0000\u1096\u1097\u0007"+ - "\n\u0000\u0000\u1097\u1098\u0007\u0005\u0000\u0000\u1098\u1099\u0007\u0010"+ - "\u0000\u0000\u1099\u109a\u0007\n\u0000\u0000\u109a\u109b\u0007\t\u0000"+ - "\u0000\u109b\u109c\u0007\u0010\u0000\u0000\u109c\u031c\u0001\u0000\u0000"+ - "\u0000\u109d\u109e\u0007\u0011\u0000\u0000\u109e\u109f\u0007\u0007\u0000"+ - "\u0000\u109f\u10a0\u0007\u0013\u0000\u0000\u10a0\u10a1\u0007\u0016\u0000"+ - "\u0000\u10a1\u10a2\u0007\u0010\u0000\u0000\u10a2\u031e\u0001\u0000\u0000"+ - "\u0000\u10a3\u10a4\u0007\u0011\u0000\u0000\u10a4\u10a5\u0007\u0007\u0000"+ - "\u0000\u10a5\u10a6\u0007\u0010\u0000\u0000\u10a6\u0320\u0001\u0000\u0000"+ - "\u0000\u10a7\u10a8\u0007\u0011\u0000\u0000\u10a8\u10a9\u0007\u0007\u0000"+ - "\u0000\u10a9\u10aa\u0007\u0010\u0000\u0000\u10aa\u10ab\u0007\n\u0000\u0000"+ - "\u10ab\u10ac\u0007\u0017\u0000\u0000\u10ac\u10ad\u0007\n\u0000\u0000\u10ad"+ - "\u10ae\u0007\r\u0000\u0000\u10ae\u0322\u0001\u0000\u0000\u0000\u10af\u10b0"+ - "\u0007\u0011\u0000\u0000\u10b0\u10b1\u0007\u0007\u0000\u0000\u10b1\u10b2"+ - "\u0007\u0010\u0000\u0000\u10b2\u10b3\u0007\n\u0000\u0000\u10b3\u10b4\u0007"+ - "\r\u0000\u0000\u10b4\u10b5\u0007\u001b\u0000\u0000\u10b5\u10b6\u0007\u0005"+ - "\u0000\u0000\u10b6\u10b7\u0007\u0006\u0000\u0000\u10b7\u0324\u0001\u0000"+ - "\u0000\u0000\u10b8\u10b9\u0007\u0006\u0000\u0000\u10b9\u10ba\u0007\n\u0000"+ - "\u0000\u10ba\u10bb\u0007\u0005\u0000\u0000\u10bb\u10bc\u0007\t\u0000\u0000"+ - "\u10bc\u10bd\u0007\u0010\u0000\u0000\u10bd\u0326\u0001\u0000\u0000\u0000"+ - "\u10be\u10bf\u0007\u0007\u0000\u0000\u10bf\u10c0\u0007\u0005\u0000\u0000"+ - "\u10c0\u10c1\u0007\u0010\u0000\u0000\u10c1\u10c2\u0007\u0011\u0000\u0000"+ - "\u10c2\u10c3\u0007\u0013\u0000\u0000\u10c3\u10c4\u0007\u0007\u0000\u0000"+ - "\u10c4\u10c5\u0007\u0005\u0000\u0000\u10c5\u10c6\u0007\u0006\u0000\u0000"+ - "\u10c6\u0328\u0001\u0000\u0000\u0000\u10c7\u10c8\u0007\u0007\u0000\u0000"+ - "\u10c8\u10c9\u0007\u000e\u0000\u0000\u10c9\u10ca\u0007\u0014\u0000\u0000"+ - "\u10ca\u10cb\u0007\u0005\u0000\u0000\u10cb\u10cc\u0007\r\u0000\u0000\u10cc"+ - "\u032a\u0001\u0000\u0000\u0000\u10cd\u10ce\u0007\u0007\u0000\u0000\u10ce"+ - "\u10cf\u0007\u0013\u0000\u0000\u10cf\u10d0\u0007\u0007\u0000\u0000\u10d0"+ - "\u10d1\u0007\n\u0000\u0000\u10d1\u032c\u0001\u0000\u0000\u0000\u10d2\u10d3"+ - "\u0007\u0007\u0000\u0000\u10d3\u10d4\u0007\u0016\u0000\u0000\u10d4\u10d5"+ - "\u0007\u0006\u0000\u0000\u10d5\u10d6\u0007\u0006\u0000\u0000\u10d6\u10d7"+ - "\u0007\u0011\u0000\u0000\u10d7\u10d8\u0007\u0019\u0000\u0000\u10d8\u032e"+ - "\u0001\u0000\u0000\u0000\u10d9\u10da\u0007\u0007\u0000\u0000\u10da\u10db"+ - "\u0007\u0016\u0000\u0000\u10db\u10dc\u0007\u000f\u0000\u0000\u10dc\u10dd"+ - "\u0007\n\u0000\u0000\u10dd\u10de\u0007\r\u0000\u0000\u10de\u10df\u0007"+ - "\u0011\u0000\u0000\u10df\u10e0\u0007\u000e\u0000\u0000\u10e0\u0330\u0001"+ - "\u0000\u0000\u0000\u10e1\u10e2\u0007\u0013\u0000\u0000\u10e2\u10e3\u0007"+ - "\u001b\u0000\u0000\u10e3\u10e4\u0007\n\u0000\u0000\u10e4\u10e5\u0007\r"+ - "\u0000\u0000\u10e5\u10e6\u0007\u0006\u0000\u0000\u10e6\u10e7\u0007\u0005"+ - "\u0000\u0000\u10e7\u10e8\u0007\b\u0000\u0000\u10e8\u0332\u0001\u0000\u0000"+ - "\u0000\u10e9\u10ea\u0007\u0018\u0000\u0000\u10ea\u10eb\u0007\u0013\u0000"+ - "\u0000\u10eb\u10ec\u0007\t\u0000\u0000\u10ec\u10ed\u0007\u0011\u0000\u0000"+ - "\u10ed\u10ee\u0007\u0010\u0000\u0000\u10ee\u10ef\u0007\u0011\u0000\u0000"+ - "\u10ef\u10f0\u0007\u0013\u0000\u0000\u10f0\u10f1\u0007\u0007\u0000\u0000"+ - "\u10f1\u0334\u0001\u0000\u0000\u0000\u10f2\u10f3\u0007\u0018\u0000\u0000"+ - "\u10f3\u10f4\u0007\r\u0000\u0000\u10f4\u10f5\u0007\n\u0000\u0000\u10f5"+ - "\u10f6\u0007\u000e\u0000\u0000\u10f6\u10f7\u0007\u0011\u0000\u0000\u10f7"+ - "\u10f8\u0007\t\u0000\u0000\u10f8\u10f9\u0007\u0011\u0000\u0000\u10f9\u10fa"+ - "\u0007\u0013\u0000\u0000\u10fa\u10fb\u0007\u0007\u0000\u0000\u10fb\u0336"+ - "\u0001\u0000\u0000\u0000\u10fc\u10fd\u0007\r\u0000\u0000\u10fd\u10fe\u0007"+ - "\n\u0000\u0000\u10fe\u10ff\u0007\u0005\u0000\u0000\u10ff\u1100\u0007\u0006"+ - "\u0000\u0000\u1100\u0338\u0001\u0000\u0000\u0000\u1101\u1102\u0007\r\u0000"+ - "\u0000\u1102\u1103\u0007\u0013\u0000\u0000\u1103\u1104\u0007\u001d\u0000"+ - "\u0000\u1104\u033a\u0001\u0000\u0000\u0000\u1105\u1106\u0007\t\u0000\u0000"+ - "\u1106\u1107\u0007\n\u0000\u0000\u1107\u1108\u0007\u0010\u0000\u0000\u1108"+ - "\u1109\u0007\u0013\u0000\u0000\u1109\u110a\u0007\u0019\u0000\u0000\u110a"+ - "\u033c\u0001\u0000\u0000\u0000\u110b\u110c\u0007\t\u0000\u0000\u110c\u110d"+ - "\u0007\u000f\u0000\u0000\u110d\u110e\u0007\u0005\u0000\u0000\u110e\u110f"+ - "\u0007\u0006\u0000\u0000\u110f\u1110\u0007\u0006\u0000\u0000\u1110\u1111"+ - "\u0007\u0011\u0000\u0000\u1111\u1112\u0007\u0007\u0000\u0000\u1112\u1113"+ - "\u0007\u0010\u0000\u0000\u1113\u033e\u0001\u0000\u0000\u0000\u1114\u1115"+ - "\u0007\t\u0000\u0000\u1115\u1116\u0007\u0016\u0000\u0000\u1116\u1117\u0007"+ - "\u0012\u0000\u0000\u1117\u1118\u0007\t\u0000\u0000\u1118\u1119\u0007\u0010"+ - "\u0000\u0000\u1119\u111a\u0007\r\u0000\u0000\u111a\u111b\u0007\u0011\u0000"+ - "\u0000\u111b\u111c\u0007\u0007\u0000\u0000\u111c\u111d\u0007\u0017\u0000"+ - "\u0000\u111d\u0340\u0001\u0000\u0000\u0000\u111e\u111f\u0007\u0010\u0000"+ - "\u0000\u111f\u1120\u0007\u0011\u0000\u0000\u1120\u1121\u0007\u000f\u0000"+ - "\u0000\u1121\u1122\u0007\n\u0000\u0000\u1122\u0342\u0001\u0000\u0000\u0000"+ - "\u1123\u1124\u0007\u0010\u0000\u0000\u1124\u1125\u0007\u0011\u0000\u0000"+ - "\u1125\u1126\u0007\u000f\u0000\u0000\u1126\u1127\u0007\n\u0000\u0000\u1127"+ - "\u1128\u0007\t\u0000\u0000\u1128\u1129\u0007\u0010\u0000\u0000\u1129\u112a"+ - "\u0007\u0005\u0000\u0000\u112a\u112b\u0007\u000f\u0000\u0000\u112b\u112c"+ - "\u0007\u0018\u0000\u0000\u112c\u0344\u0001\u0000\u0000\u0000\u112d\u112e"+ - "\u0007\u0010\u0000\u0000\u112e\u112f\u0007\r\u0000\u0000\u112f\u1130\u0007"+ - "\n\u0000\u0000\u1130\u1131\u0007\u0005\u0000\u0000\u1131\u1132\u0007\u0010"+ - "\u0000\u0000\u1132\u0346\u0001\u0000\u0000\u0000\u1133\u1134\u0007\u0010"+ - "\u0000\u0000\u1134\u1135\u0007\r\u0000\u0000\u1135\u1136\u0007\u0011\u0000"+ - "\u0000\u1136\u1137\u0007\u000f\u0000\u0000\u1137\u0348\u0001\u0000\u0000"+ - "\u0000\u1138\u1139\u0007\u001b\u0000\u0000\u1139\u113a\u0007\u0005\u0000"+ - "\u0000\u113a\u113b\u0007\u0006\u0000\u0000\u113b\u113c\u0007\u0016\u0000"+ - "\u0000\u113c\u113d\u0007\n\u0000\u0000\u113d\u113e\u0007\t\u0000\u0000"+ - "\u113e\u034a\u0001\u0000\u0000\u0000\u113f\u1140\u0007\u001b\u0000\u0000"+ - "\u1140\u1141\u0007\u0005\u0000\u0000\u1141\u1142\u0007\r\u0000\u0000\u1142"+ - "\u1143\u0007\u000e\u0000\u0000\u1143\u1144\u0007\u0014\u0000\u0000\u1144"+ - "\u1145\u0007\u0005\u0000\u0000\u1145\u1146\u0007\r\u0000\u0000\u1146\u034c"+ - "\u0001\u0000\u0000\u0000\u1147\u1148\u0007\u001a\u0000\u0000\u1148\u1149"+ - "\u0007\u000f\u0000\u0000\u1149\u114a\u0007\u0006\u0000\u0000\u114a\u114b"+ - "\u0007\u0005\u0000\u0000\u114b\u114c\u0007\u0010\u0000\u0000\u114c\u114d"+ - "\u0007\u0010\u0000\u0000\u114d\u114e\u0007\r\u0000\u0000\u114e\u114f\u0007"+ - "\u0011\u0000\u0000\u114f\u1150\u0007\u0012\u0000\u0000\u1150\u1151\u0007"+ - "\u0016\u0000\u0000\u1151\u1152\u0007\u0010\u0000\u0000\u1152\u1153\u0007"+ - "\n\u0000\u0000\u1153\u1154\u0007\t\u0000\u0000\u1154\u034e\u0001\u0000"+ - "\u0000\u0000\u1155\u1156\u0007\u001a\u0000\u0000\u1156\u1157\u0007\u000f"+ - "\u0000\u0000\u1157\u1158\u0007\u0006\u0000\u0000\u1158\u1159\u0007\u000e"+ - "\u0000\u0000\u1159\u115a\u0007\u0013\u0000\u0000\u115a\u115b\u0007\u000f"+ - "\u0000\u0000\u115b\u115c\u0007\u000f\u0000\u0000\u115c\u115d\u0007\n\u0000"+ - "\u0000\u115d\u115e\u0007\u0007\u0000\u0000\u115e\u115f\u0007\u0010\u0000"+ - "\u0000\u115f\u0350\u0001\u0000\u0000\u0000\u1160\u1161\u0007\u001a\u0000"+ - "\u0000\u1161\u1162\u0007\u000f\u0000\u0000\u1162\u1163\u0007\u0006\u0000"+ - "\u0000\u1163\u1164\u0007\u0005\u0000\u0000\u1164\u1165\u0007\u0017\u0000"+ - "\u0000\u1165\u1166\u0007\u0017\u0000\u0000\u1166\u0352\u0001\u0000\u0000"+ - "\u0000\u1167\u1168\u0007\u001a\u0000\u0000\u1168\u1169\u0007\u000f\u0000"+ - "\u0000\u1169\u116a\u0007\u0006\u0000\u0000\u116a\u116b\u0005_\u0000\u0000"+ - "\u116b\u116c\u0007\u0011\u0000\u0000\u116c\u116d\u0007\t\u0000\u0000\u116d"+ - "\u116e\u0005_\u0000\u0000\u116e\u116f\u0007\u001d\u0000\u0000\u116f\u1170"+ - "\u0007\n\u0000\u0000\u1170\u1171\u0007\u0006\u0000\u0000\u1171\u1172\u0007"+ - "\u0006\u0000\u0000\u1172\u1173\u0005_\u0000\u0000\u1173\u1174\u0007\u0019"+ - "\u0000\u0000\u1174\u1175\u0007\u0013\u0000\u0000\u1175\u1176\u0007\r\u0000"+ - "\u0000\u1176\u1177\u0007\u000f\u0000\u0000\u1177\u1178\u0007\n\u0000\u0000"+ - "\u1178\u1179\u0007\f\u0000\u0000\u1179\u0354\u0001\u0000\u0000\u0000\u117a"+ - "\u117b\u0007\u001a\u0000\u0000\u117b\u117c\u0007\u000f\u0000\u0000\u117c"+ - "\u117d\u0007\u0006\u0000\u0000\u117d\u117e\u0005_\u0000\u0000\u117e\u117f"+ - "\u0007\u0011\u0000\u0000\u117f\u1180\u0007\t\u0000\u0000\u1180\u1181\u0005"+ - "_\u0000\u0000\u1181\u1182\u0007\u001d\u0000\u0000\u1182\u1183\u0007\n"+ - "\u0000\u0000\u1183\u1184\u0007\u0006\u0000\u0000\u1184\u1185\u0007\u0006"+ - "\u0000\u0000\u1185\u1186\u0005_\u0000\u0000\u1186\u1187\u0007\u0019\u0000"+ - "\u0000\u1187\u1188\u0007\u0013\u0000\u0000\u1188\u1189\u0007\r\u0000\u0000"+ - "\u1189\u118a\u0007\u000f\u0000\u0000\u118a\u118b\u0007\n\u0000\u0000\u118b"+ - "\u118c\u0007\f\u0000\u0000\u118c\u118d\u0005_\u0000\u0000\u118d\u118e"+ - "\u0007\f\u0000\u0000\u118e\u118f\u0007\u0013\u0000\u0000\u118f\u1190\u0007"+ - "\u000e\u0000\u0000\u1190\u1191\u0007\u0016\u0000\u0000\u1191\u1192\u0007"+ - "\u000f\u0000\u0000\u1192\u1193\u0007\n\u0000\u0000\u1193\u1194\u0007\u0007"+ - "\u0000\u0000\u1194\u1195\u0007\u0010\u0000\u0000\u1195\u0356\u0001\u0000"+ - "\u0000\u0000\u1196\u1197\u0007\u001a\u0000\u0000\u1197\u1198\u0007\u000f"+ - "\u0000\u0000\u1198\u1199\u0007\u0006\u0000\u0000\u1199\u119a\u0005_\u0000"+ - "\u0000\u119a\u119b\u0007\u0011\u0000\u0000\u119b\u119c\u0007\t\u0000\u0000"+ - "\u119c\u119d\u0005_\u0000\u0000\u119d\u119e\u0007\u001d\u0000\u0000\u119e"+ - "\u119f\u0007\n\u0000\u0000\u119f\u11a0\u0007\u0006\u0000\u0000\u11a0\u11a1"+ - "\u0007\u0006\u0000\u0000\u11a1\u11a2\u0005_\u0000\u0000\u11a2\u11a3\u0007"+ - "\u0019\u0000\u0000\u11a3\u11a4\u0007\u0013\u0000\u0000\u11a4\u11a5\u0007"+ - "\r\u0000\u0000\u11a5\u11a6\u0007\u000f\u0000\u0000\u11a6\u11a7\u0007\n"+ - "\u0000\u0000\u11a7\u11a8\u0007\f\u0000\u0000\u11a8\u11a9\u0005_\u0000"+ - "\u0000\u11a9\u11aa\u0007\u000e\u0000\u0000\u11aa\u11ab\u0007\u0013\u0000"+ - "\u0000\u11ab\u11ac\u0007\u0007\u0000\u0000\u11ac\u11ad\u0007\u0010\u0000"+ - "\u0000\u11ad\u11ae\u0007\n\u0000\u0000\u11ae\u11af\u0007\u0007\u0000\u0000"+ - "\u11af\u11b0\u0007\u0010\u0000\u0000\u11b0\u0358\u0001\u0000\u0000\u0000"+ - "\u11b1\u11b2\u0007\u001a\u0000\u0000\u11b2\u11b3\u0007\u0018\u0000\u0000"+ - "\u11b3\u11b4\u0007\u0005\u0000\u0000\u11b4\u11b5\u0007\u0010\u0000\u0000"+ - "\u11b5\u11b6\u0007\u0014\u0000\u0000\u11b6\u035a\u0001\u0000\u0000\u0000"+ - "\u11b7\u11b8\u0007\u001a\u0000\u0000\u11b8\u11b9\u0007\u0018\u0000\u0000"+ - "\u11b9\u11ba\u0007\u0005\u0000\u0000\u11ba\u11bb\u0007\u0010\u0000\u0000"+ - "\u11bb\u11bc\u0007\u0014\u0000\u0000\u11bc\u11bd\u0005_\u0000\u0000\u11bd"+ - "\u11be\u0007\n\u0000\u0000\u11be\u11bf\u0007\u001a\u0000\u0000\u11bf\u11c0"+ - "\u0007\u0011\u0000\u0000\u11c0\u11c1\u0007\t\u0000\u0000\u11c1\u11c2\u0007"+ - "\u0010\u0000\u0000\u11c2\u11c3\u0007\t\u0000\u0000\u11c3\u035c\u0001\u0000"+ - "\u0000\u0000\u11c4\u11c5\u0007\u001a\u0000\u0000\u11c5\u11c6\u0007\u000f"+ - "\u0000\u0000\u11c6\u11c7\u0007\u0006\u0000\u0000\u11c7\u11c8\u0007\u000e"+ - "\u0000\u0000\u11c8\u11c9\u0007\u0013\u0000\u0000\u11c9\u11ca\u0007\u0007"+ - "\u0000\u0000\u11ca\u11cb\u0007\u000e\u0000\u0000\u11cb\u11cc\u0007\u0005"+ - "\u0000\u0000\u11cc\u11cd\u0007\u0010\u0000\u0000\u11cd\u035e\u0001\u0000"+ - "\u0000\u0000\u11ce\u11cf\u0007\u001a\u0000\u0000\u11cf\u11d0\u0007\u000f"+ - "\u0000\u0000\u11d0\u11d1\u0007\u0006\u0000\u0000\u11d1\u11d2\u0007\n\u0000"+ - "\u0000\u11d2\u11d3\u0007\u0006\u0000\u0000\u11d3\u11d4\u0007\n\u0000\u0000"+ - "\u11d4\u11d5\u0007\u000f\u0000\u0000\u11d5\u11d6\u0007\n\u0000\u0000\u11d6"+ - "\u11d7\u0007\u0007\u0000\u0000\u11d7\u11d8\u0007\u0010\u0000\u0000\u11d8"+ - "\u0360\u0001\u0000\u0000\u0000\u11d9\u11da\u0007\u001a\u0000\u0000\u11da"+ - "\u11db\u0007\u000f\u0000\u0000\u11db\u11dc\u0007\u0006\u0000\u0000\u11dc"+ - "\u11dd\u0007\n\u0000\u0000\u11dd\u11de\u0007\u001a\u0000\u0000\u11de\u11df"+ - "\u0007\u0011\u0000\u0000\u11df\u11e0\u0007\t\u0000\u0000\u11e0\u11e1\u0007"+ - "\u0010\u0000\u0000\u11e1\u11e2\u0007\t\u0000\u0000\u11e2\u0362\u0001\u0000"+ - "\u0000\u0000\u11e3\u11e4\u0007\u001a\u0000\u0000\u11e4\u11e5\u0007\u000f"+ - "\u0000\u0000\u11e5\u11e6\u0007\u0006\u0000\u0000\u11e6\u11e7\u0007\u0019"+ - "\u0000\u0000\u11e7\u11e8\u0007\u0013\u0000\u0000\u11e8\u11e9\u0007\r\u0000"+ - "\u0000\u11e9\u11ea\u0007\n\u0000\u0000\u11ea\u11eb\u0007\t\u0000\u0000"+ - "\u11eb\u11ec\u0007\u0010\u0000\u0000\u11ec\u0364\u0001\u0000\u0000\u0000"+ - "\u11ed\u11ee\u0007\u001a\u0000\u0000\u11ee\u11ef\u0007\u000f\u0000\u0000"+ - "\u11ef\u11f0\u0007\u0006\u0000\u0000\u11f0\u11f1\u0007\u0018\u0000\u0000"+ - "\u11f1\u11f2\u0007\u0005\u0000\u0000\u11f2\u11f3\u0007\r\u0000\u0000\u11f3"+ - "\u11f4\u0007\t\u0000\u0000\u11f4\u11f5\u0007\n\u0000\u0000\u11f5\u0366"+ - "\u0001\u0000\u0000\u0000\u11f6\u11f7\u0007\u001a\u0000\u0000\u11f7\u11f8"+ - "\u0007\u000f\u0000\u0000\u11f8\u11f9\u0007\u0006\u0000\u0000\u11f9\u11fa"+ - "\u0007\u0018\u0000\u0000\u11fa\u11fb\u0007\u0011\u0000\u0000\u11fb\u0368"+ - "\u0001\u0000\u0000\u0000\u11fc\u11fd\u0007\u001a\u0000\u0000\u11fd\u11fe"+ - "\u0007\u000f\u0000\u0000\u11fe\u11ff\u0007\u0006\u0000\u0000\u11ff\u1200"+ - "\u0007\r\u0000\u0000\u1200\u1201\u0007\u0013\u0000\u0000\u1201\u1202\u0007"+ - "\u0013\u0000\u0000\u1202\u1203\u0007\u0010\u0000\u0000\u1203\u036a\u0001"+ - "\u0000\u0000\u0000\u1204\u1205\u0007\u001a\u0000\u0000\u1205\u1206\u0007"+ - "\u000f\u0000\u0000\u1206\u1207\u0007\u0006\u0000\u0000\u1207\u1208\u0007"+ - "\t\u0000\u0000\u1208\u1209\u0007\n\u0000\u0000\u1209\u120a\u0007\r\u0000"+ - "\u0000\u120a\u120b\u0007\u0011\u0000\u0000\u120b\u120c\u0007\u0005\u0000"+ - "\u0000\u120c\u120d\u0007\u0006\u0000\u0000\u120d\u120e\u0007\u0011\u0000"+ - "\u0000\u120e\u120f\u0007\u000b\u0000\u0000\u120f\u1210\u0007\n\u0000\u0000"+ - "\u1210\u036c\u0001\u0000\u0000\u0000\u1211\u1212\u0007\u000e\u0000\u0000"+ - "\u1212\u1213\u0007\u0005\u0000\u0000\u1213\u1214\u0007\u0006\u0000\u0000"+ - "\u1214\u1215\u0007\u0006\u0000\u0000\u1215\u036e\u0001\u0000\u0000\u0000"+ - "\u1216\u1217\u0007\u000e\u0000\u0000\u1217\u1218\u0007\u0016\u0000\u0000"+ - "\u1218\u1219\u0007\r\u0000\u0000\u1219\u121a\u0007\r\u0000\u0000\u121a"+ - "\u121b\u0007\n\u0000\u0000\u121b\u121c\u0007\u0007\u0000\u0000\u121c\u121d"+ - "\u0007\u0010\u0000\u0000\u121d\u0370\u0001\u0000\u0000\u0000\u121e\u121f"+ - "\u0007\u0005\u0000\u0000\u121f\u1220\u0007\u0010\u0000\u0000\u1220\u1221"+ - "\u0007\u0010\u0000\u0000\u1221\u1222\u0007\u0005\u0000\u0000\u1222\u1223"+ - "\u0007\u000e\u0000\u0000\u1223\u1224\u0007\u0014\u0000\u0000\u1224\u0372"+ - "\u0001\u0000\u0000\u0000\u1225\u1226\u0007\f\u0000\u0000\u1226\u1227\u0007"+ - "\n\u0000\u0000\u1227\u1228\u0007\u0010\u0000\u0000\u1228\u1229\u0007\u0005"+ - "\u0000\u0000\u1229\u122a\u0007\u000e\u0000\u0000\u122a\u122b\u0007\u0014"+ - "\u0000\u0000\u122b\u0374\u0001\u0000\u0000\u0000\u122c\u122d\u0007\n\u0000"+ - "\u0000\u122d\u122e\u0007\u001a\u0000\u0000\u122e\u122f\u0007\u0018\u0000"+ - "\u0000\u122f\u1230\u0007\r\u0000\u0000\u1230\u1231\u0007\n\u0000\u0000"+ - "\u1231\u1232\u0007\t\u0000\u0000\u1232\u1233\u0007\t\u0000\u0000\u1233"+ - "\u1234\u0007\u0011\u0000\u0000\u1234\u1235\u0007\u0013\u0000\u0000\u1235"+ - "\u1236\u0007\u0007\u0000\u0000\u1236\u0376\u0001\u0000\u0000\u0000\u1237"+ - "\u1238\u0007\u0017\u0000\u0000\u1238\u1239\u0007\n\u0000\u0000\u1239\u123a"+ - "\u0007\u0007\u0000\u0000\u123a\u123b\u0007\n\u0000\u0000\u123b\u123c\u0007"+ - "\r\u0000\u0000\u123c\u123d\u0007\u0005\u0000\u0000\u123d\u123e\u0007\u0010"+ - "\u0000\u0000\u123e\u123f\u0007\n\u0000\u0000\u123f\u1240\u0007\f\u0000"+ - "\u0000\u1240\u0378\u0001\u0000\u0000\u0000\u1241\u1242\u0007\u0006\u0000"+ - "\u0000\u1242\u1243\u0007\u0013\u0000\u0000\u1243\u1244\u0007\u0017\u0000"+ - "\u0000\u1244\u1245\u0007\u0017\u0000\u0000\u1245\u1246\u0007\n\u0000\u0000"+ - "\u1246\u1247\u0007\f\u0000\u0000\u1247\u037a\u0001\u0000\u0000\u0000\u1248"+ - "\u1249\u0007\t\u0000\u0000\u1249\u124a\u0007\u0010\u0000\u0000\u124a\u124b"+ - "\u0007\u0013\u0000\u0000\u124b\u124c\u0007\r\u0000\u0000\u124c\u124d\u0007"+ - "\n\u0000\u0000\u124d\u124e\u0007\f\u0000\u0000\u124e\u037c\u0001\u0000"+ - "\u0000\u0000\u124f\u1250\u0007\u0011\u0000\u0000\u1250\u1251\u0007\u0007"+ - "\u0000\u0000\u1251\u1252\u0007\u000e\u0000\u0000\u1252\u1253\u0007\u0006"+ - "\u0000\u0000\u1253\u1254\u0007\u0016\u0000\u0000\u1254\u1255\u0007\f\u0000"+ - "\u0000\u1255\u1256\u0007\n\u0000\u0000\u1256\u037e\u0001\u0000\u0000\u0000"+ - "\u1257\u1258\u0007\r\u0000\u0000\u1258\u1259\u0007\u0013\u0000\u0000\u1259"+ - "\u125a\u0007\u0016\u0000\u0000\u125a\u125b\u0007\u0010\u0000\u0000\u125b"+ - "\u125c\u0007\u0011\u0000\u0000\u125c\u125d\u0007\u0007\u0000\u0000\u125d"+ - "\u125e\u0007\n\u0000\u0000\u125e\u0380\u0001\u0000\u0000\u0000\u125f\u1260"+ - "\u0007\u0010\u0000\u0000\u1260\u1261\u0007\r\u0000\u0000\u1261\u1262\u0007"+ - "\u0005\u0000\u0000\u1262\u1263\u0007\u0007\u0000\u0000\u1263\u1264\u0007"+ - "\t\u0000\u0000\u1264\u1265\u0007"; + "\u0007\t\u0000\u0000\u0e2d\u0e2e\u0007\u0010\u0000\u0000\u0e2e\u0e2f\u0007"+ + "\r\u0000\u0000\u0e2f\u0e30\u0007\u0011\u0000\u0000\u0e30\u0e31\u0007\u000e"+ + "\u0000\u0000\u0e31\u0e32\u0007\u0010\u0000\u0000\u0e32\u0278\u0001\u0000"+ + "\u0000\u0000\u0e33\u0e34\u0007\r\u0000\u0000\u0e34\u0e35\u0007\n\u0000"+ + "\u0000\u0e35\u0e36\u0007\u0010\u0000\u0000\u0e36\u0e37\u0007\u0016\u0000"+ + "\u0000\u0e37\u0e38\u0007\r\u0000\u0000\u0e38\u0e39\u0007\u0007\u0000\u0000"+ + "\u0e39\u0e3a\u0007\t\u0000\u0000\u0e3a\u027a\u0001\u0000\u0000\u0000\u0e3b"+ + "\u0e3c\u0007\r\u0000\u0000\u0e3c\u0e3d\u0007\n\u0000\u0000\u0e3d\u0e3e"+ + "\u0007\u001b\u0000\u0000\u0e3e\u0e3f\u0007\u0013\u0000\u0000\u0e3f\u0e40"+ + "\u0007\u0015\u0000\u0000\u0e40\u0e41\u0007\n\u0000\u0000\u0e41\u027c\u0001"+ + "\u0000\u0000\u0000\u0e42\u0e43\u0007\r\u0000\u0000\u0e43\u0e44\u0007\u0013"+ + "\u0000\u0000\u0e44\u0e45\u0007\u0006\u0000\u0000\u0e45\u0e46\u0007\n\u0000"+ + "\u0000\u0e46\u027e\u0001\u0000\u0000\u0000\u0e47\u0e48\u0007\r\u0000\u0000"+ + "\u0e48\u0e49\u0007\u0013\u0000\u0000\u0e49\u0e4a\u0007\u0006\u0000\u0000"+ + "\u0e4a\u0e4b\u0007\u0006\u0000\u0000\u0e4b\u0e4c\u0007\u0012\u0000\u0000"+ + "\u0e4c\u0e4d\u0007\u0005\u0000\u0000\u0e4d\u0e4e\u0007\u000e\u0000\u0000"+ + "\u0e4e\u0e4f\u0007\u0015\u0000\u0000\u0e4f\u0280\u0001\u0000\u0000\u0000"+ + "\u0e50\u0e51\u0007\r\u0000\u0000\u0e51\u0e52\u0007\u0013\u0000\u0000\u0e52"+ + "\u0e53\u0007\u001d\u0000\u0000\u0e53\u0e54\u0007\t\u0000\u0000\u0e54\u0282"+ + "\u0001\u0000\u0000\u0000\u0e55\u0e56\u0007\r\u0000\u0000\u0e56\u0e57\u0007"+ + "\u0016\u0000\u0000\u0e57\u0e58\u0007\u0006\u0000\u0000\u0e58\u0e59\u0007"+ + "\n\u0000\u0000\u0e59\u0284\u0001\u0000\u0000\u0000\u0e5a\u0e5b\u0007\t"+ + "\u0000\u0000\u0e5b\u0e5c\u0007\u0005\u0000\u0000\u0e5c\u0e5d\u0007\u001b"+ + "\u0000\u0000\u0e5d\u0e5e\u0007\n\u0000\u0000\u0e5e\u0e5f\u0007\u0018\u0000"+ + "\u0000\u0e5f\u0e60\u0007\u0013\u0000\u0000\u0e60\u0e61\u0007\u0011\u0000"+ + "\u0000\u0e61\u0e62\u0007\u0007\u0000\u0000\u0e62\u0e63\u0007\u0010\u0000"+ + "\u0000\u0e63\u0286\u0001\u0000\u0000\u0000\u0e64\u0e65\u0007\t\u0000\u0000"+ + "\u0e65\u0e66\u0007\u000e\u0000\u0000\u0e66\u0e67\u0007\u0014\u0000\u0000"+ + "\u0e67\u0e68\u0007\n\u0000\u0000\u0e68\u0e69\u0007\u000f\u0000\u0000\u0e69"+ + "\u0e6a\u0007\u0005\u0000\u0000\u0e6a\u0288\u0001\u0000\u0000\u0000\u0e6b"+ + "\u0e6c\u0007\t\u0000\u0000\u0e6c\u0e6d\u0007\u000e\u0000\u0000\u0e6d\u0e6e"+ + "\u0007\r\u0000\u0000\u0e6e\u0e6f\u0007\u0013\u0000\u0000\u0e6f\u0e70\u0007"+ + "\u0006\u0000\u0000\u0e70\u0e71\u0007\u0006\u0000\u0000\u0e71\u028a\u0001"+ + "\u0000\u0000\u0000\u0e72\u0e73\u0007\t\u0000\u0000\u0e73\u0e74\u0007\n"+ + "\u0000\u0000\u0e74\u0e75\u0007\u0005\u0000\u0000\u0e75\u0e76\u0007\r\u0000"+ + "\u0000\u0e76\u0e77\u0007\u000e\u0000\u0000\u0e77\u0e78\u0007\u0014\u0000"+ + "\u0000\u0e78\u028c\u0001\u0000\u0000\u0000\u0e79\u0e7a\u0007\t\u0000\u0000"+ + "\u0e7a\u0e7b\u0007\n\u0000\u0000\u0e7b\u0e7c\u0007\u000e\u0000\u0000\u0e7c"+ + "\u0e7d\u0007\u0013\u0000\u0000\u0e7d\u0e7e\u0007\u0007\u0000\u0000\u0e7e"+ + "\u0e7f\u0007\f\u0000\u0000\u0e7f\u028e\u0001\u0000\u0000\u0000\u0e80\u0e81"+ + "\u0007\t\u0000\u0000\u0e81\u0e82\u0007\n\u0000\u0000\u0e82\u0e83\u0007"+ + "\u000e\u0000\u0000\u0e83\u0e84\u0007\u0016\u0000\u0000\u0e84\u0e85\u0007"+ + "\r\u0000\u0000\u0e85\u0e86\u0007\u0011\u0000\u0000\u0e86\u0e87\u0007\u0010"+ + "\u0000\u0000\u0e87\u0e88\u0007\b\u0000\u0000\u0e88\u0290\u0001\u0000\u0000"+ + "\u0000\u0e89\u0e8a\u0007\t\u0000\u0000\u0e8a\u0e8b\u0007\n\u0000\u0000"+ + "\u0e8b\u0e8c\u0007\u001c\u0000\u0000\u0e8c\u0e8d\u0007\u0016\u0000\u0000"+ + "\u0e8d\u0e8e\u0007\n\u0000\u0000\u0e8e\u0e8f\u0007\u0007\u0000\u0000\u0e8f"+ + "\u0e90\u0007\u000e\u0000\u0000\u0e90\u0e91\u0007\n\u0000\u0000\u0e91\u0292"+ + "\u0001\u0000\u0000\u0000\u0e92\u0e93\u0007\t\u0000\u0000\u0e93\u0e94\u0007"+ + "\n\u0000\u0000\u0e94\u0e95\u0007\u001c\u0000\u0000\u0e95\u0e96\u0007\u0016"+ + "\u0000\u0000\u0e96\u0e97\u0007\n\u0000\u0000\u0e97\u0e98\u0007\u0007\u0000"+ + "\u0000\u0e98\u0e99\u0007\u000e\u0000\u0000\u0e99\u0e9a\u0007\n\u0000\u0000"+ + "\u0e9a\u0e9b\u0007\t\u0000\u0000\u0e9b\u0294\u0001\u0000\u0000\u0000\u0e9c"+ + "\u0e9d\u0007\t\u0000\u0000\u0e9d\u0e9e\u0007\n\u0000\u0000\u0e9e\u0e9f"+ + "\u0007\r\u0000\u0000\u0e9f\u0ea0\u0007\u0011\u0000\u0000\u0ea0\u0ea1\u0007"+ + "\u0005\u0000\u0000\u0ea1\u0ea2\u0007\u0006\u0000\u0000\u0ea2\u0ea3\u0007"+ + "\u0011\u0000\u0000\u0ea3\u0ea4\u0007\u000b\u0000\u0000\u0ea4\u0ea5\u0007"+ + "\u0005\u0000\u0000\u0ea5\u0ea6\u0007\u0012\u0000\u0000\u0ea6\u0ea7\u0007"+ + "\u0006\u0000\u0000\u0ea7\u0ea8\u0007\n\u0000\u0000\u0ea8\u0296\u0001\u0000"+ + "\u0000\u0000\u0ea9\u0eaa\u0007\t\u0000\u0000\u0eaa\u0eab\u0007\n\u0000"+ + "\u0000\u0eab\u0eac\u0007\r\u0000\u0000\u0eac\u0ead\u0007\u001b\u0000\u0000"+ + "\u0ead\u0eae\u0007\n\u0000\u0000\u0eae\u0eaf\u0007\r\u0000\u0000\u0eaf"+ + "\u0298\u0001\u0000\u0000\u0000\u0eb0\u0eb1\u0007\t\u0000\u0000\u0eb1\u0eb2"+ + "\u0007\n\u0000\u0000\u0eb2\u0eb3\u0007\t\u0000\u0000\u0eb3\u0eb4\u0007"+ + "\t\u0000\u0000\u0eb4\u0eb5\u0007\u0011\u0000\u0000\u0eb5\u0eb6\u0007\u0013"+ + "\u0000\u0000\u0eb6\u0eb7\u0007\u0007\u0000\u0000\u0eb7\u029a\u0001\u0000"+ + "\u0000\u0000\u0eb8\u0eb9\u0007\t\u0000\u0000\u0eb9\u0eba\u0007\n\u0000"+ + "\u0000\u0eba\u0ebb\u0007\u0010\u0000\u0000\u0ebb\u029c\u0001\u0000\u0000"+ + "\u0000\u0ebc\u0ebd\u0007\t\u0000\u0000\u0ebd\u0ebe\u0007\u0014\u0000\u0000"+ + "\u0ebe\u0ebf\u0007\u0005\u0000\u0000\u0ebf\u0ec0\u0007\r\u0000\u0000\u0ec0"+ + "\u0ec1\u0007\n\u0000\u0000\u0ec1\u029e\u0001\u0000\u0000\u0000\u0ec2\u0ec3"+ + "\u0007\t\u0000\u0000\u0ec3\u0ec4\u0007\u0014\u0000\u0000\u0ec4\u0ec5\u0007"+ + "\u0013\u0000\u0000\u0ec5\u0ec6\u0007\u001d\u0000\u0000\u0ec6\u02a0\u0001"+ + "\u0000\u0000\u0000\u0ec7\u0ec8\u0007\t\u0000\u0000\u0ec8\u0ec9\u0007\u0011"+ + "\u0000\u0000\u0ec9\u0eca\u0007\u000f\u0000\u0000\u0eca\u0ecb\u0007\u0018"+ + "\u0000\u0000\u0ecb\u0ecc\u0007\u0006\u0000\u0000\u0ecc\u0ecd\u0007\n\u0000"+ + "\u0000\u0ecd\u02a2\u0001\u0000\u0000\u0000\u0ece\u0ecf\u0007\t\u0000\u0000"+ + "\u0ecf\u0ed0\u0007\u0007\u0000\u0000\u0ed0\u0ed1\u0007\u0005\u0000\u0000"+ + "\u0ed1\u0ed2\u0007\u0018\u0000\u0000\u0ed2\u0ed3\u0007\t\u0000\u0000\u0ed3"+ + "\u0ed4\u0007\u0014\u0000\u0000\u0ed4\u0ed5\u0007\u0013\u0000\u0000\u0ed5"+ + "\u0ed6\u0007\u0010\u0000\u0000\u0ed6\u02a4\u0001\u0000\u0000\u0000\u0ed7"+ + "\u0ed8\u0007\t\u0000\u0000\u0ed8\u0ed9\u0007\u0010\u0000\u0000\u0ed9\u0eda"+ + "\u0007\u0005\u0000\u0000\u0eda\u0edb\u0007\u0012\u0000\u0000\u0edb\u0edc"+ + "\u0007\u0006\u0000\u0000\u0edc\u0edd\u0007\n\u0000\u0000\u0edd\u02a6\u0001"+ + "\u0000\u0000\u0000\u0ede\u0edf\u0007\t\u0000\u0000\u0edf\u0ee0\u0007\u0010"+ + "\u0000\u0000\u0ee0\u0ee1\u0007\u0005\u0000\u0000\u0ee1\u0ee2\u0007\u0007"+ + "\u0000\u0000\u0ee2\u0ee3\u0007\f\u0000\u0000\u0ee3\u0ee4\u0007\u0005\u0000"+ + "\u0000\u0ee4\u0ee5\u0007\u0006\u0000\u0000\u0ee5\u0ee6\u0007\u0013\u0000"+ + "\u0000\u0ee6\u0ee7\u0007\u0007\u0000\u0000\u0ee7\u0ee8\u0007\n\u0000\u0000"+ + "\u0ee8\u02a8\u0001\u0000\u0000\u0000\u0ee9\u0eea\u0007\t\u0000\u0000\u0eea"+ + "\u0eeb\u0007\u0010\u0000\u0000\u0eeb\u0eec\u0007\u0005\u0000\u0000\u0eec"+ + "\u0eed\u0007\r\u0000\u0000\u0eed\u0eee\u0007\u0010\u0000\u0000\u0eee\u02aa"+ + "\u0001\u0000\u0000\u0000\u0eef\u0ef0\u0007\t\u0000\u0000\u0ef0\u0ef1\u0007"+ + "\u0010\u0000\u0000\u0ef1\u0ef2\u0007\u0005\u0000\u0000\u0ef2\u0ef3\u0007"+ + "\u0010\u0000\u0000\u0ef3\u0ef4\u0007\n\u0000\u0000\u0ef4\u0ef5\u0007\u000f"+ + "\u0000\u0000\u0ef5\u0ef6\u0007\n\u0000\u0000\u0ef6\u0ef7\u0007\u0007\u0000"+ + "\u0000\u0ef7\u0ef8\u0007\u0010\u0000\u0000\u0ef8\u02ac\u0001\u0000\u0000"+ + "\u0000\u0ef9\u0efa\u0007\t\u0000\u0000\u0efa\u0efb\u0007\u0010\u0000\u0000"+ + "\u0efb\u0efc\u0007\u0005\u0000\u0000\u0efc\u0efd\u0007\u0010\u0000\u0000"+ + "\u0efd\u0efe\u0007\u0011\u0000\u0000\u0efe\u0eff\u0007\t\u0000\u0000\u0eff"+ + "\u0f00\u0007\u0010\u0000\u0000\u0f00\u0f01\u0007\u0011\u0000\u0000\u0f01"+ + "\u0f02\u0007\u000e\u0000\u0000\u0f02\u0f03\u0007\t\u0000\u0000\u0f03\u02ae"+ + "\u0001\u0000\u0000\u0000\u0f04\u0f05\u0007\t\u0000\u0000\u0f05\u0f06\u0007"+ + "\u0010\u0000\u0000\u0f06\u0f07\u0007\f\u0000\u0000\u0f07\u0f08\u0007\u0011"+ + "\u0000\u0000\u0f08\u0f09\u0007\u0007\u0000\u0000\u0f09\u02b0\u0001\u0000"+ + "\u0000\u0000\u0f0a\u0f0b\u0007\t\u0000\u0000\u0f0b\u0f0c\u0007\u0010\u0000"+ + "\u0000\u0f0c\u0f0d\u0007\f\u0000\u0000\u0f0d\u0f0e\u0007\u0013\u0000\u0000"+ + "\u0f0e\u0f0f\u0007\u0016\u0000\u0000\u0f0f\u0f10\u0007\u0010\u0000\u0000"+ + "\u0f10\u02b2\u0001\u0000\u0000\u0000\u0f11\u0f12\u0007\t\u0000\u0000\u0f12"+ + "\u0f13\u0007\u0010\u0000\u0000\u0f13\u0f14\u0007\u0013\u0000\u0000\u0f14"+ + "\u0f15\u0007\r\u0000\u0000\u0f15\u0f16\u0007\u0005\u0000\u0000\u0f16\u0f17"+ + "\u0007\u0017\u0000\u0000\u0f17\u0f18\u0007\n\u0000\u0000\u0f18\u02b4\u0001"+ + "\u0000\u0000\u0000\u0f19\u0f1a\u0007\t\u0000\u0000\u0f1a\u0f1b\u0007\u0010"+ + "\u0000\u0000\u0f1b\u0f1c\u0007\r\u0000\u0000\u0f1c\u0f1d\u0007\u0011\u0000"+ + "\u0000\u0f1d\u0f1e\u0007\u000e\u0000\u0000\u0f1e\u0f1f\u0007\u0010\u0000"+ + "\u0000\u0f1f\u02b6\u0001\u0000\u0000\u0000\u0f20\u0f21\u0007\t\u0000\u0000"+ + "\u0f21\u0f22\u0007\u0010\u0000\u0000\u0f22\u0f23\u0007\r\u0000\u0000\u0f23"+ + "\u0f24\u0007\u0011\u0000\u0000\u0f24\u0f25\u0007\u0018\u0000\u0000\u0f25"+ + "\u02b8\u0001\u0000\u0000\u0000\u0f26\u0f27\u0007\t\u0000\u0000\u0f27\u0f28"+ + "\u0007\b\u0000\u0000\u0f28\u0f29\u0007\t\u0000\u0000\u0f29\u0f2a\u0007"+ + "\u0011\u0000\u0000\u0f2a\u0f2b\u0007\f\u0000\u0000\u0f2b\u02ba\u0001\u0000"+ + "\u0000\u0000\u0f2c\u0f2d\u0007\t\u0000\u0000\u0f2d\u0f2e\u0007\b\u0000"+ + "\u0000\u0f2e\u0f2f\u0007\t\u0000\u0000\u0f2f\u0f30\u0007\u0010\u0000\u0000"+ + "\u0f30\u0f31\u0007\n\u0000\u0000\u0f31\u0f32\u0007\u000f\u0000\u0000\u0f32"+ + "\u02bc\u0001\u0000\u0000\u0000\u0f33\u0f34\u0007\u0010\u0000\u0000\u0f34"+ + "\u0f35\u0007\u0005\u0000\u0000\u0f35\u0f36\u0007\u0012\u0000\u0000\u0f36"+ + "\u0f37\u0007\u0006\u0000\u0000\u0f37\u0f38\u0007\n\u0000\u0000\u0f38\u0f39"+ + "\u0007\t\u0000\u0000\u0f39\u02be\u0001\u0000\u0000\u0000\u0f3a\u0f3b\u0007"+ + "\u0010\u0000\u0000\u0f3b\u0f3c\u0007\u0005\u0000\u0000\u0f3c\u0f3d\u0007"+ + "\u0012\u0000\u0000\u0f3d\u0f3e\u0007\u0006\u0000\u0000\u0f3e\u0f3f\u0007"+ + "\n\u0000\u0000\u0f3f\u0f40\u0007\t\u0000\u0000\u0f40\u0f41\u0007\u0018"+ + "\u0000\u0000\u0f41\u0f42\u0007\u0005\u0000\u0000\u0f42\u0f43\u0007\u000e"+ + "\u0000\u0000\u0f43\u0f44\u0007\n\u0000\u0000\u0f44\u02c0\u0001\u0000\u0000"+ + "\u0000\u0f45\u0f46\u0007\u0010\u0000\u0000\u0f46\u0f47\u0007\n\u0000\u0000"+ + "\u0f47\u0f48\u0007\u000f\u0000\u0000\u0f48\u0f49\u0007\u0018\u0000\u0000"+ + "\u0f49\u02c2\u0001\u0000\u0000\u0000\u0f4a\u0f4b\u0007\u0010\u0000\u0000"+ + "\u0f4b\u0f4c\u0007\n\u0000\u0000\u0f4c\u0f4d\u0007\u000f\u0000\u0000\u0f4d"+ + "\u0f4e\u0007\u0018\u0000\u0000\u0f4e\u0f4f\u0007\u0006\u0000\u0000\u0f4f"+ + "\u0f50\u0007\u0005\u0000\u0000\u0f50\u0f51\u0007\u0010\u0000\u0000\u0f51"+ + "\u0f52\u0007\n\u0000\u0000\u0f52\u02c4\u0001\u0000\u0000\u0000\u0f53\u0f54"+ + "\u0007\u0010\u0000\u0000\u0f54\u0f55\u0007\n\u0000\u0000\u0f55\u0f56\u0007"+ + "\u000f\u0000\u0000\u0f56\u0f57\u0007\u0018\u0000\u0000\u0f57\u0f58\u0007"+ + "\u0013\u0000\u0000\u0f58\u0f59\u0007\r\u0000\u0000\u0f59\u0f5a\u0007\u0005"+ + "\u0000\u0000\u0f5a\u0f5b\u0007\r\u0000\u0000\u0f5b\u0f5c\u0007\b\u0000"+ + "\u0000\u0f5c\u02c6\u0001\u0000\u0000\u0000\u0f5d\u0f5e\u0007\u0010\u0000"+ + "\u0000\u0f5e\u0f5f\u0007\n\u0000\u0000\u0f5f\u0f60\u0007\u001a\u0000\u0000"+ + "\u0f60\u0f61\u0007\u0010\u0000\u0000\u0f61\u02c8\u0001\u0000\u0000\u0000"+ + "\u0f62\u0f63\u0007\u0010\u0000\u0000\u0f63\u0f64\u0007\r\u0000\u0000\u0f64"+ + "\u0f65\u0007\u0005\u0000\u0000\u0f65\u0f66\u0007\u0007\u0000\u0000\u0f66"+ + "\u0f67\u0007\t\u0000\u0000\u0f67\u0f68\u0007\u0005\u0000\u0000\u0f68\u0f69"+ + "\u0007\u000e\u0000\u0000\u0f69\u0f6a\u0007\u0010\u0000\u0000\u0f6a\u0f6b"+ + "\u0007\u0011\u0000\u0000\u0f6b\u0f6c\u0007\u0013\u0000\u0000\u0f6c\u0f6d"+ + "\u0007\u0007\u0000\u0000\u0f6d\u02ca\u0001\u0000\u0000\u0000\u0f6e\u0f6f"+ + "\u0007\u0010\u0000\u0000\u0f6f\u0f70\u0007\r\u0000\u0000\u0f70\u0f71\u0007"+ + "\u0011\u0000\u0000\u0f71\u0f72\u0007\u0017\u0000\u0000\u0f72\u0f73\u0007"+ + "\u0017\u0000\u0000\u0f73\u0f74\u0007\n\u0000\u0000\u0f74\u0f75\u0007\r"+ + "\u0000\u0000\u0f75\u02cc\u0001\u0000\u0000\u0000\u0f76\u0f77\u0007\u0010"+ + "\u0000\u0000\u0f77\u0f78\u0007\r\u0000\u0000\u0f78\u0f79\u0007\u0016\u0000"+ + "\u0000\u0f79\u0f7a\u0007\u0007\u0000\u0000\u0f7a\u0f7b\u0007\u000e\u0000"+ + "\u0000\u0f7b\u0f7c\u0007\u0005\u0000\u0000\u0f7c\u0f7d\u0007\u0010\u0000"+ + "\u0000\u0f7d\u0f7e\u0007\n\u0000\u0000\u0f7e\u02ce\u0001\u0000\u0000\u0000"+ + "\u0f7f\u0f80\u0007\u0010\u0000\u0000\u0f80\u0f81\u0007\r\u0000\u0000\u0f81"+ + "\u0f82\u0007\u0016\u0000\u0000\u0f82\u0f83\u0007\t\u0000\u0000\u0f83\u0f84"+ + "\u0007\u0010\u0000\u0000\u0f84\u0f85\u0007\n\u0000\u0000\u0f85\u0f86\u0007"+ + "\f\u0000\u0000\u0f86\u02d0\u0001\u0000\u0000\u0000\u0f87\u0f88\u0007\u0010"+ + "\u0000\u0000\u0f88\u0f89\u0007\b\u0000\u0000\u0f89\u0f8a\u0007\u0018\u0000"+ + "\u0000\u0f8a\u0f8b\u0007\n\u0000\u0000\u0f8b\u02d2\u0001\u0000\u0000\u0000"+ + "\u0f8c\u0f8d\u0007\u0010\u0000\u0000\u0f8d\u0f8e\u0007\b\u0000\u0000\u0f8e"+ + "\u0f8f\u0007\u0018\u0000\u0000\u0f8f\u0f90\u0007\n\u0000\u0000\u0f90\u0f91"+ + "\u0007\t\u0000\u0000\u0f91\u02d4\u0001\u0000\u0000\u0000\u0f92\u0f93\u0007"+ + "\u0016\u0000\u0000\u0f93\u0f94\u0007\u0007\u0000\u0000\u0f94\u0f95\u0007"+ + "\u0012\u0000\u0000\u0f95\u0f96\u0007\u0013\u0000\u0000\u0f96\u0f97\u0007"+ + "\u0016\u0000\u0000\u0f97\u0f98\u0007\u0007\u0000\u0000\u0f98\u0f99\u0007"+ + "\f\u0000\u0000\u0f99\u0f9a\u0007\n\u0000\u0000\u0f9a\u0f9b\u0007\f\u0000"+ + "\u0000\u0f9b\u02d6\u0001\u0000\u0000\u0000\u0f9c\u0f9d\u0007\u0016\u0000"+ + "\u0000\u0f9d\u0f9e\u0007\u0007\u0000\u0000\u0f9e\u0f9f\u0007\u000e\u0000"+ + "\u0000\u0f9f\u0fa0\u0007\u0013\u0000\u0000\u0fa0\u0fa1\u0007\u000f\u0000"+ + "\u0000\u0fa1\u0fa2\u0007\u000f\u0000\u0000\u0fa2\u0fa3\u0007\u0011\u0000"+ + "\u0000\u0fa3\u0fa4\u0007\u0010\u0000\u0000\u0fa4\u0fa5\u0007\u0010\u0000"+ + "\u0000\u0fa5\u0fa6\u0007\n\u0000\u0000\u0fa6\u0fa7\u0007\f\u0000\u0000"+ + "\u0fa7\u02d8\u0001\u0000\u0000\u0000\u0fa8\u0fa9\u0007\u0016\u0000\u0000"+ + "\u0fa9\u0faa\u0007\u0007\u0000\u0000\u0faa\u0fab\u0007\n\u0000\u0000\u0fab"+ + "\u0fac\u0007\u0007\u0000\u0000\u0fac\u0fad\u0007\u000e\u0000\u0000\u0fad"+ + "\u0fae\u0007\r\u0000\u0000\u0fae\u0faf\u0007\b\u0000\u0000\u0faf\u0fb0"+ + "\u0007\u0018\u0000\u0000\u0fb0\u0fb1\u0007\u0010\u0000\u0000\u0fb1\u0fb2"+ + "\u0007\n\u0000\u0000\u0fb2\u0fb3\u0007\f\u0000\u0000\u0fb3\u02da\u0001"+ + "\u0000\u0000\u0000\u0fb4\u0fb5\u0007\u0016\u0000\u0000\u0fb5\u0fb6\u0007"+ + "\u0007\u0000\u0000\u0fb6\u0fb7\u0007\u0015\u0000\u0000\u0fb7\u0fb8\u0007"+ + "\u0007\u0000\u0000\u0fb8\u0fb9\u0007\u0013\u0000\u0000\u0fb9\u0fba\u0007"+ + "\u001d\u0000\u0000\u0fba\u0fbb\u0007\u0007\u0000\u0000\u0fbb\u02dc\u0001"+ + "\u0000\u0000\u0000\u0fbc\u0fbd\u0007\u0016\u0000\u0000\u0fbd\u0fbe\u0007"+ + "\u0007\u0000\u0000\u0fbe\u0fbf\u0007\u0006\u0000\u0000\u0fbf\u0fc0\u0007"+ + "\u0011\u0000\u0000\u0fc0\u0fc1\u0007\t\u0000\u0000\u0fc1\u0fc2\u0007\u0010"+ + "\u0000\u0000\u0fc2\u0fc3\u0007\n\u0000\u0000\u0fc3\u0fc4\u0007\u0007\u0000"+ + "\u0000\u0fc4\u02de\u0001\u0000\u0000\u0000\u0fc5\u0fc6\u0007\u0016\u0000"+ + "\u0000\u0fc6\u0fc7\u0007\u0007\u0000\u0000\u0fc7\u0fc8\u0007\u0006\u0000"+ + "\u0000\u0fc8\u0fc9\u0007\u0013\u0000\u0000\u0fc9\u0fca\u0007\u0017\u0000"+ + "\u0000\u0fca\u0fcb\u0007\u0017\u0000\u0000\u0fcb\u0fcc\u0007\n\u0000\u0000"+ + "\u0fcc\u0fcd\u0007\f\u0000\u0000\u0fcd\u02e0\u0001\u0000\u0000\u0000\u0fce"+ + "\u0fcf\u0007\u0016\u0000\u0000\u0fcf\u0fd0\u0007\u0007\u0000\u0000\u0fd0"+ + "\u0fd1\u0007\u0010\u0000\u0000\u0fd1\u0fd2\u0007\u0011\u0000\u0000\u0fd2"+ + "\u0fd3\u0007\u0006\u0000\u0000\u0fd3\u02e2\u0001\u0000\u0000\u0000\u0fd4"+ + "\u0fd5\u0007\u0016\u0000\u0000\u0fd5\u0fd6\u0007\u0018\u0000\u0000\u0fd6"+ + "\u0fd7\u0007\f\u0000\u0000\u0fd7\u0fd8\u0007\u0005\u0000\u0000\u0fd8\u0fd9"+ + "\u0007\u0010\u0000\u0000\u0fd9\u0fda\u0007\n\u0000\u0000\u0fda\u02e4\u0001"+ + "\u0000\u0000\u0000\u0fdb\u0fdc\u0007\u001b\u0000\u0000\u0fdc\u0fdd\u0007"+ + "\u0005\u0000\u0000\u0fdd\u0fde\u0007\u000e\u0000\u0000\u0fde\u0fdf\u0007"+ + "\u0016\u0000\u0000\u0fdf\u0fe0\u0007\u0016\u0000\u0000\u0fe0\u0fe1\u0007"+ + "\u000f\u0000\u0000\u0fe1\u02e6\u0001\u0000\u0000\u0000\u0fe2\u0fe3\u0007"+ + "\u001b\u0000\u0000\u0fe3\u0fe4\u0007\u0005\u0000\u0000\u0fe4\u0fe5\u0007"+ + "\u0006\u0000\u0000\u0fe5\u0fe6\u0007\u0011\u0000\u0000\u0fe6\u0fe7\u0007"+ + "\f\u0000\u0000\u0fe7\u02e8\u0001\u0000\u0000\u0000\u0fe8\u0fe9\u0007\u001b"+ + "\u0000\u0000\u0fe9\u0fea\u0007\u0005\u0000\u0000\u0fea\u0feb\u0007\u0006"+ + "\u0000\u0000\u0feb\u0fec\u0007\u0011\u0000\u0000\u0fec\u0fed\u0007\f\u0000"+ + "\u0000\u0fed\u0fee\u0007\u0005\u0000\u0000\u0fee\u0fef\u0007\u0010\u0000"+ + "\u0000\u0fef\u0ff0\u0007\n\u0000\u0000\u0ff0\u02ea\u0001\u0000\u0000\u0000"+ + "\u0ff1\u0ff2\u0007\u001b\u0000\u0000\u0ff2\u0ff3\u0007\u0005\u0000\u0000"+ + "\u0ff3\u0ff4\u0007\u0006\u0000\u0000\u0ff4\u0ff5\u0007\u0011\u0000\u0000"+ + "\u0ff5\u0ff6\u0007\f\u0000\u0000\u0ff6\u0ff7\u0007\u0005\u0000\u0000\u0ff7"+ + "\u0ff8\u0007\u0010\u0000\u0000\u0ff8\u0ff9\u0007\u0013\u0000\u0000\u0ff9"+ + "\u0ffa\u0007\r\u0000\u0000\u0ffa\u02ec\u0001\u0000\u0000\u0000\u0ffb\u0ffc"+ + "\u0007\u001b\u0000\u0000\u0ffc\u0ffd\u0007\u0005\u0000\u0000\u0ffd\u0ffe"+ + "\u0007\r\u0000\u0000\u0ffe\u0fff\u0007\b\u0000\u0000\u0fff\u1000\u0007"+ + "\u0011\u0000\u0000\u1000\u1001\u0007\u0007\u0000\u0000\u1001\u1002\u0007"+ + "\u0017\u0000\u0000\u1002\u02ee\u0001\u0000\u0000\u0000\u1003\u1004\u0007"+ + "\u001b\u0000\u0000\u1004\u1005\u0007\n\u0000\u0000\u1005\u1006\u0007\r"+ + "\u0000\u0000\u1006\u1007\u0007\t\u0000\u0000\u1007\u1008\u0007\u0011\u0000"+ + "\u0000\u1008\u1009\u0007\u0013\u0000\u0000\u1009\u100a\u0007\u0007\u0000"+ + "\u0000\u100a\u02f0\u0001\u0000\u0000\u0000\u100b\u100c\u0007\u001b\u0000"+ + "\u0000\u100c\u100d\u0007\u0011\u0000\u0000\u100d\u100e\u0007\n\u0000\u0000"+ + "\u100e\u100f\u0007\u001d\u0000\u0000\u100f\u02f2\u0001\u0000\u0000\u0000"+ + "\u1010\u1011\u0007\u001b\u0000\u0000\u1011\u1012\u0007\u0013\u0000\u0000"+ + "\u1012\u1013\u0007\u0006\u0000\u0000\u1013\u1014\u0007\u0005\u0000\u0000"+ + "\u1014\u1015\u0007\u0010\u0000\u0000\u1015\u1016\u0007\u0011\u0000\u0000"+ + "\u1016\u1017\u0007\u0006\u0000\u0000\u1017\u1018\u0007\n\u0000\u0000\u1018"+ + "\u02f4\u0001\u0000\u0000\u0000\u1019\u101a\u0007\u001d\u0000\u0000\u101a"+ + "\u101b\u0007\u0014\u0000\u0000\u101b\u101c\u0007\u0011\u0000\u0000\u101c"+ + "\u101d\u0007\u0010\u0000\u0000\u101d\u101e\u0007\n\u0000\u0000\u101e\u101f"+ + "\u0007\t\u0000\u0000\u101f\u1020\u0007\u0018\u0000\u0000\u1020\u1021\u0007"+ + "\u0005\u0000\u0000\u1021\u1022\u0007\u000e\u0000\u0000\u1022\u1023\u0007"+ + "\n\u0000\u0000\u1023\u02f6\u0001\u0000\u0000\u0000\u1024\u1025\u0007\u001d"+ + "\u0000\u0000\u1025\u1026\u0007\u0011\u0000\u0000\u1026\u1027\u0007\u0010"+ + "\u0000\u0000\u1027\u1028\u0007\u0014\u0000\u0000\u1028\u1029\u0007\u0013"+ + "\u0000\u0000\u1029\u102a\u0007\u0016\u0000\u0000\u102a\u102b\u0007\u0010"+ + "\u0000\u0000\u102b\u02f8\u0001\u0000\u0000\u0000\u102c\u102d\u0007\u001d"+ + "\u0000\u0000\u102d\u102e\u0007\u0013\u0000\u0000\u102e\u102f\u0007\r\u0000"+ + "\u0000\u102f\u1030\u0007\u0015\u0000\u0000\u1030\u02fa\u0001\u0000\u0000"+ + "\u0000\u1031\u1032\u0007\u001d\u0000\u0000\u1032\u1033\u0007\r\u0000\u0000"+ + "\u1033\u1034\u0007\u0005\u0000\u0000\u1034\u1035\u0007\u0018\u0000\u0000"+ + "\u1035\u1036\u0007\u0018\u0000\u0000\u1036\u1037\u0007\n\u0000\u0000\u1037"+ + "\u1038\u0007\r\u0000\u0000\u1038\u02fc\u0001\u0000\u0000\u0000\u1039\u103a"+ + "\u0007\u001d\u0000\u0000\u103a\u103b\u0007\r\u0000\u0000\u103b\u103c\u0007"+ + "\u0011\u0000\u0000\u103c\u103d\u0007\u0010\u0000\u0000\u103d\u103e\u0007"+ + "\n\u0000\u0000\u103e\u02fe\u0001\u0000\u0000\u0000\u103f\u1040\u0007\u001a"+ + "\u0000\u0000\u1040\u1041\u0007\u000f\u0000\u0000\u1041\u1042\u0007\u0006"+ + "\u0000\u0000\u1042\u0300\u0001\u0000\u0000\u0000\u1043\u1044\u0007\b\u0000"+ + "\u0000\u1044\u1045\u0007\n\u0000\u0000\u1045\u1046\u0007\u0005\u0000\u0000"+ + "\u1046\u1047\u0007\r\u0000\u0000\u1047\u0302\u0001\u0000\u0000\u0000\u1048"+ + "\u1049\u0007\b\u0000\u0000\u1049\u104a\u0007\n\u0000\u0000\u104a\u104b"+ + "\u0007\t\u0000\u0000\u104b\u0304\u0001\u0000\u0000\u0000\u104c\u104d\u0007"+ + "\u000b\u0000\u0000\u104d\u104e\u0007\u0013\u0000\u0000\u104e\u104f\u0007"+ + "\u0007\u0000\u0000\u104f\u1050\u0007\n\u0000\u0000\u1050\u0306\u0001\u0000"+ + "\u0000\u0000\u1051\u1052\u0007\u0012\u0000\u0000\u1052\u1053\u0007\n\u0000"+ + "\u0000\u1053\u1054\u0007\u0010\u0000\u0000\u1054\u1055\u0007\u001d\u0000"+ + "\u0000\u1055\u1056\u0007\n\u0000\u0000\u1056\u1057\u0007\n\u0000\u0000"+ + "\u1057\u1058\u0007\u0007\u0000\u0000\u1058\u0308\u0001\u0000\u0000\u0000"+ + "\u1059\u105a\u0007\u0012\u0000\u0000\u105a\u105b\u0007\u0011\u0000\u0000"+ + "\u105b\u105c\u0007\u0017\u0000\u0000\u105c\u105d\u0007\u0011\u0000\u0000"+ + "\u105d\u105e\u0007\u0007\u0000\u0000\u105e\u105f\u0007\u0010\u0000\u0000"+ + "\u105f\u030a\u0001\u0000\u0000\u0000\u1060\u1061\u0007\u0012\u0000\u0000"+ + "\u1061\u1062\u0007\u0011\u0000\u0000\u1062\u1063\u0007\u0010\u0000\u0000"+ + "\u1063\u030c\u0001\u0000\u0000\u0000\u1064\u1065\u0007\u0012\u0000\u0000"+ + "\u1065\u1066\u0007\u0013\u0000\u0000\u1066\u1067\u0007\u0013\u0000\u0000"+ + "\u1067\u1068\u0007\u0006\u0000\u0000\u1068\u1069\u0007\n\u0000\u0000\u1069"+ + "\u106a\u0007\u0005\u0000\u0000\u106a\u106b\u0007\u0007\u0000\u0000\u106b"+ + "\u030e\u0001\u0000\u0000\u0000\u106c\u106d\u0007\u000e\u0000\u0000\u106d"+ + "\u106e\u0007\u0014\u0000\u0000\u106e\u106f\u0007\u0005\u0000\u0000\u106f"+ + "\u1070\u0007\r\u0000\u0000\u1070\u0310\u0001\u0000\u0000\u0000\u1071\u1072"+ + "\u0007\u000e\u0000\u0000\u1072\u1073\u0007\u0014\u0000\u0000\u1073\u1074"+ + "\u0007\u0005\u0000\u0000\u1074\u1075\u0007\r\u0000\u0000\u1075\u1076\u0007"+ + "\u0005\u0000\u0000\u1076\u1077\u0007\u000e\u0000\u0000\u1077\u1078\u0007"+ + "\u0010\u0000\u0000\u1078\u1079\u0007\n\u0000\u0000\u1079\u107a\u0007\r"+ + "\u0000\u0000\u107a\u0312\u0001\u0000\u0000\u0000\u107b\u107c\u0007\u000e"+ + "\u0000\u0000\u107c\u107d\u0007\u0013\u0000\u0000\u107d\u107e\u0007\u0005"+ + "\u0000\u0000\u107e\u107f\u0007\u0006\u0000\u0000\u107f\u1080\u0007\n\u0000"+ + "\u0000\u1080\u1081\u0007\t\u0000\u0000\u1081\u1082\u0007\u000e\u0000\u0000"+ + "\u1082\u1083\u0007\n\u0000\u0000\u1083\u0314\u0001\u0000\u0000\u0000\u1084"+ + "\u1085\u0007\f\u0000\u0000\u1085\u1086\u0007\n\u0000\u0000\u1086\u1087"+ + "\u0007\u000e\u0000\u0000\u1087\u0316\u0001\u0000\u0000\u0000\u1088\u1089"+ + "\u0007\f\u0000\u0000\u1089\u108a\u0007\n\u0000\u0000\u108a\u108b\u0007"+ + "\u000e\u0000\u0000\u108b\u108c\u0007\u0011\u0000\u0000\u108c\u108d\u0007"+ + "\u000f\u0000\u0000\u108d\u108e\u0007\u0005\u0000\u0000\u108e\u108f\u0007"+ + "\u0006\u0000\u0000\u108f\u0318\u0001\u0000\u0000\u0000\u1090\u1091\u0007"+ + "\n\u0000\u0000\u1091\u1092\u0007\u001a\u0000\u0000\u1092\u1093\u0007\u0011"+ + "\u0000\u0000\u1093\u1094\u0007\t\u0000\u0000\u1094\u1095\u0007\u0010\u0000"+ + "\u0000\u1095\u1096\u0007\t\u0000\u0000\u1096\u031a\u0001\u0000\u0000\u0000"+ + "\u1097\u1098\u0007\n\u0000\u0000\u1098\u1099\u0007\u001a\u0000\u0000\u1099"+ + "\u109a\u0007\u0010\u0000\u0000\u109a\u109b\u0007\r\u0000\u0000\u109b\u109c"+ + "\u0007\u0005\u0000\u0000\u109c\u109d\u0007\u000e\u0000\u0000\u109d\u109e"+ + "\u0007\u0010\u0000\u0000\u109e\u031c\u0001\u0000\u0000\u0000\u109f\u10a0"+ + "\u0007\u0019\u0000\u0000\u10a0\u10a1\u0007\u0006\u0000\u0000\u10a1\u10a2"+ + "\u0007\u0013\u0000\u0000\u10a2\u10a3\u0007\u0005\u0000\u0000\u10a3\u10a4"+ + "\u0007\u0010\u0000\u0000\u10a4\u031e\u0001\u0000\u0000\u0000\u10a5\u10a6"+ + "\u0007\u0017\u0000\u0000\u10a6\u10a7\u0007\r\u0000\u0000\u10a7\u10a8\u0007"+ + "\n\u0000\u0000\u10a8\u10a9\u0007\u0005\u0000\u0000\u10a9\u10aa\u0007\u0010"+ + "\u0000\u0000\u10aa\u10ab\u0007\n\u0000\u0000\u10ab\u10ac\u0007\t\u0000"+ + "\u0000\u10ac\u10ad\u0007\u0010\u0000\u0000\u10ad\u0320\u0001\u0000\u0000"+ + "\u0000\u10ae\u10af\u0007\u0011\u0000\u0000\u10af\u10b0\u0007\u0007\u0000"+ + "\u0000\u10b0\u10b1\u0007\u0013\u0000\u0000\u10b1\u10b2\u0007\u0016\u0000"+ + "\u0000\u10b2\u10b3\u0007\u0010\u0000\u0000\u10b3\u0322\u0001\u0000\u0000"+ + "\u0000\u10b4\u10b5\u0007\u0011\u0000\u0000\u10b5\u10b6\u0007\u0007\u0000"+ + "\u0000\u10b6\u10b7\u0007\u0010\u0000\u0000\u10b7\u0324\u0001\u0000\u0000"+ + "\u0000\u10b8\u10b9\u0007\u0011\u0000\u0000\u10b9\u10ba\u0007\u0007\u0000"+ + "\u0000\u10ba\u10bb\u0007\u0010\u0000\u0000\u10bb\u10bc\u0007\n\u0000\u0000"+ + "\u10bc\u10bd\u0007\u0017\u0000\u0000\u10bd\u10be\u0007\n\u0000\u0000\u10be"+ + "\u10bf\u0007\r\u0000\u0000\u10bf\u0326\u0001\u0000\u0000\u0000\u10c0\u10c1"+ + "\u0007\u0011\u0000\u0000\u10c1\u10c2\u0007\u0007\u0000\u0000\u10c2\u10c3"+ + "\u0007\u0010\u0000\u0000\u10c3\u10c4\u0007\n\u0000\u0000\u10c4\u10c5\u0007"+ + "\r\u0000\u0000\u10c5\u10c6\u0007\u001b\u0000\u0000\u10c6\u10c7\u0007\u0005"+ + "\u0000\u0000\u10c7\u10c8\u0007\u0006\u0000\u0000\u10c8\u0328\u0001\u0000"+ + "\u0000\u0000\u10c9\u10ca\u0007\u0006\u0000\u0000\u10ca\u10cb\u0007\n\u0000"+ + "\u0000\u10cb\u10cc\u0007\u0005\u0000\u0000\u10cc\u10cd\u0007\t\u0000\u0000"+ + "\u10cd\u10ce\u0007\u0010\u0000\u0000\u10ce\u032a\u0001\u0000\u0000\u0000"+ + "\u10cf\u10d0\u0007\u0007\u0000\u0000\u10d0\u10d1\u0007\u0005\u0000\u0000"+ + "\u10d1\u10d2\u0007\u0010\u0000\u0000\u10d2\u10d3\u0007\u0011\u0000\u0000"+ + "\u10d3\u10d4\u0007\u0013\u0000\u0000\u10d4\u10d5\u0007\u0007\u0000\u0000"+ + "\u10d5\u10d6\u0007\u0005\u0000\u0000\u10d6\u10d7\u0007\u0006\u0000\u0000"+ + "\u10d7\u032c\u0001\u0000\u0000\u0000\u10d8\u10d9\u0007\u0007\u0000\u0000"+ + "\u10d9\u10da\u0007\u000e\u0000\u0000\u10da\u10db\u0007\u0014\u0000\u0000"+ + "\u10db\u10dc\u0007\u0005\u0000\u0000\u10dc\u10dd\u0007\r\u0000\u0000\u10dd"+ + "\u032e\u0001\u0000\u0000\u0000\u10de\u10df\u0007\u0007\u0000\u0000\u10df"+ + "\u10e0\u0007\u0013\u0000\u0000\u10e0\u10e1\u0007\u0007\u0000\u0000\u10e1"+ + "\u10e2\u0007\n\u0000\u0000\u10e2\u0330\u0001\u0000\u0000\u0000\u10e3\u10e4"+ + "\u0007\u0007\u0000\u0000\u10e4\u10e5\u0007\u0016\u0000\u0000\u10e5\u10e6"+ + "\u0007\u0006\u0000\u0000\u10e6\u10e7\u0007\u0006\u0000\u0000\u10e7\u10e8"+ + "\u0007\u0011\u0000\u0000\u10e8\u10e9\u0007\u0019\u0000\u0000\u10e9\u0332"+ + "\u0001\u0000\u0000\u0000\u10ea\u10eb\u0007\u0007\u0000\u0000\u10eb\u10ec"+ + "\u0007\u0016\u0000\u0000\u10ec\u10ed\u0007\u000f\u0000\u0000\u10ed\u10ee"+ + "\u0007\n\u0000\u0000\u10ee\u10ef\u0007\r\u0000\u0000\u10ef\u10f0\u0007"+ + "\u0011\u0000\u0000\u10f0\u10f1\u0007\u000e\u0000\u0000\u10f1\u0334\u0001"+ + "\u0000\u0000\u0000\u10f2\u10f3\u0007\u0013\u0000\u0000\u10f3\u10f4\u0007"+ + "\u001b\u0000\u0000\u10f4\u10f5\u0007\n\u0000\u0000\u10f5\u10f6\u0007\r"+ + "\u0000\u0000\u10f6\u10f7\u0007\u0006\u0000\u0000\u10f7\u10f8\u0007\u0005"+ + "\u0000\u0000\u10f8\u10f9\u0007\b\u0000\u0000\u10f9\u0336\u0001\u0000\u0000"+ + "\u0000\u10fa\u10fb\u0007\u0018\u0000\u0000\u10fb\u10fc\u0007\u0013\u0000"+ + "\u0000\u10fc\u10fd\u0007\t\u0000\u0000\u10fd\u10fe\u0007\u0011\u0000\u0000"+ + "\u10fe\u10ff\u0007\u0010\u0000\u0000\u10ff\u1100\u0007\u0011\u0000\u0000"+ + "\u1100\u1101\u0007\u0013\u0000\u0000\u1101\u1102\u0007\u0007\u0000\u0000"+ + "\u1102\u0338\u0001\u0000\u0000\u0000\u1103\u1104\u0007\u0018\u0000\u0000"+ + "\u1104\u1105\u0007\r\u0000\u0000\u1105\u1106\u0007\n\u0000\u0000\u1106"+ + "\u1107\u0007\u000e\u0000\u0000\u1107\u1108\u0007\u0011\u0000\u0000\u1108"+ + "\u1109\u0007\t\u0000\u0000\u1109\u110a\u0007\u0011\u0000\u0000\u110a\u110b"+ + "\u0007\u0013\u0000\u0000\u110b\u110c\u0007\u0007\u0000\u0000\u110c\u033a"+ + "\u0001\u0000\u0000\u0000\u110d\u110e\u0007\r\u0000\u0000\u110e\u110f\u0007"+ + "\n\u0000\u0000\u110f\u1110\u0007\u0005\u0000\u0000\u1110\u1111\u0007\u0006"+ + "\u0000\u0000\u1111\u033c\u0001\u0000\u0000\u0000\u1112\u1113\u0007\r\u0000"+ + "\u0000\u1113\u1114\u0007\u0013\u0000\u0000\u1114\u1115\u0007\u001d\u0000"+ + "\u0000\u1115\u033e\u0001\u0000\u0000\u0000\u1116\u1117\u0007\t\u0000\u0000"+ + "\u1117\u1118\u0007\n\u0000\u0000\u1118\u1119\u0007\u0010\u0000\u0000\u1119"+ + "\u111a\u0007\u0013\u0000\u0000\u111a\u111b\u0007\u0019\u0000\u0000\u111b"+ + "\u0340\u0001\u0000\u0000\u0000\u111c\u111d\u0007\t\u0000\u0000\u111d\u111e"+ + "\u0007\u000f\u0000\u0000\u111e\u111f\u0007\u0005\u0000\u0000\u111f\u1120"+ + "\u0007\u0006\u0000\u0000\u1120\u1121\u0007\u0006\u0000\u0000\u1121\u1122"+ + "\u0007\u0011\u0000\u0000\u1122\u1123\u0007\u0007\u0000\u0000\u1123\u1124"+ + "\u0007\u0010\u0000\u0000\u1124\u0342\u0001\u0000\u0000\u0000\u1125\u1126"+ + "\u0007\t\u0000\u0000\u1126\u1127\u0007\u0016\u0000\u0000\u1127\u1128\u0007"+ + "\u0012\u0000\u0000\u1128\u1129\u0007\t\u0000\u0000\u1129\u112a\u0007\u0010"+ + "\u0000\u0000\u112a\u112b\u0007\r\u0000\u0000\u112b\u112c\u0007\u0011\u0000"+ + "\u0000\u112c\u112d\u0007\u0007\u0000\u0000\u112d\u112e\u0007\u0017\u0000"+ + "\u0000\u112e\u0344\u0001\u0000\u0000\u0000\u112f\u1130\u0007\u0010\u0000"+ + "\u0000\u1130\u1131\u0007\u0011\u0000\u0000\u1131\u1132\u0007\u000f\u0000"+ + "\u0000\u1132\u1133\u0007\n\u0000\u0000\u1133\u0346\u0001\u0000\u0000\u0000"+ + "\u1134\u1135\u0007\u0010\u0000\u0000\u1135\u1136\u0007\u0011\u0000\u0000"+ + "\u1136\u1137\u0007\u000f\u0000\u0000\u1137\u1138\u0007\n\u0000\u0000\u1138"+ + "\u1139\u0007\t\u0000\u0000\u1139\u113a\u0007\u0010\u0000\u0000\u113a\u113b"+ + "\u0007\u0005\u0000\u0000\u113b\u113c\u0007\u000f\u0000\u0000\u113c\u113d"+ + "\u0007\u0018\u0000\u0000\u113d\u0348\u0001\u0000\u0000\u0000\u113e\u113f"+ + "\u0007\u0010\u0000\u0000\u113f\u1140\u0007\r\u0000\u0000\u1140\u1141\u0007"+ + "\n\u0000\u0000\u1141\u1142\u0007\u0005\u0000\u0000\u1142\u1143\u0007\u0010"+ + "\u0000\u0000\u1143\u034a\u0001\u0000\u0000\u0000\u1144\u1145\u0007\u0010"+ + "\u0000\u0000\u1145\u1146\u0007\r\u0000\u0000\u1146\u1147\u0007\u0011\u0000"+ + "\u0000\u1147\u1148\u0007\u000f\u0000\u0000\u1148\u034c\u0001\u0000\u0000"+ + "\u0000\u1149\u114a\u0007\u001b\u0000\u0000\u114a\u114b\u0007\u0005\u0000"+ + "\u0000\u114b\u114c\u0007\u0006\u0000\u0000\u114c\u114d\u0007\u0016\u0000"+ + "\u0000\u114d\u114e\u0007\n\u0000\u0000\u114e\u114f\u0007\t\u0000\u0000"+ + "\u114f\u034e\u0001\u0000\u0000\u0000\u1150\u1151\u0007\u001b\u0000\u0000"+ + "\u1151\u1152\u0007\u0005\u0000\u0000\u1152\u1153\u0007\r\u0000\u0000\u1153"+ + "\u1154\u0007\u000e\u0000\u0000\u1154\u1155\u0007\u0014\u0000\u0000\u1155"+ + "\u1156\u0007\u0005\u0000\u0000\u1156\u1157\u0007\r\u0000\u0000\u1157\u0350"+ + "\u0001\u0000\u0000\u0000\u1158\u1159\u0007\u001a\u0000\u0000\u1159\u115a"+ + "\u0007\u000f\u0000\u0000\u115a\u115b\u0007\u0006\u0000\u0000\u115b\u115c"+ + "\u0007\u0005\u0000\u0000\u115c\u115d\u0007\u0010\u0000\u0000\u115d\u115e"+ + "\u0007\u0010\u0000\u0000\u115e\u115f\u0007\r\u0000\u0000\u115f\u1160\u0007"+ + "\u0011\u0000\u0000\u1160\u1161\u0007\u0012\u0000\u0000\u1161\u1162\u0007"+ + "\u0016\u0000\u0000\u1162\u1163\u0007\u0010\u0000\u0000\u1163\u1164\u0007"+ + "\n\u0000\u0000\u1164\u1165\u0007\t\u0000\u0000\u1165\u0352\u0001\u0000"+ + "\u0000\u0000\u1166\u1167\u0007\u001a\u0000\u0000\u1167\u1168\u0007\u000f"+ + "\u0000\u0000\u1168\u1169\u0007\u0006\u0000\u0000\u1169\u116a\u0007\u000e"+ + "\u0000\u0000\u116a\u116b\u0007\u0013\u0000\u0000\u116b\u116c\u0007\u000f"+ + "\u0000\u0000\u116c\u116d\u0007\u000f\u0000\u0000\u116d\u116e\u0007\n\u0000"+ + "\u0000\u116e\u116f\u0007\u0007\u0000\u0000\u116f\u1170\u0007\u0010\u0000"+ + "\u0000\u1170\u0354\u0001\u0000\u0000\u0000\u1171\u1172\u0007\u001a\u0000"+ + "\u0000\u1172\u1173\u0007\u000f\u0000\u0000\u1173\u1174\u0007\u0006\u0000"+ + "\u0000\u1174\u1175\u0007\u0005\u0000\u0000\u1175\u1176\u0007\u0017\u0000"+ + "\u0000\u1176\u1177\u0007\u0017\u0000\u0000\u1177\u0356\u0001\u0000\u0000"+ + "\u0000\u1178\u1179\u0007\u001a\u0000\u0000\u1179\u117a\u0007\u000f\u0000"+ + "\u0000\u117a\u117b\u0007\u0006\u0000\u0000\u117b\u117c\u0005_\u0000\u0000"+ + "\u117c\u117d\u0007\u0011\u0000\u0000\u117d\u117e\u0007\t\u0000\u0000\u117e"+ + "\u117f\u0005_\u0000\u0000\u117f\u1180\u0007\u001d\u0000\u0000\u1180\u1181"+ + "\u0007\n\u0000\u0000\u1181\u1182\u0007\u0006\u0000\u0000\u1182\u1183\u0007"+ + "\u0006\u0000\u0000\u1183\u1184\u0005_\u0000\u0000\u1184\u1185\u0007\u0019"+ + "\u0000\u0000\u1185\u1186\u0007\u0013\u0000\u0000\u1186\u1187\u0007\r\u0000"+ + "\u0000\u1187\u1188\u0007\u000f\u0000\u0000\u1188\u1189\u0007\n\u0000\u0000"+ + "\u1189\u118a\u0007\f\u0000\u0000\u118a\u0358\u0001\u0000\u0000\u0000\u118b"+ + "\u118c\u0007\u001a\u0000\u0000\u118c\u118d\u0007\u000f\u0000\u0000\u118d"+ + "\u118e\u0007\u0006\u0000\u0000\u118e\u118f\u0005_\u0000\u0000\u118f\u1190"+ + "\u0007\u0011\u0000\u0000\u1190\u1191\u0007\t\u0000\u0000\u1191\u1192\u0005"+ + "_\u0000\u0000\u1192\u1193\u0007\u001d\u0000\u0000\u1193\u1194\u0007\n"+ + "\u0000\u0000\u1194\u1195\u0007\u0006\u0000\u0000\u1195\u1196\u0007\u0006"+ + "\u0000\u0000\u1196\u1197\u0005_\u0000\u0000\u1197\u1198\u0007\u0019\u0000"+ + "\u0000\u1198\u1199\u0007\u0013\u0000\u0000\u1199\u119a\u0007\r\u0000\u0000"+ + "\u119a\u119b\u0007\u000f\u0000\u0000\u119b\u119c\u0007\n\u0000\u0000\u119c"+ + "\u119d\u0007\f\u0000\u0000\u119d\u119e\u0005_\u0000\u0000\u119e\u119f"+ + "\u0007\f\u0000\u0000\u119f\u11a0\u0007\u0013\u0000\u0000\u11a0\u11a1\u0007"+ + "\u000e\u0000\u0000\u11a1\u11a2\u0007\u0016\u0000\u0000\u11a2\u11a3\u0007"+ + "\u000f\u0000\u0000\u11a3\u11a4\u0007\n\u0000\u0000\u11a4\u11a5\u0007\u0007"+ + "\u0000\u0000\u11a5\u11a6\u0007\u0010\u0000\u0000\u11a6\u035a\u0001\u0000"+ + "\u0000\u0000\u11a7\u11a8\u0007\u001a\u0000\u0000\u11a8\u11a9\u0007\u000f"+ + "\u0000\u0000\u11a9\u11aa\u0007\u0006\u0000\u0000\u11aa\u11ab\u0005_\u0000"+ + "\u0000\u11ab\u11ac\u0007\u0011\u0000\u0000\u11ac\u11ad\u0007\t\u0000\u0000"+ + "\u11ad\u11ae\u0005_\u0000\u0000\u11ae\u11af\u0007\u001d\u0000\u0000\u11af"+ + "\u11b0\u0007\n\u0000\u0000\u11b0\u11b1\u0007\u0006\u0000\u0000\u11b1\u11b2"+ + "\u0007\u0006\u0000\u0000\u11b2\u11b3\u0005_\u0000\u0000\u11b3\u11b4\u0007"+ + "\u0019\u0000\u0000\u11b4\u11b5\u0007\u0013\u0000\u0000\u11b5\u11b6\u0007"+ + "\r\u0000\u0000\u11b6\u11b7\u0007\u000f\u0000\u0000\u11b7\u11b8\u0007\n"+ + "\u0000\u0000\u11b8\u11b9\u0007\f\u0000\u0000\u11b9\u11ba\u0005_\u0000"+ + "\u0000\u11ba\u11bb\u0007\u000e\u0000\u0000\u11bb\u11bc\u0007\u0013\u0000"+ + "\u0000\u11bc\u11bd\u0007\u0007\u0000\u0000\u11bd\u11be\u0007\u0010\u0000"+ + "\u0000\u11be\u11bf\u0007\n\u0000\u0000\u11bf\u11c0\u0007\u0007\u0000\u0000"+ + "\u11c0\u11c1\u0007\u0010\u0000\u0000\u11c1\u035c\u0001\u0000\u0000\u0000"+ + "\u11c2\u11c3\u0007\u001a\u0000\u0000\u11c3\u11c4\u0007\u0018\u0000\u0000"+ + "\u11c4\u11c5\u0007\u0005\u0000\u0000\u11c5\u11c6\u0007\u0010\u0000\u0000"+ + "\u11c6\u11c7\u0007\u0014\u0000\u0000\u11c7\u035e\u0001\u0000\u0000\u0000"+ + "\u11c8\u11c9\u0007\u001a\u0000\u0000\u11c9\u11ca\u0007\u0018\u0000\u0000"+ + "\u11ca\u11cb\u0007\u0005\u0000\u0000\u11cb\u11cc\u0007\u0010\u0000\u0000"+ + "\u11cc\u11cd\u0007\u0014\u0000\u0000\u11cd\u11ce\u0005_\u0000\u0000\u11ce"+ + "\u11cf\u0007\n\u0000\u0000\u11cf\u11d0\u0007\u001a\u0000\u0000\u11d0\u11d1"+ + "\u0007\u0011\u0000\u0000\u11d1\u11d2\u0007\t\u0000\u0000\u11d2\u11d3\u0007"+ + "\u0010\u0000\u0000\u11d3\u11d4\u0007\t\u0000\u0000\u11d4\u0360\u0001\u0000"+ + "\u0000\u0000\u11d5\u11d6\u0007\u001a\u0000\u0000\u11d6\u11d7\u0007\u000f"+ + "\u0000\u0000\u11d7\u11d8\u0007\u0006\u0000\u0000\u11d8\u11d9\u0007\u000e"+ + "\u0000\u0000\u11d9\u11da\u0007\u0013\u0000\u0000\u11da\u11db\u0007\u0007"+ + "\u0000\u0000\u11db\u11dc\u0007\u000e\u0000\u0000\u11dc\u11dd\u0007\u0005"+ + "\u0000\u0000\u11dd\u11de\u0007\u0010\u0000\u0000\u11de\u0362\u0001\u0000"+ + "\u0000\u0000\u11df\u11e0\u0007\u001a\u0000\u0000\u11e0\u11e1\u0007\u000f"+ + "\u0000\u0000\u11e1\u11e2\u0007\u0006\u0000\u0000\u11e2\u11e3\u0007\n\u0000"+ + "\u0000\u11e3\u11e4\u0007\u0006\u0000\u0000\u11e4\u11e5\u0007\n\u0000\u0000"+ + "\u11e5\u11e6\u0007\u000f\u0000\u0000\u11e6\u11e7\u0007\n\u0000\u0000\u11e7"+ + "\u11e8\u0007\u0007\u0000\u0000\u11e8\u11e9\u0007\u0010\u0000\u0000\u11e9"+ + "\u0364\u0001\u0000\u0000\u0000\u11ea\u11eb\u0007\u001a\u0000\u0000\u11eb"+ + "\u11ec\u0007\u000f\u0000\u0000\u11ec\u11ed\u0007\u0006\u0000\u0000\u11ed"+ + "\u11ee\u0007\n\u0000\u0000\u11ee\u11ef\u0007\u001a\u0000\u0000\u11ef\u11f0"+ + "\u0007\u0011\u0000\u0000\u11f0\u11f1\u0007\t\u0000\u0000\u11f1\u11f2\u0007"+ + "\u0010\u0000\u0000\u11f2\u11f3\u0007\t\u0000\u0000\u11f3\u0366\u0001\u0000"+ + "\u0000\u0000\u11f4\u11f5\u0007\u001a\u0000\u0000\u11f5\u11f6\u0007\u000f"+ + "\u0000\u0000\u11f6\u11f7\u0007\u0006\u0000\u0000\u11f7\u11f8\u0007\u0019"+ + "\u0000\u0000\u11f8\u11f9\u0007\u0013\u0000\u0000\u11f9\u11fa\u0007\r\u0000"+ + "\u0000\u11fa\u11fb\u0007\n\u0000\u0000\u11fb\u11fc\u0007\t\u0000\u0000"+ + "\u11fc\u11fd\u0007\u0010\u0000\u0000\u11fd\u0368\u0001\u0000\u0000\u0000"+ + "\u11fe\u11ff\u0007\u001a\u0000\u0000\u11ff\u1200\u0007\u000f\u0000\u0000"+ + "\u1200\u1201\u0007\u0006\u0000\u0000\u1201\u1202\u0007\u0018\u0000\u0000"+ + "\u1202\u1203\u0007\u0005\u0000\u0000\u1203\u1204\u0007\r\u0000\u0000\u1204"+ + "\u1205\u0007\t\u0000\u0000\u1205\u1206\u0007\n\u0000\u0000\u1206\u036a"+ + "\u0001\u0000\u0000\u0000\u1207\u1208\u0007\u001a\u0000\u0000\u1208\u1209"+ + "\u0007\u000f\u0000\u0000\u1209\u120a\u0007\u0006\u0000\u0000\u120a\u120b"+ + "\u0007\u0018\u0000\u0000\u120b\u120c\u0007\u0011\u0000\u0000\u120c\u036c"+ + "\u0001\u0000\u0000\u0000\u120d\u120e\u0007\u001a\u0000\u0000\u120e\u120f"+ + "\u0007\u000f\u0000\u0000\u120f\u1210\u0007\u0006\u0000\u0000\u1210\u1211"+ + "\u0007\r\u0000\u0000\u1211\u1212\u0007\u0013\u0000\u0000\u1212\u1213\u0007"+ + "\u0013\u0000\u0000\u1213\u1214\u0007\u0010\u0000\u0000\u1214\u036e\u0001"+ + "\u0000\u0000\u0000\u1215\u1216\u0007\u001a\u0000\u0000\u1216\u1217\u0007"+ + "\u000f\u0000\u0000\u1217\u1218\u0007\u0006\u0000\u0000\u1218\u1219\u0007"+ + "\t\u0000\u0000\u1219\u121a\u0007\n\u0000\u0000\u121a\u121b\u0007\r\u0000"+ + "\u0000\u121b\u121c\u0007\u0011\u0000\u0000\u121c\u121d\u0007\u0005\u0000"+ + "\u0000\u121d\u121e\u0007\u0006\u0000\u0000\u121e\u121f\u0007\u0011\u0000"+ + "\u0000\u121f\u1220\u0007\u000b\u0000\u0000\u1220\u1221\u0007\n\u0000\u0000"+ + "\u1221\u0370\u0001\u0000\u0000\u0000\u1222\u1223\u0007\u000e\u0000\u0000"+ + "\u1223\u1224\u0007\u0005\u0000\u0000\u1224\u1225\u0007\u0006\u0000\u0000"+ + "\u1225\u1226\u0007\u0006\u0000\u0000\u1226\u0372\u0001\u0000\u0000\u0000"+ + "\u1227\u1228\u0007\u000e\u0000\u0000\u1228\u1229\u0007\u0016\u0000\u0000"+ + "\u1229\u122a\u0007\r\u0000\u0000\u122a\u122b\u0007\r\u0000\u0000\u122b"+ + "\u122c\u0007\n\u0000\u0000\u122c\u122d\u0007\u0007\u0000\u0000\u122d\u122e"+ + "\u0007\u0010\u0000\u0000\u122e\u0374\u0001\u0000\u0000\u0000\u122f\u1230"+ + "\u0007\u0005\u0000\u0000\u1230\u1231\u0007\u0010\u0000\u0000\u1231\u1232"+ + "\u0007\u0010\u0000\u0000\u1232\u1233\u0007\u0005\u0000\u0000\u1233\u1234"+ + "\u0007\u000e\u0000\u0000\u1234\u1235\u0007\u0014\u0000\u0000\u1235\u0376"+ + "\u0001\u0000\u0000\u0000\u1236\u1237\u0007\f\u0000\u0000\u1237\u1238\u0007"+ + "\n\u0000\u0000\u1238\u1239\u0007\u0010\u0000\u0000\u1239\u123a\u0007\u0005"+ + "\u0000\u0000\u123a\u123b\u0007\u000e\u0000\u0000\u123b\u123c\u0007\u0014"+ + "\u0000\u0000\u123c\u0378\u0001\u0000\u0000\u0000\u123d\u123e\u0007\n\u0000"+ + "\u0000\u123e\u123f\u0007\u001a\u0000\u0000\u123f\u1240\u0007\u0018\u0000"+ + "\u0000\u1240\u1241\u0007\r\u0000\u0000\u1241\u1242\u0007\n\u0000\u0000"+ + "\u1242\u1243\u0007\t\u0000\u0000\u1243\u1244\u0007\t\u0000\u0000\u1244"+ + "\u1245\u0007\u0011\u0000\u0000\u1245\u1246\u0007\u0013\u0000\u0000\u1246"+ + "\u1247\u0007\u0007\u0000\u0000\u1247\u037a\u0001\u0000\u0000\u0000\u1248"+ + "\u1249\u0007\u0017\u0000\u0000\u1249\u124a\u0007\n\u0000\u0000\u124a\u124b"+ + "\u0007\u0007\u0000\u0000\u124b\u124c\u0007\n\u0000\u0000\u124c\u124d\u0007"+ + "\r\u0000\u0000\u124d\u124e\u0007\u0005\u0000\u0000\u124e\u124f\u0007\u0010"+ + "\u0000\u0000\u124f\u1250\u0007\n\u0000\u0000\u1250\u1251\u0007\f\u0000"+ + "\u0000\u1251\u037c\u0001\u0000\u0000\u0000\u1252\u1253\u0007\u0006\u0000"+ + "\u0000\u1253\u1254\u0007\u0013\u0000\u0000\u1254\u1255\u0007\u0017\u0000"+ + "\u0000\u1255\u1256\u0007\u0017\u0000\u0000\u1256\u1257\u0007\n\u0000\u0000"+ + "\u1257\u1258\u0007\f\u0000\u0000\u1258\u037e\u0001\u0000\u0000\u0000\u1259"+ + "\u125a\u0007\t\u0000\u0000\u125a\u125b\u0007\u0010\u0000\u0000\u125b\u125c"+ + "\u0007\u0013\u0000\u0000\u125c\u125d\u0007\r\u0000\u0000\u125d\u125e\u0007"+ + "\n\u0000\u0000\u125e"; private static final String _serializedATNSegment2 = - "\u0019\u0000\u0000\u1265\u1266\u0007\u0013\u0000\u0000\u1266\u1267\u0007"+ - "\r\u0000\u0000\u1267\u1268\u0007\u000f\u0000\u0000\u1268\u0382\u0001\u0000"+ - "\u0000\u0000\u1269\u126a\u0007\u0011\u0000\u0000\u126a\u126b\u0007\u000f"+ - "\u0000\u0000\u126b\u126c\u0007\u0018\u0000\u0000\u126c\u126d\u0007\u0013"+ - "\u0000\u0000\u126d\u126e\u0007\r\u0000\u0000\u126e\u126f\u0007\u0010\u0000"+ - "\u0000\u126f\u0384\u0001\u0000\u0000\u0000\u1270\u1271\u0007\u0018\u0000"+ - "\u0000\u1271\u1272\u0007\u0013\u0000\u0000\u1272\u1273\u0007\u0006\u0000"+ - "\u0000\u1273\u1274\u0007\u0011\u0000\u0000\u1274\u1275\u0007\u000e\u0000"+ - "\u0000\u1275\u1276\u0007\b\u0000\u0000\u1276\u0386\u0001\u0000\u0000\u0000"+ - "\u1277\u1278\u0007\u000f\u0000\u0000\u1278\u1279\u0007\n\u0000\u0000\u1279"+ - "\u127a\u0007\u0010\u0000\u0000\u127a\u127b\u0007\u0014\u0000\u0000\u127b"+ - "\u127c\u0007\u0013\u0000\u0000\u127c\u127d\u0007\f\u0000\u0000\u127d\u0388"+ - "\u0001\u0000\u0000\u0000\u127e\u127f\u0007\r\u0000\u0000\u127f\u1280\u0007"+ - "\n\u0000\u0000\u1280\u1281\u0007\u0019\u0000\u0000\u1281\u1282\u0007\n"+ - "\u0000\u0000\u1282\u1283\u0007\r\u0000\u0000\u1283\u1284\u0007\n\u0000"+ - "\u0000\u1284\u1285\u0007\u0007\u0000\u0000\u1285\u1286\u0007\u000e\u0000"+ - "\u0000\u1286\u1287\u0007\u0011\u0000\u0000\u1287\u1288\u0007\u0007\u0000"+ - "\u0000\u1288\u1289\u0007\u0017\u0000\u0000\u1289\u038a\u0001\u0000\u0000"+ - "\u0000\u128a\u128b\u0007\u0007\u0000\u0000\u128b\u128c\u0007\n\u0000\u0000"+ - "\u128c\u128d\u0007\u001d\u0000\u0000\u128d\u038c\u0001\u0000\u0000\u0000"+ - "\u128e\u128f\u0007\u0013\u0000\u0000\u128f\u1290\u0007\u0006\u0000\u0000"+ - "\u1290\u1291\u0007\f\u0000\u0000\u1291\u038e\u0001\u0000\u0000\u0000\u1292"+ - "\u1293\u0007\u001b\u0000\u0000\u1293\u1294\u0007\u0005\u0000\u0000\u1294"+ - "\u1295\u0007\u0006\u0000\u0000\u1295\u1296\u0007\u0016\u0000\u0000\u1296"+ - "\u1297\u0007\n\u0000\u0000\u1297\u0390\u0001\u0000\u0000\u0000\u1298\u1299"+ - "\u0007\t\u0000\u0000\u1299\u129a\u0007\u0016\u0000\u0000\u129a\u129b\u0007"+ - "\u0012\u0000\u0000\u129b\u129c\u0007\t\u0000\u0000\u129c\u129d\u0007\u000e"+ - "\u0000\u0000\u129d\u129e\u0007\r\u0000\u0000\u129e\u129f\u0007\u0011\u0000"+ - "\u0000\u129f\u12a0\u0007\u0018\u0000\u0000\u12a0\u12a1\u0007\u0010\u0000"+ - "\u0000\u12a1\u12a2\u0007\u0011\u0000\u0000\u12a2\u12a3\u0007\u0013\u0000"+ - "\u0000\u12a3\u12a4\u0007\u0007\u0000\u0000\u12a4\u0392\u0001\u0000\u0000"+ - "\u0000\u12a5\u12a6\u0007\u0018\u0000\u0000\u12a6\u12a7\u0007\u0016\u0000"+ - "\u0000\u12a7\u12a8\u0007\u0012\u0000\u0000\u12a8\u12a9\u0007\u0006\u0000"+ - "\u0000\u12a9\u12aa\u0007\u0011\u0000\u0000\u12aa\u12ab\u0007\u000e\u0000"+ - "\u0000\u12ab\u12ac\u0007\u0005\u0000\u0000\u12ac\u12ad\u0007\u0010\u0000"+ - "\u0000\u12ad\u12ae\u0007\u0011\u0000\u0000\u12ae\u12af\u0007\u0013\u0000"+ - "\u0000\u12af\u12b0\u0007\u0007\u0000\u0000\u12b0\u0394\u0001\u0000\u0000"+ - "\u0000\u12b1\u12b2\u0007\u0013\u0000\u0000\u12b2\u12b3\u0007\u0016\u0000"+ - "\u0000\u12b3\u12b4\u0007\u0010\u0000\u0000\u12b4\u0396\u0001\u0000\u0000"+ - "\u0000\u12b5\u12b6\u0007\n\u0000\u0000\u12b6\u12b7\u0007\u0007\u0000\u0000"+ - "\u12b7\u12b8\u0007\f\u0000\u0000\u12b8\u0398\u0001\u0000\u0000\u0000\u12b9"+ - "\u12ba\u0007\r\u0000\u0000\u12ba\u12bb\u0007\u0013\u0000\u0000\u12bb\u12bc"+ - "\u0007\u0016\u0000\u0000\u12bc\u12bd\u0007\u0010\u0000\u0000\u12bd\u12be"+ - "\u0007\u0011\u0000\u0000\u12be\u12bf\u0007\u0007\u0000\u0000\u12bf\u12c0"+ - "\u0007\n\u0000\u0000\u12c0\u12c1\u0007\t\u0000\u0000\u12c1\u039a\u0001"+ - "\u0000\u0000\u0000\u12c2\u12c3\u0007\t\u0000\u0000\u12c3\u12c4\u0007\u000e"+ - "\u0000\u0000\u12c4\u12c5\u0007\u0014\u0000\u0000\u12c5\u12c6\u0007\n\u0000"+ - "\u0000\u12c6\u12c7\u0007\u000f\u0000\u0000\u12c7\u12c8\u0007\u0005\u0000"+ - "\u0000\u12c8\u12c9\u0007\t\u0000\u0000\u12c9\u039c\u0001\u0000\u0000\u0000"+ - "\u12ca\u12cb\u0007\u0018\u0000\u0000\u12cb\u12cc\u0007\r\u0000\u0000\u12cc"+ - "\u12cd\u0007\u0013\u0000\u0000\u12cd\u12ce\u0007\u000e\u0000\u0000\u12ce"+ - "\u12cf\u0007\n\u0000\u0000\u12cf\u12d0\u0007\f\u0000\u0000\u12d0\u12d1"+ - "\u0007\u0016\u0000\u0000\u12d1\u12d2\u0007\r\u0000\u0000\u12d2\u12d3\u0007"+ - "\n\u0000\u0000\u12d3\u12d4\u0007\t\u0000\u0000\u12d4\u039e\u0001\u0000"+ - "\u0000\u0000\u12d5\u12d6\u0007\u0011\u0000\u0000\u12d6\u12d7\u0007\u0007"+ - "\u0000\u0000\u12d7\u12d8\u0007\u0018\u0000\u0000\u12d8\u12d9\u0007\u0016"+ - "\u0000\u0000\u12d9\u12da\u0007\u0010\u0000\u0000\u12da\u03a0\u0001\u0000"+ - "\u0000\u0000\u12db\u12dc\u0007\t\u0000\u0000\u12dc\u12dd\u0007\u0016\u0000"+ - "\u0000\u12dd\u12de\u0007\u0018\u0000\u0000\u12de\u12df\u0007\u0018\u0000"+ - "\u0000\u12df\u12e0\u0007\u0013\u0000\u0000\u12e0\u12e1\u0007\r\u0000\u0000"+ - "\u12e1\u12e2\u0007\u0010\u0000\u0000\u12e2\u03a2\u0001\u0000\u0000\u0000"+ - "\u12e3\u12e4\u0007\u0018\u0000\u0000\u12e4\u12e5\u0007\u0005\u0000\u0000"+ - "\u12e5\u12e6\u0007\r\u0000\u0000\u12e6\u12e7\u0007\u0005\u0000\u0000\u12e7"+ - "\u12e8\u0007\u0006\u0000\u0000\u12e8\u12e9\u0007\u0006\u0000\u0000\u12e9"+ - "\u12ea\u0007\n\u0000\u0000\u12ea\u12eb\u0007\u0006\u0000\u0000\u12eb\u03a4"+ - "\u0001\u0000\u0000\u0000\u12ec\u12ed\u0007\t\u0000\u0000\u12ed\u12ee\u0007"+ - "\u001c\u0000\u0000\u12ee\u12ef\u0007\u0006\u0000\u0000\u12ef\u03a6\u0001"+ - "\u0000\u0000\u0000\u12f0\u12f1\u0007\f\u0000\u0000\u12f1\u12f2\u0007\n"+ - "\u0000\u0000\u12f2\u12f3\u0007\u0018\u0000\u0000\u12f3\u12f4\u0007\n\u0000"+ - "\u0000\u12f4\u12f5\u0007\u0007\u0000\u0000\u12f5\u12f6\u0007\f\u0000\u0000"+ - "\u12f6\u12f7\u0007\t\u0000\u0000\u12f7\u03a8\u0001\u0000\u0000\u0000\u12f8"+ - "\u12f9\u0007\u0013\u0000\u0000\u12f9\u12fa\u0007\u001b\u0000\u0000\u12fa"+ - "\u12fb\u0007\n\u0000\u0000\u12fb\u12fc\u0007\r\u0000\u0000\u12fc\u12fd"+ - "\u0007\r\u0000\u0000\u12fd\u12fe\u0007\u0011\u0000\u0000\u12fe\u12ff\u0007"+ - "\f\u0000\u0000\u12ff\u1300\u0007\u0011\u0000\u0000\u1300\u1301\u0007\u0007"+ - "\u0000\u0000\u1301\u1302\u0007\u0017\u0000\u0000\u1302\u03aa\u0001\u0000"+ - "\u0000\u0000\u1303\u1304\u0007\u000e\u0000\u0000\u1304\u1305\u0007\u0013"+ - "\u0000\u0000\u1305\u1306\u0007\u0007\u0000\u0000\u1306\u1307\u0007\u0019"+ - "\u0000\u0000\u1307\u1308\u0007\u0006\u0000\u0000\u1308\u1309\u0007\u0011"+ - "\u0000\u0000\u1309\u130a\u0007\u000e\u0000\u0000\u130a\u130b\u0007\u0010"+ - "\u0000\u0000\u130b\u03ac\u0001\u0000\u0000\u0000\u130c\u130d\u0007\t\u0000"+ - "\u0000\u130d\u130e\u0007\u0015\u0000\u0000\u130e\u130f\u0007\u0011\u0000"+ - "\u0000\u130f\u1310\u0007\u0018\u0000\u0000\u1310\u03ae\u0001\u0000\u0000"+ - "\u0000\u1311\u1312\u0007\u0006\u0000\u0000\u1312\u1313\u0007\u0013\u0000"+ - "\u0000\u1313\u1314\u0007\u000e\u0000\u0000\u1314\u1315\u0007\u0015\u0000"+ - "\u0000\u1315\u1316\u0007\n\u0000\u0000\u1316\u1317\u0007\f\u0000\u0000"+ - "\u1317\u03b0\u0001\u0000\u0000\u0000\u1318\u1319\u0007\u0010\u0000\u0000"+ - "\u1319\u131a\u0007\u0011\u0000\u0000\u131a\u131b\u0007\n\u0000\u0000\u131b"+ - "\u131c\u0007\t\u0000\u0000\u131c\u03b2\u0001\u0000\u0000\u0000\u131d\u131e"+ - "\u0007\r\u0000\u0000\u131e\u131f\u0007\u0013\u0000\u0000\u131f\u1320\u0007"+ - "\u0006\u0000\u0000\u1320\u1321\u0007\u0006\u0000\u0000\u1321\u1322\u0007"+ - "\u0016\u0000\u0000\u1322\u1323\u0007\u0018\u0000\u0000\u1323\u03b4\u0001"+ - "\u0000\u0000\u0000\u1324\u1325\u0007\u000e\u0000\u0000\u1325\u1326\u0007"+ - "\u0016\u0000\u0000\u1326\u1327\u0007\u0012\u0000\u0000\u1327\u1328\u0007"+ - "\n\u0000\u0000\u1328\u03b6\u0001\u0000\u0000\u0000\u1329\u132a\u0007\u0017"+ - "\u0000\u0000\u132a\u132b\u0007\r\u0000\u0000\u132b\u132c\u0007\u0013\u0000"+ - "\u0000\u132c\u132d\u0007\u0016\u0000\u0000\u132d\u132e\u0007\u0018\u0000"+ - "\u0000\u132e\u132f\u0007\u0011\u0000\u0000\u132f\u1330\u0007\u0007\u0000"+ - "\u0000\u1330\u1331\u0007\u0017\u0000\u0000\u1331\u03b8\u0001\u0000\u0000"+ - "\u0000\u1332\u1333\u0007\t\u0000\u0000\u1333\u1334\u0007\n\u0000\u0000"+ - "\u1334\u1335\u0007\u0010\u0000\u0000\u1335\u1336\u0007\t\u0000\u0000\u1336"+ - "\u03ba\u0001\u0000\u0000\u0000\u1337\u1338\u0007\u0010\u0000\u0000\u1338"+ - "\u1339\u0007\u0005\u0000\u0000\u1339\u133a\u0007\u0012\u0000\u0000\u133a"+ - "\u133b\u0007\u0006\u0000\u0000\u133b\u133c\u0007\n\u0000\u0000\u133c\u133d"+ - "\u0007\t\u0000\u0000\u133d\u133e\u0007\u0005\u0000\u0000\u133e\u133f\u0007"+ - "\u000f\u0000\u0000\u133f\u1340\u0007\u0018\u0000\u0000\u1340\u1341\u0007"+ - "\u0006\u0000\u0000\u1341\u1342\u0007\n\u0000\u0000\u1342\u03bc\u0001\u0000"+ - "\u0000\u0000\u1343\u1344\u0007\u0013\u0000\u0000\u1344\u1345\u0007\r\u0000"+ - "\u0000\u1345\u1346\u0007\f\u0000\u0000\u1346\u1347\u0007\u0011\u0000\u0000"+ - "\u1347\u1348\u0007\u0007\u0000\u0000\u1348\u1349\u0007\u0005\u0000\u0000"+ - "\u1349\u134a\u0007\u0006\u0000\u0000\u134a\u134b\u0007\u0011\u0000\u0000"+ - "\u134b\u134c\u0007\u0010\u0000\u0000\u134c\u134d\u0007\b\u0000\u0000\u134d"+ - "\u03be\u0001\u0000\u0000\u0000\u134e\u134f\u0007\u001a\u0000\u0000\u134f"+ - "\u1350\u0007\u000f\u0000\u0000\u1350\u1351\u0007\u0006\u0000\u0000\u1351"+ - "\u1352\u0007\u0010\u0000\u0000\u1352\u1353\u0007\u0005\u0000\u0000\u1353"+ - "\u1354\u0007\u0012\u0000\u0000\u1354\u1355\u0007\u0006\u0000\u0000\u1355"+ - "\u1356\u0007\n\u0000\u0000\u1356\u03c0\u0001\u0000\u0000\u0000\u1357\u1358"+ - "\u0007\u000e\u0000\u0000\u1358\u1359\u0007\u0013\u0000\u0000\u1359\u135a"+ - "\u0007\u0006\u0000\u0000\u135a\u135b\u0007\u0016\u0000\u0000\u135b\u135c"+ - "\u0007\u000f\u0000\u0000\u135c\u135d\u0007\u0007\u0000\u0000\u135d\u135e"+ - "\u0007\t\u0000\u0000\u135e\u03c2\u0001\u0000\u0000\u0000\u135f\u1360\u0007"+ - "\u001a\u0000\u0000\u1360\u1361\u0007\u000f\u0000\u0000\u1361\u1362\u0007"+ - "\u0006\u0000\u0000\u1362\u1363\u0007\u0007\u0000\u0000\u1363\u1364\u0007"+ - "\u0005\u0000\u0000\u1364\u1365\u0007\u000f\u0000\u0000\u1365\u1366\u0007"+ - "\n\u0000\u0000\u1366\u1367\u0007\t\u0000\u0000\u1367\u1368\u0007\u0018"+ - "\u0000\u0000\u1368\u1369\u0007\u0005\u0000\u0000\u1369\u136a\u0007\u000e"+ - "\u0000\u0000\u136a\u136b\u0007\n\u0000\u0000\u136b\u136c\u0007\t\u0000"+ - "\u0000\u136c\u03c4\u0001\u0000\u0000\u0000\u136d\u136e\u0007\r\u0000\u0000"+ - "\u136e\u136f\u0007\u0013\u0000\u0000\u136f\u1370\u0007\u001d\u0000\u0000"+ - "\u1370\u1371\u0007\u0010\u0000\u0000\u1371\u1372\u0007\b\u0000\u0000\u1372"+ - "\u1373\u0007\u0018\u0000\u0000\u1373\u1374\u0007\n\u0000\u0000\u1374\u03c6"+ - "\u0001\u0000\u0000\u0000\u1375\u1376\u0007\u0007\u0000\u0000\u1376\u1377"+ - "\u0007\u0013\u0000\u0000\u1377\u1378\u0007\r\u0000\u0000\u1378\u1379\u0007"+ - "\u000f\u0000\u0000\u1379\u137a\u0007\u0005\u0000\u0000\u137a\u137b\u0007"+ - "\u0006\u0000\u0000\u137b\u137c\u0007\u0011\u0000\u0000\u137c\u137d\u0007"+ - "\u000b\u0000\u0000\u137d\u137e\u0007\n\u0000\u0000\u137e\u137f\u0007\f"+ - "\u0000\u0000\u137f\u03c8\u0001\u0000\u0000\u0000\u1380\u1381\u0007\u001d"+ - "\u0000\u0000\u1381\u1382\u0007\u0011\u0000\u0000\u1382\u1383\u0007\u0010"+ - "\u0000\u0000\u1383\u1384\u0007\u0014\u0000\u0000\u1384\u1385\u0007\u0011"+ - "\u0000\u0000\u1385\u1386\u0007\u0007\u0000\u0000\u1386\u03ca\u0001\u0000"+ - "\u0000\u0000\u1387\u1388\u0007\u0019\u0000\u0000\u1388\u1389\u0007\u0011"+ - "\u0000\u0000\u1389\u138a\u0007\u0006\u0000\u0000\u138a\u138b\u0007\u0010"+ - "\u0000\u0000\u138b\u138c\u0007\n\u0000\u0000\u138c\u138d\u0007\r\u0000"+ - "\u0000\u138d\u03cc\u0001\u0000\u0000\u0000\u138e\u138f\u0007\u0017\u0000"+ - "\u0000\u138f\u1390\u0007\r\u0000\u0000\u1390\u1391\u0007\u0013\u0000\u0000"+ - "\u1391\u1392\u0007\u0016\u0000\u0000\u1392\u1393\u0007\u0018\u0000\u0000"+ - "\u1393\u1394\u0007\t\u0000\u0000\u1394\u03ce\u0001\u0000\u0000\u0000\u1395"+ - "\u1396\u0007\u0013\u0000\u0000\u1396\u1397\u0007\u0010\u0000\u0000\u1397"+ - "\u1398\u0007\u0014\u0000\u0000\u1398\u1399\u0007\n\u0000\u0000\u1399\u139a"+ - "\u0007\r\u0000\u0000\u139a\u139b\u0007\t\u0000\u0000\u139b\u03d0\u0001"+ - "\u0000\u0000\u0000\u139c\u139d\u0007\u0007\u0000\u0000\u139d\u139e\u0007"+ - "\u0019\u0000\u0000\u139e\u139f\u0007\u000e\u0000\u0000\u139f\u03d2\u0001"+ - "\u0000\u0000\u0000\u13a0\u13a1\u0007\u0007\u0000\u0000\u13a1\u13a2\u0007"+ - "\u0019\u0000\u0000\u13a2\u13a3\u0007\f\u0000\u0000\u13a3\u03d4\u0001\u0000"+ - "\u0000\u0000\u13a4\u13a5\u0007\u0007\u0000\u0000\u13a5\u13a6\u0007\u0019"+ - "\u0000\u0000\u13a6\u13a7\u0007\u0015\u0000\u0000\u13a7\u13a8\u0007\u000e"+ - "\u0000\u0000\u13a8\u03d6\u0001\u0000\u0000\u0000\u13a9\u13aa\u0007\u0007"+ - "\u0000\u0000\u13aa\u13ab\u0007\u0019\u0000\u0000\u13ab\u13ac\u0007\u0015"+ - "\u0000\u0000\u13ac\u13ad\u0007\f\u0000\u0000\u13ad\u03d8\u0001\u0000\u0000"+ - "\u0000\u13ae\u13af\u0007\u0016\u0000\u0000\u13af\u13b0\u0007\n\u0000\u0000"+ - "\u13b0\u13b1\u0007\t\u0000\u0000\u13b1\u13b2\u0007\u000e\u0000\u0000\u13b2"+ - "\u13b3\u0007\u0005\u0000\u0000\u13b3\u13b4\u0007\u0018\u0000\u0000\u13b4"+ - "\u13b5\u0007\n\u0000\u0000\u13b5\u03da\u0001\u0000\u0000\u0000\u13b6\u13b7"+ - "\u0007\u001b\u0000\u0000\u13b7\u13b8\u0007\u0011\u0000\u0000\u13b8\u13b9"+ - "\u0007\n\u0000\u0000\u13b9\u13ba\u0007\u001d\u0000\u0000\u13ba\u13bb\u0007"+ - "\t\u0000\u0000\u13bb\u03dc\u0001\u0000\u0000\u0000\u13bc\u13bd\u0007\u0007"+ - "\u0000\u0000\u13bd\u13be\u0007\u0013\u0000\u0000\u13be\u13bf\u0007\r\u0000"+ - "\u0000\u13bf\u13c0\u0007\u000f\u0000\u0000\u13c0\u13c1\u0007\u0005\u0000"+ - "\u0000\u13c1\u13c2\u0007\u0006\u0000\u0000\u13c2\u13c3\u0007\u0011\u0000"+ - "\u0000\u13c3\u13c4\u0007\u000b\u0000\u0000\u13c4\u13c5\u0007\n\u0000\u0000"+ - "\u13c5\u03de\u0001\u0000\u0000\u0000\u13c6\u13c7\u0007\f\u0000\u0000\u13c7"+ - "\u13c8\u0007\u0016\u0000\u0000\u13c8\u13c9\u0007\u000f\u0000\u0000\u13c9"+ - "\u13ca\u0007\u0018\u0000\u0000\u13ca\u03e0\u0001\u0000\u0000\u0000\u13cb"+ - "\u13cc\u0007\u0018\u0000\u0000\u13cc\u13cd\u0007\r\u0000\u0000\u13cd\u13ce"+ - "\u0007\u0011\u0000\u0000\u13ce\u13cf\u0007\u0007\u0000\u0000\u13cf\u13d0"+ - "\u0007\u0010\u0000\u0000\u13d0\u13d1\u0005_\u0000\u0000\u13d1\u13d2\u0007"+ - "\t\u0000\u0000\u13d2\u13d3\u0007\u0010\u0000\u0000\u13d3\u13d4\u0007\r"+ - "\u0000\u0000\u13d4\u13d5\u0007\u0011\u0000\u0000\u13d5\u13d6\u0007\u000e"+ - "\u0000\u0000\u13d6\u13d7\u0007\u0010\u0000\u0000\u13d7\u13d8\u0005_\u0000"+ - "\u0000\u13d8\u13d9\u0007\u0018\u0000\u0000\u13d9\u13da\u0007\u0005\u0000"+ - "\u0000\u13da\u13db\u0007\r\u0000\u0000\u13db\u13dc\u0007\u0005\u0000\u0000"+ - "\u13dc\u13dd\u0007\u000f\u0000\u0000\u13dd\u13de\u0007\t\u0000\u0000\u13de"+ - "\u03e2\u0001\u0000\u0000\u0000\u13df\u13e0\u0007\u001b\u0000\u0000\u13e0"+ - "\u13e1\u0007\u0005\u0000\u0000\u13e1\u13e2\u0007\r\u0000\u0000\u13e2\u13e3"+ - "\u0007\u0011\u0000\u0000\u13e3\u13e4\u0007\u0005\u0000\u0000\u13e4\u13e5"+ - "\u0007\u0012\u0000\u0000\u13e5\u13e6\u0007\u0006\u0000\u0000\u13e6\u13e7"+ - "\u0007\n\u0000\u0000\u13e7\u13e8\u0005_\u0000\u0000\u13e8\u13e9\u0007"+ - "\u000e\u0000\u0000\u13e9\u13ea\u0007\u0013\u0000\u0000\u13ea\u13eb\u0007"+ - "\u0007\u0000\u0000\u13eb\u13ec\u0007\u0019\u0000\u0000\u13ec\u13ed\u0007"+ - "\u0006\u0000\u0000\u13ed\u13ee\u0007\u0011\u0000\u0000\u13ee\u13ef\u0007"+ - "\u000e\u0000\u0000\u13ef\u13f0\u0007\u0010\u0000\u0000\u13f0\u03e4\u0001"+ - "\u0000\u0000\u0000\u13f1\u13f2\u0007\n\u0000\u0000\u13f2\u13f3\u0007\r"+ - "\u0000\u0000\u13f3\u13f4\u0007\r\u0000\u0000\u13f4\u13f5\u0007\u0013\u0000"+ - "\u0000\u13f5\u13f6\u0007\r\u0000\u0000\u13f6\u03e6\u0001\u0000\u0000\u0000"+ - "\u13f7\u13f8\u0007\u0016\u0000\u0000\u13f8\u13f9\u0007\t\u0000\u0000\u13f9"+ - "\u13fa\u0007\n\u0000\u0000\u13fa\u13fb\u0005_\u0000\u0000\u13fb\u13fc"+ - "\u0007\u001b\u0000\u0000\u13fc\u13fd\u0007\u0005\u0000\u0000\u13fd\u13fe"+ - "\u0007\r\u0000\u0000\u13fe\u13ff\u0007\u0011\u0000\u0000\u13ff\u1400\u0007"+ - "\u0005\u0000\u0000\u1400\u1401\u0007\u0012\u0000\u0000\u1401\u1402\u0007"+ - "\u0006\u0000\u0000\u1402\u1403\u0007\n\u0000\u0000\u1403\u03e8\u0001\u0000"+ - "\u0000\u0000\u1404\u1405\u0007\u0016\u0000\u0000\u1405\u1406\u0007\t\u0000"+ - "\u0000\u1406\u1407\u0007\n\u0000\u0000\u1407\u1408\u0005_\u0000\u0000"+ - "\u1408\u1409\u0007\u000e\u0000\u0000\u1409\u140a\u0007\u0013\u0000\u0000"+ - "\u140a\u140b\u0007\u0006\u0000\u0000\u140b\u140c\u0007\u0016\u0000\u0000"+ - "\u140c\u140d\u0007\u000f\u0000\u0000\u140d\u140e\u0007\u0007\u0000\u0000"+ - "\u140e\u03ea\u0001\u0000\u0000\u0000\u140f\u1410\u0007\u0005\u0000\u0000"+ - "\u1410\u1411\u0007\u0006\u0000\u0000\u1411\u1412\u0007\u0011\u0000\u0000"+ - "\u1412\u1413\u0007\u0005\u0000\u0000\u1413\u1414\u0007\t\u0000\u0000\u1414"+ - "\u03ec\u0001\u0000\u0000\u0000\u1415\u1416\u0007\u000e\u0000\u0000\u1416"+ - "\u1417\u0007\u0013\u0000\u0000\u1417\u1418\u0007\u0007\u0000\u0000\u1418"+ - "\u1419\u0007\t\u0000\u0000\u1419\u141a\u0007\u0010\u0000\u0000\u141a\u141b"+ - "\u0007\u0005\u0000\u0000\u141b\u141c\u0007\u0007\u0000\u0000\u141c\u141d"+ - "\u0007\u0010\u0000\u0000\u141d\u03ee\u0001\u0000\u0000\u0000\u141e\u141f"+ - "\u0007\u0018\u0000\u0000\u141f\u1420\u0007\n\u0000\u0000\u1420\u1421\u0007"+ - "\r\u0000\u0000\u1421\u1422\u0007\u0019\u0000\u0000\u1422\u1423\u0007\u0013"+ - "\u0000\u0000\u1423\u1424\u0007\r\u0000\u0000\u1424\u1425\u0007\u000f\u0000"+ - "\u0000\u1425\u03f0\u0001\u0000\u0000\u0000\u1426\u1427\u0007\u0017\u0000"+ - "\u0000\u1427\u1428\u0007\n\u0000\u0000\u1428\u1429\u0007\u0010\u0000\u0000"+ - "\u1429\u03f2\u0001\u0000\u0000\u0000\u142a\u142b\u0007\f\u0000\u0000\u142b"+ - "\u142c\u0007\u0011\u0000\u0000\u142c\u142d\u0007\u0005\u0000\u0000\u142d"+ - "\u142e\u0007\u0017\u0000\u0000\u142e\u142f\u0007\u0007\u0000\u0000\u142f"+ - "\u1430\u0007\u0013\u0000\u0000\u1430\u1431\u0007\t\u0000\u0000\u1431\u1432"+ - "\u0007\u0010\u0000\u0000\u1432\u1433\u0007\u0011\u0000\u0000\u1433\u1434"+ - "\u0007\u000e\u0000\u0000\u1434\u1435\u0007\t\u0000\u0000\u1435\u03f4\u0001"+ - "\u0000\u0000\u0000\u1436\u1437\u0007\t\u0000\u0000\u1437\u1438\u0007\u0010"+ - "\u0000\u0000\u1438\u1439\u0007\u0005\u0000\u0000\u1439\u143a\u0007\u000e"+ - "\u0000\u0000\u143a\u143b\u0007\u0015\u0000\u0000\u143b\u143c\u0007\n\u0000"+ - "\u0000\u143c\u143d\u0007\f\u0000\u0000\u143d\u03f6\u0001\u0000\u0000\u0000"+ - "\u143e\u143f\u0007\n\u0000\u0000\u143f\u1440\u0007\u0006\u0000\u0000\u1440"+ - "\u1441\u0007\t\u0000\u0000\u1441\u1442\u0007\u0011\u0000\u0000\u1442\u1443"+ - "\u0007\u0019\u0000\u0000\u1443\u03f8\u0001\u0000\u0000\u0000\u1444\u1445"+ - "\u0007\u001d\u0000\u0000\u1445\u1446\u0007\u0014\u0000\u0000\u1446\u1447"+ - "\u0007\u0011\u0000\u0000\u1447\u1448\u0007\u0006\u0000\u0000\u1448\u1449"+ - "\u0007\n\u0000\u0000\u1449\u03fa\u0001\u0000\u0000\u0000\u144a\u144b\u0007"+ - "\r\u0000\u0000\u144b\u144c\u0007\n\u0000\u0000\u144c\u144d\u0007\u001b"+ - "\u0000\u0000\u144d\u144e\u0007\n\u0000\u0000\u144e\u144f\u0007\r\u0000"+ - "\u0000\u144f\u1450\u0007\t\u0000\u0000\u1450\u1451\u0007\n\u0000\u0000"+ - "\u1451\u03fc\u0001\u0000\u0000\u0000\u1452\u1453\u0007\u0019\u0000\u0000"+ - "\u1453\u1454\u0007\u0013\u0000\u0000\u1454\u1455\u0007\r\u0000\u0000\u1455"+ - "\u1456\u0007\n\u0000\u0000\u1456\u1457\u0007\u0005\u0000\u0000\u1457\u1458"+ - "\u0007\u000e\u0000\u0000\u1458\u1459\u0007\u0014\u0000\u0000\u1459\u03fe"+ - "\u0001\u0000\u0000\u0000\u145a\u145b\u0007\t\u0000\u0000\u145b\u145c\u0007"+ - "\u0006\u0000\u0000\u145c\u145d\u0007\u0011\u0000\u0000\u145d\u145e\u0007"+ - "\u000e\u0000\u0000\u145e\u145f\u0007\n\u0000\u0000\u145f\u0400\u0001\u0000"+ - "\u0000\u0000\u1460\u1461\u0007\n\u0000\u0000\u1461\u1462\u0007\u001a\u0000"+ - "\u0000\u1462\u1463\u0007\u0011\u0000\u0000\u1463\u1464\u0007\u0010\u0000"+ - "\u0000\u1464\u0402\u0001\u0000\u0000\u0000\u1465\u1466\u0007\r\u0000\u0000"+ - "\u1466\u1467\u0007\n\u0000\u0000\u1467\u1468\u0007\u0010\u0000\u0000\u1468"+ - "\u1469\u0007\u0016\u0000\u0000\u1469\u146a\u0007\r\u0000\u0000\u146a\u146b"+ - "\u0007\u0007\u0000\u0000\u146b\u0404\u0001\u0000\u0000\u0000\u146c\u146d"+ - "\u0007\u001c\u0000\u0000\u146d\u146e\u0007\u0016\u0000\u0000\u146e\u146f"+ - "\u0007\n\u0000\u0000\u146f\u1470\u0007\r\u0000\u0000\u1470\u1471\u0007"+ - "\b\u0000\u0000\u1471\u0406\u0001\u0000\u0000\u0000\u1472\u1473\u0007\r"+ - "\u0000\u0000\u1473\u1474\u0007\u0005\u0000\u0000\u1474\u1475\u0007\u0011"+ - "\u0000\u0000\u1475\u1476\u0007\t\u0000\u0000\u1476\u1477\u0007\n\u0000"+ - "\u0000\u1477\u0408\u0001\u0000\u0000\u0000\u1478\u1479\u0007\t\u0000\u0000"+ - "\u1479\u147a\u0007\u001c\u0000\u0000\u147a\u147b\u0007\u0006\u0000\u0000"+ - "\u147b\u147c\u0007\t\u0000\u0000\u147c\u147d\u0007\u0010\u0000\u0000\u147d"+ - "\u147e\u0007\u0005\u0000\u0000\u147e\u147f\u0007\u0010\u0000\u0000\u147f"+ - "\u1480\u0007\n\u0000\u0000\u1480\u040a\u0001\u0000\u0000\u0000\u1481\u1482"+ - "\u0007\f\u0000\u0000\u1482\u1483\u0007\n\u0000\u0000\u1483\u1484\u0007"+ - "\u0012\u0000\u0000\u1484\u1485\u0007\u0016\u0000\u0000\u1485\u1486\u0007"+ - "\u0017\u0000\u0000\u1486\u040c\u0001\u0000\u0000\u0000\u1487\u1488\u0007"+ - "\u0006\u0000\u0000\u1488\u1489\u0007\u0013\u0000\u0000\u1489\u148a\u0007"+ - "\u0017\u0000\u0000\u148a\u040e\u0001\u0000\u0000\u0000\u148b\u148c\u0007"+ - "\u0011\u0000\u0000\u148c\u148d\u0007\u0007\u0000\u0000\u148d\u148e\u0007"+ - "\u0019\u0000\u0000\u148e\u148f\u0007\u0013\u0000\u0000\u148f\u0410\u0001"+ - "\u0000\u0000\u0000\u1490\u1491\u0007\u0007\u0000\u0000\u1491\u1492\u0007"+ - "\u0013\u0000\u0000\u1492\u1493\u0007\u0010\u0000\u0000\u1493\u1494\u0007"+ - "\u0011\u0000\u0000\u1494\u1495\u0007\u000e\u0000\u0000\u1495\u1496\u0007"+ - "\n\u0000\u0000\u1496\u0412\u0001\u0000\u0000\u0000\u1497\u1498\u0007\u001d"+ - "\u0000\u0000\u1498\u1499\u0007\u0005\u0000\u0000\u1499\u149a\u0007\r\u0000"+ - "\u0000\u149a\u149b\u0007\u0007\u0000\u0000\u149b\u149c\u0007\u0011\u0000"+ - "\u0000\u149c\u149d\u0007\u0007\u0000\u0000\u149d\u149e\u0007\u0017\u0000"+ - "\u0000\u149e\u0414\u0001\u0000\u0000\u0000\u149f\u14a0\u0007\n\u0000\u0000"+ - "\u14a0\u14a1\u0007\u001a\u0000\u0000\u14a1\u14a2\u0007\u000e\u0000\u0000"+ - "\u14a2\u14a3\u0007\n\u0000\u0000\u14a3\u14a4\u0007\u0018\u0000\u0000\u14a4"+ - "\u14a5\u0007\u0010\u0000\u0000\u14a5\u14a6\u0007\u0011\u0000\u0000\u14a6"+ - "\u14a7\u0007\u0013\u0000\u0000\u14a7\u14a8\u0007\u0007\u0000\u0000\u14a8"+ - "\u0416\u0001\u0000\u0000\u0000\u14a9\u14aa\u0007\u0005\u0000\u0000\u14aa"+ - "\u14ab\u0007\t\u0000\u0000\u14ab\u14ac\u0007\t\u0000\u0000\u14ac\u14ad"+ - "\u0007\n\u0000\u0000\u14ad\u14ae\u0007\r\u0000\u0000\u14ae\u14af\u0007"+ - "\u0010\u0000\u0000\u14af\u0418\u0001\u0000\u0000\u0000\u14b0\u14b1\u0007"+ - "\u0006\u0000\u0000\u14b1\u14b2\u0007\u0013\u0000\u0000\u14b2\u14b3\u0007"+ - "\u0013\u0000\u0000\u14b3\u14b4\u0007\u0018\u0000\u0000\u14b4\u041a\u0001"+ - "\u0000\u0000\u0000\u14b5\u14b6\u0007\u0013\u0000\u0000\u14b6\u14b7\u0007"+ - "\u0018\u0000\u0000\u14b7\u14b8\u0007\n\u0000\u0000\u14b8\u14b9\u0007\u0007"+ - "\u0000\u0000\u14b9\u041c\u0001\u0000\u0000\u0000\u14ba\u14bb\u0007\u0005"+ - "\u0000\u0000\u14bb\u14bc\u0007\u0012\u0000\u0000\u14bc\u14bd\u0007\t\u0000"+ - "\u0000\u14bd\u041e\u0001\u0000\u0000\u0000\u14be\u14bf\u0007\u000e\u0000"+ - "\u0000\u14bf\u14c0\u0007\u0012\u0000\u0000\u14c0\u14c1\u0007\r\u0000\u0000"+ - "\u14c1\u14c2\u0007\u0010\u0000\u0000\u14c2\u0420\u0001\u0000\u0000\u0000"+ - "\u14c3\u14c4\u0007\u000e\u0000\u0000\u14c4\u14c5\u0007\n\u0000\u0000\u14c5"+ - "\u14c6\u0007\u0011\u0000\u0000\u14c6\u14c7\u0007\u0006\u0000\u0000\u14c7"+ - "\u0422\u0001\u0000\u0000\u0000\u14c8\u14c9\u0007\u000e\u0000\u0000\u14c9"+ - "\u14ca\u0007\n\u0000\u0000\u14ca\u14cb\u0007\u0011\u0000\u0000\u14cb\u14cc"+ - "\u0007\u0006\u0000\u0000\u14cc\u14cd\u0007\u0011\u0000\u0000\u14cd\u14ce"+ - "\u0007\u0007\u0000\u0000\u14ce\u14cf\u0007\u0017\u0000\u0000\u14cf\u0424"+ - "\u0001\u0000\u0000\u0000\u14d0\u14d1\u0007\f\u0000\u0000\u14d1\u14d2\u0007"+ - "\n\u0000\u0000\u14d2\u14d3\u0007\u0017\u0000\u0000\u14d3\u14d4\u0007\r"+ - "\u0000\u0000\u14d4\u14d5\u0007\n\u0000\u0000\u14d5\u14d6\u0007\n\u0000"+ - "\u0000\u14d6\u14d7\u0007\t\u0000\u0000\u14d7\u0426\u0001\u0000\u0000\u0000"+ - "\u14d8\u14d9\u0007\f\u0000\u0000\u14d9\u14da\u0007\u0011\u0000\u0000\u14da"+ - "\u14db\u0007\u001b\u0000\u0000\u14db\u0428\u0001\u0000\u0000\u0000\u14dc"+ - "\u14dd\u0007\n\u0000\u0000\u14dd\u14de\u0007\u001a\u0000\u0000\u14de\u14df"+ - "\u0007\u0018\u0000\u0000\u14df\u042a\u0001\u0000\u0000\u0000\u14e0\u14e1"+ - "\u0007\u0019\u0000\u0000\u14e1\u14e2\u0007\u0005\u0000\u0000\u14e2\u14e3"+ - "\u0007\u000e\u0000\u0000\u14e3\u14e4\u0007\u0010\u0000\u0000\u14e4\u14e5"+ - "\u0007\u0013\u0000\u0000\u14e5\u14e6\u0007\r\u0000\u0000\u14e6\u14e7\u0007"+ - "\u0011\u0000\u0000\u14e7\u14e8\u0007\u0005\u0000\u0000\u14e8\u14e9\u0007"+ - "\u0006\u0000\u0000\u14e9\u042c\u0001\u0000\u0000\u0000\u14ea\u14eb\u0007"+ - "\u0019\u0000\u0000\u14eb\u14ec\u0007\u0006\u0000\u0000\u14ec\u14ed\u0007"+ - "\u0013\u0000\u0000\u14ed\u14ee\u0007\u0013\u0000\u0000\u14ee\u14ef\u0007"+ - "\r\u0000\u0000\u14ef\u042e\u0001\u0000\u0000\u0000\u14f0\u14f1\u0007\u0017"+ - "\u0000\u0000\u14f1\u14f2\u0007\u000e\u0000\u0000\u14f2\u14f3\u0007\f\u0000"+ - "\u0000\u14f3\u0430\u0001\u0000\u0000\u0000\u14f4\u14f5\u0007\u0006\u0000"+ - "\u0000\u14f5\u14f6\u0007\u000e\u0000\u0000\u14f6\u14f7\u0007\u000f\u0000"+ - "\u0000\u14f7\u0432\u0001\u0000\u0000\u0000\u14f8\u14f9\u0007\u0006\u0000"+ - "\u0000\u14f9\u14fa\u0007\u0007\u0000\u0000\u14fa\u0434\u0001\u0000\u0000"+ - "\u0000\u14fb\u14fc\u0007\u0006\u0000\u0000\u14fc\u14fd\u0007\u0013\u0000"+ - "\u0000\u14fd\u14fe\u0007\u0017\u0000\u0000\u14fe\u14ff\u00051\u0000\u0000"+ - "\u14ff\u1500\u00050\u0000\u0000\u1500\u0436\u0001\u0000\u0000\u0000\u1501"+ - "\u1502\u0007\u000f\u0000\u0000\u1502\u1503\u0007\u0011\u0000\u0000\u1503"+ - "\u1504\u0007\u0007\u0000\u0000\u1504\u1505\u0005_\u0000\u0000\u1505\u1506"+ - "\u0007\t\u0000\u0000\u1506\u1507\u0007\u000e\u0000\u0000\u1507\u1508\u0007"+ - "\u0005\u0000\u0000\u1508\u1509\u0007\u0006\u0000\u0000\u1509\u150a\u0007"+ - "\n\u0000\u0000\u150a\u0438\u0001\u0000\u0000\u0000\u150b\u150c\u0007\u000f"+ - "\u0000\u0000\u150c\u150d\u0007\u0013\u0000\u0000\u150d\u150e\u0007\f\u0000"+ - "\u0000\u150e\u043a\u0001\u0000\u0000\u0000\u150f\u1510\u0007\u0018\u0000"+ - "\u0000\u1510\u1511\u0007\u0011\u0000\u0000\u1511\u043c\u0001\u0000\u0000"+ - "\u0000\u1512\u1513\u0007\u0018\u0000\u0000\u1513\u1514\u0007\u0013\u0000"+ - "\u0000\u1514\u1515\u0007\u001d\u0000\u0000\u1515\u1516\u0007\n\u0000\u0000"+ - "\u1516\u1517\u0007\r\u0000\u0000\u1517\u043e\u0001\u0000\u0000\u0000\u1518"+ - "\u1519\u0007\r\u0000\u0000\u1519\u151a\u0007\u0005\u0000\u0000\u151a\u151b"+ - "\u0007\f\u0000\u0000\u151b\u151c\u0007\u0011\u0000\u0000\u151c\u151d\u0007"+ - "\u0005\u0000\u0000\u151d\u151e\u0007\u0007\u0000\u0000\u151e\u151f\u0007"+ - "\t\u0000\u0000\u151f\u0440\u0001\u0000\u0000\u0000\u1520\u1521\u0007\r"+ - "\u0000\u0000\u1521\u1522\u0007\u0013\u0000\u0000\u1522\u1523\u0007\u0016"+ - "\u0000\u0000\u1523\u1524\u0007\u0007\u0000\u0000\u1524\u1525\u0007\f\u0000"+ - "\u0000\u1525\u0442\u0001\u0000\u0000\u0000\u1526\u1527\u0007\t\u0000\u0000"+ - "\u1527\u1528\u0007\u000e\u0000\u0000\u1528\u1529\u0007\u0005\u0000\u0000"+ - "\u1529\u152a\u0007\u0006\u0000\u0000\u152a\u152b\u0007\n\u0000\u0000\u152b"+ - "\u0444\u0001\u0000\u0000\u0000\u152c\u152d\u0007\t\u0000\u0000\u152d\u152e"+ - "\u0007\u0011\u0000\u0000\u152e\u152f\u0007\u0017\u0000\u0000\u152f\u1530"+ - "\u0007\u0007\u0000\u0000\u1530\u0446\u0001\u0000\u0000\u0000\u1531\u1532"+ - "\u0007\t\u0000\u0000\u1532\u1533\u0007\u001c\u0000\u0000\u1533\u1534\u0007"+ - "\r\u0000\u0000\u1534\u1535\u0007\u0010\u0000\u0000\u1535\u0448\u0001\u0000"+ - "\u0000\u0000\u1536\u1537\u0007\u0010\u0000\u0000\u1537\u1538\u0007\r\u0000"+ - "\u0000\u1538\u1539\u0007\u0011\u0000\u0000\u1539\u153a\u0007\u000f\u0000"+ - "\u0000\u153a\u153b\u0005_\u0000\u0000\u153b\u153c\u0007\t\u0000\u0000"+ - "\u153c\u153d\u0007\u000e\u0000\u0000\u153d\u153e\u0007\u0005\u0000\u0000"+ - "\u153e\u153f\u0007\u0006\u0000\u0000\u153f\u1540\u0007\n\u0000\u0000\u1540"+ - "\u044a\u0001\u0000\u0000\u0000\u1541\u1542\u0007\u0010\u0000\u0000\u1542"+ - "\u1543\u0007\r\u0000\u0000\u1543\u1544\u0007\u0016\u0000\u0000\u1544\u1545"+ - "\u0007\u0007\u0000\u0000\u1545\u1546\u0007\u000e\u0000\u0000\u1546\u044c"+ - "\u0001\u0000\u0000\u0000\u1547\u1548\u0007\u001d\u0000\u0000\u1548\u1549"+ - "\u0007\u0011\u0000\u0000\u1549\u154a\u0007\f\u0000\u0000\u154a\u154b\u0007"+ - "\u0010\u0000\u0000\u154b\u154c\u0007\u0014\u0000\u0000\u154c\u154d\u0005"+ - "_\u0000\u0000\u154d\u154e\u0007\u0012\u0000\u0000\u154e\u154f\u0007\u0016"+ - "\u0000\u0000\u154f\u1550\u0007\u000e\u0000\u0000\u1550\u1551\u0007\u0015"+ - "\u0000\u0000\u1551\u1552\u0007\n\u0000\u0000\u1552\u1553\u0007\u0010\u0000"+ - "\u0000\u1553\u044e\u0001\u0000\u0000\u0000\u1554\u1555\u0007\r\u0000\u0000"+ - "\u1555\u1556\u0007\u0005\u0000\u0000\u1556\u1557\u0007\u0007\u0000\u0000"+ - "\u1557\u1558\u0007\f\u0000\u0000\u1558\u1559\u0007\u0013\u0000\u0000\u1559"+ - "\u155a\u0007\u000f\u0000\u0000\u155a\u0450\u0001\u0000\u0000\u0000\u155b"+ - "\u155c\u0007\t\u0000\u0000\u155c\u155d\u0007\n\u0000\u0000\u155d\u155e"+ - "\u0007\u0010\u0000\u0000\u155e\u155f\u0007\t\u0000\u0000\u155f\u1560\u0007"+ - "\n\u0000\u0000\u1560\u1561\u0007\n\u0000\u0000\u1561\u1562\u0007\f\u0000"+ - "\u0000\u1562\u0452\u0001\u0000\u0000\u0000\u1563\u1564\u0007\u0005\u0000"+ - "\u0000\u1564\u1565\u0007\u000e\u0000\u0000\u1565\u1566\u0007\u0013\u0000"+ - "\u0000\u1566\u1567\u0007\t\u0000\u0000\u1567\u0454\u0001\u0000\u0000\u0000"+ - "\u1568\u1569\u0007\u0005\u0000\u0000\u1569\u156a\u0007\u000e\u0000\u0000"+ - "\u156a\u156b\u0007\u0013\u0000\u0000\u156b\u156c\u0007\t\u0000\u0000\u156c"+ - "\u156d\u0007\f\u0000\u0000\u156d\u0456\u0001\u0000\u0000\u0000\u156e\u156f"+ - "\u0007\u0005\u0000\u0000\u156f\u1570\u0007\t\u0000\u0000\u1570\u1571\u0007"+ - "\u0011\u0000\u0000\u1571\u1572\u0007\u0007\u0000\u0000\u1572\u0458\u0001"+ - "\u0000\u0000\u0000\u1573\u1574\u0007\u0005\u0000\u0000\u1574\u1575\u0007"+ - "\t\u0000\u0000\u1575\u1576\u0007\u0011\u0000\u0000\u1576\u1577\u0007\u0007"+ - "\u0000\u0000\u1577\u1578\u0007\f\u0000\u0000\u1578\u045a\u0001\u0000\u0000"+ - "\u0000\u1579\u157a\u0007\u0005\u0000\u0000\u157a\u157b\u0007\u0010\u0000"+ - "\u0000\u157b\u157c\u0007\u0005\u0000\u0000\u157c\u157d\u0007\u0007\u0000"+ - "\u0000\u157d\u045c\u0001\u0000\u0000\u0000\u157e\u157f\u0007\u0005\u0000"+ - "\u0000\u157f\u1580\u0007\u0010\u0000\u0000\u1580\u1581\u0007\u0005\u0000"+ - "\u0000\u1581\u1582\u0007\u0007\u0000\u0000\u1582\u1583\u0007\f\u0000\u0000"+ - "\u1583\u045e\u0001\u0000\u0000\u0000\u1584\u1585\u0007\u0005\u0000\u0000"+ - "\u1585\u1586\u0007\u0010\u0000\u0000\u1586\u1587\u0007\u0005\u0000\u0000"+ - "\u1587\u1588\u0007\u0007\u0000\u0000\u1588\u1589\u00052\u0000\u0000\u1589"+ - "\u0460\u0001\u0000\u0000\u0000\u158a\u158b\u0007\u0005\u0000\u0000\u158b"+ - "\u158c\u0007\u0010\u0000\u0000\u158c\u158d\u0007\u0005\u0000\u0000\u158d"+ - "\u158e\u0007\u0007\u0000\u0000\u158e\u158f\u00052\u0000\u0000\u158f\u1590"+ - "\u0007\f\u0000\u0000\u1590\u0462\u0001\u0000\u0000\u0000\u1591\u1592\u0007"+ - "\u000e\u0000\u0000\u1592\u1593\u0007\u0013\u0000\u0000\u1593\u1594\u0007"+ - "\t\u0000\u0000\u1594\u0464\u0001\u0000\u0000\u0000\u1595\u1596\u0007\u000e"+ - "\u0000\u0000\u1596\u1597\u0007\u0013\u0000\u0000\u1597\u1598\u0007\t\u0000"+ - "\u0000\u1598\u1599\u0007\f\u0000\u0000\u1599\u0466\u0001\u0000\u0000\u0000"+ - "\u159a\u159b\u0007\u000e\u0000\u0000\u159b\u159c\u0007\u0013\u0000\u0000"+ - "\u159c\u159d\u0007\u0010\u0000\u0000\u159d\u0468\u0001\u0000\u0000\u0000"+ - "\u159e\u159f\u0007\u000e\u0000\u0000\u159f\u15a0\u0007\u0013\u0000\u0000"+ - "\u15a0\u15a1\u0007\u0010\u0000\u0000\u15a1\u15a2\u0007\f\u0000\u0000\u15a2"+ - "\u046a\u0001\u0000\u0000\u0000\u15a3\u15a4\u0007\t\u0000\u0000\u15a4\u15a5"+ - "\u0007\u0011\u0000\u0000\u15a5\u15a6\u0007\u0007\u0000\u0000\u15a6\u046c"+ - "\u0001\u0000\u0000\u0000\u15a7\u15a8\u0007\t\u0000\u0000\u15a8\u15a9\u0007"+ - "\u0011\u0000\u0000\u15a9\u15aa\u0007\u0007\u0000\u0000\u15aa\u15ab\u0007"+ - "\f\u0000\u0000\u15ab\u046e\u0001\u0000\u0000\u0000\u15ac\u15ad\u0007\u0010"+ - "\u0000\u0000\u15ad\u15ae\u0007\u0005\u0000\u0000\u15ae\u15af\u0007\u0007"+ - "\u0000\u0000\u15af\u0470\u0001\u0000\u0000\u0000\u15b0\u15b1\u0007\u0010"+ - "\u0000\u0000\u15b1\u15b2\u0007\u0005\u0000\u0000\u15b2\u15b3\u0007\u0007"+ - "\u0000\u0000\u15b3\u15b4\u0007\f\u0000\u0000\u15b4\u0472\u0001\u0000\u0000"+ - "\u0000\u15b5\u15b6\u0007\t\u0000\u0000\u15b6\u15b7\u0007\u0011\u0000\u0000"+ - "\u15b7\u15b8\u0007\u0007\u0000\u0000\u15b8\u15b9\u0007\u0014\u0000\u0000"+ - "\u15b9\u0474\u0001\u0000\u0000\u0000\u15ba\u15bb\u0007\u000e\u0000\u0000"+ - "\u15bb\u15bc\u0007\u0013\u0000\u0000\u15bc\u15bd\u0007\t\u0000\u0000\u15bd"+ - "\u15be\u0007\u0014\u0000\u0000\u15be\u0476\u0001\u0000\u0000\u0000\u15bf"+ - "\u15c0\u0007\u0010\u0000\u0000\u15c0\u15c1\u0007\u0005\u0000\u0000\u15c1"+ - "\u15c2\u0007\u0007\u0000\u0000\u15c2\u15c3\u0007\u0014\u0000\u0000\u15c3"+ - "\u0478\u0001\u0000\u0000\u0000\u15c4\u15c5\u0007\u0005\u0000\u0000\u15c5"+ - "\u15c6\u0007\t\u0000\u0000\u15c6\u15c7\u0007\u0011\u0000\u0000\u15c7\u15c8"+ - "\u0007\u0007\u0000\u0000\u15c8\u15c9\u0007\u0014\u0000\u0000\u15c9\u047a"+ - "\u0001\u0000\u0000\u0000\u15ca\u15cb\u0007\u0005\u0000\u0000\u15cb\u15cc"+ - "\u0007\u000e\u0000\u0000\u15cc\u15cd\u0007\u0013\u0000\u0000\u15cd\u15ce"+ - "\u0007\t\u0000\u0000\u15ce\u15cf\u0007\u0014\u0000\u0000\u15cf\u047c\u0001"+ - "\u0000\u0000\u0000\u15d0\u15d1\u0007\u0005\u0000\u0000\u15d1\u15d2\u0007"+ - "\u0010\u0000\u0000\u15d2\u15d3\u0007\u0005\u0000\u0000\u15d3\u15d4\u0007"+ - "\u0007\u0000\u0000\u15d4\u15d5\u0007\u0014\u0000\u0000\u15d5\u047e\u0001"+ - "\u0000\u0000\u0000\u15d6\u15d7\u0007\u0012\u0000\u0000\u15d7\u15d8\u0007"+ - "\u0011\u0000\u0000\u15d8\u15d9\u0007\u0010\u0000\u0000\u15d9\u15da\u0005"+ - "_\u0000\u0000\u15da\u15db\u0007\u0006\u0000\u0000\u15db\u15dc\u0007\n"+ - "\u0000\u0000\u15dc\u15dd\u0007\u0007\u0000\u0000\u15dd\u15de\u0007\u0017"+ - "\u0000\u0000\u15de\u15df\u0007\u0010\u0000\u0000\u15df\u15e0\u0007\u0014"+ - "\u0000\u0000\u15e0\u0480\u0001\u0000\u0000\u0000\u15e1\u15e2\u0007\u000e"+ - "\u0000\u0000\u15e2\u15e3\u0007\u0014\u0000\u0000\u15e3\u15e4\u0007\u0005"+ - "\u0000\u0000\u15e4\u15e5\u0007\r\u0000\u0000\u15e5\u15e6\u0005_\u0000"+ - "\u0000\u15e6\u15e7\u0007\u0006\u0000\u0000\u15e7\u15e8\u0007\n\u0000\u0000"+ - "\u15e8\u15e9\u0007\u0007\u0000\u0000\u15e9\u15ea\u0007\u0017\u0000\u0000"+ - "\u15ea\u15eb\u0007\u0010\u0000\u0000\u15eb\u15ec\u0007\u0014\u0000\u0000"+ - "\u15ec\u0482\u0001\u0000\u0000\u0000\u15ed\u15ee\u0007\u000e\u0000\u0000"+ - "\u15ee\u15ef\u0007\u0014\u0000\u0000\u15ef\u15f0\u0007\u0005\u0000\u0000"+ - "\u15f0\u15f1\u0007\r\u0000\u0000\u15f1\u15f2\u0007\u0005\u0000\u0000\u15f2"+ - "\u15f3\u0007\u000e\u0000\u0000\u15f3\u15f4\u0007\u0010\u0000\u0000\u15f4"+ - "\u15f5\u0007\n\u0000\u0000\u15f5\u15f6\u0007\r\u0000\u0000\u15f6\u15f7"+ - "\u0005_\u0000\u0000\u15f7\u15f8\u0007\u0006\u0000\u0000\u15f8\u15f9\u0007"+ - "\n\u0000\u0000\u15f9\u15fa\u0007\u0007\u0000\u0000\u15fa\u15fb\u0007\u0017"+ - "\u0000\u0000\u15fb\u15fc\u0007\u0010\u0000\u0000\u15fc\u15fd\u0007\u0014"+ - "\u0000\u0000\u15fd\u0484\u0001\u0000\u0000\u0000\u15fe\u15ff\u0007\u0006"+ - "\u0000\u0000\u15ff\u1600\u0007\u0013\u0000\u0000\u1600\u1601\u0007\u001d"+ - "\u0000\u0000\u1601\u1602\u0007\n\u0000\u0000\u1602\u1603\u0007\r\u0000"+ - "\u0000\u1603\u0486\u0001\u0000\u0000\u0000\u1604\u1605\u0007\u0013\u0000"+ - "\u0000\u1605\u1606\u0007\u000e\u0000\u0000\u1606\u1607\u0007\u0010\u0000"+ - "\u0000\u1607\u1608\u0007\n\u0000\u0000\u1608\u1609\u0007\u0010\u0000\u0000"+ - "\u1609\u160a\u0005_\u0000\u0000\u160a\u160b\u0007\u0006\u0000\u0000\u160b"+ - "\u160c\u0007\n\u0000\u0000\u160c\u160d\u0007\u0007\u0000\u0000\u160d\u160e"+ - "\u0007\u0017\u0000\u0000\u160e\u160f\u0007\u0010\u0000\u0000\u160f\u1610"+ - "\u0007\u0014\u0000\u0000\u1610\u0488\u0001\u0000\u0000\u0000\u1611\u1612"+ - "\u0007\u0016\u0000\u0000\u1612\u1613\u0007\u0018\u0000\u0000\u1613\u1614"+ - "\u0007\u0018\u0000\u0000\u1614\u1615\u0007\n\u0000\u0000\u1615\u1616\u0007"+ - "\r\u0000\u0000\u1616\u048a\u0001\u0000\u0000\u0000\u1617\u1618\u0007\u0005"+ - "\u0000\u0000\u1618\u1619\u0007\t\u0000\u0000\u1619\u161a\u0007\u000e\u0000"+ - "\u0000\u161a\u161b\u0007\u0011\u0000\u0000\u161b\u161c\u0007\u0011\u0000"+ - "\u0000\u161c\u048c\u0001\u0000\u0000\u0000\u161d\u161e\u0007\u0012\u0000"+ - "\u0000\u161e\u161f\u0007\u0010\u0000\u0000\u161f\u1620\u0007\r\u0000\u0000"+ - "\u1620\u1621\u0007\u0011\u0000\u0000\u1621\u1622\u0007\u000f\u0000\u0000"+ - "\u1622\u048e\u0001\u0000\u0000\u0000\u1623\u1624\u0007\u000e\u0000\u0000"+ - "\u1624\u1625\u0007\u0014\u0000\u0000\u1625\u1626\u0007\r\u0000\u0000\u1626"+ - "\u0490\u0001\u0000\u0000\u0000\u1627\u1628\u0007\u000e\u0000\u0000\u1628"+ - "\u1629\u0007\u0013\u0000\u0000\u1629\u162a\u0007\u0007\u0000\u0000\u162a"+ - "\u162b\u0007\u000e\u0000\u0000\u162b\u162c\u0007\u0005\u0000\u0000\u162c"+ - "\u162d\u0007\u0010\u0000\u0000\u162d\u0492\u0001\u0000\u0000\u0000\u162e"+ - "\u162f\u0007\u000e\u0000\u0000\u162f\u1630\u0007\u0013\u0000\u0000\u1630"+ - "\u1631\u0007\u0007\u0000\u0000\u1631\u1632\u0007\u000e\u0000\u0000\u1632"+ - "\u1633\u0007\u0005\u0000\u0000\u1633\u1634\u0007\u0010\u0000\u0000\u1634"+ - "\u1635\u0005_\u0000\u0000\u1635\u1636\u0007\u001d\u0000\u0000\u1636\u1637"+ - "\u0007\t\u0000\u0000\u1637\u0494\u0001\u0000\u0000\u0000\u1638\u1639\u0007"+ - "\u0019\u0000\u0000\u1639\u163a\u0007\u0013\u0000\u0000\u163a\u163b\u0007"+ - "\r\u0000\u0000\u163b\u163c\u0007\u000f\u0000\u0000\u163c\u163d\u0007\u0005"+ - "\u0000\u0000\u163d\u163e\u0007\u0010\u0000\u0000\u163e\u0496\u0001\u0000"+ - "\u0000\u0000\u163f\u1640\u0007\u0011\u0000\u0000\u1640\u1641\u0007\u0007"+ - "\u0000\u0000\u1641\u1642\u0007\u0011\u0000\u0000\u1642\u1643\u0007\u0010"+ - "\u0000\u0000\u1643\u1644\u0007\u000e\u0000\u0000\u1644\u1645\u0007\u0005"+ - "\u0000\u0000\u1645\u1646\u0007\u0018\u0000\u0000\u1646\u0498\u0001\u0000"+ - "\u0000\u0000\u1647\u1648\u0007\u0006\u0000\u0000\u1648\u1649\u0007\n\u0000"+ - "\u0000\u1649\u164a\u0007\u0007\u0000\u0000\u164a\u164b\u0007\u0017\u0000"+ - "\u0000\u164b\u164c\u0007\u0010\u0000\u0000\u164c\u164d\u0007\u0014\u0000"+ - "\u0000\u164d\u049a\u0001\u0000\u0000\u0000\u164e\u164f\u0007\u0006\u0000"+ - "\u0000\u164f\u1650\u0007\u0018\u0000\u0000\u1650\u1651\u0007\u0005\u0000"+ - "\u0000\u1651\u1652\u0007\f\u0000\u0000\u1652\u049c\u0001\u0000\u0000\u0000"+ - "\u1653\u1654\u0007\u0006\u0000\u0000\u1654\u1655\u0007\u0010\u0000\u0000"+ - "\u1655\u1656\u0007\r\u0000\u0000\u1656\u1657\u0007\u0011\u0000\u0000\u1657"+ - "\u1658\u0007\u000f\u0000\u0000\u1658\u049e\u0001\u0000\u0000\u0000\u1659"+ - "\u165a\u0007\u000f\u0000\u0000\u165a\u165b\u0007\f\u0000\u0000\u165b\u165c"+ - "\u00055\u0000\u0000\u165c\u04a0\u0001\u0000\u0000\u0000\u165d\u165e\u0007"+ - "\u0018\u0000\u0000\u165e\u165f\u0007\u0005\u0000\u0000\u165f\u1660\u0007"+ - "\r\u0000\u0000\u1660\u1661\u0007\t\u0000\u0000\u1661\u1662\u0007\n\u0000"+ - "\u0000\u1662\u1663\u0005_\u0000\u0000\u1663\u1664\u0007\u0011\u0000\u0000"+ - "\u1664\u1665\u0007\f\u0000\u0000\u1665\u1666\u0007\n\u0000\u0000\u1666"+ - "\u1667\u0007\u0007\u0000\u0000\u1667\u1668\u0007\u0010\u0000\u0000\u1668"+ - "\u04a2\u0001\u0000\u0000\u0000\u1669\u166a\u0007\u0018\u0000\u0000\u166a"+ - "\u166b\u0007\u0017\u0000\u0000\u166b\u166c\u0005_\u0000\u0000\u166c\u166d"+ - "\u0007\u000e\u0000\u0000\u166d\u166e\u0007\u0006\u0000\u0000\u166e\u166f"+ - "\u0007\u0011\u0000\u0000\u166f\u1670\u0007\n\u0000\u0000\u1670\u1671\u0007"+ - "\u0007\u0000\u0000\u1671\u1672\u0007\u0010\u0000\u0000\u1672\u1673\u0005"+ - "_\u0000\u0000\u1673\u1674\u0007\n\u0000\u0000\u1674\u1675\u0007\u0007"+ - "\u0000\u0000\u1675\u1676\u0007\u000e\u0000\u0000\u1676\u1677\u0007\u0013"+ - "\u0000\u0000\u1677\u1678\u0007\f\u0000\u0000\u1678\u1679\u0007\u0011\u0000"+ - "\u0000\u1679\u167a\u0007\u0007\u0000\u0000\u167a\u167b\u0007\u0017\u0000"+ - "\u0000\u167b\u04a4\u0001\u0000\u0000\u0000\u167c\u167d\u0007\u001c\u0000"+ - "\u0000\u167d\u167e\u0007\u0016\u0000\u0000\u167e\u167f\u0007\u0013\u0000"+ - "\u0000\u167f\u1680\u0007\u0010\u0000\u0000\u1680\u1681\u0007\n\u0000\u0000"+ - "\u1681\u1682\u0005_\u0000\u0000\u1682\u1683\u0007\u0011\u0000\u0000\u1683"+ - "\u1684\u0007\f\u0000\u0000\u1684\u1685\u0007\n\u0000\u0000\u1685\u1686"+ - "\u0007\u0007\u0000\u0000\u1686\u1687\u0007\u0010\u0000\u0000\u1687\u04a6"+ - "\u0001\u0000\u0000\u0000\u1688\u1689\u0007\u001c\u0000\u0000\u1689\u168a"+ - "\u0007\u0016\u0000\u0000\u168a\u168b\u0007\u0013\u0000\u0000\u168b\u168c"+ - "\u0007\u0010\u0000\u0000\u168c\u168d\u0007\n\u0000\u0000\u168d\u168e\u0005"+ - "_\u0000\u0000\u168e\u168f\u0007\u0006\u0000\u0000\u168f\u1690\u0007\u0011"+ - "\u0000\u0000\u1690\u1691\u0007\u0010\u0000\u0000\u1691\u1692\u0007\n\u0000"+ - "\u0000\u1692\u1693\u0007\r\u0000\u0000\u1693\u1694\u0007\u0005\u0000\u0000"+ - "\u1694\u1695\u0007\u0006\u0000\u0000\u1695\u04a8\u0001\u0000\u0000\u0000"+ - "\u1696\u1697\u0007\u001c\u0000\u0000\u1697\u1698\u0007\u0016\u0000\u0000"+ - "\u1698\u1699\u0007\u0013\u0000\u0000\u1699\u169a\u0007\u0010\u0000\u0000"+ - "\u169a\u169b\u0007\n\u0000\u0000\u169b\u169c\u0005_\u0000\u0000\u169c"+ - "\u169d\u0007\u0007\u0000\u0000\u169d\u169e\u0007\u0016\u0000\u0000\u169e"+ - "\u169f\u0007\u0006\u0000\u0000\u169f\u16a0\u0007\u0006\u0000\u0000\u16a0"+ - "\u16a1\u0007\u0005\u0000\u0000\u16a1\u16a2\u0007\u0012\u0000\u0000\u16a2"+ - "\u16a3\u0007\u0006\u0000\u0000\u16a3\u16a4\u0007\n\u0000\u0000\u16a4\u04aa"+ - "\u0001\u0000\u0000\u0000\u16a5\u16a6\u0007\r\u0000\u0000\u16a6\u16a7\u0007"+ - "\n\u0000\u0000\u16a7\u16a8\u0007\u0017\u0000\u0000\u16a8\u16a9\u0007\n"+ - "\u0000\u0000\u16a9\u16aa\u0007\u001a\u0000\u0000\u16aa\u16ab\u0007\u0018"+ - "\u0000\u0000\u16ab\u16ac\u0005_\u0000\u0000\u16ac\u16ad\u0007\u000e\u0000"+ - "\u0000\u16ad\u16ae\u0007\u0013\u0000\u0000\u16ae\u16af\u0007\u0016\u0000"+ - "\u0000\u16af\u16b0\u0007\u0007\u0000\u0000\u16b0\u16b1\u0007\u0010\u0000"+ - "\u0000\u16b1\u04ac\u0001\u0000\u0000\u0000\u16b2\u16b3\u0007\r\u0000\u0000"+ - "\u16b3\u16b4\u0007\n\u0000\u0000\u16b4\u16b5\u0007\u0017\u0000\u0000\u16b5"+ - "\u16b6\u0007\n\u0000\u0000\u16b6\u16b7\u0007\u001a\u0000\u0000\u16b7\u16b8"+ - "\u0007\u0018\u0000\u0000\u16b8\u16b9\u0005_\u0000\u0000\u16b9\u16ba\u0007"+ - "\u0011\u0000\u0000\u16ba\u16bb\u0007\u0007\u0000\u0000\u16bb\u16bc\u0007"+ - "\t\u0000\u0000\u16bc\u16bd\u0007\u0010\u0000\u0000\u16bd\u16be\u0007\r"+ - "\u0000\u0000\u16be\u04ae\u0001\u0000\u0000\u0000\u16bf\u16c0\u0007\r\u0000"+ - "\u0000\u16c0\u16c1\u0007\n\u0000\u0000\u16c1\u16c2\u0007\u0017\u0000\u0000"+ - "\u16c2\u16c3\u0007\n\u0000\u0000\u16c3\u16c4\u0007\u001a\u0000\u0000\u16c4"+ - "\u16c5\u0007\u0018\u0000\u0000\u16c5\u16c6\u0005_\u0000\u0000\u16c6\u16c7"+ - "\u0007\u0006\u0000\u0000\u16c7\u16c8\u0007\u0011\u0000\u0000\u16c8\u16c9"+ - "\u0007\u0015\u0000\u0000\u16c9\u16ca\u0007\n\u0000\u0000\u16ca\u04b0\u0001"+ - "\u0000\u0000\u0000\u16cb\u16cc\u0007\r\u0000\u0000\u16cc\u16cd\u0007\n"+ - "\u0000\u0000\u16cd\u16ce\u0007\u0017\u0000\u0000\u16ce\u16cf\u0007\n\u0000"+ - "\u0000\u16cf\u16d0\u0007\u001a\u0000\u0000\u16d0\u16d1\u0007\u0018\u0000"+ - "\u0000\u16d1\u16d2\u0005_\u0000\u0000\u16d2\u16d3\u0007\u000f\u0000\u0000"+ - "\u16d3\u16d4\u0007\u0005\u0000\u0000\u16d4\u16d5\u0007\u0010\u0000\u0000"+ - "\u16d5\u16d6\u0007\u000e\u0000\u0000\u16d6\u16d7\u0007\u0014\u0000\u0000"+ - "\u16d7\u04b2\u0001\u0000\u0000\u0000\u16d8\u16d9\u0007\r\u0000\u0000\u16d9"+ - "\u16da\u0007\n\u0000\u0000\u16da\u16db\u0007\u0017\u0000\u0000\u16db\u16dc"+ - "\u0007\n\u0000\u0000\u16dc\u16dd\u0007\u001a\u0000\u0000\u16dd\u16de\u0007"+ - "\u0018\u0000\u0000\u16de\u16df\u0005_\u0000\u0000\u16df\u16e0\u0007\u000f"+ - "\u0000\u0000\u16e0\u16e1\u0007\u0005\u0000\u0000\u16e1\u16e2\u0007\u0010"+ - "\u0000\u0000\u16e2\u16e3\u0007\u000e\u0000\u0000\u16e3\u16e4\u0007\u0014"+ - "\u0000\u0000\u16e4\u16e5\u0007\n\u0000\u0000\u16e5\u16e6\u0007\t\u0000"+ - "\u0000\u16e6\u04b4\u0001\u0000\u0000\u0000\u16e7\u16e8\u0007\r\u0000\u0000"+ - "\u16e8\u16e9\u0007\n\u0000\u0000\u16e9\u16ea\u0007\u0017\u0000\u0000\u16ea"+ - "\u16eb\u0007\n\u0000\u0000\u16eb\u16ec\u0007\u001a\u0000\u0000\u16ec\u16ed"+ - "\u0007\u0018\u0000\u0000\u16ed\u16ee\u0005_\u0000\u0000\u16ee\u16ef\u0007"+ - "\r\u0000\u0000\u16ef\u16f0\u0007\n\u0000\u0000\u16f0\u16f1\u0007\u0018"+ - "\u0000\u0000\u16f1\u16f2\u0007\u0006\u0000\u0000\u16f2\u16f3\u0007\u0005"+ - "\u0000\u0000\u16f3\u16f4\u0007\u000e\u0000\u0000\u16f4\u16f5\u0007\n\u0000"+ - "\u0000\u16f5\u04b6\u0001\u0000\u0000\u0000\u16f6\u16f7\u0007\r\u0000\u0000"+ - "\u16f7\u16f8\u0007\n\u0000\u0000\u16f8\u16f9\u0007\u0017\u0000\u0000\u16f9"+ - "\u16fa\u0007\n\u0000\u0000\u16fa\u16fb\u0007\u001a\u0000\u0000\u16fb\u16fc"+ - "\u0007\u0018\u0000\u0000\u16fc\u16fd\u0005_\u0000\u0000\u16fd\u16fe\u0007"+ - "\t\u0000\u0000\u16fe\u16ff\u0007\u0018\u0000\u0000\u16ff\u1700\u0007\u0006"+ - "\u0000\u0000\u1700\u1701\u0007\u0011\u0000\u0000\u1701\u1702\u0007\u0010"+ - "\u0000\u0000\u1702\u1703\u0005_\u0000\u0000\u1703\u1704\u0007\u0010\u0000"+ - "\u0000\u1704\u1705\u0007\u0013\u0000\u0000\u1705\u1706\u0005_\u0000\u0000"+ - "\u1706\u1707\u0007\u0005\u0000\u0000\u1707\u1708\u0007\r\u0000\u0000\u1708"+ - "\u1709\u0007\r\u0000\u0000\u1709\u170a\u0007\u0005\u0000\u0000\u170a\u170b"+ - "\u0007\b\u0000\u0000\u170b\u04b8\u0001\u0000\u0000\u0000\u170c\u170d\u0007"+ - "\r\u0000\u0000\u170d\u170e\u0007\n\u0000\u0000\u170e\u170f\u0007\u0017"+ - "\u0000\u0000\u170f\u1710\u0007\n\u0000\u0000\u1710\u1711\u0007\u001a\u0000"+ - "\u0000\u1711\u1712\u0007\u0018\u0000\u0000\u1712\u1713\u0005_\u0000\u0000"+ - "\u1713\u1714\u0007\t\u0000\u0000\u1714\u1715\u0007\u0018\u0000\u0000\u1715"+ - "\u1716\u0007\u0006\u0000\u0000\u1716\u1717\u0007\u0011\u0000\u0000\u1717"+ - "\u1718\u0007\u0010\u0000\u0000\u1718\u1719\u0005_\u0000\u0000\u1719\u171a"+ - "\u0007\u0010\u0000\u0000\u171a\u171b\u0007\u0013\u0000\u0000\u171b\u171c"+ - "\u0005_\u0000\u0000\u171c\u171d\u0007\u0010\u0000\u0000\u171d\u171e\u0007"+ - "\u0005\u0000\u0000\u171e\u171f\u0007\u0012\u0000\u0000\u171f\u1720\u0007"+ - "\u0006\u0000\u0000\u1720\u1721\u0007\n\u0000\u0000\u1721\u04ba\u0001\u0000"+ - "\u0000\u0000\u1722\u1723\u0007\r\u0000\u0000\u1723\u1724\u0007\n\u0000"+ - "\u0000\u1724\u1725\u0007\u0017\u0000\u0000\u1725\u1726\u0007\n\u0000\u0000"+ - "\u1726\u1727\u0007\u001a\u0000\u0000\u1727\u1728\u0007\u0018\u0000\u0000"+ - "\u1728\u1729\u0005_\u0000\u0000\u1729\u172a\u0007\t\u0000\u0000\u172a"+ - "\u172b\u0007\u0016\u0000\u0000\u172b\u172c\u0007\u0012\u0000\u0000\u172c"+ - "\u172d\u0007\t\u0000\u0000\u172d\u172e\u0007\u0010\u0000\u0000\u172e\u172f"+ - "\u0007\r\u0000\u0000\u172f\u04bc\u0001\u0000\u0000\u0000\u1730\u1731\u0007"+ - "\r\u0000\u0000\u1731\u1732\u0007\n\u0000\u0000\u1732\u1733\u0007\u0018"+ - "\u0000\u0000\u1733\u1734\u0007\n\u0000\u0000\u1734\u1735\u0007\u0005\u0000"+ - "\u0000\u1735\u1736\u0007\u0010\u0000\u0000\u1736\u04be\u0001\u0000\u0000"+ - "\u0000\u1737\u1738\u0007\r\u0000\u0000\u1738\u1739\u0007\u0018\u0000\u0000"+ - "\u1739\u173a\u0007\u0005\u0000\u0000\u173a\u173b\u0007\f\u0000\u0000\u173b"+ - "\u04c0\u0001\u0000\u0000\u0000\u173c\u173d\u0007\r\u0000\u0000\u173d\u173e"+ - "\u0007\u0010\u0000\u0000\u173e\u173f\u0007\r\u0000\u0000\u173f\u1740\u0007"+ - "\u0011\u0000\u0000\u1740\u1741\u0007\u000f\u0000\u0000\u1741\u04c2\u0001"+ - "\u0000\u0000\u0000\u1742\u1743\u0007\t\u0000\u0000\u1743\u1744\u0007\u0018"+ - "\u0000\u0000\u1744\u1745\u0007\u0006\u0000\u0000\u1745\u1746\u0007\u0011"+ - "\u0000\u0000\u1746\u1747\u0007\u0010\u0000\u0000\u1747\u1748\u0005_\u0000"+ - "\u0000\u1748\u1749\u0007\u0018\u0000\u0000\u1749\u174a\u0007\u0005\u0000"+ - "\u0000\u174a\u174b\u0007\r\u0000\u0000\u174b\u174c\u0007\u0010\u0000\u0000"+ - "\u174c\u04c4\u0001\u0000\u0000\u0000\u174d\u174e\u0007\t\u0000\u0000\u174e"+ - "\u174f\u0007\u0010\u0000\u0000\u174f\u1750\u0007\u0005\u0000\u0000\u1750"+ - "\u1751\u0007\r\u0000\u0000\u1751\u1752\u0007\u0010\u0000\u0000\u1752\u1753"+ - "\u0007\t\u0000\u0000\u1753\u1754\u0005_\u0000\u0000\u1754\u1755\u0007"+ - "\u001d\u0000\u0000\u1755\u1756\u0007\u0011\u0000\u0000\u1756\u1757\u0007"+ - "\u0010\u0000\u0000\u1757\u1758\u0007\u0014\u0000\u0000\u1758\u04c6\u0001"+ - "\u0000\u0000\u0000\u1759\u175a\u0007\t\u0000\u0000\u175a\u175b\u0007\u0010"+ - "\u0000\u0000\u175b\u175c\u0007\r\u0000\u0000\u175c\u175d\u0007\u0011\u0000"+ - "\u0000\u175d\u175e\u0007\u0007\u0000\u0000\u175e\u175f\u0007\u0017\u0000"+ - "\u0000\u175f\u1760\u0005_\u0000\u0000\u1760\u1761\u0007\u0010\u0000\u0000"+ - "\u1761\u1762\u0007\u0013\u0000\u0000\u1762\u1763\u0005_\u0000\u0000\u1763"+ - "\u1764\u0007\u0005\u0000\u0000\u1764\u1765\u0007\r\u0000\u0000\u1765\u1766"+ - "\u0007\r\u0000\u0000\u1766\u1767\u0007\u0005\u0000\u0000\u1767\u1768\u0007"+ - "\b\u0000\u0000\u1768\u04c8\u0001\u0000\u0000\u0000\u1769\u176a\u0007\t"+ - "\u0000\u0000\u176a\u176b\u0007\u0010\u0000\u0000\u176b\u176c\u0007\r\u0000"+ - "\u0000\u176c\u176d\u0007\u0011\u0000\u0000\u176d\u176e\u0007\u0007\u0000"+ - "\u0000\u176e\u176f\u0007\u0017\u0000\u0000\u176f\u1770\u0005_\u0000\u0000"+ - "\u1770\u1771\u0007\u0010\u0000\u0000\u1771\u1772\u0007\u0013\u0000\u0000"+ - "\u1772\u1773\u0005_\u0000\u0000\u1773\u1774\u0007\u0010\u0000\u0000\u1774"+ - "\u1775\u0007\u0005\u0000\u0000\u1775\u1776\u0007\u0012\u0000\u0000\u1776"+ - "\u1777\u0007\u0006\u0000\u0000\u1777\u1778\u0007\n\u0000\u0000\u1778\u04ca"+ - "\u0001\u0000\u0000\u0000\u1779\u177a\u0007\t\u0000\u0000\u177a\u177b\u0007"+ - "\u0010\u0000\u0000\u177b\u177c\u0007\r\u0000\u0000\u177c\u177d\u0007\u0018"+ - "\u0000\u0000\u177d\u177e\u0007\u0013\u0000\u0000\u177e\u177f\u0007\t\u0000"+ - "\u0000\u177f\u04cc\u0001\u0000\u0000\u0000\u1780\u1781\u0007\t\u0000\u0000"+ - "\u1781\u1782\u0007\u0016\u0000\u0000\u1782\u1783\u0007\u0012\u0000\u0000"+ - "\u1783\u1784\u0007\t\u0000\u0000\u1784\u1785\u0007\u0010\u0000\u0000\u1785"+ - "\u1786\u0007\r\u0000\u0000\u1786\u04ce\u0001\u0000\u0000\u0000\u1787\u1788"+ - "\u0007\u0010\u0000\u0000\u1788\u1789\u0007\u0013\u0000\u0000\u1789\u178a"+ - "\u0005_\u0000\u0000\u178a\u178b\u0007\u0005\u0000\u0000\u178b\u178c\u0007"+ - "\t\u0000\u0000\u178c\u178d\u0007\u000e\u0000\u0000\u178d\u178e\u0007\u0011"+ - "\u0000\u0000\u178e\u178f\u0007\u0011\u0000\u0000\u178f\u04d0\u0001\u0000"+ - "\u0000\u0000\u1790\u1791\u0007\u0010\u0000\u0000\u1791\u1792\u0007\u0013"+ - "\u0000\u0000\u1792\u1793\u0005_\u0000\u0000\u1793\u1794\u0007\u0014\u0000"+ - "\u0000\u1794\u1795\u0007\n\u0000\u0000\u1795\u1796\u0007\u001a\u0000\u0000"+ - "\u1796\u04d2\u0001\u0000\u0000\u0000\u1797\u1798\u0007\u0010\u0000\u0000"+ - "\u1798\u1799\u0007\r\u0000\u0000\u1799\u179a\u0007\u0005\u0000\u0000\u179a"+ - "\u179b\u0007\u0007\u0000\u0000\u179b\u179c\u0007\t\u0000\u0000\u179c\u179d"+ - "\u0007\u0006\u0000\u0000\u179d\u179e\u0007\u0005\u0000\u0000\u179e\u179f"+ - "\u0007\u0010\u0000\u0000\u179f\u17a0\u0007\n\u0000\u0000\u17a0\u04d4\u0001"+ - "\u0000\u0000\u0000\u17a1\u17a2\u0007\u0016\u0000\u0000\u17a2\u17a3\u0007"+ - "\u0007\u0000\u0000\u17a3\u17a4\u0007\u0011\u0000\u0000\u17a4\u17a5\u0007"+ - "\t\u0000\u0000\u17a5\u17a6\u0007\u0010\u0000\u0000\u17a6\u17a7\u0007\r"+ - "\u0000\u0000\u17a7\u04d6\u0001\u0000\u0000\u0000\u17a8\u17a9\u0007\u0005"+ - "\u0000\u0000\u17a9\u17aa\u0007\u0017\u0000\u0000\u17aa\u17ab\u0007\n\u0000"+ - "\u0000\u17ab\u04d8\u0001\u0000\u0000\u0000\u17ac\u17ad\u0007\u000e\u0000"+ - "\u0000\u17ad\u17ae\u0007\u0006\u0000\u0000\u17ae\u17af\u0007\u0013\u0000"+ - "\u0000\u17af\u17b0\u0007\u000e\u0000\u0000\u17b0\u17b1\u0007\u0015\u0000"+ - "\u0000\u17b1\u17b2\u0005_\u0000\u0000\u17b2\u17b3\u0007\u0010\u0000\u0000"+ - "\u17b3\u17b4\u0007\u0011\u0000\u0000\u17b4\u17b5\u0007\u000f\u0000\u0000"+ - "\u17b5\u17b6\u0007\n\u0000\u0000\u17b6\u17b7\u0007\t\u0000\u0000\u17b7"+ - "\u17b8\u0007\u0010\u0000\u0000\u17b8\u17b9\u0007\u0005\u0000\u0000\u17b9"+ - "\u17ba\u0007\u000f\u0000\u0000\u17ba\u17bb\u0007\u0018\u0000\u0000\u17bb"+ - "\u04da\u0001\u0000\u0000\u0000\u17bc\u17bd\u0007\f\u0000\u0000\u17bd\u17be"+ - "\u0007\u0005\u0000\u0000\u17be\u17bf\u0007\u0010\u0000\u0000\u17bf\u17c0"+ - "\u0007\n\u0000\u0000\u17c0\u17c1\u0005_\u0000\u0000\u17c1\u17c2\u0007"+ - "\u0012\u0000\u0000\u17c2\u17c3\u0007\u0011\u0000\u0000\u17c3\u17c4\u0007"+ - "\u0007\u0000\u0000\u17c4\u04dc\u0001\u0000\u0000\u0000\u17c5\u17c6\u0007"+ - "\f\u0000\u0000\u17c6\u17c7\u0007\u0005\u0000\u0000\u17c7\u17c8\u0007\u0010"+ - "\u0000\u0000\u17c8\u17c9\u0007\n\u0000\u0000\u17c9\u17ca\u0005_\u0000"+ - "\u0000\u17ca\u17cb\u0007\u0018\u0000\u0000\u17cb\u17cc\u0007\u0005\u0000"+ - "\u0000\u17cc\u17cd\u0007\r\u0000\u0000\u17cd\u17ce\u0007\u0010\u0000\u0000"+ - "\u17ce\u04de\u0001\u0000\u0000\u0000\u17cf\u17d0\u0007\f\u0000\u0000\u17d0"+ - "\u17d1\u0007\u0005\u0000\u0000\u17d1\u17d2\u0007\u0010\u0000\u0000\u17d2"+ - "\u17d3\u0007\n\u0000\u0000\u17d3\u17d4\u0005_\u0000\u0000\u17d4\u17d5"+ - "\u0007\u0010\u0000\u0000\u17d5\u17d6\u0007\r\u0000\u0000\u17d6\u17d7\u0007"+ - "\u0016\u0000\u0000\u17d7\u17d8\u0007\u0007\u0000\u0000\u17d8\u17d9\u0007"+ - "\u000e\u0000\u0000\u17d9\u04e0\u0001\u0000\u0000\u0000\u17da\u17db\u0007"+ - "\u0011\u0000\u0000\u17db\u17dc\u0007\t\u0000\u0000\u17dc\u17dd\u0007\u0019"+ - "\u0000\u0000\u17dd\u17de\u0007\u0011\u0000\u0000\u17de\u17df\u0007\u0007"+ - "\u0000\u0000\u17df\u17e0\u0007\u0011\u0000\u0000\u17e0\u17e1\u0007\u0010"+ - "\u0000\u0000\u17e1\u17e2\u0007\n\u0000\u0000\u17e2\u04e2\u0001\u0000\u0000"+ - "\u0000\u17e3\u17e4\u0007\u001e\u0000\u0000\u17e4\u17e5\u0007\u0016\u0000"+ - "\u0000\u17e5\u17e6\u0007\t\u0000\u0000\u17e6\u17e7\u0007\u0010\u0000\u0000"+ - "\u17e7\u17e8\u0007\u0011\u0000\u0000\u17e8\u17e9\u0007\u0019\u0000\u0000"+ - "\u17e9\u17ea\u0007\b\u0000\u0000\u17ea\u17eb\u0005_\u0000\u0000\u17eb"+ - "\u17ec\u0007\f\u0000\u0000\u17ec\u17ed\u0007\u0005\u0000\u0000\u17ed\u17ee"+ - "\u0007\b\u0000\u0000\u17ee\u17ef\u0007\t\u0000\u0000\u17ef\u04e4\u0001"+ - "\u0000\u0000\u0000\u17f0\u17f1\u0007\u001e\u0000\u0000\u17f1\u17f2\u0007"+ - "\u0016\u0000\u0000\u17f2\u17f3\u0007\t\u0000\u0000\u17f3\u17f4\u0007\u0010"+ - "\u0000\u0000\u17f4\u17f5\u0007\u0011\u0000\u0000\u17f5\u17f6\u0007\u0019"+ - "\u0000\u0000\u17f6\u17f7\u0007\b\u0000\u0000\u17f7\u17f8\u0005_\u0000"+ - "\u0000\u17f8\u17f9\u0007\u0014\u0000\u0000\u17f9\u17fa\u0007\u0013\u0000"+ - "\u0000\u17fa\u17fb\u0007\u0016\u0000\u0000\u17fb\u17fc\u0007\r\u0000\u0000"+ - "\u17fc\u17fd\u0007\t\u0000\u0000\u17fd\u04e6\u0001\u0000\u0000\u0000\u17fe"+ - "\u17ff\u0007\u001e\u0000\u0000\u17ff\u1800\u0007\u0016\u0000\u0000\u1800"+ - "\u1801\u0007\t\u0000\u0000\u1801\u1802\u0007\u0010\u0000\u0000\u1802\u1803"+ - "\u0007\u0011\u0000\u0000\u1803\u1804\u0007\u0019\u0000\u0000\u1804\u1805"+ - "\u0007\b\u0000\u0000\u1805\u1806\u0005_\u0000\u0000\u1806\u1807\u0007"+ - "\u0011\u0000\u0000\u1807\u1808\u0007\u0007\u0000\u0000\u1808\u1809\u0007"+ - "\u0010\u0000\u0000\u1809\u180a\u0007\n\u0000\u0000\u180a\u180b\u0007\r"+ - "\u0000\u0000\u180b\u180c\u0007\u001b\u0000\u0000\u180c\u180d\u0007\u0005"+ - "\u0000\u0000\u180d\u180e\u0007\u0006\u0000\u0000\u180e\u04e8\u0001\u0000"+ - "\u0000\u0000\u180f\u1810\u0007\u000f\u0000\u0000\u1810\u1811\u0007\u0005"+ - "\u0000\u0000\u1811\u1812\u0007\u0015\u0000\u0000\u1812\u1813\u0007\n\u0000"+ - "\u0000\u1813\u1814\u0005_\u0000\u0000\u1814\u1815\u0007\f\u0000\u0000"+ - "\u1815\u1816\u0007\u0005\u0000\u0000\u1816\u1817\u0007\u0010\u0000\u0000"+ - "\u1817\u1818\u0007\n\u0000\u0000\u1818\u04ea\u0001\u0000\u0000\u0000\u1819"+ - "\u181a\u0007\u000f\u0000\u0000\u181a\u181b\u0007\u0005\u0000\u0000\u181b"+ - "\u181c\u0007\u0015\u0000\u0000\u181c\u181d\u0007\n\u0000\u0000\u181d\u181e"+ - "\u0005_\u0000\u0000\u181e\u181f\u0007\u0011\u0000\u0000\u181f\u1820\u0007"+ - "\u0007\u0000\u0000\u1820\u1821\u0007\u0010\u0000\u0000\u1821\u1822\u0007"+ - "\n\u0000\u0000\u1822\u1823\u0007\r\u0000\u0000\u1823\u1824\u0007\u001b"+ - "\u0000\u0000\u1824\u1825\u0007\u0005\u0000\u0000\u1825\u1826\u0007\u0006"+ - "\u0000\u0000\u1826\u04ec\u0001\u0000\u0000\u0000\u1827\u1828\u0007\u000f"+ - "\u0000\u0000\u1828\u1829\u0007\u0005\u0000\u0000\u1829\u182a\u0007\u0015"+ - "\u0000\u0000\u182a\u182b\u0007\n\u0000\u0000\u182b\u182c\u0005_\u0000"+ - "\u0000\u182c\u182d\u0007\u0010\u0000\u0000\u182d\u182e\u0007\u0011\u0000"+ - "\u0000\u182e\u182f\u0007\u000f\u0000\u0000\u182f\u1830\u0007\n\u0000\u0000"+ - "\u1830\u04ee\u0001\u0000\u0000\u0000\u1831\u1832\u0007\u000f\u0000\u0000"+ - "\u1832\u1833\u0007\u0005\u0000\u0000\u1833\u1834\u0007\u0015\u0000\u0000"+ - "\u1834\u1835\u0007\n\u0000\u0000\u1835\u1836\u0005_\u0000\u0000\u1836"+ - "\u1837\u0007\u0010\u0000\u0000\u1837\u1838\u0007\u0011\u0000\u0000\u1838"+ - "\u1839\u0007\u000f\u0000\u0000\u1839\u183a\u0007\n\u0000\u0000\u183a\u183b"+ - "\u0007\t\u0000\u0000\u183b\u183c\u0007\u0010\u0000\u0000\u183c\u183d\u0007"+ - "\u0005\u0000\u0000\u183d\u183e\u0007\u000f\u0000\u0000\u183e\u183f\u0007"+ - "\u0018\u0000\u0000\u183f\u04f0\u0001\u0000\u0000\u0000\u1840\u1841\u0007"+ - "\u000f\u0000\u0000\u1841\u1842\u0007\u0005\u0000\u0000\u1842\u1843\u0007"+ - "\u0015\u0000\u0000\u1843\u1844\u0007\n\u0000\u0000\u1844\u1845\u0005_"+ - "\u0000\u0000\u1845\u1846\u0007\u0010\u0000\u0000\u1846\u1847\u0007\u0011"+ - "\u0000\u0000\u1847\u1848\u0007\u000f\u0000\u0000\u1848\u1849\u0007\n\u0000"+ - "\u0000\u1849\u184a\u0007\t\u0000\u0000\u184a\u184b\u0007\u0010\u0000\u0000"+ - "\u184b\u184c\u0007\u0005\u0000\u0000\u184c\u184d\u0007\u000f\u0000\u0000"+ - "\u184d\u184e\u0007\u0018\u0000\u0000\u184e\u184f\u0007\u0010\u0000\u0000"+ - "\u184f\u1850\u0007\u000b\u0000\u0000\u1850\u04f2\u0001\u0000\u0000\u0000"+ - "\u1851\u1852\u0007\u0007\u0000\u0000\u1852\u1853\u0007\u0013\u0000\u0000"+ - "\u1853\u1854\u0007\u001d\u0000\u0000\u1854\u04f4\u0001\u0000\u0000\u0000"+ - "\u1855\u1856\u0007\t\u0000\u0000\u1856\u1857\u0007\u0010\u0000\u0000\u1857"+ - "\u1858\u0007\u0005\u0000\u0000\u1858\u1859\u0007\u0010\u0000\u0000\u1859"+ - "\u185a\u0007\n\u0000\u0000\u185a\u185b\u0007\u000f\u0000\u0000\u185b\u185c"+ - "\u0007\n\u0000\u0000\u185c\u185d\u0007\u0007\u0000\u0000\u185d\u185e\u0007"+ - "\u0010\u0000\u0000\u185e\u185f\u0005_\u0000\u0000\u185f\u1860\u0007\u0010"+ - "\u0000\u0000\u1860\u1861\u0007\u0011\u0000\u0000\u1861\u1862\u0007\u000f"+ - "\u0000\u0000\u1862\u1863\u0007\n\u0000\u0000\u1863\u1864\u0007\t\u0000"+ - "\u0000\u1864\u1865\u0007\u0010\u0000\u0000\u1865\u1866\u0007\u0005\u0000"+ - "\u0000\u1866\u1867\u0007\u000f\u0000\u0000\u1867\u1868\u0007\u0018\u0000"+ - "\u0000\u1868\u04f6\u0001\u0000\u0000\u0000\u1869\u186a\u0007\u0010\u0000"+ - "\u0000\u186a\u186b\u0007\u0011\u0000\u0000\u186b\u186c\u0007\u000f\u0000"+ - "\u0000\u186c\u186d\u0007\n\u0000\u0000\u186d\u186e\u0007\u0013\u0000\u0000"+ - "\u186e\u186f\u0007\u0019\u0000\u0000\u186f\u1870\u0007\f\u0000\u0000\u1870"+ - "\u1871\u0007\u0005\u0000\u0000\u1871\u1872\u0007\b\u0000\u0000\u1872\u04f8"+ - "\u0001\u0000\u0000\u0000\u1873\u1874\u0007\u0010\u0000\u0000\u1874\u1875"+ - "\u0007\r\u0000\u0000\u1875\u1876\u0007\u0005\u0000\u0000\u1876\u1877\u0007"+ - "\u0007\u0000\u0000\u1877\u1878\u0007\t\u0000\u0000\u1878\u1879\u0007\u0005"+ - "\u0000\u0000\u1879\u187a\u0007\u000e\u0000\u0000\u187a\u187b\u0007\u0010"+ - "\u0000\u0000\u187b\u187c\u0007\u0011\u0000\u0000\u187c\u187d\u0007\u0013"+ - "\u0000\u0000\u187d\u187e\u0007\u0007\u0000\u0000\u187e\u187f\u0005_\u0000"+ - "\u0000\u187f\u1880\u0007\u0010\u0000\u0000\u1880\u1881\u0007\u0011\u0000"+ - "\u0000\u1881\u1882\u0007\u000f\u0000\u0000\u1882\u1883\u0007\n\u0000\u0000"+ - "\u1883\u1884\u0007\t\u0000\u0000\u1884\u1885\u0007\u0010\u0000\u0000\u1885"+ - "\u1886\u0007\u0005\u0000\u0000\u1886\u1887\u0007\u000f\u0000\u0000\u1887"+ - "\u1888\u0007\u0018\u0000\u0000\u1888\u04fa\u0001\u0000\u0000\u0000\u1889"+ - "\u188a\u0007\u0010\u0000\u0000\u188a\u188b\u0007\u0013\u0000\u0000\u188b"+ - "\u188c\u0005_\u0000\u0000\u188c\u188d\u0007\u0010\u0000\u0000\u188d\u188e"+ - "\u0007\u0011\u0000\u0000\u188e\u188f\u0007\u000f\u0000\u0000\u188f\u1890"+ - "\u0007\n\u0000\u0000\u1890\u1891\u0007\t\u0000\u0000\u1891\u1892\u0007"+ - "\u0010\u0000\u0000\u1892\u1893\u0007\u0005\u0000\u0000\u1893\u1894\u0007"+ - "\u000f\u0000\u0000\u1894\u1895\u0007\u0018\u0000\u0000\u1895\u04fc\u0001"+ - "\u0000\u0000\u0000\u1896\u1897\u0007\u0010\u0000\u0000\u1897\u1898\u0007"+ - "\u0013\u0000\u0000\u1898\u1899\u0005_\u0000\u0000\u1899\u189a\u0007\u000e"+ - "\u0000\u0000\u189a\u189b\u0007\u0014\u0000\u0000\u189b\u189c\u0007\u0005"+ - "\u0000\u0000\u189c\u189d\u0007\r\u0000\u0000\u189d\u04fe\u0001\u0000\u0000"+ - "\u0000\u189e\u189f\u0007\u0010\u0000\u0000\u189f\u18a0\u0007\u0013\u0000"+ - "\u0000\u18a0\u18a1\u0005_\u0000\u0000\u18a1\u18a2\u0007\f\u0000\u0000"+ - "\u18a2\u18a3\u0007\u0005\u0000\u0000\u18a3\u18a4\u0007\u0010\u0000\u0000"+ - "\u18a4\u18a5\u0007\n\u0000\u0000\u18a5\u0500\u0001\u0000\u0000\u0000\u18a6"+ - "\u18a7\u0007\u0010\u0000\u0000\u18a7\u18a8\u0007\u0013\u0000\u0000\u18a8"+ - "\u18a9\u0005_\u0000\u0000\u18a9\u18aa\u0007\u0007\u0000\u0000\u18aa\u18ab"+ - "\u0007\u0016\u0000\u0000\u18ab\u18ac\u0007\u000f\u0000\u0000\u18ac\u18ad"+ - "\u0007\u0012\u0000\u0000\u18ad\u18ae\u0007\n\u0000\u0000\u18ae\u18af\u0007"+ - "\r\u0000\u0000\u18af\u0502\u0001\u0000\u0000\u0000\u18b0\u18b4\u0003\u0505"+ - "\u0280\u0000\u18b1\u18b3\u0003\u0507\u0281\u0000\u18b2\u18b1\u0001\u0000"+ - "\u0000\u0000\u18b3\u18b6\u0001\u0000\u0000\u0000\u18b4\u18b2\u0001\u0000"+ - "\u0000\u0000\u18b4\u18b5\u0001\u0000\u0000\u0000\u18b5\u0504\u0001\u0000"+ - "\u0000\u0000\u18b6\u18b4\u0001\u0000\u0000\u0000\u18b7\u18be\u0007\u001f"+ - "\u0000\u0000\u18b8\u18b9\u0007 \u0000\u0000\u18b9\u18be\u0004\u0280\u0006"+ - "\u0000\u18ba\u18bb\u0007!\u0000\u0000\u18bb\u18bc\u0007\"\u0000\u0000"+ - "\u18bc\u18be\u0004\u0280\u0007\u0000\u18bd\u18b7\u0001\u0000\u0000\u0000"+ - "\u18bd\u18b8\u0001\u0000\u0000\u0000\u18bd\u18ba\u0001\u0000\u0000\u0000"+ - "\u18be\u0506\u0001\u0000\u0000\u0000\u18bf\u18c2\u0003\u0509\u0282\u0000"+ - "\u18c0\u18c2\u0005$\u0000\u0000\u18c1\u18bf\u0001\u0000\u0000\u0000\u18c1"+ - "\u18c0\u0001\u0000\u0000\u0000\u18c2\u0508\u0001\u0000\u0000\u0000\u18c3"+ - "\u18c6\u0003\u0505\u0280\u0000\u18c4\u18c6\u0007\u0000\u0000\u0000\u18c5"+ - "\u18c3\u0001\u0000\u0000\u0000\u18c5\u18c4\u0001\u0000\u0000\u0000\u18c6"+ - "\u050a\u0001\u0000\u0000\u0000\u18c7\u18c8\u0003\u050d\u0284\u0000\u18c8"+ - "\u18c9\u0005\"\u0000\u0000\u18c9\u050c\u0001\u0000\u0000\u0000\u18ca\u18d0"+ - "\u0005\"\u0000\u0000\u18cb\u18cc\u0005\"\u0000\u0000\u18cc\u18cf\u0005"+ - "\"\u0000\u0000\u18cd\u18cf\b#\u0000\u0000\u18ce\u18cb\u0001\u0000\u0000"+ - "\u0000\u18ce\u18cd\u0001\u0000\u0000\u0000\u18cf\u18d2\u0001\u0000\u0000"+ - "\u0000\u18d0\u18ce\u0001\u0000\u0000\u0000\u18d0\u18d1\u0001\u0000\u0000"+ - "\u0000\u18d1\u050e\u0001\u0000\u0000\u0000\u18d2\u18d0\u0001\u0000\u0000"+ - "\u0000\u18d3\u18d4\u0003\u0511\u0286\u0000\u18d4\u18d5\u0005\"\u0000\u0000"+ - "\u18d5\u0510\u0001\u0000\u0000\u0000\u18d6\u18dc\u0005\"\u0000\u0000\u18d7"+ - "\u18d8\u0005\"\u0000\u0000\u18d8\u18db\u0005\"\u0000\u0000\u18d9\u18db"+ - "\b$\u0000\u0000\u18da\u18d7\u0001\u0000\u0000\u0000\u18da\u18d9\u0001"+ - "\u0000\u0000\u0000\u18db\u18de\u0001\u0000\u0000\u0000\u18dc\u18da\u0001"+ - "\u0000\u0000\u0000\u18dc\u18dd\u0001\u0000\u0000\u0000\u18dd\u0512\u0001"+ - "\u0000\u0000\u0000\u18de\u18dc\u0001\u0000\u0000\u0000\u18df\u18e0\u0007"+ - "\u0016\u0000\u0000\u18e0\u18e1\u0005&\u0000\u0000\u18e1\u18e2\u0003\u050b"+ - "\u0283\u0000\u18e2\u0514\u0001\u0000\u0000\u0000\u18e3\u18e4\u0007\u0016"+ - "\u0000\u0000\u18e4\u18e5\u0005&\u0000\u0000\u18e5\u18e6\u0003\u050d\u0284"+ - "\u0000\u18e6\u0516\u0001\u0000\u0000\u0000\u18e7\u18e8\u0007\u0016\u0000"+ - "\u0000\u18e8\u18e9\u0005&\u0000\u0000\u18e9\u18ea\u0003\u050f\u0285\u0000"+ - "\u18ea\u0518\u0001\u0000\u0000\u0000\u18eb\u18ec\u0007\u0016\u0000\u0000"+ - "\u18ec\u18ed\u0005&\u0000\u0000\u18ed\u18ee\u0003\u0511\u0286\u0000\u18ee"+ - "\u051a\u0001\u0000\u0000\u0000\u18ef\u18f0\u0003\u051d\u028c\u0000\u18f0"+ - "\u18f1\u0005\'\u0000\u0000\u18f1\u051c\u0001\u0000\u0000\u0000\u18f2\u18f8"+ - "\u0005\'\u0000\u0000\u18f3\u18f4\u0005\'\u0000\u0000\u18f4\u18f7\u0005"+ - "\'\u0000\u0000\u18f5\u18f7\b%\u0000\u0000\u18f6\u18f3\u0001\u0000\u0000"+ - "\u0000\u18f6\u18f5\u0001\u0000\u0000\u0000\u18f7\u18fa\u0001\u0000\u0000"+ - "\u0000\u18f8\u18f6\u0001\u0000\u0000\u0000\u18f8\u18f9\u0001\u0000\u0000"+ - "\u0000\u18f9\u051e\u0001\u0000\u0000\u0000\u18fa\u18f8\u0001\u0000\u0000"+ - "\u0000\u18fb\u18fc\u0007\n\u0000\u0000\u18fc\u18fd\u0005\'\u0000\u0000"+ - "\u18fd\u18fe\u0001\u0000\u0000\u0000\u18fe\u18ff\u0006\u028d\u0002\u0000"+ - "\u18ff\u1900\u0006\u028d\u0003\u0000\u1900\u0520\u0001\u0000\u0000\u0000"+ - "\u1901\u1902\u0003\u0523\u028f\u0000\u1902\u1903\u0005\'\u0000\u0000\u1903"+ - "\u0522\u0001\u0000\u0000\u0000\u1904\u1905\u0007\u0016\u0000\u0000\u1905"+ - "\u1906\u0005&\u0000\u0000\u1906\u1907\u0003\u051d\u028c\u0000\u1907\u0524"+ - "\u0001\u0000\u0000\u0000\u1908\u190a\u0005$\u0000\u0000\u1909\u190b\u0003"+ - "\u0527\u0291\u0000\u190a\u1909\u0001\u0000\u0000\u0000\u190a\u190b\u0001"+ - "\u0000\u0000\u0000\u190b\u190c\u0001\u0000\u0000\u0000\u190c\u190d\u0005"+ - "$\u0000\u0000\u190d\u190e\u0006\u0290\u0004\u0000\u190e\u190f\u0001\u0000"+ - "\u0000\u0000\u190f\u1910\u0006\u0290\u0005\u0000\u1910\u0526\u0001\u0000"+ - "\u0000\u0000\u1911\u1915\u0003\u0505\u0280\u0000\u1912\u1914\u0003\u0509"+ - "\u0282\u0000\u1913\u1912\u0001\u0000\u0000\u0000\u1914\u1917\u0001\u0000"+ - "\u0000\u0000\u1915\u1913\u0001\u0000\u0000\u0000\u1915\u1916\u0001\u0000"+ - "\u0000\u0000\u1916\u0528\u0001\u0000\u0000\u0000\u1917\u1915\u0001\u0000"+ - "\u0000\u0000\u1918\u1919\u0003\u052b\u0293\u0000\u1919\u191a\u0005\'\u0000"+ - "\u0000\u191a\u052a\u0001\u0000\u0000\u0000\u191b\u191c\u0007\u0012\u0000"+ - "\u0000\u191c\u1920\u0005\'\u0000\u0000\u191d\u191f\u0007&\u0000\u0000"+ - "\u191e\u191d\u0001\u0000\u0000\u0000\u191f\u1922\u0001\u0000\u0000\u0000"+ - "\u1920\u191e\u0001\u0000\u0000\u0000\u1920\u1921\u0001\u0000\u0000\u0000"+ - "\u1921\u052c\u0001\u0000\u0000\u0000\u1922\u1920\u0001\u0000\u0000\u0000"+ - "\u1923\u1924\u0003\u052f\u0295\u0000\u1924\u1925\u0005\'\u0000\u0000\u1925"+ - "\u052e\u0001\u0000\u0000\u0000\u1926\u1927\u0007\u0012\u0000\u0000\u1927"+ - "\u1928\u0003\u051d\u028c\u0000\u1928\u0530\u0001\u0000\u0000\u0000\u1929"+ - "\u192a\u0003\u0533\u0297\u0000\u192a\u192b\u0005\'\u0000\u0000\u192b\u0532"+ - "\u0001\u0000\u0000\u0000\u192c\u192d\u0007\u001a\u0000\u0000\u192d\u1931"+ - "\u0005\'\u0000\u0000\u192e\u1930\u0007\'\u0000\u0000\u192f\u192e\u0001"+ - "\u0000\u0000\u0000\u1930\u1933\u0001\u0000\u0000\u0000\u1931\u192f\u0001"+ - "\u0000\u0000\u0000\u1931\u1932\u0001\u0000\u0000\u0000\u1932\u0534\u0001"+ - "\u0000\u0000\u0000\u1933\u1931\u0001\u0000\u0000\u0000\u1934\u1935\u0003"+ - "\u0537\u0299\u0000\u1935\u1936\u0005\'\u0000\u0000\u1936\u0536\u0001\u0000"+ - "\u0000\u0000\u1937\u1938\u0007\u001a\u0000\u0000\u1938\u1939\u0003\u051d"+ - "\u028c\u0000\u1939\u0538\u0001\u0000\u0000\u0000\u193a\u193b\u0003\u053f"+ - "\u029d\u0000\u193b\u053a\u0001\u0000\u0000\u0000\u193c\u193d\u0003\u053f"+ - "\u029d\u0000\u193d\u193e\u0005.\u0000\u0000\u193e\u193f\u0005.\u0000\u0000"+ - "\u193f\u1940\u0001\u0000\u0000\u0000\u1940\u1941\u0006\u029b\u0006\u0000"+ - "\u1941\u053c\u0001\u0000\u0000\u0000\u1942\u1943\u0003\u053f\u029d\u0000"+ - "\u1943\u1945\u0005.\u0000\u0000\u1944\u1946\u0003\u053f\u029d\u0000\u1945"+ - "\u1944\u0001\u0000\u0000\u0000\u1945\u1946\u0001\u0000\u0000\u0000\u1946"+ - "\u194c\u0001\u0000\u0000\u0000\u1947\u1949\u0007\n\u0000\u0000\u1948\u194a"+ - "\u0007\u0001\u0000\u0000\u1949\u1948\u0001\u0000\u0000\u0000\u1949\u194a"+ - "\u0001\u0000\u0000\u0000\u194a\u194b\u0001\u0000\u0000\u0000\u194b\u194d"+ - "\u0003\u053f\u029d\u0000\u194c\u1947\u0001\u0000\u0000\u0000\u194c\u194d"+ - "\u0001\u0000\u0000\u0000\u194d\u195f\u0001\u0000\u0000\u0000\u194e\u194f"+ - "\u0005.\u0000\u0000\u194f\u1955\u0003\u053f\u029d\u0000\u1950\u1952\u0007"+ - "\n\u0000\u0000\u1951\u1953\u0007\u0001\u0000\u0000\u1952\u1951\u0001\u0000"+ - "\u0000\u0000\u1952\u1953\u0001\u0000\u0000\u0000\u1953\u1954\u0001\u0000"+ - "\u0000\u0000\u1954\u1956\u0003\u053f\u029d\u0000\u1955\u1950\u0001\u0000"+ - "\u0000\u0000\u1955\u1956\u0001\u0000\u0000\u0000\u1956\u195f\u0001\u0000"+ - "\u0000\u0000\u1957\u1958\u0003\u053f\u029d\u0000\u1958\u195a\u0007\n\u0000"+ - "\u0000\u1959\u195b\u0007\u0001\u0000\u0000\u195a\u1959\u0001\u0000\u0000"+ - "\u0000\u195a\u195b\u0001\u0000\u0000\u0000\u195b\u195c\u0001\u0000\u0000"+ - "\u0000\u195c\u195d\u0003\u053f\u029d\u0000\u195d\u195f\u0001\u0000\u0000"+ - "\u0000\u195e\u1942\u0001\u0000\u0000\u0000\u195e\u194e\u0001\u0000\u0000"+ - "\u0000\u195e\u1957\u0001\u0000\u0000\u0000\u195f\u053e\u0001\u0000\u0000"+ - "\u0000\u1960\u1962\u0007\u0000\u0000\u0000\u1961\u1960\u0001\u0000\u0000"+ - "\u0000\u1962\u1963\u0001\u0000\u0000\u0000\u1963\u1961\u0001\u0000\u0000"+ - "\u0000\u1963\u1964\u0001\u0000\u0000\u0000\u1964\u0540\u0001\u0000\u0000"+ - "\u0000\u1965\u1966\u0005:\u0000\u0000\u1966\u196a\u0007(\u0000\u0000\u1967"+ - "\u1969\u0007)\u0000\u0000\u1968\u1967\u0001\u0000\u0000\u0000\u1969\u196c"+ - "\u0001\u0000\u0000\u0000\u196a\u1968\u0001\u0000\u0000\u0000\u196a\u196b"+ - "\u0001\u0000\u0000\u0000\u196b\u0542\u0001\u0000\u0000\u0000\u196c\u196a"+ - "\u0001\u0000\u0000\u0000\u196d\u196e\u0005:\u0000\u0000\u196e\u196f\u0005"+ - "\"\u0000\u0000\u196f\u1977\u0001\u0000\u0000\u0000\u1970\u1971\u0005\\"+ - "\u0000\u0000\u1971\u1976\t\u0000\u0000\u0000\u1972\u1973\u0005\"\u0000"+ - "\u0000\u1973\u1976\u0005\"\u0000\u0000\u1974\u1976\b*\u0000\u0000\u1975"+ - "\u1970\u0001\u0000\u0000\u0000\u1975\u1972\u0001\u0000\u0000\u0000\u1975"+ - "\u1974\u0001\u0000\u0000\u0000\u1976\u1979\u0001\u0000\u0000\u0000\u1977"+ - "\u1975\u0001\u0000\u0000\u0000\u1977\u1978\u0001\u0000\u0000\u0000\u1978"+ - "\u197a\u0001\u0000\u0000\u0000\u1979\u1977\u0001\u0000\u0000\u0000\u197a"+ - "\u197b\u0005\"\u0000\u0000\u197b\u0544\u0001\u0000\u0000\u0000\u197c\u197e"+ - "\u0007+\u0000\u0000\u197d\u197c\u0001\u0000\u0000\u0000\u197e\u197f\u0001"+ - "\u0000\u0000\u0000\u197f\u197d\u0001\u0000\u0000\u0000\u197f\u1980\u0001"+ - "\u0000\u0000\u0000\u1980\u1981\u0001\u0000\u0000\u0000\u1981\u1982\u0006"+ - "\u02a0\u0007\u0000\u1982\u0546\u0001\u0000\u0000\u0000\u1983\u1985\u0005"+ - "\r\u0000\u0000\u1984\u1986\u0005\n\u0000\u0000\u1985\u1984\u0001\u0000"+ - "\u0000\u0000\u1985\u1986\u0001\u0000\u0000\u0000\u1986\u1989\u0001\u0000"+ - "\u0000\u0000\u1987\u1989\u0005\n\u0000\u0000\u1988\u1983\u0001\u0000\u0000"+ - "\u0000\u1988\u1987\u0001\u0000\u0000\u0000\u1989\u198a\u0001\u0000\u0000"+ - "\u0000\u198a\u198b\u0006\u02a1\u0007\u0000\u198b\u0548\u0001\u0000\u0000"+ - "\u0000\u198c\u198d\u0005-\u0000\u0000\u198d\u198e\u0005-\u0000\u0000\u198e"+ - "\u1992\u0001\u0000\u0000\u0000\u198f\u1991\b,\u0000\u0000\u1990\u198f"+ - "\u0001\u0000\u0000\u0000\u1991\u1994\u0001\u0000\u0000\u0000\u1992\u1990"+ - "\u0001\u0000\u0000\u0000\u1992\u1993\u0001\u0000\u0000\u0000\u1993\u1995"+ - "\u0001\u0000\u0000\u0000\u1994\u1992\u0001\u0000\u0000\u0000\u1995\u1996"+ - "\u0006\u02a2\u0007\u0000\u1996\u054a\u0001\u0000\u0000\u0000\u1997\u1998"+ - "\u0005/\u0000\u0000\u1998\u1999\u0005*\u0000\u0000\u1999\u19b0\u0001\u0000"+ - "\u0000\u0000\u199a\u199c\u0005/\u0000\u0000\u199b\u199a\u0001\u0000\u0000"+ - "\u0000\u199c\u199f\u0001\u0000\u0000\u0000\u199d\u199b\u0001\u0000\u0000"+ - "\u0000\u199d\u199e\u0001\u0000\u0000\u0000\u199e\u19a0\u0001\u0000\u0000"+ - "\u0000\u199f\u199d\u0001\u0000\u0000\u0000\u19a0\u19af\u0003\u054b\u02a3"+ - "\u0000\u19a1\u19af\b-\u0000\u0000\u19a2\u19a4\u0005/\u0000\u0000\u19a3"+ - "\u19a2\u0001\u0000\u0000\u0000\u19a4\u19a5\u0001\u0000\u0000\u0000\u19a5"+ - "\u19a3\u0001\u0000\u0000\u0000\u19a5\u19a6\u0001\u0000\u0000\u0000\u19a6"+ - "\u19a7\u0001\u0000\u0000\u0000\u19a7\u19af\b-\u0000\u0000\u19a8\u19aa"+ - "\u0005*\u0000\u0000\u19a9\u19a8\u0001\u0000\u0000\u0000\u19aa\u19ab\u0001"+ - "\u0000\u0000\u0000\u19ab\u19a9\u0001\u0000\u0000\u0000\u19ab\u19ac\u0001"+ - "\u0000\u0000\u0000\u19ac\u19ad\u0001\u0000\u0000\u0000\u19ad\u19af\b-"+ - "\u0000\u0000\u19ae\u199d\u0001\u0000\u0000\u0000\u19ae\u19a1\u0001\u0000"+ - "\u0000\u0000\u19ae\u19a3\u0001\u0000\u0000\u0000\u19ae\u19a9\u0001\u0000"+ - "\u0000\u0000\u19af\u19b2\u0001\u0000\u0000\u0000\u19b0\u19ae\u0001\u0000"+ - "\u0000\u0000\u19b0\u19b1\u0001\u0000\u0000\u0000\u19b1\u19b6\u0001\u0000"+ - "\u0000\u0000\u19b2\u19b0\u0001\u0000\u0000\u0000\u19b3\u19b5\u0005*\u0000"+ - "\u0000\u19b4\u19b3\u0001\u0000\u0000\u0000\u19b5\u19b8\u0001\u0000\u0000"+ - "\u0000\u19b6\u19b4\u0001\u0000\u0000\u0000\u19b6\u19b7\u0001\u0000\u0000"+ - "\u0000\u19b7\u19b9\u0001\u0000\u0000\u0000\u19b8\u19b6\u0001\u0000\u0000"+ - "\u0000\u19b9\u19ba\u0005*\u0000\u0000\u19ba\u19bb\u0005/\u0000\u0000\u19bb"+ - "\u19bc\u0001\u0000\u0000\u0000\u19bc\u19bd\u0006\u02a3\u0007\u0000\u19bd"+ - "\u054c\u0001\u0000\u0000\u0000\u19be\u19bf\u0005/\u0000\u0000\u19bf\u19c0"+ - "\u0005*\u0000\u0000\u19c0\u19d9\u0001\u0000\u0000\u0000\u19c1\u19c3\u0005"+ - "/\u0000\u0000\u19c2\u19c1\u0001\u0000\u0000\u0000\u19c3\u19c6\u0001\u0000"+ - "\u0000\u0000\u19c4\u19c2\u0001\u0000\u0000\u0000\u19c4\u19c5\u0001\u0000"+ - "\u0000\u0000\u19c5\u19c7\u0001\u0000\u0000\u0000\u19c6\u19c4\u0001\u0000"+ - "\u0000\u0000\u19c7\u19d8\u0003\u054b\u02a3\u0000\u19c8\u19d8\b-\u0000"+ - "\u0000\u19c9\u19cb\u0005/\u0000\u0000\u19ca\u19c9\u0001\u0000\u0000\u0000"+ - "\u19cb\u19cc\u0001\u0000\u0000\u0000\u19cc\u19ca\u0001\u0000\u0000\u0000"+ - "\u19cc\u19cd\u0001\u0000\u0000\u0000\u19cd\u19ce\u0001\u0000\u0000\u0000"+ - "\u19ce\u19d6\b-\u0000\u0000\u19cf\u19d1\u0005*\u0000\u0000\u19d0\u19cf"+ - "\u0001\u0000\u0000\u0000\u19d1\u19d2\u0001\u0000\u0000\u0000\u19d2\u19d0"+ - "\u0001\u0000\u0000\u0000\u19d2\u19d3\u0001\u0000\u0000\u0000\u19d3\u19d4"+ - "\u0001\u0000\u0000\u0000\u19d4\u19d6\b-\u0000\u0000\u19d5\u19ca\u0001"+ - "\u0000\u0000\u0000\u19d5\u19d0\u0001\u0000\u0000\u0000\u19d6\u19d8\u0001"+ - "\u0000\u0000\u0000\u19d7\u19c4\u0001\u0000\u0000\u0000\u19d7\u19c8\u0001"+ - "\u0000\u0000\u0000\u19d7\u19d5\u0001\u0000\u0000\u0000\u19d8\u19db\u0001"+ - "\u0000\u0000\u0000\u19d9\u19d7\u0001\u0000\u0000\u0000\u19d9\u19da\u0001"+ - "\u0000\u0000\u0000\u19da\u19ed\u0001\u0000\u0000\u0000\u19db\u19d9\u0001"+ - "\u0000\u0000\u0000\u19dc\u19de\u0005/\u0000\u0000\u19dd\u19dc\u0001\u0000"+ - "\u0000\u0000\u19de\u19df\u0001\u0000\u0000\u0000\u19df\u19dd\u0001\u0000"+ - "\u0000\u0000\u19df\u19e0\u0001\u0000\u0000\u0000\u19e0\u19ee\u0001\u0000"+ - "\u0000\u0000\u19e1\u19e3\u0005*\u0000\u0000\u19e2\u19e1\u0001\u0000\u0000"+ - "\u0000\u19e3\u19e4\u0001\u0000\u0000\u0000\u19e4\u19e2\u0001\u0000\u0000"+ - "\u0000\u19e4\u19e5\u0001\u0000\u0000\u0000\u19e5\u19ee\u0001\u0000\u0000"+ - "\u0000\u19e6\u19e8\u0005/\u0000\u0000\u19e7\u19e6\u0001\u0000\u0000\u0000"+ - "\u19e8\u19eb\u0001\u0000\u0000\u0000\u19e9\u19e7\u0001\u0000\u0000\u0000"+ - "\u19e9\u19ea\u0001\u0000\u0000\u0000\u19ea\u19ec\u0001\u0000\u0000\u0000"+ - "\u19eb\u19e9\u0001\u0000\u0000\u0000\u19ec\u19ee\u0003\u054d\u02a4\u0000"+ - "\u19ed\u19dd\u0001\u0000\u0000\u0000\u19ed\u19e2\u0001\u0000\u0000\u0000"+ - "\u19ed\u19e9\u0001\u0000\u0000\u0000\u19ed\u19ee\u0001\u0000\u0000\u0000"+ - "\u19ee\u19ef\u0001\u0000\u0000\u0000\u19ef\u19f0\u0006\u02a4\b\u0000\u19f0"+ - "\u054e\u0001\u0000\u0000\u0000\u19f1\u19fd\u0005\\\u0000\u0000\u19f2\u19fc"+ - "\b.\u0000\u0000\u19f3\u19f7\u0005\"\u0000\u0000\u19f4\u19f6\b/\u0000\u0000"+ - "\u19f5\u19f4\u0001\u0000\u0000\u0000\u19f6\u19f9\u0001\u0000\u0000\u0000"+ - "\u19f7\u19f5\u0001\u0000\u0000\u0000\u19f7\u19f8\u0001\u0000\u0000\u0000"+ - "\u19f8\u19fa\u0001\u0000\u0000\u0000\u19f9\u19f7\u0001\u0000\u0000\u0000"+ - "\u19fa\u19fc\u0005\"\u0000\u0000\u19fb\u19f2\u0001\u0000\u0000\u0000\u19fb"+ - "\u19f3\u0001\u0000\u0000\u0000\u19fc\u19ff\u0001\u0000\u0000\u0000\u19fd"+ - "\u19fb\u0001\u0000\u0000\u0000\u19fd\u19fe\u0001\u0000\u0000\u0000\u19fe"+ - "\u1a07\u0001\u0000\u0000\u0000\u19ff\u19fd\u0001\u0000\u0000\u0000\u1a00"+ - "\u1a04\u0005\"\u0000\u0000\u1a01\u1a03\b/\u0000\u0000\u1a02\u1a01\u0001"+ - "\u0000\u0000\u0000\u1a03\u1a06\u0001\u0000\u0000\u0000\u1a04\u1a02\u0001"+ - "\u0000\u0000\u0000\u1a04\u1a05\u0001\u0000\u0000\u0000\u1a05\u1a08\u0001"+ - "\u0000\u0000\u0000\u1a06\u1a04\u0001\u0000\u0000\u0000\u1a07\u1a00\u0001"+ - "\u0000\u0000\u0000\u1a07\u1a08\u0001\u0000\u0000\u0000\u1a08\u0550\u0001"+ - "\u0000\u0000\u0000\u1a09\u1a0a\u0005\\\u0000\u0000\u1a0a\u1a0b\u0005\\"+ - "\u0000\u0000\u1a0b\u0552\u0001\u0000\u0000\u0000\u1a0c\u1a0d\t\u0000\u0000"+ - "\u0000\u1a0d\u0554\u0001\u0000\u0000\u0000\u1a0e\u1a0f\u0003\u0559\u02aa"+ - "\u0000\u1a0f\u1a10\u0005\'\u0000\u0000\u1a10\u1a11\u0001\u0000\u0000\u0000"+ - "\u1a11\u1a12\u0006\u02a8\t\u0000\u1a12\u0556\u0001\u0000\u0000\u0000\u1a13"+ - "\u1a15\u0003\u0559\u02aa\u0000\u1a14\u1a16\u0005\\\u0000\u0000\u1a15\u1a14"+ - "\u0001\u0000\u0000\u0000\u1a15\u1a16\u0001\u0000\u0000\u0000\u1a16\u1a17"+ - "\u0001\u0000\u0000\u0000\u1a17\u1a18\u0005\u0000\u0000\u0001\u1a18\u0558"+ - "\u0001\u0000\u0000\u0000\u1a19\u1a1a\u0005\'\u0000\u0000\u1a1a\u1a31\u0005"+ - "\'\u0000\u0000\u1a1b\u1a2d\u0005\\\u0000\u0000\u1a1c\u1a1d\u0005x\u0000"+ - "\u0000\u1a1d\u1a2e\u0007\'\u0000\u0000\u1a1e\u1a1f\u0005u\u0000\u0000"+ - "\u1a1f\u1a20\u0007\'\u0000\u0000\u1a20\u1a21\u0007\'\u0000\u0000\u1a21"+ - "\u1a22\u0007\'\u0000\u0000\u1a22\u1a2e\u0007\'\u0000\u0000\u1a23\u1a24"+ - "\u0005U\u0000\u0000\u1a24\u1a25\u0007\'\u0000\u0000\u1a25\u1a26\u0007"+ - "\'\u0000\u0000\u1a26\u1a27\u0007\'\u0000\u0000\u1a27\u1a28\u0007\'\u0000"+ - "\u0000\u1a28\u1a29\u0007\'\u0000\u0000\u1a29\u1a2a\u0007\'\u0000\u0000"+ - "\u1a2a\u1a2b\u0007\'\u0000\u0000\u1a2b\u1a2e\u0007\'\u0000\u0000\u1a2c"+ - "\u1a2e\b0\u0000\u0000\u1a2d\u1a1c\u0001\u0000\u0000\u0000\u1a2d\u1a1e"+ - "\u0001\u0000\u0000\u0000\u1a2d\u1a23\u0001\u0000\u0000\u0000\u1a2d\u1a2c"+ - "\u0001\u0000\u0000\u0000\u1a2e\u1a31\u0001\u0000\u0000\u0000\u1a2f\u1a31"+ - "\b1\u0000\u0000\u1a30\u1a19\u0001\u0000\u0000\u0000\u1a30\u1a1b\u0001"+ - "\u0000\u0000\u0000\u1a30\u1a2f\u0001\u0000\u0000\u0000\u1a31\u1a34\u0001"+ - "\u0000\u0000\u0000\u1a32\u1a30\u0001\u0000\u0000\u0000\u1a32\u1a33\u0001"+ - "\u0000\u0000\u0000\u1a33\u055a\u0001\u0000\u0000\u0000\u1a34\u1a32\u0001"+ - "\u0000\u0000\u0000\u1a35\u1a36\u0003\u055f\u02ad\u0000\u1a36\u1a37\u0005"+ - "\'\u0000\u0000\u1a37\u1a38\u0001\u0000\u0000\u0000\u1a38\u1a39\u0006\u02ab"+ - "\t\u0000\u1a39\u055c\u0001\u0000\u0000\u0000\u1a3a\u1a3c\u0003\u055f\u02ad"+ - "\u0000\u1a3b\u1a3d\u0005\\\u0000\u0000\u1a3c\u1a3b\u0001\u0000\u0000\u0000"+ - "\u1a3c\u1a3d\u0001\u0000\u0000\u0000\u1a3d\u1a3e\u0001\u0000\u0000\u0000"+ - "\u1a3e\u1a3f\u0005\u0000\u0000\u0001\u1a3f\u055e\u0001\u0000\u0000\u0000"+ - "\u1a40\u1a41\u0005\'\u0000\u0000\u1a41\u1a46\u0005\'\u0000\u0000\u1a42"+ - "\u1a43\u0005\\\u0000\u0000\u1a43\u1a46\t\u0000\u0000\u0000\u1a44\u1a46"+ - "\b1\u0000\u0000\u1a45\u1a40\u0001\u0000\u0000\u0000\u1a45\u1a42\u0001"+ - "\u0000\u0000\u0000\u1a45\u1a44\u0001\u0000\u0000\u0000\u1a46\u1a49\u0001"+ - "\u0000\u0000\u0000\u1a47\u1a45\u0001\u0000\u0000\u0000\u1a47\u1a48\u0001"+ - "\u0000\u0000\u0000\u1a48\u0560\u0001\u0000\u0000\u0000\u1a49\u1a47\u0001"+ - "\u0000\u0000\u0000\u1a4a\u1a4b\u0003\u0545\u02a0\u0000\u1a4b\u1a4c\u0001"+ - "\u0000\u0000\u0000\u1a4c\u1a4d\u0006\u02ae\n\u0000\u1a4d\u1a4e\u0006\u02ae"+ - "\u0007\u0000\u1a4e\u0562\u0001\u0000\u0000\u0000\u1a4f\u1a50\u0003\u0547"+ - "\u02a1\u0000\u1a50\u1a51\u0001\u0000\u0000\u0000\u1a51\u1a52\u0006\u02af"+ - "\u000b\u0000\u1a52\u1a53\u0006\u02af\u0007\u0000\u1a53\u1a54\u0006\u02af"+ - "\f\u0000\u1a54\u0564\u0001\u0000\u0000\u0000\u1a55\u1a56\u0006\u02b0\r"+ - "\u0000\u1a56\u1a57\u0001\u0000\u0000\u0000\u1a57\u1a58\u0006\u02b0\u000e"+ - "\u0000\u1a58\u1a59\u0006\u02b0\u000f\u0000\u1a59\u0566\u0001\u0000\u0000"+ - "\u0000\u1a5a\u1a5b\u0003\u0545\u02a0\u0000\u1a5b\u1a5c\u0001\u0000\u0000"+ - "\u0000\u1a5c\u1a5d\u0006\u02b1\n\u0000\u1a5d\u1a5e\u0006\u02b1\u0007\u0000"+ - "\u1a5e\u0568\u0001\u0000\u0000\u0000\u1a5f\u1a60\u0003\u0547\u02a1\u0000"+ - "\u1a60\u1a61\u0001\u0000\u0000\u0000\u1a61\u1a62\u0006\u02b2\u000b\u0000"+ - "\u1a62\u1a63\u0006\u02b2\u0007\u0000\u1a63\u056a\u0001\u0000\u0000\u0000"+ - "\u1a64\u1a65\u0005\'\u0000\u0000\u1a65\u1a66\u0001\u0000\u0000\u0000\u1a66"+ - "\u1a67\u0006\u02b3\u0002\u0000\u1a67\u1a68\u0006\u02b3\u0010\u0000\u1a68"+ - "\u056c\u0001\u0000\u0000\u0000\u1a69\u1a6a\u0006\u02b4\u0011\u0000\u1a6a"+ - "\u1a6b\u0001\u0000\u0000\u0000\u1a6b\u1a6c\u0006\u02b4\u000e\u0000\u1a6c"+ - "\u1a6d\u0006\u02b4\u000f\u0000\u1a6d\u056e\u0001\u0000\u0000\u0000\u1a6e"+ - "\u1a70\b2\u0000\u0000\u1a6f\u1a6e\u0001\u0000\u0000\u0000\u1a70\u1a71"+ - "\u0001\u0000\u0000\u0000\u1a71\u1a6f\u0001\u0000\u0000\u0000\u1a71\u1a72"+ - "\u0001\u0000\u0000\u0000\u1a72\u1a7b\u0001\u0000\u0000\u0000\u1a73\u1a77"+ - "\u0005$\u0000\u0000\u1a74\u1a76\b2\u0000\u0000\u1a75\u1a74\u0001\u0000"+ - "\u0000\u0000\u1a76\u1a79\u0001\u0000\u0000\u0000\u1a77\u1a75\u0001\u0000"+ - "\u0000\u0000\u1a77\u1a78\u0001\u0000\u0000\u0000\u1a78\u1a7b\u0001\u0000"+ - "\u0000\u0000\u1a79\u1a77\u0001\u0000\u0000\u0000\u1a7a\u1a6f\u0001\u0000"+ - "\u0000\u0000\u1a7a\u1a73\u0001\u0000\u0000\u0000\u1a7b\u0570\u0001\u0000"+ - "\u0000\u0000\u1a7c\u1a7e\u0005$\u0000\u0000\u1a7d\u1a7f\u0003\u0527\u0291"+ - "\u0000\u1a7e\u1a7d\u0001\u0000\u0000\u0000\u1a7e\u1a7f\u0001\u0000\u0000"+ - "\u0000\u1a7f\u1a80\u0001\u0000\u0000\u0000\u1a80\u1a81\u0005$\u0000\u0000"+ - "\u1a81\u1a82\u0001\u0000\u0000\u0000\u1a82\u1a83\u0004\u02b6\b\u0000\u1a83"+ - "\u1a84\u0006\u02b6\u0012\u0000\u1a84\u1a85\u0001\u0000\u0000\u0000\u1a85"+ - "\u1a86\u0006\u02b6\u000f\u0000\u1a86\u0572\u0001\u0000\u0000\u0000N\u0000"+ - "\u0001\u0002\u0003\u0004\u05b6\u05bc\u05be\u05c3\u05c7\u05c9\u05cc\u05d5"+ - "\u05d7\u05dc\u05e1\u05e3\u18b4\u18bd\u18c1\u18c5\u18ce\u18d0\u18da\u18dc"+ - "\u18f6\u18f8\u190a\u1915\u1920\u1931\u1945\u1949\u194c\u1952\u1955\u195a"+ - "\u195e\u1963\u196a\u1975\u1977\u197f\u1985\u1988\u1992\u199d\u19a5\u19ab"+ - "\u19ae\u19b0\u19b6\u19c4\u19cc\u19d2\u19d5\u19d7\u19d9\u19df\u19e4\u19e9"+ - "\u19ed\u19f7\u19fb\u19fd\u1a04\u1a07\u1a15\u1a2d\u1a30\u1a32\u1a3c\u1a45"+ - "\u1a47\u1a71\u1a77\u1a7a\u1a7e\u0013\u0001\u001c\u0000\u0007\u001d\u0000"+ - "\u0003\u0000\u0000\u0005\u0001\u0000\u0001\u0290\u0001\u0005\u0004\u0000"+ - "\u0001\u029b\u0002\u0000\u0001\u0000\u0001\u02a4\u0003\u0002\u0002\u0000"+ - "\u0007\u0297\u0000\u0007\u0298\u0000\u0002\u0003\u0000\u0001\u02b0\u0004"+ - "\u0006\u0000\u0000\u0004\u0000\u0000\u0002\u0001\u0000\u0001\u02b4\u0005"+ - "\u0001\u02b6\u0006"; + "\u125f\u0007\f\u0000\u0000\u125f\u0380\u0001\u0000\u0000\u0000\u1260\u1261"+ + "\u0007\u0011\u0000\u0000\u1261\u1262\u0007\u0007\u0000\u0000\u1262\u1263"+ + "\u0007\u000e\u0000\u0000\u1263\u1264\u0007\u0006\u0000\u0000\u1264\u1265"+ + "\u0007\u0016\u0000\u0000\u1265\u1266\u0007\f\u0000\u0000\u1266\u1267\u0007"+ + "\n\u0000\u0000\u1267\u0382\u0001\u0000\u0000\u0000\u1268\u1269\u0007\r"+ + "\u0000\u0000\u1269\u126a\u0007\u0013\u0000\u0000\u126a\u126b\u0007\u0016"+ + "\u0000\u0000\u126b\u126c\u0007\u0010\u0000\u0000\u126c\u126d\u0007\u0011"+ + "\u0000\u0000\u126d\u126e\u0007\u0007\u0000\u0000\u126e\u126f\u0007\n\u0000"+ + "\u0000\u126f\u0384\u0001\u0000\u0000\u0000\u1270\u1271\u0007\u0010\u0000"+ + "\u0000\u1271\u1272\u0007\r\u0000\u0000\u1272\u1273\u0007\u0005\u0000\u0000"+ + "\u1273\u1274\u0007\u0007\u0000\u0000\u1274\u1275\u0007\t\u0000\u0000\u1275"+ + "\u1276\u0007\u0019\u0000\u0000\u1276\u1277\u0007\u0013\u0000\u0000\u1277"+ + "\u1278\u0007\r\u0000\u0000\u1278\u1279\u0007\u000f\u0000\u0000\u1279\u0386"+ + "\u0001\u0000\u0000\u0000\u127a\u127b\u0007\u0011\u0000\u0000\u127b\u127c"+ + "\u0007\u000f\u0000\u0000\u127c\u127d\u0007\u0018\u0000\u0000\u127d\u127e"+ + "\u0007\u0013\u0000\u0000\u127e\u127f\u0007\r\u0000\u0000\u127f\u1280\u0007"+ + "\u0010\u0000\u0000\u1280\u0388\u0001\u0000\u0000\u0000\u1281\u1282\u0007"+ + "\u0018\u0000\u0000\u1282\u1283\u0007\u0013\u0000\u0000\u1283\u1284\u0007"+ + "\u0006\u0000\u0000\u1284\u1285\u0007\u0011\u0000\u0000\u1285\u1286\u0007"+ + "\u000e\u0000\u0000\u1286\u1287\u0007\b\u0000\u0000\u1287\u038a\u0001\u0000"+ + "\u0000\u0000\u1288\u1289\u0007\u000f\u0000\u0000\u1289\u128a\u0007\n\u0000"+ + "\u0000\u128a\u128b\u0007\u0010\u0000\u0000\u128b\u128c\u0007\u0014\u0000"+ + "\u0000\u128c\u128d\u0007\u0013\u0000\u0000\u128d\u128e\u0007\f\u0000\u0000"+ + "\u128e\u038c\u0001\u0000\u0000\u0000\u128f\u1290\u0007\r\u0000\u0000\u1290"+ + "\u1291\u0007\n\u0000\u0000\u1291\u1292\u0007\u0019\u0000\u0000\u1292\u1293"+ + "\u0007\n\u0000\u0000\u1293\u1294\u0007\r\u0000\u0000\u1294\u1295\u0007"+ + "\n\u0000\u0000\u1295\u1296\u0007\u0007\u0000\u0000\u1296\u1297\u0007\u000e"+ + "\u0000\u0000\u1297\u1298\u0007\u0011\u0000\u0000\u1298\u1299\u0007\u0007"+ + "\u0000\u0000\u1299\u129a\u0007\u0017\u0000\u0000\u129a\u038e\u0001\u0000"+ + "\u0000\u0000\u129b\u129c\u0007\u0007\u0000\u0000\u129c\u129d\u0007\n\u0000"+ + "\u0000\u129d\u129e\u0007\u001d\u0000\u0000\u129e\u0390\u0001\u0000\u0000"+ + "\u0000\u129f\u12a0\u0007\u0013\u0000\u0000\u12a0\u12a1\u0007\u0006\u0000"+ + "\u0000\u12a1\u12a2\u0007\f\u0000\u0000\u12a2\u0392\u0001\u0000\u0000\u0000"+ + "\u12a3\u12a4\u0007\u001b\u0000\u0000\u12a4\u12a5\u0007\u0005\u0000\u0000"+ + "\u12a5\u12a6\u0007\u0006\u0000\u0000\u12a6\u12a7\u0007\u0016\u0000\u0000"+ + "\u12a7\u12a8\u0007\n\u0000\u0000\u12a8\u0394\u0001\u0000\u0000\u0000\u12a9"+ + "\u12aa\u0007\t\u0000\u0000\u12aa\u12ab\u0007\u0016\u0000\u0000\u12ab\u12ac"+ + "\u0007\u0012\u0000\u0000\u12ac\u12ad\u0007\t\u0000\u0000\u12ad\u12ae\u0007"+ + "\u000e\u0000\u0000\u12ae\u12af\u0007\r\u0000\u0000\u12af\u12b0\u0007\u0011"+ + "\u0000\u0000\u12b0\u12b1\u0007\u0018\u0000\u0000\u12b1\u12b2\u0007\u0010"+ + "\u0000\u0000\u12b2\u12b3\u0007\u0011\u0000\u0000\u12b3\u12b4\u0007\u0013"+ + "\u0000\u0000\u12b4\u12b5\u0007\u0007\u0000\u0000\u12b5\u0396\u0001\u0000"+ + "\u0000\u0000\u12b6\u12b7\u0007\u0018\u0000\u0000\u12b7\u12b8\u0007\u0016"+ + "\u0000\u0000\u12b8\u12b9\u0007\u0012\u0000\u0000\u12b9\u12ba\u0007\u0006"+ + "\u0000\u0000\u12ba\u12bb\u0007\u0011\u0000\u0000\u12bb\u12bc\u0007\u000e"+ + "\u0000\u0000\u12bc\u12bd\u0007\u0005\u0000\u0000\u12bd\u12be\u0007\u0010"+ + "\u0000\u0000\u12be\u12bf\u0007\u0011\u0000\u0000\u12bf\u12c0\u0007\u0013"+ + "\u0000\u0000\u12c0\u12c1\u0007\u0007\u0000\u0000\u12c1\u0398\u0001\u0000"+ + "\u0000\u0000\u12c2\u12c3\u0007\u0013\u0000\u0000\u12c3\u12c4\u0007\u0016"+ + "\u0000\u0000\u12c4\u12c5\u0007\u0010\u0000\u0000\u12c5\u039a\u0001\u0000"+ + "\u0000\u0000\u12c6\u12c7\u0007\n\u0000\u0000\u12c7\u12c8\u0007\u0007\u0000"+ + "\u0000\u12c8\u12c9\u0007\f\u0000\u0000\u12c9\u039c\u0001\u0000\u0000\u0000"+ + "\u12ca\u12cb\u0007\r\u0000\u0000\u12cb\u12cc\u0007\u0013\u0000\u0000\u12cc"+ + "\u12cd\u0007\u0016\u0000\u0000\u12cd\u12ce\u0007\u0010\u0000\u0000\u12ce"+ + "\u12cf\u0007\u0011\u0000\u0000\u12cf\u12d0\u0007\u0007\u0000\u0000\u12d0"+ + "\u12d1\u0007\n\u0000\u0000\u12d1\u12d2\u0007\t\u0000\u0000\u12d2\u039e"+ + "\u0001\u0000\u0000\u0000\u12d3\u12d4\u0007\t\u0000\u0000\u12d4\u12d5\u0007"+ + "\u000e\u0000\u0000\u12d5\u12d6\u0007\u0014\u0000\u0000\u12d6\u12d7\u0007"+ + "\n\u0000\u0000\u12d7\u12d8\u0007\u000f\u0000\u0000\u12d8\u12d9\u0007\u0005"+ + "\u0000\u0000\u12d9\u12da\u0007\t\u0000\u0000\u12da\u03a0\u0001\u0000\u0000"+ + "\u0000\u12db\u12dc\u0007\u0018\u0000\u0000\u12dc\u12dd\u0007\r\u0000\u0000"+ + "\u12dd\u12de\u0007\u0013\u0000\u0000\u12de\u12df\u0007\u000e\u0000\u0000"+ + "\u12df\u12e0\u0007\n\u0000\u0000\u12e0\u12e1\u0007\f\u0000\u0000\u12e1"+ + "\u12e2\u0007\u0016\u0000\u0000\u12e2\u12e3\u0007\r\u0000\u0000\u12e3\u12e4"+ + "\u0007\n\u0000\u0000\u12e4\u12e5\u0007\t\u0000\u0000\u12e5\u03a2\u0001"+ + "\u0000\u0000\u0000\u12e6\u12e7\u0007\u0011\u0000\u0000\u12e7\u12e8\u0007"+ + "\u0007\u0000\u0000\u12e8\u12e9\u0007\u0018\u0000\u0000\u12e9\u12ea\u0007"+ + "\u0016\u0000\u0000\u12ea\u12eb\u0007\u0010\u0000\u0000\u12eb\u03a4\u0001"+ + "\u0000\u0000\u0000\u12ec\u12ed\u0007\t\u0000\u0000\u12ed\u12ee\u0007\u0016"+ + "\u0000\u0000\u12ee\u12ef\u0007\u0018\u0000\u0000\u12ef\u12f0\u0007\u0018"+ + "\u0000\u0000\u12f0\u12f1\u0007\u0013\u0000\u0000\u12f1\u12f2\u0007\r\u0000"+ + "\u0000\u12f2\u12f3\u0007\u0010\u0000\u0000\u12f3\u03a6\u0001\u0000\u0000"+ + "\u0000\u12f4\u12f5\u0007\u0018\u0000\u0000\u12f5\u12f6\u0007\u0005\u0000"+ + "\u0000\u12f6\u12f7\u0007\r\u0000\u0000\u12f7\u12f8\u0007\u0005\u0000\u0000"+ + "\u12f8\u12f9\u0007\u0006\u0000\u0000\u12f9\u12fa\u0007\u0006\u0000\u0000"+ + "\u12fa\u12fb\u0007\n\u0000\u0000\u12fb\u12fc\u0007\u0006\u0000\u0000\u12fc"+ + "\u03a8\u0001\u0000\u0000\u0000\u12fd\u12fe\u0007\t\u0000\u0000\u12fe\u12ff"+ + "\u0007\u001c\u0000\u0000\u12ff\u1300\u0007\u0006\u0000\u0000\u1300\u03aa"+ + "\u0001\u0000\u0000\u0000\u1301\u1302\u0007\f\u0000\u0000\u1302\u1303\u0007"+ + "\n\u0000\u0000\u1303\u1304\u0007\u0018\u0000\u0000\u1304\u1305\u0007\n"+ + "\u0000\u0000\u1305\u1306\u0007\u0007\u0000\u0000\u1306\u1307\u0007\f\u0000"+ + "\u0000\u1307\u1308\u0007\t\u0000\u0000\u1308\u03ac\u0001\u0000\u0000\u0000"+ + "\u1309\u130a\u0007\u0013\u0000\u0000\u130a\u130b\u0007\u001b\u0000\u0000"+ + "\u130b\u130c\u0007\n\u0000\u0000\u130c\u130d\u0007\r\u0000\u0000\u130d"+ + "\u130e\u0007\r\u0000\u0000\u130e\u130f\u0007\u0011\u0000\u0000\u130f\u1310"+ + "\u0007\f\u0000\u0000\u1310\u1311\u0007\u0011\u0000\u0000\u1311\u1312\u0007"+ + "\u0007\u0000\u0000\u1312\u1313\u0007\u0017\u0000\u0000\u1313\u03ae\u0001"+ + "\u0000\u0000\u0000\u1314\u1315\u0007\u000e\u0000\u0000\u1315\u1316\u0007"+ + "\u0013\u0000\u0000\u1316\u1317\u0007\u0007\u0000\u0000\u1317\u1318\u0007"+ + "\u0019\u0000\u0000\u1318\u1319\u0007\u0006\u0000\u0000\u1319\u131a\u0007"+ + "\u0011\u0000\u0000\u131a\u131b\u0007\u000e\u0000\u0000\u131b\u131c\u0007"+ + "\u0010\u0000\u0000\u131c\u03b0\u0001\u0000\u0000\u0000\u131d\u131e\u0007"+ + "\t\u0000\u0000\u131e\u131f\u0007\u0015\u0000\u0000\u131f\u1320\u0007\u0011"+ + "\u0000\u0000\u1320\u1321\u0007\u0018\u0000\u0000\u1321\u03b2\u0001\u0000"+ + "\u0000\u0000\u1322\u1323\u0007\u0006\u0000\u0000\u1323\u1324\u0007\u0013"+ + "\u0000\u0000\u1324\u1325\u0007\u000e\u0000\u0000\u1325\u1326\u0007\u0015"+ + "\u0000\u0000\u1326\u1327\u0007\n\u0000\u0000\u1327\u1328\u0007\f\u0000"+ + "\u0000\u1328\u03b4\u0001\u0000\u0000\u0000\u1329\u132a\u0007\u0010\u0000"+ + "\u0000\u132a\u132b\u0007\u0011\u0000\u0000\u132b\u132c\u0007\n\u0000\u0000"+ + "\u132c\u132d\u0007\t\u0000\u0000\u132d\u03b6\u0001\u0000\u0000\u0000\u132e"+ + "\u132f\u0007\r\u0000\u0000\u132f\u1330\u0007\u0013\u0000\u0000\u1330\u1331"+ + "\u0007\u0006\u0000\u0000\u1331\u1332\u0007\u0006\u0000\u0000\u1332\u1333"+ + "\u0007\u0016\u0000\u0000\u1333\u1334\u0007\u0018\u0000\u0000\u1334\u03b8"+ + "\u0001\u0000\u0000\u0000\u1335\u1336\u0007\u000e\u0000\u0000\u1336\u1337"+ + "\u0007\u0016\u0000\u0000\u1337\u1338\u0007\u0012\u0000\u0000\u1338\u1339"+ + "\u0007\n\u0000\u0000\u1339\u03ba\u0001\u0000\u0000\u0000\u133a\u133b\u0007"+ + "\u0017\u0000\u0000\u133b\u133c\u0007\r\u0000\u0000\u133c\u133d\u0007\u0013"+ + "\u0000\u0000\u133d\u133e\u0007\u0016\u0000\u0000\u133e\u133f\u0007\u0018"+ + "\u0000\u0000\u133f\u1340\u0007\u0011\u0000\u0000\u1340\u1341\u0007\u0007"+ + "\u0000\u0000\u1341\u1342\u0007\u0017\u0000\u0000\u1342\u03bc\u0001\u0000"+ + "\u0000\u0000\u1343\u1344\u0007\t\u0000\u0000\u1344\u1345\u0007\n\u0000"+ + "\u0000\u1345\u1346\u0007\u0010\u0000\u0000\u1346\u1347\u0007\t\u0000\u0000"+ + "\u1347\u03be\u0001\u0000\u0000\u0000\u1348\u1349\u0007\u0010\u0000\u0000"+ + "\u1349\u134a\u0007\u0005\u0000\u0000\u134a\u134b\u0007\u0012\u0000\u0000"+ + "\u134b\u134c\u0007\u0006\u0000\u0000\u134c\u134d\u0007\n\u0000\u0000\u134d"+ + "\u134e\u0007\t\u0000\u0000\u134e\u134f\u0007\u0005\u0000\u0000\u134f\u1350"+ + "\u0007\u000f\u0000\u0000\u1350\u1351\u0007\u0018\u0000\u0000\u1351\u1352"+ + "\u0007\u0006\u0000\u0000\u1352\u1353\u0007\n\u0000\u0000\u1353\u03c0\u0001"+ + "\u0000\u0000\u0000\u1354\u1355\u0007\u0013\u0000\u0000\u1355\u1356\u0007"+ + "\r\u0000\u0000\u1356\u1357\u0007\f\u0000\u0000\u1357\u1358\u0007\u0011"+ + "\u0000\u0000\u1358\u1359\u0007\u0007\u0000\u0000\u1359\u135a\u0007\u0005"+ + "\u0000\u0000\u135a\u135b\u0007\u0006\u0000\u0000\u135b\u135c\u0007\u0011"+ + "\u0000\u0000\u135c\u135d\u0007\u0010\u0000\u0000\u135d\u135e\u0007\b\u0000"+ + "\u0000\u135e\u03c2\u0001\u0000\u0000\u0000\u135f\u1360\u0007\u001a\u0000"+ + "\u0000\u1360\u1361\u0007\u000f\u0000\u0000\u1361\u1362\u0007\u0006\u0000"+ + "\u0000\u1362\u1363\u0007\u0010\u0000\u0000\u1363\u1364\u0007\u0005\u0000"+ + "\u0000\u1364\u1365\u0007\u0012\u0000\u0000\u1365\u1366\u0007\u0006\u0000"+ + "\u0000\u1366\u1367\u0007\n\u0000\u0000\u1367\u03c4\u0001\u0000\u0000\u0000"+ + "\u1368\u1369\u0007\u000e\u0000\u0000\u1369\u136a\u0007\u0013\u0000\u0000"+ + "\u136a\u136b\u0007\u0006\u0000\u0000\u136b\u136c\u0007\u0016\u0000\u0000"+ + "\u136c\u136d\u0007\u000f\u0000\u0000\u136d\u136e\u0007\u0007\u0000\u0000"+ + "\u136e\u136f\u0007\t\u0000\u0000\u136f\u03c6\u0001\u0000\u0000\u0000\u1370"+ + "\u1371\u0007\u001a\u0000\u0000\u1371\u1372\u0007\u000f\u0000\u0000\u1372"+ + "\u1373\u0007\u0006\u0000\u0000\u1373\u1374\u0007\u0007\u0000\u0000\u1374"+ + "\u1375\u0007\u0005\u0000\u0000\u1375\u1376\u0007\u000f\u0000\u0000\u1376"+ + "\u1377\u0007\n\u0000\u0000\u1377\u1378\u0007\t\u0000\u0000\u1378\u1379"+ + "\u0007\u0018\u0000\u0000\u1379\u137a\u0007\u0005\u0000\u0000\u137a\u137b"+ + "\u0007\u000e\u0000\u0000\u137b\u137c\u0007\n\u0000\u0000\u137c\u137d\u0007"+ + "\t\u0000\u0000\u137d\u03c8\u0001\u0000\u0000\u0000\u137e\u137f\u0007\r"+ + "\u0000\u0000\u137f\u1380\u0007\u0013\u0000\u0000\u1380\u1381\u0007\u001d"+ + "\u0000\u0000\u1381\u1382\u0007\u0010\u0000\u0000\u1382\u1383\u0007\b\u0000"+ + "\u0000\u1383\u1384\u0007\u0018\u0000\u0000\u1384\u1385\u0007\n\u0000\u0000"+ + "\u1385\u03ca\u0001\u0000\u0000\u0000\u1386\u1387\u0007\u0007\u0000\u0000"+ + "\u1387\u1388\u0007\u0013\u0000\u0000\u1388\u1389\u0007\r\u0000\u0000\u1389"+ + "\u138a\u0007\u000f\u0000\u0000\u138a\u138b\u0007\u0005\u0000\u0000\u138b"+ + "\u138c\u0007\u0006\u0000\u0000\u138c\u138d\u0007\u0011\u0000\u0000\u138d"+ + "\u138e\u0007\u000b\u0000\u0000\u138e\u138f\u0007\n\u0000\u0000\u138f\u1390"+ + "\u0007\f\u0000\u0000\u1390\u03cc\u0001\u0000\u0000\u0000\u1391\u1392\u0007"+ + "\u001d\u0000\u0000\u1392\u1393\u0007\u0011\u0000\u0000\u1393\u1394\u0007"+ + "\u0010\u0000\u0000\u1394\u1395\u0007\u0014\u0000\u0000\u1395\u1396\u0007"+ + "\u0011\u0000\u0000\u1396\u1397\u0007\u0007\u0000\u0000\u1397\u03ce\u0001"+ + "\u0000\u0000\u0000\u1398\u1399\u0007\u0019\u0000\u0000\u1399\u139a\u0007"+ + "\u0011\u0000\u0000\u139a\u139b\u0007\u0006\u0000\u0000\u139b\u139c\u0007"+ + "\u0010\u0000\u0000\u139c\u139d\u0007\n\u0000\u0000\u139d\u139e\u0007\r"+ + "\u0000\u0000\u139e\u03d0\u0001\u0000\u0000\u0000\u139f\u13a0\u0007\u0017"+ + "\u0000\u0000\u13a0\u13a1\u0007\r\u0000\u0000\u13a1\u13a2\u0007\u0013\u0000"+ + "\u0000\u13a2\u13a3\u0007\u0016\u0000\u0000\u13a3\u13a4\u0007\u0018\u0000"+ + "\u0000\u13a4\u13a5\u0007\t\u0000\u0000\u13a5\u03d2\u0001\u0000\u0000\u0000"+ + "\u13a6\u13a7\u0007\u0013\u0000\u0000\u13a7\u13a8\u0007\u0010\u0000\u0000"+ + "\u13a8\u13a9\u0007\u0014\u0000\u0000\u13a9\u13aa\u0007\n\u0000\u0000\u13aa"+ + "\u13ab\u0007\r\u0000\u0000\u13ab\u13ac\u0007\t\u0000\u0000\u13ac\u03d4"+ + "\u0001\u0000\u0000\u0000\u13ad\u13ae\u0007\u0007\u0000\u0000\u13ae\u13af"+ + "\u0007\u0019\u0000\u0000\u13af\u13b0\u0007\u000e\u0000\u0000\u13b0\u03d6"+ + "\u0001\u0000\u0000\u0000\u13b1\u13b2\u0007\u0007\u0000\u0000\u13b2\u13b3"+ + "\u0007\u0019\u0000\u0000\u13b3\u13b4\u0007\f\u0000\u0000\u13b4\u03d8\u0001"+ + "\u0000\u0000\u0000\u13b5\u13b6\u0007\u0007\u0000\u0000\u13b6\u13b7\u0007"+ + "\u0019\u0000\u0000\u13b7\u13b8\u0007\u0015\u0000\u0000\u13b8\u13b9\u0007"+ + "\u000e\u0000\u0000\u13b9\u03da\u0001\u0000\u0000\u0000\u13ba\u13bb\u0007"+ + "\u0007\u0000\u0000\u13bb\u13bc\u0007\u0019\u0000\u0000\u13bc\u13bd\u0007"+ + "\u0015\u0000\u0000\u13bd\u13be\u0007\f\u0000\u0000\u13be\u03dc\u0001\u0000"+ + "\u0000\u0000\u13bf\u13c0\u0007\u0016\u0000\u0000\u13c0\u13c1\u0007\n\u0000"+ + "\u0000\u13c1\u13c2\u0007\t\u0000\u0000\u13c2\u13c3\u0007\u000e\u0000\u0000"+ + "\u13c3\u13c4\u0007\u0005\u0000\u0000\u13c4\u13c5\u0007\u0018\u0000\u0000"+ + "\u13c5\u13c6\u0007\n\u0000\u0000\u13c6\u03de\u0001\u0000\u0000\u0000\u13c7"+ + "\u13c8\u0007\u001b\u0000\u0000\u13c8\u13c9\u0007\u0011\u0000\u0000\u13c9"+ + "\u13ca\u0007\n\u0000\u0000\u13ca\u13cb\u0007\u001d\u0000\u0000\u13cb\u13cc"+ + "\u0007\t\u0000\u0000\u13cc\u03e0\u0001\u0000\u0000\u0000\u13cd\u13ce\u0007"+ + "\u0007\u0000\u0000\u13ce\u13cf\u0007\u0013\u0000\u0000\u13cf\u13d0\u0007"+ + "\r\u0000\u0000\u13d0\u13d1\u0007\u000f\u0000\u0000\u13d1\u13d2\u0007\u0005"+ + "\u0000\u0000\u13d2\u13d3\u0007\u0006\u0000\u0000\u13d3\u13d4\u0007\u0011"+ + "\u0000\u0000\u13d4\u13d5\u0007\u000b\u0000\u0000\u13d5\u13d6\u0007\n\u0000"+ + "\u0000\u13d6\u03e2\u0001\u0000\u0000\u0000\u13d7\u13d8\u0007\f\u0000\u0000"+ + "\u13d8\u13d9\u0007\u0016\u0000\u0000\u13d9\u13da\u0007\u000f\u0000\u0000"+ + "\u13da\u13db\u0007\u0018\u0000\u0000\u13db\u03e4\u0001\u0000\u0000\u0000"+ + "\u13dc\u13dd\u0007\u0018\u0000\u0000\u13dd\u13de\u0007\r\u0000\u0000\u13de"+ + "\u13df\u0007\u0011\u0000\u0000\u13df\u13e0\u0007\u0007\u0000\u0000\u13e0"+ + "\u13e1\u0007\u0010\u0000\u0000\u13e1\u13e2\u0005_\u0000\u0000\u13e2\u13e3"+ + "\u0007\t\u0000\u0000\u13e3\u13e4\u0007\u0010\u0000\u0000\u13e4\u13e5\u0007"+ + "\r\u0000\u0000\u13e5\u13e6\u0007\u0011\u0000\u0000\u13e6\u13e7\u0007\u000e"+ + "\u0000\u0000\u13e7\u13e8\u0007\u0010\u0000\u0000\u13e8\u13e9\u0005_\u0000"+ + "\u0000\u13e9\u13ea\u0007\u0018\u0000\u0000\u13ea\u13eb\u0007\u0005\u0000"+ + "\u0000\u13eb\u13ec\u0007\r\u0000\u0000\u13ec\u13ed\u0007\u0005\u0000\u0000"+ + "\u13ed\u13ee\u0007\u000f\u0000\u0000\u13ee\u13ef\u0007\t\u0000\u0000\u13ef"+ + "\u03e6\u0001\u0000\u0000\u0000\u13f0\u13f1\u0007\u001b\u0000\u0000\u13f1"+ + "\u13f2\u0007\u0005\u0000\u0000\u13f2\u13f3\u0007\r\u0000\u0000\u13f3\u13f4"+ + "\u0007\u0011\u0000\u0000\u13f4\u13f5\u0007\u0005\u0000\u0000\u13f5\u13f6"+ + "\u0007\u0012\u0000\u0000\u13f6\u13f7\u0007\u0006\u0000\u0000\u13f7\u13f8"+ + "\u0007\n\u0000\u0000\u13f8\u13f9\u0005_\u0000\u0000\u13f9\u13fa\u0007"+ + "\u000e\u0000\u0000\u13fa\u13fb\u0007\u0013\u0000\u0000\u13fb\u13fc\u0007"+ + "\u0007\u0000\u0000\u13fc\u13fd\u0007\u0019\u0000\u0000\u13fd\u13fe\u0007"+ + "\u0006\u0000\u0000\u13fe\u13ff\u0007\u0011\u0000\u0000\u13ff\u1400\u0007"+ + "\u000e\u0000\u0000\u1400\u1401\u0007\u0010\u0000\u0000\u1401\u03e8\u0001"+ + "\u0000\u0000\u0000\u1402\u1403\u0007\n\u0000\u0000\u1403\u1404\u0007\r"+ + "\u0000\u0000\u1404\u1405\u0007\r\u0000\u0000\u1405\u1406\u0007\u0013\u0000"+ + "\u0000\u1406\u1407\u0007\r\u0000\u0000\u1407\u03ea\u0001\u0000\u0000\u0000"+ + "\u1408\u1409\u0007\u0016\u0000\u0000\u1409\u140a\u0007\t\u0000\u0000\u140a"+ + "\u140b\u0007\n\u0000\u0000\u140b\u140c\u0005_\u0000\u0000\u140c\u140d"+ + "\u0007\u001b\u0000\u0000\u140d\u140e\u0007\u0005\u0000\u0000\u140e\u140f"+ + "\u0007\r\u0000\u0000\u140f\u1410\u0007\u0011\u0000\u0000\u1410\u1411\u0007"+ + "\u0005\u0000\u0000\u1411\u1412\u0007\u0012\u0000\u0000\u1412\u1413\u0007"+ + "\u0006\u0000\u0000\u1413\u1414\u0007\n\u0000\u0000\u1414\u03ec\u0001\u0000"+ + "\u0000\u0000\u1415\u1416\u0007\u0016\u0000\u0000\u1416\u1417\u0007\t\u0000"+ + "\u0000\u1417\u1418\u0007\n\u0000\u0000\u1418\u1419\u0005_\u0000\u0000"+ + "\u1419\u141a\u0007\u000e\u0000\u0000\u141a\u141b\u0007\u0013\u0000\u0000"+ + "\u141b\u141c\u0007\u0006\u0000\u0000\u141c\u141d\u0007\u0016\u0000\u0000"+ + "\u141d\u141e\u0007\u000f\u0000\u0000\u141e\u141f\u0007\u0007\u0000\u0000"+ + "\u141f\u03ee\u0001\u0000\u0000\u0000\u1420\u1421\u0007\u0005\u0000\u0000"+ + "\u1421\u1422\u0007\u0006\u0000\u0000\u1422\u1423\u0007\u0011\u0000\u0000"+ + "\u1423\u1424\u0007\u0005\u0000\u0000\u1424\u1425\u0007\t\u0000\u0000\u1425"+ + "\u03f0\u0001\u0000\u0000\u0000\u1426\u1427\u0007\u000e\u0000\u0000\u1427"+ + "\u1428\u0007\u0013\u0000\u0000\u1428\u1429\u0007\u0007\u0000\u0000\u1429"+ + "\u142a\u0007\t\u0000\u0000\u142a\u142b\u0007\u0010\u0000\u0000\u142b\u142c"+ + "\u0007\u0005\u0000\u0000\u142c\u142d\u0007\u0007\u0000\u0000\u142d\u142e"+ + "\u0007\u0010\u0000\u0000\u142e\u03f2\u0001\u0000\u0000\u0000\u142f\u1430"+ + "\u0007\u0018\u0000\u0000\u1430\u1431\u0007\n\u0000\u0000\u1431\u1432\u0007"+ + "\r\u0000\u0000\u1432\u1433\u0007\u0019\u0000\u0000\u1433\u1434\u0007\u0013"+ + "\u0000\u0000\u1434\u1435\u0007\r\u0000\u0000\u1435\u1436\u0007\u000f\u0000"+ + "\u0000\u1436\u03f4\u0001\u0000\u0000\u0000\u1437\u1438\u0007\u0017\u0000"+ + "\u0000\u1438\u1439\u0007\n\u0000\u0000\u1439\u143a\u0007\u0010\u0000\u0000"+ + "\u143a\u03f6\u0001\u0000\u0000\u0000\u143b\u143c\u0007\f\u0000\u0000\u143c"+ + "\u143d\u0007\u0011\u0000\u0000\u143d\u143e\u0007\u0005\u0000\u0000\u143e"+ + "\u143f\u0007\u0017\u0000\u0000\u143f\u1440\u0007\u0007\u0000\u0000\u1440"+ + "\u1441\u0007\u0013\u0000\u0000\u1441\u1442\u0007\t\u0000\u0000\u1442\u1443"+ + "\u0007\u0010\u0000\u0000\u1443\u1444\u0007\u0011\u0000\u0000\u1444\u1445"+ + "\u0007\u000e\u0000\u0000\u1445\u1446\u0007\t\u0000\u0000\u1446\u03f8\u0001"+ + "\u0000\u0000\u0000\u1447\u1448\u0007\t\u0000\u0000\u1448\u1449\u0007\u0010"+ + "\u0000\u0000\u1449\u144a\u0007\u0005\u0000\u0000\u144a\u144b\u0007\u000e"+ + "\u0000\u0000\u144b\u144c\u0007\u0015\u0000\u0000\u144c\u144d\u0007\n\u0000"+ + "\u0000\u144d\u144e\u0007\f\u0000\u0000\u144e\u03fa\u0001\u0000\u0000\u0000"+ + "\u144f\u1450\u0007\n\u0000\u0000\u1450\u1451\u0007\u0006\u0000\u0000\u1451"+ + "\u1452\u0007\t\u0000\u0000\u1452\u1453\u0007\u0011\u0000\u0000\u1453\u1454"+ + "\u0007\u0019\u0000\u0000\u1454\u03fc\u0001\u0000\u0000\u0000\u1455\u1456"+ + "\u0007\u001d\u0000\u0000\u1456\u1457\u0007\u0014\u0000\u0000\u1457\u1458"+ + "\u0007\u0011\u0000\u0000\u1458\u1459\u0007\u0006\u0000\u0000\u1459\u145a"+ + "\u0007\n\u0000\u0000\u145a\u03fe\u0001\u0000\u0000\u0000\u145b\u145c\u0007"+ + "\r\u0000\u0000\u145c\u145d\u0007\n\u0000\u0000\u145d\u145e\u0007\u001b"+ + "\u0000\u0000\u145e\u145f\u0007\n\u0000\u0000\u145f\u1460\u0007\r\u0000"+ + "\u0000\u1460\u1461\u0007\t\u0000\u0000\u1461\u1462\u0007\n\u0000\u0000"+ + "\u1462\u0400\u0001\u0000\u0000\u0000\u1463\u1464\u0007\u0019\u0000\u0000"+ + "\u1464\u1465\u0007\u0013\u0000\u0000\u1465\u1466\u0007\r\u0000\u0000\u1466"+ + "\u1467\u0007\n\u0000\u0000\u1467\u1468\u0007\u0005\u0000\u0000\u1468\u1469"+ + "\u0007\u000e\u0000\u0000\u1469\u146a\u0007\u0014\u0000\u0000\u146a\u0402"+ + "\u0001\u0000\u0000\u0000\u146b\u146c\u0007\t\u0000\u0000\u146c\u146d\u0007"+ + "\u0006\u0000\u0000\u146d\u146e\u0007\u0011\u0000\u0000\u146e\u146f\u0007"+ + "\u000e\u0000\u0000\u146f\u1470\u0007\n\u0000\u0000\u1470\u0404\u0001\u0000"+ + "\u0000\u0000\u1471\u1472\u0007\n\u0000\u0000\u1472\u1473\u0007\u001a\u0000"+ + "\u0000\u1473\u1474\u0007\u0011\u0000\u0000\u1474\u1475\u0007\u0010\u0000"+ + "\u0000\u1475\u0406\u0001\u0000\u0000\u0000\u1476\u1477\u0007\r\u0000\u0000"+ + "\u1477\u1478\u0007\n\u0000\u0000\u1478\u1479\u0007\u0010\u0000\u0000\u1479"+ + "\u147a\u0007\u0016\u0000\u0000\u147a\u147b\u0007\r\u0000\u0000\u147b\u147c"+ + "\u0007\u0007\u0000\u0000\u147c\u0408\u0001\u0000\u0000\u0000\u147d\u147e"+ + "\u0007\u001c\u0000\u0000\u147e\u147f\u0007\u0016\u0000\u0000\u147f\u1480"+ + "\u0007\n\u0000\u0000\u1480\u1481\u0007\r\u0000\u0000\u1481\u1482\u0007"+ + "\b\u0000\u0000\u1482\u040a\u0001\u0000\u0000\u0000\u1483\u1484\u0007\r"+ + "\u0000\u0000\u1484\u1485\u0007\u0005\u0000\u0000\u1485\u1486\u0007\u0011"+ + "\u0000\u0000\u1486\u1487\u0007\t\u0000\u0000\u1487\u1488\u0007\n\u0000"+ + "\u0000\u1488\u040c\u0001\u0000\u0000\u0000\u1489\u148a\u0007\t\u0000\u0000"+ + "\u148a\u148b\u0007\u001c\u0000\u0000\u148b\u148c\u0007\u0006\u0000\u0000"+ + "\u148c\u148d\u0007\t\u0000\u0000\u148d\u148e\u0007\u0010\u0000\u0000\u148e"+ + "\u148f\u0007\u0005\u0000\u0000\u148f\u1490\u0007\u0010\u0000\u0000\u1490"+ + "\u1491\u0007\n\u0000\u0000\u1491\u040e\u0001\u0000\u0000\u0000\u1492\u1493"+ + "\u0007\f\u0000\u0000\u1493\u1494\u0007\n\u0000\u0000\u1494\u1495\u0007"+ + "\u0012\u0000\u0000\u1495\u1496\u0007\u0016\u0000\u0000\u1496\u1497\u0007"+ + "\u0017\u0000\u0000\u1497\u0410\u0001\u0000\u0000\u0000\u1498\u1499\u0007"+ + "\u0006\u0000\u0000\u1499\u149a\u0007\u0013\u0000\u0000\u149a\u149b\u0007"+ + "\u0017\u0000\u0000\u149b\u0412\u0001\u0000\u0000\u0000\u149c\u149d\u0007"+ + "\u0011\u0000\u0000\u149d\u149e\u0007\u0007\u0000\u0000\u149e\u149f\u0007"+ + "\u0019\u0000\u0000\u149f\u14a0\u0007\u0013\u0000\u0000\u14a0\u0414\u0001"+ + "\u0000\u0000\u0000\u14a1\u14a2\u0007\u0007\u0000\u0000\u14a2\u14a3\u0007"+ + "\u0013\u0000\u0000\u14a3\u14a4\u0007\u0010\u0000\u0000\u14a4\u14a5\u0007"+ + "\u0011\u0000\u0000\u14a5\u14a6\u0007\u000e\u0000\u0000\u14a6\u14a7\u0007"+ + "\n\u0000\u0000\u14a7\u0416\u0001\u0000\u0000\u0000\u14a8\u14a9\u0007\u001d"+ + "\u0000\u0000\u14a9\u14aa\u0007\u0005\u0000\u0000\u14aa\u14ab\u0007\r\u0000"+ + "\u0000\u14ab\u14ac\u0007\u0007\u0000\u0000\u14ac\u14ad\u0007\u0011\u0000"+ + "\u0000\u14ad\u14ae\u0007\u0007\u0000\u0000\u14ae\u14af\u0007\u0017\u0000"+ + "\u0000\u14af\u0418\u0001\u0000\u0000\u0000\u14b0\u14b1\u0007\n\u0000\u0000"+ + "\u14b1\u14b2\u0007\u001a\u0000\u0000\u14b2\u14b3\u0007\u000e\u0000\u0000"+ + "\u14b3\u14b4\u0007\n\u0000\u0000\u14b4\u14b5\u0007\u0018\u0000\u0000\u14b5"+ + "\u14b6\u0007\u0010\u0000\u0000\u14b6\u14b7\u0007\u0011\u0000\u0000\u14b7"+ + "\u14b8\u0007\u0013\u0000\u0000\u14b8\u14b9\u0007\u0007\u0000\u0000\u14b9"+ + "\u041a\u0001\u0000\u0000\u0000\u14ba\u14bb\u0007\u0005\u0000\u0000\u14bb"+ + "\u14bc\u0007\t\u0000\u0000\u14bc\u14bd\u0007\t\u0000\u0000\u14bd\u14be"+ + "\u0007\n\u0000\u0000\u14be\u14bf\u0007\r\u0000\u0000\u14bf\u14c0\u0007"+ + "\u0010\u0000\u0000\u14c0\u041c\u0001\u0000\u0000\u0000\u14c1\u14c2\u0007"+ + "\u0006\u0000\u0000\u14c2\u14c3\u0007\u0013\u0000\u0000\u14c3\u14c4\u0007"+ + "\u0013\u0000\u0000\u14c4\u14c5\u0007\u0018\u0000\u0000\u14c5\u041e\u0001"+ + "\u0000\u0000\u0000\u14c6\u14c7\u0007\u0013\u0000\u0000\u14c7\u14c8\u0007"+ + "\u0018\u0000\u0000\u14c8\u14c9\u0007\n\u0000\u0000\u14c9\u14ca\u0007\u0007"+ + "\u0000\u0000\u14ca\u0420\u0001\u0000\u0000\u0000\u14cb\u14cc\u0007\u0005"+ + "\u0000\u0000\u14cc\u14cd\u0007\u0012\u0000\u0000\u14cd\u14ce\u0007\t\u0000"+ + "\u0000\u14ce\u0422\u0001\u0000\u0000\u0000\u14cf\u14d0\u0007\u000e\u0000"+ + "\u0000\u14d0\u14d1\u0007\u0012\u0000\u0000\u14d1\u14d2\u0007\r\u0000\u0000"+ + "\u14d2\u14d3\u0007\u0010\u0000\u0000\u14d3\u0424\u0001\u0000\u0000\u0000"+ + "\u14d4\u14d5\u0007\u000e\u0000\u0000\u14d5\u14d6\u0007\n\u0000\u0000\u14d6"+ + "\u14d7\u0007\u0011\u0000\u0000\u14d7\u14d8\u0007\u0006\u0000\u0000\u14d8"+ + "\u0426\u0001\u0000\u0000\u0000\u14d9\u14da\u0007\u000e\u0000\u0000\u14da"+ + "\u14db\u0007\n\u0000\u0000\u14db\u14dc\u0007\u0011\u0000\u0000\u14dc\u14dd"+ + "\u0007\u0006\u0000\u0000\u14dd\u14de\u0007\u0011\u0000\u0000\u14de\u14df"+ + "\u0007\u0007\u0000\u0000\u14df\u14e0\u0007\u0017\u0000\u0000\u14e0\u0428"+ + "\u0001\u0000\u0000\u0000\u14e1\u14e2\u0007\f\u0000\u0000\u14e2\u14e3\u0007"+ + "\n\u0000\u0000\u14e3\u14e4\u0007\u0017\u0000\u0000\u14e4\u14e5\u0007\r"+ + "\u0000\u0000\u14e5\u14e6\u0007\n\u0000\u0000\u14e6\u14e7\u0007\n\u0000"+ + "\u0000\u14e7\u14e8\u0007\t\u0000\u0000\u14e8\u042a\u0001\u0000\u0000\u0000"+ + "\u14e9\u14ea\u0007\f\u0000\u0000\u14ea\u14eb\u0007\u0011\u0000\u0000\u14eb"+ + "\u14ec\u0007\u001b\u0000\u0000\u14ec\u042c\u0001\u0000\u0000\u0000\u14ed"+ + "\u14ee\u0007\n\u0000\u0000\u14ee\u14ef\u0007\u001a\u0000\u0000\u14ef\u14f0"+ + "\u0007\u0018\u0000\u0000\u14f0\u042e\u0001\u0000\u0000\u0000\u14f1\u14f2"+ + "\u0007\u0019\u0000\u0000\u14f2\u14f3\u0007\u0005\u0000\u0000\u14f3\u14f4"+ + "\u0007\u000e\u0000\u0000\u14f4\u14f5\u0007\u0010\u0000\u0000\u14f5\u14f6"+ + "\u0007\u0013\u0000\u0000\u14f6\u14f7\u0007\r\u0000\u0000\u14f7\u14f8\u0007"+ + "\u0011\u0000\u0000\u14f8\u14f9\u0007\u0005\u0000\u0000\u14f9\u14fa\u0007"+ + "\u0006\u0000\u0000\u14fa\u0430\u0001\u0000\u0000\u0000\u14fb\u14fc\u0007"+ + "\u0019\u0000\u0000\u14fc\u14fd\u0007\u0006\u0000\u0000\u14fd\u14fe\u0007"+ + "\u0013\u0000\u0000\u14fe\u14ff\u0007\u0013\u0000\u0000\u14ff\u1500\u0007"+ + "\r\u0000\u0000\u1500\u0432\u0001\u0000\u0000\u0000\u1501\u1502\u0007\u0017"+ + "\u0000\u0000\u1502\u1503\u0007\u000e\u0000\u0000\u1503\u1504\u0007\f\u0000"+ + "\u0000\u1504\u0434\u0001\u0000\u0000\u0000\u1505\u1506\u0007\u0006\u0000"+ + "\u0000\u1506\u1507\u0007\u000e\u0000\u0000\u1507\u1508\u0007\u000f\u0000"+ + "\u0000\u1508\u0436\u0001\u0000\u0000\u0000\u1509\u150a\u0007\u0006\u0000"+ + "\u0000\u150a\u150b\u0007\u0007\u0000\u0000\u150b\u0438\u0001\u0000\u0000"+ + "\u0000\u150c\u150d\u0007\u0006\u0000\u0000\u150d\u150e\u0007\u0013\u0000"+ + "\u0000\u150e\u150f\u0007\u0017\u0000\u0000\u150f\u1510\u00051\u0000\u0000"+ + "\u1510\u1511\u00050\u0000\u0000\u1511\u043a\u0001\u0000\u0000\u0000\u1512"+ + "\u1513\u0007\u000f\u0000\u0000\u1513\u1514\u0007\u0011\u0000\u0000\u1514"+ + "\u1515\u0007\u0007\u0000\u0000\u1515\u1516\u0005_\u0000\u0000\u1516\u1517"+ + "\u0007\t\u0000\u0000\u1517\u1518\u0007\u000e\u0000\u0000\u1518\u1519\u0007"+ + "\u0005\u0000\u0000\u1519\u151a\u0007\u0006\u0000\u0000\u151a\u151b\u0007"+ + "\n\u0000\u0000\u151b\u043c\u0001\u0000\u0000\u0000\u151c\u151d\u0007\u000f"+ + "\u0000\u0000\u151d\u151e\u0007\u0013\u0000\u0000\u151e\u151f\u0007\f\u0000"+ + "\u0000\u151f\u043e\u0001\u0000\u0000\u0000\u1520\u1521\u0007\u0018\u0000"+ + "\u0000\u1521\u1522\u0007\u0011\u0000\u0000\u1522\u0440\u0001\u0000\u0000"+ + "\u0000\u1523\u1524\u0007\u0018\u0000\u0000\u1524\u1525\u0007\u0013\u0000"+ + "\u0000\u1525\u1526\u0007\u001d\u0000\u0000\u1526\u1527\u0007\n\u0000\u0000"+ + "\u1527\u1528\u0007\r\u0000\u0000\u1528\u0442\u0001\u0000\u0000\u0000\u1529"+ + "\u152a\u0007\r\u0000\u0000\u152a\u152b\u0007\u0005\u0000\u0000\u152b\u152c"+ + "\u0007\f\u0000\u0000\u152c\u152d\u0007\u0011\u0000\u0000\u152d\u152e\u0007"+ + "\u0005\u0000\u0000\u152e\u152f\u0007\u0007\u0000\u0000\u152f\u1530\u0007"+ + "\t\u0000\u0000\u1530\u0444\u0001\u0000\u0000\u0000\u1531\u1532\u0007\r"+ + "\u0000\u0000\u1532\u1533\u0007\u0013\u0000\u0000\u1533\u1534\u0007\u0016"+ + "\u0000\u0000\u1534\u1535\u0007\u0007\u0000\u0000\u1535\u1536\u0007\f\u0000"+ + "\u0000\u1536\u0446\u0001\u0000\u0000\u0000\u1537\u1538\u0007\t\u0000\u0000"+ + "\u1538\u1539\u0007\u000e\u0000\u0000\u1539\u153a\u0007\u0005\u0000\u0000"+ + "\u153a\u153b\u0007\u0006\u0000\u0000\u153b\u153c\u0007\n\u0000\u0000\u153c"+ + "\u0448\u0001\u0000\u0000\u0000\u153d\u153e\u0007\t\u0000\u0000\u153e\u153f"+ + "\u0007\u0011\u0000\u0000\u153f\u1540\u0007\u0017\u0000\u0000\u1540\u1541"+ + "\u0007\u0007\u0000\u0000\u1541\u044a\u0001\u0000\u0000\u0000\u1542\u1543"+ + "\u0007\t\u0000\u0000\u1543\u1544\u0007\u001c\u0000\u0000\u1544\u1545\u0007"+ + "\r\u0000\u0000\u1545\u1546\u0007\u0010\u0000\u0000\u1546\u044c\u0001\u0000"+ + "\u0000\u0000\u1547\u1548\u0007\u0010\u0000\u0000\u1548\u1549\u0007\r\u0000"+ + "\u0000\u1549\u154a\u0007\u0011\u0000\u0000\u154a\u154b\u0007\u000f\u0000"+ + "\u0000\u154b\u154c\u0005_\u0000\u0000\u154c\u154d\u0007\t\u0000\u0000"+ + "\u154d\u154e\u0007\u000e\u0000\u0000\u154e\u154f\u0007\u0005\u0000\u0000"+ + "\u154f\u1550\u0007\u0006\u0000\u0000\u1550\u1551\u0007\n\u0000\u0000\u1551"+ + "\u044e\u0001\u0000\u0000\u0000\u1552\u1553\u0007\u0010\u0000\u0000\u1553"+ + "\u1554\u0007\r\u0000\u0000\u1554\u1555\u0007\u0016\u0000\u0000\u1555\u1556"+ + "\u0007\u0007\u0000\u0000\u1556\u1557\u0007\u000e\u0000\u0000\u1557\u0450"+ + "\u0001\u0000\u0000\u0000\u1558\u1559\u0007\u001d\u0000\u0000\u1559\u155a"+ + "\u0007\u0011\u0000\u0000\u155a\u155b\u0007\f\u0000\u0000\u155b\u155c\u0007"+ + "\u0010\u0000\u0000\u155c\u155d\u0007\u0014\u0000\u0000\u155d\u155e\u0005"+ + "_\u0000\u0000\u155e\u155f\u0007\u0012\u0000\u0000\u155f\u1560\u0007\u0016"+ + "\u0000\u0000\u1560\u1561\u0007\u000e\u0000\u0000\u1561\u1562\u0007\u0015"+ + "\u0000\u0000\u1562\u1563\u0007\n\u0000\u0000\u1563\u1564\u0007\u0010\u0000"+ + "\u0000\u1564\u0452\u0001\u0000\u0000\u0000\u1565\u1566\u0007\r\u0000\u0000"+ + "\u1566\u1567\u0007\u0005\u0000\u0000\u1567\u1568\u0007\u0007\u0000\u0000"+ + "\u1568\u1569\u0007\f\u0000\u0000\u1569\u156a\u0007\u0013\u0000\u0000\u156a"+ + "\u156b\u0007\u000f\u0000\u0000\u156b\u0454\u0001\u0000\u0000\u0000\u156c"+ + "\u156d\u0007\t\u0000\u0000\u156d\u156e\u0007\n\u0000\u0000\u156e\u156f"+ + "\u0007\u0010\u0000\u0000\u156f\u1570\u0007\t\u0000\u0000\u1570\u1571\u0007"+ + "\n\u0000\u0000\u1571\u1572\u0007\n\u0000\u0000\u1572\u1573\u0007\f\u0000"+ + "\u0000\u1573\u0456\u0001\u0000\u0000\u0000\u1574\u1575\u0007\u0005\u0000"+ + "\u0000\u1575\u1576\u0007\u000e\u0000\u0000\u1576\u1577\u0007\u0013\u0000"+ + "\u0000\u1577\u1578\u0007\t\u0000\u0000\u1578\u0458\u0001\u0000\u0000\u0000"+ + "\u1579\u157a\u0007\u0005\u0000\u0000\u157a\u157b\u0007\u000e\u0000\u0000"+ + "\u157b\u157c\u0007\u0013\u0000\u0000\u157c\u157d\u0007\t\u0000\u0000\u157d"+ + "\u157e\u0007\f\u0000\u0000\u157e\u045a\u0001\u0000\u0000\u0000\u157f\u1580"+ + "\u0007\u0005\u0000\u0000\u1580\u1581\u0007\t\u0000\u0000\u1581\u1582\u0007"+ + "\u0011\u0000\u0000\u1582\u1583\u0007\u0007\u0000\u0000\u1583\u045c\u0001"+ + "\u0000\u0000\u0000\u1584\u1585\u0007\u0005\u0000\u0000\u1585\u1586\u0007"+ + "\t\u0000\u0000\u1586\u1587\u0007\u0011\u0000\u0000\u1587\u1588\u0007\u0007"+ + "\u0000\u0000\u1588\u1589\u0007\f\u0000\u0000\u1589\u045e\u0001\u0000\u0000"+ + "\u0000\u158a\u158b\u0007\u0005\u0000\u0000\u158b\u158c\u0007\u0010\u0000"+ + "\u0000\u158c\u158d\u0007\u0005\u0000\u0000\u158d\u158e\u0007\u0007\u0000"+ + "\u0000\u158e\u0460\u0001\u0000\u0000\u0000\u158f\u1590\u0007\u0005\u0000"+ + "\u0000\u1590\u1591\u0007\u0010\u0000\u0000\u1591\u1592\u0007\u0005\u0000"+ + "\u0000\u1592\u1593\u0007\u0007\u0000\u0000\u1593\u1594\u0007\f\u0000\u0000"+ + "\u1594\u0462\u0001\u0000\u0000\u0000\u1595\u1596\u0007\u0005\u0000\u0000"+ + "\u1596\u1597\u0007\u0010\u0000\u0000\u1597\u1598\u0007\u0005\u0000\u0000"+ + "\u1598\u1599\u0007\u0007\u0000\u0000\u1599\u159a\u00052\u0000\u0000\u159a"+ + "\u0464\u0001\u0000\u0000\u0000\u159b\u159c\u0007\u0005\u0000\u0000\u159c"+ + "\u159d\u0007\u0010\u0000\u0000\u159d\u159e\u0007\u0005\u0000\u0000\u159e"+ + "\u159f\u0007\u0007\u0000\u0000\u159f\u15a0\u00052\u0000\u0000\u15a0\u15a1"+ + "\u0007\f\u0000\u0000\u15a1\u0466\u0001\u0000\u0000\u0000\u15a2\u15a3\u0007"+ + "\u000e\u0000\u0000\u15a3\u15a4\u0007\u0013\u0000\u0000\u15a4\u15a5\u0007"+ + "\t\u0000\u0000\u15a5\u0468\u0001\u0000\u0000\u0000\u15a6\u15a7\u0007\u000e"+ + "\u0000\u0000\u15a7\u15a8\u0007\u0013\u0000\u0000\u15a8\u15a9\u0007\t\u0000"+ + "\u0000\u15a9\u15aa\u0007\f\u0000\u0000\u15aa\u046a\u0001\u0000\u0000\u0000"+ + "\u15ab\u15ac\u0007\u000e\u0000\u0000\u15ac\u15ad\u0007\u0013\u0000\u0000"+ + "\u15ad\u15ae\u0007\u0010\u0000\u0000\u15ae\u046c\u0001\u0000\u0000\u0000"+ + "\u15af\u15b0\u0007\u000e\u0000\u0000\u15b0\u15b1\u0007\u0013\u0000\u0000"+ + "\u15b1\u15b2\u0007\u0010\u0000\u0000\u15b2\u15b3\u0007\f\u0000\u0000\u15b3"+ + "\u046e\u0001\u0000\u0000\u0000\u15b4\u15b5\u0007\t\u0000\u0000\u15b5\u15b6"+ + "\u0007\u0011\u0000\u0000\u15b6\u15b7\u0007\u0007\u0000\u0000\u15b7\u0470"+ + "\u0001\u0000\u0000\u0000\u15b8\u15b9\u0007\t\u0000\u0000\u15b9\u15ba\u0007"+ + "\u0011\u0000\u0000\u15ba\u15bb\u0007\u0007\u0000\u0000\u15bb\u15bc\u0007"+ + "\f\u0000\u0000\u15bc\u0472\u0001\u0000\u0000\u0000\u15bd\u15be\u0007\u0010"+ + "\u0000\u0000\u15be\u15bf\u0007\u0005\u0000\u0000\u15bf\u15c0\u0007\u0007"+ + "\u0000\u0000\u15c0\u0474\u0001\u0000\u0000\u0000\u15c1\u15c2\u0007\u0010"+ + "\u0000\u0000\u15c2\u15c3\u0007\u0005\u0000\u0000\u15c3\u15c4\u0007\u0007"+ + "\u0000\u0000\u15c4\u15c5\u0007\f\u0000\u0000\u15c5\u0476\u0001\u0000\u0000"+ + "\u0000\u15c6\u15c7\u0007\t\u0000\u0000\u15c7\u15c8\u0007\u0011\u0000\u0000"+ + "\u15c8\u15c9\u0007\u0007\u0000\u0000\u15c9\u15ca\u0007\u0014\u0000\u0000"+ + "\u15ca\u0478\u0001\u0000\u0000\u0000\u15cb\u15cc\u0007\u000e\u0000\u0000"+ + "\u15cc\u15cd\u0007\u0013\u0000\u0000\u15cd\u15ce\u0007\t\u0000\u0000\u15ce"+ + "\u15cf\u0007\u0014\u0000\u0000\u15cf\u047a\u0001\u0000\u0000\u0000\u15d0"+ + "\u15d1\u0007\u0010\u0000\u0000\u15d1\u15d2\u0007\u0005\u0000\u0000\u15d2"+ + "\u15d3\u0007\u0007\u0000\u0000\u15d3\u15d4\u0007\u0014\u0000\u0000\u15d4"+ + "\u047c\u0001\u0000\u0000\u0000\u15d5\u15d6\u0007\u0005\u0000\u0000\u15d6"+ + "\u15d7\u0007\t\u0000\u0000\u15d7\u15d8\u0007\u0011\u0000\u0000\u15d8\u15d9"+ + "\u0007\u0007\u0000\u0000\u15d9\u15da\u0007\u0014\u0000\u0000\u15da\u047e"+ + "\u0001\u0000\u0000\u0000\u15db\u15dc\u0007\u0005\u0000\u0000\u15dc\u15dd"+ + "\u0007\u000e\u0000\u0000\u15dd\u15de\u0007\u0013\u0000\u0000\u15de\u15df"+ + "\u0007\t\u0000\u0000\u15df\u15e0\u0007\u0014\u0000\u0000\u15e0\u0480\u0001"+ + "\u0000\u0000\u0000\u15e1\u15e2\u0007\u0005\u0000\u0000\u15e2\u15e3\u0007"+ + "\u0010\u0000\u0000\u15e3\u15e4\u0007\u0005\u0000\u0000\u15e4\u15e5\u0007"+ + "\u0007\u0000\u0000\u15e5\u15e6\u0007\u0014\u0000\u0000\u15e6\u0482\u0001"+ + "\u0000\u0000\u0000\u15e7\u15e8\u0007\u0012\u0000\u0000\u15e8\u15e9\u0007"+ + "\u0011\u0000\u0000\u15e9\u15ea\u0007\u0010\u0000\u0000\u15ea\u15eb\u0005"+ + "_\u0000\u0000\u15eb\u15ec\u0007\u0006\u0000\u0000\u15ec\u15ed\u0007\n"+ + "\u0000\u0000\u15ed\u15ee\u0007\u0007\u0000\u0000\u15ee\u15ef\u0007\u0017"+ + "\u0000\u0000\u15ef\u15f0\u0007\u0010\u0000\u0000\u15f0\u15f1\u0007\u0014"+ + "\u0000\u0000\u15f1\u0484\u0001\u0000\u0000\u0000\u15f2\u15f3\u0007\u000e"+ + "\u0000\u0000\u15f3\u15f4\u0007\u0014\u0000\u0000\u15f4\u15f5\u0007\u0005"+ + "\u0000\u0000\u15f5\u15f6\u0007\r\u0000\u0000\u15f6\u15f7\u0005_\u0000"+ + "\u0000\u15f7\u15f8\u0007\u0006\u0000\u0000\u15f8\u15f9\u0007\n\u0000\u0000"+ + "\u15f9\u15fa\u0007\u0007\u0000\u0000\u15fa\u15fb\u0007\u0017\u0000\u0000"+ + "\u15fb\u15fc\u0007\u0010\u0000\u0000\u15fc\u15fd\u0007\u0014\u0000\u0000"+ + "\u15fd\u0486\u0001\u0000\u0000\u0000\u15fe\u15ff\u0007\u000e\u0000\u0000"+ + "\u15ff\u1600\u0007\u0014\u0000\u0000\u1600\u1601\u0007\u0005\u0000\u0000"+ + "\u1601\u1602\u0007\r\u0000\u0000\u1602\u1603\u0007\u0005\u0000\u0000\u1603"+ + "\u1604\u0007\u000e\u0000\u0000\u1604\u1605\u0007\u0010\u0000\u0000\u1605"+ + "\u1606\u0007\n\u0000\u0000\u1606\u1607\u0007\r\u0000\u0000\u1607\u1608"+ + "\u0005_\u0000\u0000\u1608\u1609\u0007\u0006\u0000\u0000\u1609\u160a\u0007"+ + "\n\u0000\u0000\u160a\u160b\u0007\u0007\u0000\u0000\u160b\u160c\u0007\u0017"+ + "\u0000\u0000\u160c\u160d\u0007\u0010\u0000\u0000\u160d\u160e\u0007\u0014"+ + "\u0000\u0000\u160e\u0488\u0001\u0000\u0000\u0000\u160f\u1610\u0007\u0006"+ + "\u0000\u0000\u1610\u1611\u0007\u0013\u0000\u0000\u1611\u1612\u0007\u001d"+ + "\u0000\u0000\u1612\u1613\u0007\n\u0000\u0000\u1613\u1614\u0007\r\u0000"+ + "\u0000\u1614\u048a\u0001\u0000\u0000\u0000\u1615\u1616\u0007\u0013\u0000"+ + "\u0000\u1616\u1617\u0007\u000e\u0000\u0000\u1617\u1618\u0007\u0010\u0000"+ + "\u0000\u1618\u1619\u0007\n\u0000\u0000\u1619\u161a\u0007\u0010\u0000\u0000"+ + "\u161a\u161b\u0005_\u0000\u0000\u161b\u161c\u0007\u0006\u0000\u0000\u161c"+ + "\u161d\u0007\n\u0000\u0000\u161d\u161e\u0007\u0007\u0000\u0000\u161e\u161f"+ + "\u0007\u0017\u0000\u0000\u161f\u1620\u0007\u0010\u0000\u0000\u1620\u1621"+ + "\u0007\u0014\u0000\u0000\u1621\u048c\u0001\u0000\u0000\u0000\u1622\u1623"+ + "\u0007\u0016\u0000\u0000\u1623\u1624\u0007\u0018\u0000\u0000\u1624\u1625"+ + "\u0007\u0018\u0000\u0000\u1625\u1626\u0007\n\u0000\u0000\u1626\u1627\u0007"+ + "\r\u0000\u0000\u1627\u048e\u0001\u0000\u0000\u0000\u1628\u1629\u0007\u0005"+ + "\u0000\u0000\u1629\u162a\u0007\t\u0000\u0000\u162a\u162b\u0007\u000e\u0000"+ + "\u0000\u162b\u162c\u0007\u0011\u0000\u0000\u162c\u162d\u0007\u0011\u0000"+ + "\u0000\u162d\u0490\u0001\u0000\u0000\u0000\u162e\u162f\u0007\u0012\u0000"+ + "\u0000\u162f\u1630\u0007\u0010\u0000\u0000\u1630\u1631\u0007\r\u0000\u0000"+ + "\u1631\u1632\u0007\u0011\u0000\u0000\u1632\u1633\u0007\u000f\u0000\u0000"+ + "\u1633\u0492\u0001\u0000\u0000\u0000\u1634\u1635\u0007\u000e\u0000\u0000"+ + "\u1635\u1636\u0007\u0014\u0000\u0000\u1636\u1637\u0007\r\u0000\u0000\u1637"+ + "\u0494\u0001\u0000\u0000\u0000\u1638\u1639\u0007\u000e\u0000\u0000\u1639"+ + "\u163a\u0007\u0013\u0000\u0000\u163a\u163b\u0007\u0007\u0000\u0000\u163b"+ + "\u163c\u0007\u000e\u0000\u0000\u163c\u163d\u0007\u0005\u0000\u0000\u163d"+ + "\u163e\u0007\u0010\u0000\u0000\u163e\u0496\u0001\u0000\u0000\u0000\u163f"+ + "\u1640\u0007\u000e\u0000\u0000\u1640\u1641\u0007\u0013\u0000\u0000\u1641"+ + "\u1642\u0007\u0007\u0000\u0000\u1642\u1643\u0007\u000e\u0000\u0000\u1643"+ + "\u1644\u0007\u0005\u0000\u0000\u1644\u1645\u0007\u0010\u0000\u0000\u1645"+ + "\u1646\u0005_\u0000\u0000\u1646\u1647\u0007\u001d\u0000\u0000\u1647\u1648"+ + "\u0007\t\u0000\u0000\u1648\u0498\u0001\u0000\u0000\u0000\u1649\u164a\u0007"+ + "\u0019\u0000\u0000\u164a\u164b\u0007\u0013\u0000\u0000\u164b\u164c\u0007"+ + "\r\u0000\u0000\u164c\u164d\u0007\u000f\u0000\u0000\u164d\u164e\u0007\u0005"+ + "\u0000\u0000\u164e\u164f\u0007\u0010\u0000\u0000\u164f\u049a\u0001\u0000"+ + "\u0000\u0000\u1650\u1651\u0007\u0011\u0000\u0000\u1651\u1652\u0007\u0007"+ + "\u0000\u0000\u1652\u1653\u0007\u0011\u0000\u0000\u1653\u1654\u0007\u0010"+ + "\u0000\u0000\u1654\u1655\u0007\u000e\u0000\u0000\u1655\u1656\u0007\u0005"+ + "\u0000\u0000\u1656\u1657\u0007\u0018\u0000\u0000\u1657\u049c\u0001\u0000"+ + "\u0000\u0000\u1658\u1659\u0007\u0006\u0000\u0000\u1659\u165a\u0007\n\u0000"+ + "\u0000\u165a\u165b\u0007\u0007\u0000\u0000\u165b\u165c\u0007\u0017\u0000"+ + "\u0000\u165c\u165d\u0007\u0010\u0000\u0000\u165d\u165e\u0007\u0014\u0000"+ + "\u0000\u165e\u049e\u0001\u0000\u0000\u0000\u165f\u1660\u0007\u0006\u0000"+ + "\u0000\u1660\u1661\u0007\u0018\u0000\u0000\u1661\u1662\u0007\u0005\u0000"+ + "\u0000\u1662\u1663\u0007\f\u0000\u0000\u1663\u04a0\u0001\u0000\u0000\u0000"+ + "\u1664\u1665\u0007\u0006\u0000\u0000\u1665\u1666\u0007\u0010\u0000\u0000"+ + "\u1666\u1667\u0007\r\u0000\u0000\u1667\u1668\u0007\u0011\u0000\u0000\u1668"+ + "\u1669\u0007\u000f\u0000\u0000\u1669\u04a2\u0001\u0000\u0000\u0000\u166a"+ + "\u166b\u0007\u000f\u0000\u0000\u166b\u166c\u0007\f\u0000\u0000\u166c\u166d"+ + "\u00055\u0000\u0000\u166d\u04a4\u0001\u0000\u0000\u0000\u166e\u166f\u0007"+ + "\u0018\u0000\u0000\u166f\u1670\u0007\u0005\u0000\u0000\u1670\u1671\u0007"+ + "\r\u0000\u0000\u1671\u1672\u0007\t\u0000\u0000\u1672\u1673\u0007\n\u0000"+ + "\u0000\u1673\u1674\u0005_\u0000\u0000\u1674\u1675\u0007\u0011\u0000\u0000"+ + "\u1675\u1676\u0007\f\u0000\u0000\u1676\u1677\u0007\n\u0000\u0000\u1677"+ + "\u1678\u0007\u0007\u0000\u0000\u1678\u1679\u0007\u0010\u0000\u0000\u1679"+ + "\u04a6\u0001\u0000\u0000\u0000\u167a\u167b\u0007\u0018\u0000\u0000\u167b"+ + "\u167c\u0007\u0017\u0000\u0000\u167c\u167d\u0005_\u0000\u0000\u167d\u167e"+ + "\u0007\u000e\u0000\u0000\u167e\u167f\u0007\u0006\u0000\u0000\u167f\u1680"+ + "\u0007\u0011\u0000\u0000\u1680\u1681\u0007\n\u0000\u0000\u1681\u1682\u0007"+ + "\u0007\u0000\u0000\u1682\u1683\u0007\u0010\u0000\u0000\u1683\u1684\u0005"+ + "_\u0000\u0000\u1684\u1685\u0007\n\u0000\u0000\u1685\u1686\u0007\u0007"+ + "\u0000\u0000\u1686\u1687\u0007\u000e\u0000\u0000\u1687\u1688\u0007\u0013"+ + "\u0000\u0000\u1688\u1689\u0007\f\u0000\u0000\u1689\u168a\u0007\u0011\u0000"+ + "\u0000\u168a\u168b\u0007\u0007\u0000\u0000\u168b\u168c\u0007\u0017\u0000"+ + "\u0000\u168c\u04a8\u0001\u0000\u0000\u0000\u168d\u168e\u0007\u001c\u0000"+ + "\u0000\u168e\u168f\u0007\u0016\u0000\u0000\u168f\u1690\u0007\u0013\u0000"+ + "\u0000\u1690\u1691\u0007\u0010\u0000\u0000\u1691\u1692\u0007\n\u0000\u0000"+ + "\u1692\u1693\u0005_\u0000\u0000\u1693\u1694\u0007\u0011\u0000\u0000\u1694"+ + "\u1695\u0007\f\u0000\u0000\u1695\u1696\u0007\n\u0000\u0000\u1696\u1697"+ + "\u0007\u0007\u0000\u0000\u1697\u1698\u0007\u0010\u0000\u0000\u1698\u04aa"+ + "\u0001\u0000\u0000\u0000\u1699\u169a\u0007\u001c\u0000\u0000\u169a\u169b"+ + "\u0007\u0016\u0000\u0000\u169b\u169c\u0007\u0013\u0000\u0000\u169c\u169d"+ + "\u0007\u0010\u0000\u0000\u169d\u169e\u0007\n\u0000\u0000\u169e\u169f\u0005"+ + "_\u0000\u0000\u169f\u16a0\u0007\u0006\u0000\u0000\u16a0\u16a1\u0007\u0011"+ + "\u0000\u0000\u16a1\u16a2\u0007\u0010\u0000\u0000\u16a2\u16a3\u0007\n\u0000"+ + "\u0000\u16a3\u16a4\u0007\r\u0000\u0000\u16a4\u16a5\u0007\u0005\u0000\u0000"+ + "\u16a5\u16a6\u0007\u0006\u0000\u0000\u16a6\u04ac\u0001\u0000\u0000\u0000"+ + "\u16a7\u16a8\u0007\u001c\u0000\u0000\u16a8\u16a9\u0007\u0016\u0000\u0000"+ + "\u16a9\u16aa\u0007\u0013\u0000\u0000\u16aa\u16ab\u0007\u0010\u0000\u0000"+ + "\u16ab\u16ac\u0007\n\u0000\u0000\u16ac\u16ad\u0005_\u0000\u0000\u16ad"+ + "\u16ae\u0007\u0007\u0000\u0000\u16ae\u16af\u0007\u0016\u0000\u0000\u16af"+ + "\u16b0\u0007\u0006\u0000\u0000\u16b0\u16b1\u0007\u0006\u0000\u0000\u16b1"+ + "\u16b2\u0007\u0005\u0000\u0000\u16b2\u16b3\u0007\u0012\u0000\u0000\u16b3"+ + "\u16b4\u0007\u0006\u0000\u0000\u16b4\u16b5\u0007\n\u0000\u0000\u16b5\u04ae"+ + "\u0001\u0000\u0000\u0000\u16b6\u16b7\u0007\r\u0000\u0000\u16b7\u16b8\u0007"+ + "\n\u0000\u0000\u16b8\u16b9\u0007\u0017\u0000\u0000\u16b9\u16ba\u0007\n"+ + "\u0000\u0000\u16ba\u16bb\u0007\u001a\u0000\u0000\u16bb\u16bc\u0007\u0018"+ + "\u0000\u0000\u16bc\u16bd\u0005_\u0000\u0000\u16bd\u16be\u0007\u000e\u0000"+ + "\u0000\u16be\u16bf\u0007\u0013\u0000\u0000\u16bf\u16c0\u0007\u0016\u0000"+ + "\u0000\u16c0\u16c1\u0007\u0007\u0000\u0000\u16c1\u16c2\u0007\u0010\u0000"+ + "\u0000\u16c2\u04b0\u0001\u0000\u0000\u0000\u16c3\u16c4\u0007\r\u0000\u0000"+ + "\u16c4\u16c5\u0007\n\u0000\u0000\u16c5\u16c6\u0007\u0017\u0000\u0000\u16c6"+ + "\u16c7\u0007\n\u0000\u0000\u16c7\u16c8\u0007\u001a\u0000\u0000\u16c8\u16c9"+ + "\u0007\u0018\u0000\u0000\u16c9\u16ca\u0005_\u0000\u0000\u16ca\u16cb\u0007"+ + "\u0011\u0000\u0000\u16cb\u16cc\u0007\u0007\u0000\u0000\u16cc\u16cd\u0007"+ + "\t\u0000\u0000\u16cd\u16ce\u0007\u0010\u0000\u0000\u16ce\u16cf\u0007\r"+ + "\u0000\u0000\u16cf\u04b2\u0001\u0000\u0000\u0000\u16d0\u16d1\u0007\r\u0000"+ + "\u0000\u16d1\u16d2\u0007\n\u0000\u0000\u16d2\u16d3\u0007\u0017\u0000\u0000"+ + "\u16d3\u16d4\u0007\n\u0000\u0000\u16d4\u16d5\u0007\u001a\u0000\u0000\u16d5"+ + "\u16d6\u0007\u0018\u0000\u0000\u16d6\u16d7\u0005_\u0000\u0000\u16d7\u16d8"+ + "\u0007\u0006\u0000\u0000\u16d8\u16d9\u0007\u0011\u0000\u0000\u16d9\u16da"+ + "\u0007\u0015\u0000\u0000\u16da\u16db\u0007\n\u0000\u0000\u16db\u04b4\u0001"+ + "\u0000\u0000\u0000\u16dc\u16dd\u0007\r\u0000\u0000\u16dd\u16de\u0007\n"+ + "\u0000\u0000\u16de\u16df\u0007\u0017\u0000\u0000\u16df\u16e0\u0007\n\u0000"+ + "\u0000\u16e0\u16e1\u0007\u001a\u0000\u0000\u16e1\u16e2\u0007\u0018\u0000"+ + "\u0000\u16e2\u16e3\u0005_\u0000\u0000\u16e3\u16e4\u0007\u000f\u0000\u0000"+ + "\u16e4\u16e5\u0007\u0005\u0000\u0000\u16e5\u16e6\u0007\u0010\u0000\u0000"+ + "\u16e6\u16e7\u0007\u000e\u0000\u0000\u16e7\u16e8\u0007\u0014\u0000\u0000"+ + "\u16e8\u04b6\u0001\u0000\u0000\u0000\u16e9\u16ea\u0007\r\u0000\u0000\u16ea"+ + "\u16eb\u0007\n\u0000\u0000\u16eb\u16ec\u0007\u0017\u0000\u0000\u16ec\u16ed"+ + "\u0007\n\u0000\u0000\u16ed\u16ee\u0007\u001a\u0000\u0000\u16ee\u16ef\u0007"+ + "\u0018\u0000\u0000\u16ef\u16f0\u0005_\u0000\u0000\u16f0\u16f1\u0007\u000f"+ + "\u0000\u0000\u16f1\u16f2\u0007\u0005\u0000\u0000\u16f2\u16f3\u0007\u0010"+ + "\u0000\u0000\u16f3\u16f4\u0007\u000e\u0000\u0000\u16f4\u16f5\u0007\u0014"+ + "\u0000\u0000\u16f5\u16f6\u0007\n\u0000\u0000\u16f6\u16f7\u0007\t\u0000"+ + "\u0000\u16f7\u04b8\u0001\u0000\u0000\u0000\u16f8\u16f9\u0007\r\u0000\u0000"+ + "\u16f9\u16fa\u0007\n\u0000\u0000\u16fa\u16fb\u0007\u0017\u0000\u0000\u16fb"+ + "\u16fc\u0007\n\u0000\u0000\u16fc\u16fd\u0007\u001a\u0000\u0000\u16fd\u16fe"+ + "\u0007\u0018\u0000\u0000\u16fe\u16ff\u0005_\u0000\u0000\u16ff\u1700\u0007"+ + "\r\u0000\u0000\u1700\u1701\u0007\n\u0000\u0000\u1701\u1702\u0007\u0018"+ + "\u0000\u0000\u1702\u1703\u0007\u0006\u0000\u0000\u1703\u1704\u0007\u0005"+ + "\u0000\u0000\u1704\u1705\u0007\u000e\u0000\u0000\u1705\u1706\u0007\n\u0000"+ + "\u0000\u1706\u04ba\u0001\u0000\u0000\u0000\u1707\u1708\u0007\r\u0000\u0000"+ + "\u1708\u1709\u0007\n\u0000\u0000\u1709\u170a\u0007\u0017\u0000\u0000\u170a"+ + "\u170b\u0007\n\u0000\u0000\u170b\u170c\u0007\u001a\u0000\u0000\u170c\u170d"+ + "\u0007\u0018\u0000\u0000\u170d\u170e\u0005_\u0000\u0000\u170e\u170f\u0007"+ + "\t\u0000\u0000\u170f\u1710\u0007\u0018\u0000\u0000\u1710\u1711\u0007\u0006"+ + "\u0000\u0000\u1711\u1712\u0007\u0011\u0000\u0000\u1712\u1713\u0007\u0010"+ + "\u0000\u0000\u1713\u1714\u0005_\u0000\u0000\u1714\u1715\u0007\u0010\u0000"+ + "\u0000\u1715\u1716\u0007\u0013\u0000\u0000\u1716\u1717\u0005_\u0000\u0000"+ + "\u1717\u1718\u0007\u0005\u0000\u0000\u1718\u1719\u0007\r\u0000\u0000\u1719"+ + "\u171a\u0007\r\u0000\u0000\u171a\u171b\u0007\u0005\u0000\u0000\u171b\u171c"+ + "\u0007\b\u0000\u0000\u171c\u04bc\u0001\u0000\u0000\u0000\u171d\u171e\u0007"+ + "\r\u0000\u0000\u171e\u171f\u0007\n\u0000\u0000\u171f\u1720\u0007\u0017"+ + "\u0000\u0000\u1720\u1721\u0007\n\u0000\u0000\u1721\u1722\u0007\u001a\u0000"+ + "\u0000\u1722\u1723\u0007\u0018\u0000\u0000\u1723\u1724\u0005_\u0000\u0000"+ + "\u1724\u1725\u0007\t\u0000\u0000\u1725\u1726\u0007\u0018\u0000\u0000\u1726"+ + "\u1727\u0007\u0006\u0000\u0000\u1727\u1728\u0007\u0011\u0000\u0000\u1728"+ + "\u1729\u0007\u0010\u0000\u0000\u1729\u172a\u0005_\u0000\u0000\u172a\u172b"+ + "\u0007\u0010\u0000\u0000\u172b\u172c\u0007\u0013\u0000\u0000\u172c\u172d"+ + "\u0005_\u0000\u0000\u172d\u172e\u0007\u0010\u0000\u0000\u172e\u172f\u0007"+ + "\u0005\u0000\u0000\u172f\u1730\u0007\u0012\u0000\u0000\u1730\u1731\u0007"+ + "\u0006\u0000\u0000\u1731\u1732\u0007\n\u0000\u0000\u1732\u04be\u0001\u0000"+ + "\u0000\u0000\u1733\u1734\u0007\r\u0000\u0000\u1734\u1735\u0007\n\u0000"+ + "\u0000\u1735\u1736\u0007\u0017\u0000\u0000\u1736\u1737\u0007\n\u0000\u0000"+ + "\u1737\u1738\u0007\u001a\u0000\u0000\u1738\u1739\u0007\u0018\u0000\u0000"+ + "\u1739\u173a\u0005_\u0000\u0000\u173a\u173b\u0007\t\u0000\u0000\u173b"+ + "\u173c\u0007\u0016\u0000\u0000\u173c\u173d\u0007\u0012\u0000\u0000\u173d"+ + "\u173e\u0007\t\u0000\u0000\u173e\u173f\u0007\u0010\u0000\u0000\u173f\u1740"+ + "\u0007\r\u0000\u0000\u1740\u04c0\u0001\u0000\u0000\u0000\u1741\u1742\u0007"+ + "\r\u0000\u0000\u1742\u1743\u0007\n\u0000\u0000\u1743\u1744\u0007\u0018"+ + "\u0000\u0000\u1744\u1745\u0007\n\u0000\u0000\u1745\u1746\u0007\u0005\u0000"+ + "\u0000\u1746\u1747\u0007\u0010\u0000\u0000\u1747\u04c2\u0001\u0000\u0000"+ + "\u0000\u1748\u1749\u0007\r\u0000\u0000\u1749\u174a\u0007\u0018\u0000\u0000"+ + "\u174a\u174b\u0007\u0005\u0000\u0000\u174b\u174c\u0007\f\u0000\u0000\u174c"+ + "\u04c4\u0001\u0000\u0000\u0000\u174d\u174e\u0007\r\u0000\u0000\u174e\u174f"+ + "\u0007\u0010\u0000\u0000\u174f\u1750\u0007\r\u0000\u0000\u1750\u1751\u0007"+ + "\u0011\u0000\u0000\u1751\u1752\u0007\u000f\u0000\u0000\u1752\u04c6\u0001"+ + "\u0000\u0000\u0000\u1753\u1754\u0007\t\u0000\u0000\u1754\u1755\u0007\u0018"+ + "\u0000\u0000\u1755\u1756\u0007\u0006\u0000\u0000\u1756\u1757\u0007\u0011"+ + "\u0000\u0000\u1757\u1758\u0007\u0010\u0000\u0000\u1758\u1759\u0005_\u0000"+ + "\u0000\u1759\u175a\u0007\u0018\u0000\u0000\u175a\u175b\u0007\u0005\u0000"+ + "\u0000\u175b\u175c\u0007\r\u0000\u0000\u175c\u175d\u0007\u0010\u0000\u0000"+ + "\u175d\u04c8\u0001\u0000\u0000\u0000\u175e\u175f\u0007\t\u0000\u0000\u175f"+ + "\u1760\u0007\u0010\u0000\u0000\u1760\u1761\u0007\u0005\u0000\u0000\u1761"+ + "\u1762\u0007\r\u0000\u0000\u1762\u1763\u0007\u0010\u0000\u0000\u1763\u1764"+ + "\u0007\t\u0000\u0000\u1764\u1765\u0005_\u0000\u0000\u1765\u1766\u0007"+ + "\u001d\u0000\u0000\u1766\u1767\u0007\u0011\u0000\u0000\u1767\u1768\u0007"+ + "\u0010\u0000\u0000\u1768\u1769\u0007\u0014\u0000\u0000\u1769\u04ca\u0001"+ + "\u0000\u0000\u0000\u176a\u176b\u0007\t\u0000\u0000\u176b\u176c\u0007\u0010"+ + "\u0000\u0000\u176c\u176d\u0007\r\u0000\u0000\u176d\u176e\u0007\u0011\u0000"+ + "\u0000\u176e\u176f\u0007\u0007\u0000\u0000\u176f\u1770\u0007\u0017\u0000"+ + "\u0000\u1770\u1771\u0005_\u0000\u0000\u1771\u1772\u0007\u0010\u0000\u0000"+ + "\u1772\u1773\u0007\u0013\u0000\u0000\u1773\u1774\u0005_\u0000\u0000\u1774"+ + "\u1775\u0007\u0005\u0000\u0000\u1775\u1776\u0007\r\u0000\u0000\u1776\u1777"+ + "\u0007\r\u0000\u0000\u1777\u1778\u0007\u0005\u0000\u0000\u1778\u1779\u0007"+ + "\b\u0000\u0000\u1779\u04cc\u0001\u0000\u0000\u0000\u177a\u177b\u0007\t"+ + "\u0000\u0000\u177b\u177c\u0007\u0010\u0000\u0000\u177c\u177d\u0007\r\u0000"+ + "\u0000\u177d\u177e\u0007\u0011\u0000\u0000\u177e\u177f\u0007\u0007\u0000"+ + "\u0000\u177f\u1780\u0007\u0017\u0000\u0000\u1780\u1781\u0005_\u0000\u0000"+ + "\u1781\u1782\u0007\u0010\u0000\u0000\u1782\u1783\u0007\u0013\u0000\u0000"+ + "\u1783\u1784\u0005_\u0000\u0000\u1784\u1785\u0007\u0010\u0000\u0000\u1785"+ + "\u1786\u0007\u0005\u0000\u0000\u1786\u1787\u0007\u0012\u0000\u0000\u1787"+ + "\u1788\u0007\u0006\u0000\u0000\u1788\u1789\u0007\n\u0000\u0000\u1789\u04ce"+ + "\u0001\u0000\u0000\u0000\u178a\u178b\u0007\t\u0000\u0000\u178b\u178c\u0007"+ + "\u0010\u0000\u0000\u178c\u178d\u0007\r\u0000\u0000\u178d\u178e\u0007\u0018"+ + "\u0000\u0000\u178e\u178f\u0007\u0013\u0000\u0000\u178f\u1790\u0007\t\u0000"+ + "\u0000\u1790\u04d0\u0001\u0000\u0000\u0000\u1791\u1792\u0007\t\u0000\u0000"+ + "\u1792\u1793\u0007\u0016\u0000\u0000\u1793\u1794\u0007\u0012\u0000\u0000"+ + "\u1794\u1795\u0007\t\u0000\u0000\u1795\u1796\u0007\u0010\u0000\u0000\u1796"+ + "\u1797\u0007\r\u0000\u0000\u1797\u04d2\u0001\u0000\u0000\u0000\u1798\u1799"+ + "\u0007\u0010\u0000\u0000\u1799\u179a\u0007\u0013\u0000\u0000\u179a\u179b"+ + "\u0005_\u0000\u0000\u179b\u179c\u0007\u0005\u0000\u0000\u179c\u179d\u0007"+ + "\t\u0000\u0000\u179d\u179e\u0007\u000e\u0000\u0000\u179e\u179f\u0007\u0011"+ + "\u0000\u0000\u179f\u17a0\u0007\u0011\u0000\u0000\u17a0\u04d4\u0001\u0000"+ + "\u0000\u0000\u17a1\u17a2\u0007\u0010\u0000\u0000\u17a2\u17a3\u0007\u0013"+ + "\u0000\u0000\u17a3\u17a4\u0005_\u0000\u0000\u17a4\u17a5\u0007\u0014\u0000"+ + "\u0000\u17a5\u17a6\u0007\n\u0000\u0000\u17a6\u17a7\u0007\u001a\u0000\u0000"+ + "\u17a7\u04d6\u0001\u0000\u0000\u0000\u17a8\u17a9\u0007\u0010\u0000\u0000"+ + "\u17a9\u17aa\u0007\r\u0000\u0000\u17aa\u17ab\u0007\u0005\u0000\u0000\u17ab"+ + "\u17ac\u0007\u0007\u0000\u0000\u17ac\u17ad\u0007\t\u0000\u0000\u17ad\u17ae"+ + "\u0007\u0006\u0000\u0000\u17ae\u17af\u0007\u0005\u0000\u0000\u17af\u17b0"+ + "\u0007\u0010\u0000\u0000\u17b0\u17b1\u0007\n\u0000\u0000\u17b1\u04d8\u0001"+ + "\u0000\u0000\u0000\u17b2\u17b3\u0007\u0016\u0000\u0000\u17b3\u17b4\u0007"+ + "\u0007\u0000\u0000\u17b4\u17b5\u0007\u0011\u0000\u0000\u17b5\u17b6\u0007"+ + "\t\u0000\u0000\u17b6\u17b7\u0007\u0010\u0000\u0000\u17b7\u17b8\u0007\r"+ + "\u0000\u0000\u17b8\u04da\u0001\u0000\u0000\u0000\u17b9\u17ba\u0007\u0005"+ + "\u0000\u0000\u17ba\u17bb\u0007\u0017\u0000\u0000\u17bb\u17bc\u0007\n\u0000"+ + "\u0000\u17bc\u04dc\u0001\u0000\u0000\u0000\u17bd\u17be\u0007\u000e\u0000"+ + "\u0000\u17be\u17bf\u0007\u0006\u0000\u0000\u17bf\u17c0\u0007\u0013\u0000"+ + "\u0000\u17c0\u17c1\u0007\u000e\u0000\u0000\u17c1\u17c2\u0007\u0015\u0000"+ + "\u0000\u17c2\u17c3\u0005_\u0000\u0000\u17c3\u17c4\u0007\u0010\u0000\u0000"+ + "\u17c4\u17c5\u0007\u0011\u0000\u0000\u17c5\u17c6\u0007\u000f\u0000\u0000"+ + "\u17c6\u17c7\u0007\n\u0000\u0000\u17c7\u17c8\u0007\t\u0000\u0000\u17c8"+ + "\u17c9\u0007\u0010\u0000\u0000\u17c9\u17ca\u0007\u0005\u0000\u0000\u17ca"+ + "\u17cb\u0007\u000f\u0000\u0000\u17cb\u17cc\u0007\u0018\u0000\u0000\u17cc"+ + "\u04de\u0001\u0000\u0000\u0000\u17cd\u17ce\u0007\f\u0000\u0000\u17ce\u17cf"+ + "\u0007\u0005\u0000\u0000\u17cf\u17d0\u0007\u0010\u0000\u0000\u17d0\u17d1"+ + "\u0007\n\u0000\u0000\u17d1\u17d2\u0005_\u0000\u0000\u17d2\u17d3\u0007"+ + "\u0012\u0000\u0000\u17d3\u17d4\u0007\u0011\u0000\u0000\u17d4\u17d5\u0007"+ + "\u0007\u0000\u0000\u17d5\u04e0\u0001\u0000\u0000\u0000\u17d6\u17d7\u0007"+ + "\f\u0000\u0000\u17d7\u17d8\u0007\u0005\u0000\u0000\u17d8\u17d9\u0007\u0010"+ + "\u0000\u0000\u17d9\u17da\u0007\n\u0000\u0000\u17da\u17db\u0005_\u0000"+ + "\u0000\u17db\u17dc\u0007\u0018\u0000\u0000\u17dc\u17dd\u0007\u0005\u0000"+ + "\u0000\u17dd\u17de\u0007\r\u0000\u0000\u17de\u17df\u0007\u0010\u0000\u0000"+ + "\u17df\u04e2\u0001\u0000\u0000\u0000\u17e0\u17e1\u0007\f\u0000\u0000\u17e1"+ + "\u17e2\u0007\u0005\u0000\u0000\u17e2\u17e3\u0007\u0010\u0000\u0000\u17e3"+ + "\u17e4\u0007\n\u0000\u0000\u17e4\u17e5\u0005_\u0000\u0000\u17e5\u17e6"+ + "\u0007\u0010\u0000\u0000\u17e6\u17e7\u0007\r\u0000\u0000\u17e7\u17e8\u0007"+ + "\u0016\u0000\u0000\u17e8\u17e9\u0007\u0007\u0000\u0000\u17e9\u17ea\u0007"+ + "\u000e\u0000\u0000\u17ea\u04e4\u0001\u0000\u0000\u0000\u17eb\u17ec\u0007"+ + "\u0011\u0000\u0000\u17ec\u17ed\u0007\t\u0000\u0000\u17ed\u17ee\u0007\u0019"+ + "\u0000\u0000\u17ee\u17ef\u0007\u0011\u0000\u0000\u17ef\u17f0\u0007\u0007"+ + "\u0000\u0000\u17f0\u17f1\u0007\u0011\u0000\u0000\u17f1\u17f2\u0007\u0010"+ + "\u0000\u0000\u17f2\u17f3\u0007\n\u0000\u0000\u17f3\u04e6\u0001\u0000\u0000"+ + "\u0000\u17f4\u17f5\u0007\u001e\u0000\u0000\u17f5\u17f6\u0007\u0016\u0000"+ + "\u0000\u17f6\u17f7\u0007\t\u0000\u0000\u17f7\u17f8\u0007\u0010\u0000\u0000"+ + "\u17f8\u17f9\u0007\u0011\u0000\u0000\u17f9\u17fa\u0007\u0019\u0000\u0000"+ + "\u17fa\u17fb\u0007\b\u0000\u0000\u17fb\u17fc\u0005_\u0000\u0000\u17fc"+ + "\u17fd\u0007\f\u0000\u0000\u17fd\u17fe\u0007\u0005\u0000\u0000\u17fe\u17ff"+ + "\u0007\b\u0000\u0000\u17ff\u1800\u0007\t\u0000\u0000\u1800\u04e8\u0001"+ + "\u0000\u0000\u0000\u1801\u1802\u0007\u001e\u0000\u0000\u1802\u1803\u0007"+ + "\u0016\u0000\u0000\u1803\u1804\u0007\t\u0000\u0000\u1804\u1805\u0007\u0010"+ + "\u0000\u0000\u1805\u1806\u0007\u0011\u0000\u0000\u1806\u1807\u0007\u0019"+ + "\u0000\u0000\u1807\u1808\u0007\b\u0000\u0000\u1808\u1809\u0005_\u0000"+ + "\u0000\u1809\u180a\u0007\u0014\u0000\u0000\u180a\u180b\u0007\u0013\u0000"+ + "\u0000\u180b\u180c\u0007\u0016\u0000\u0000\u180c\u180d\u0007\r\u0000\u0000"+ + "\u180d\u180e\u0007\t\u0000\u0000\u180e\u04ea\u0001\u0000\u0000\u0000\u180f"+ + "\u1810\u0007\u001e\u0000\u0000\u1810\u1811\u0007\u0016\u0000\u0000\u1811"+ + "\u1812\u0007\t\u0000\u0000\u1812\u1813\u0007\u0010\u0000\u0000\u1813\u1814"+ + "\u0007\u0011\u0000\u0000\u1814\u1815\u0007\u0019\u0000\u0000\u1815\u1816"+ + "\u0007\b\u0000\u0000\u1816\u1817\u0005_\u0000\u0000\u1817\u1818\u0007"+ + "\u0011\u0000\u0000\u1818\u1819\u0007\u0007\u0000\u0000\u1819\u181a\u0007"+ + "\u0010\u0000\u0000\u181a\u181b\u0007\n\u0000\u0000\u181b\u181c\u0007\r"+ + "\u0000\u0000\u181c\u181d\u0007\u001b\u0000\u0000\u181d\u181e\u0007\u0005"+ + "\u0000\u0000\u181e\u181f\u0007\u0006\u0000\u0000\u181f\u04ec\u0001\u0000"+ + "\u0000\u0000\u1820\u1821\u0007\u000f\u0000\u0000\u1821\u1822\u0007\u0005"+ + "\u0000\u0000\u1822\u1823\u0007\u0015\u0000\u0000\u1823\u1824\u0007\n\u0000"+ + "\u0000\u1824\u1825\u0005_\u0000\u0000\u1825\u1826\u0007\f\u0000\u0000"+ + "\u1826\u1827\u0007\u0005\u0000\u0000\u1827\u1828\u0007\u0010\u0000\u0000"+ + "\u1828\u1829\u0007\n\u0000\u0000\u1829\u04ee\u0001\u0000\u0000\u0000\u182a"+ + "\u182b\u0007\u000f\u0000\u0000\u182b\u182c\u0007\u0005\u0000\u0000\u182c"+ + "\u182d\u0007\u0015\u0000\u0000\u182d\u182e\u0007\n\u0000\u0000\u182e\u182f"+ + "\u0005_\u0000\u0000\u182f\u1830\u0007\u0011\u0000\u0000\u1830\u1831\u0007"+ + "\u0007\u0000\u0000\u1831\u1832\u0007\u0010\u0000\u0000\u1832\u1833\u0007"+ + "\n\u0000\u0000\u1833\u1834\u0007\r\u0000\u0000\u1834\u1835\u0007\u001b"+ + "\u0000\u0000\u1835\u1836\u0007\u0005\u0000\u0000\u1836\u1837\u0007\u0006"+ + "\u0000\u0000\u1837\u04f0\u0001\u0000\u0000\u0000\u1838\u1839\u0007\u000f"+ + "\u0000\u0000\u1839\u183a\u0007\u0005\u0000\u0000\u183a\u183b\u0007\u0015"+ + "\u0000\u0000\u183b\u183c\u0007\n\u0000\u0000\u183c\u183d\u0005_\u0000"+ + "\u0000\u183d\u183e\u0007\u0010\u0000\u0000\u183e\u183f\u0007\u0011\u0000"+ + "\u0000\u183f\u1840\u0007\u000f\u0000\u0000\u1840\u1841\u0007\n\u0000\u0000"+ + "\u1841\u04f2\u0001\u0000\u0000\u0000\u1842\u1843\u0007\u000f\u0000\u0000"+ + "\u1843\u1844\u0007\u0005\u0000\u0000\u1844\u1845\u0007\u0015\u0000\u0000"+ + "\u1845\u1846\u0007\n\u0000\u0000\u1846\u1847\u0005_\u0000\u0000\u1847"+ + "\u1848\u0007\u0010\u0000\u0000\u1848\u1849\u0007\u0011\u0000\u0000\u1849"+ + "\u184a\u0007\u000f\u0000\u0000\u184a\u184b\u0007\n\u0000\u0000\u184b\u184c"+ + "\u0007\t\u0000\u0000\u184c\u184d\u0007\u0010\u0000\u0000\u184d\u184e\u0007"+ + "\u0005\u0000\u0000\u184e\u184f\u0007\u000f\u0000\u0000\u184f\u1850\u0007"+ + "\u0018\u0000\u0000\u1850\u04f4\u0001\u0000\u0000\u0000\u1851\u1852\u0007"+ + "\u000f\u0000\u0000\u1852\u1853\u0007\u0005\u0000\u0000\u1853\u1854\u0007"+ + "\u0015\u0000\u0000\u1854\u1855\u0007\n\u0000\u0000\u1855\u1856\u0005_"+ + "\u0000\u0000\u1856\u1857\u0007\u0010\u0000\u0000\u1857\u1858\u0007\u0011"+ + "\u0000\u0000\u1858\u1859\u0007\u000f\u0000\u0000\u1859\u185a\u0007\n\u0000"+ + "\u0000\u185a\u185b\u0007\t\u0000\u0000\u185b\u185c\u0007\u0010\u0000\u0000"+ + "\u185c\u185d\u0007\u0005\u0000\u0000\u185d\u185e\u0007\u000f\u0000\u0000"+ + "\u185e\u185f\u0007\u0018\u0000\u0000\u185f\u1860\u0007\u0010\u0000\u0000"+ + "\u1860\u1861\u0007\u000b\u0000\u0000\u1861\u04f6\u0001\u0000\u0000\u0000"+ + "\u1862\u1863\u0007\u0007\u0000\u0000\u1863\u1864\u0007\u0013\u0000\u0000"+ + "\u1864\u1865\u0007\u001d\u0000\u0000\u1865\u04f8\u0001\u0000\u0000\u0000"+ + "\u1866\u1867\u0007\t\u0000\u0000\u1867\u1868\u0007\u0010\u0000\u0000\u1868"+ + "\u1869\u0007\u0005\u0000\u0000\u1869\u186a\u0007\u0010\u0000\u0000\u186a"+ + "\u186b\u0007\n\u0000\u0000\u186b\u186c\u0007\u000f\u0000\u0000\u186c\u186d"+ + "\u0007\n\u0000\u0000\u186d\u186e\u0007\u0007\u0000\u0000\u186e\u186f\u0007"+ + "\u0010\u0000\u0000\u186f\u1870\u0005_\u0000\u0000\u1870\u1871\u0007\u0010"+ + "\u0000\u0000\u1871\u1872\u0007\u0011\u0000\u0000\u1872\u1873\u0007\u000f"+ + "\u0000\u0000\u1873\u1874\u0007\n\u0000\u0000\u1874\u1875\u0007\t\u0000"+ + "\u0000\u1875\u1876\u0007\u0010\u0000\u0000\u1876\u1877\u0007\u0005\u0000"+ + "\u0000\u1877\u1878\u0007\u000f\u0000\u0000\u1878\u1879\u0007\u0018\u0000"+ + "\u0000\u1879\u04fa\u0001\u0000\u0000\u0000\u187a\u187b\u0007\u0010\u0000"+ + "\u0000\u187b\u187c\u0007\u0011\u0000\u0000\u187c\u187d\u0007\u000f\u0000"+ + "\u0000\u187d\u187e\u0007\n\u0000\u0000\u187e\u187f\u0007\u0013\u0000\u0000"+ + "\u187f\u1880\u0007\u0019\u0000\u0000\u1880\u1881\u0007\f\u0000\u0000\u1881"+ + "\u1882\u0007\u0005\u0000\u0000\u1882\u1883\u0007\b\u0000\u0000\u1883\u04fc"+ + "\u0001\u0000\u0000\u0000\u1884\u1885\u0007\u0010\u0000\u0000\u1885\u1886"+ + "\u0007\r\u0000\u0000\u1886\u1887\u0007\u0005\u0000\u0000\u1887\u1888\u0007"+ + "\u0007\u0000\u0000\u1888\u1889\u0007\t\u0000\u0000\u1889\u188a\u0007\u0005"+ + "\u0000\u0000\u188a\u188b\u0007\u000e\u0000\u0000\u188b\u188c\u0007\u0010"+ + "\u0000\u0000\u188c\u188d\u0007\u0011\u0000\u0000\u188d\u188e\u0007\u0013"+ + "\u0000\u0000\u188e\u188f\u0007\u0007\u0000\u0000\u188f\u1890\u0005_\u0000"+ + "\u0000\u1890\u1891\u0007\u0010\u0000\u0000\u1891\u1892\u0007\u0011\u0000"+ + "\u0000\u1892\u1893\u0007\u000f\u0000\u0000\u1893\u1894\u0007\n\u0000\u0000"+ + "\u1894\u1895\u0007\t\u0000\u0000\u1895\u1896\u0007\u0010\u0000\u0000\u1896"+ + "\u1897\u0007\u0005\u0000\u0000\u1897\u1898\u0007\u000f\u0000\u0000\u1898"+ + "\u1899\u0007\u0018\u0000\u0000\u1899\u04fe\u0001\u0000\u0000\u0000\u189a"+ + "\u189b\u0007\u0010\u0000\u0000\u189b\u189c\u0007\u0013\u0000\u0000\u189c"+ + "\u189d\u0005_\u0000\u0000\u189d\u189e\u0007\u0010\u0000\u0000\u189e\u189f"+ + "\u0007\u0011\u0000\u0000\u189f\u18a0\u0007\u000f\u0000\u0000\u18a0\u18a1"+ + "\u0007\n\u0000\u0000\u18a1\u18a2\u0007\t\u0000\u0000\u18a2\u18a3\u0007"+ + "\u0010\u0000\u0000\u18a3\u18a4\u0007\u0005\u0000\u0000\u18a4\u18a5\u0007"+ + "\u000f\u0000\u0000\u18a5\u18a6\u0007\u0018\u0000\u0000\u18a6\u0500\u0001"+ + "\u0000\u0000\u0000\u18a7\u18a8\u0007\u0010\u0000\u0000\u18a8\u18a9\u0007"+ + "\u0013\u0000\u0000\u18a9\u18aa\u0005_\u0000\u0000\u18aa\u18ab\u0007\u000e"+ + "\u0000\u0000\u18ab\u18ac\u0007\u0014\u0000\u0000\u18ac\u18ad\u0007\u0005"+ + "\u0000\u0000\u18ad\u18ae\u0007\r\u0000\u0000\u18ae\u0502\u0001\u0000\u0000"+ + "\u0000\u18af\u18b0\u0007\u0010\u0000\u0000\u18b0\u18b1\u0007\u0013\u0000"+ + "\u0000\u18b1\u18b2\u0005_\u0000\u0000\u18b2\u18b3\u0007\f\u0000\u0000"+ + "\u18b3\u18b4\u0007\u0005\u0000\u0000\u18b4\u18b5\u0007\u0010\u0000\u0000"+ + "\u18b5\u18b6\u0007\n\u0000\u0000\u18b6\u0504\u0001\u0000\u0000\u0000\u18b7"+ + "\u18b8\u0007\u0010\u0000\u0000\u18b8\u18b9\u0007\u0013\u0000\u0000\u18b9"+ + "\u18ba\u0005_\u0000\u0000\u18ba\u18bb\u0007\u0007\u0000\u0000\u18bb\u18bc"+ + "\u0007\u0016\u0000\u0000\u18bc\u18bd\u0007\u000f\u0000\u0000\u18bd\u18be"+ + "\u0007\u0012\u0000\u0000\u18be\u18bf\u0007\n\u0000\u0000\u18bf\u18c0\u0007"+ + "\r\u0000\u0000\u18c0\u0506\u0001\u0000\u0000\u0000\u18c1\u18c5\u0003\u0509"+ + "\u0282\u0000\u18c2\u18c4\u0003\u050b\u0283\u0000\u18c3\u18c2\u0001\u0000"+ + "\u0000\u0000\u18c4\u18c7\u0001\u0000\u0000\u0000\u18c5\u18c3\u0001\u0000"+ + "\u0000\u0000\u18c5\u18c6\u0001\u0000\u0000\u0000\u18c6\u0508\u0001\u0000"+ + "\u0000\u0000\u18c7\u18c5\u0001\u0000\u0000\u0000\u18c8\u18cf\u0007\u001f"+ + "\u0000\u0000\u18c9\u18ca\u0007 \u0000\u0000\u18ca\u18cf\u0004\u0282\u0006"+ + "\u0000\u18cb\u18cc\u0007!\u0000\u0000\u18cc\u18cd\u0007\"\u0000\u0000"+ + "\u18cd\u18cf\u0004\u0282\u0007\u0000\u18ce\u18c8\u0001\u0000\u0000\u0000"+ + "\u18ce\u18c9\u0001\u0000\u0000\u0000\u18ce\u18cb\u0001\u0000\u0000\u0000"+ + "\u18cf\u050a\u0001\u0000\u0000\u0000\u18d0\u18d3\u0003\u050d\u0284\u0000"+ + "\u18d1\u18d3\u0005$\u0000\u0000\u18d2\u18d0\u0001\u0000\u0000\u0000\u18d2"+ + "\u18d1\u0001\u0000\u0000\u0000\u18d3\u050c\u0001\u0000\u0000\u0000\u18d4"+ + "\u18d7\u0003\u0509\u0282\u0000\u18d5\u18d7\u0007\u0000\u0000\u0000\u18d6"+ + "\u18d4\u0001\u0000\u0000\u0000\u18d6\u18d5\u0001\u0000\u0000\u0000\u18d7"+ + "\u050e\u0001\u0000\u0000\u0000\u18d8\u18d9\u0003\u0511\u0286\u0000\u18d9"+ + "\u18da\u0005\"\u0000\u0000\u18da\u0510\u0001\u0000\u0000\u0000\u18db\u18e1"+ + "\u0005\"\u0000\u0000\u18dc\u18dd\u0005\"\u0000\u0000\u18dd\u18e0\u0005"+ + "\"\u0000\u0000\u18de\u18e0\b#\u0000\u0000\u18df\u18dc\u0001\u0000\u0000"+ + "\u0000\u18df\u18de\u0001\u0000\u0000\u0000\u18e0\u18e3\u0001\u0000\u0000"+ + "\u0000\u18e1\u18df\u0001\u0000\u0000\u0000\u18e1\u18e2\u0001\u0000\u0000"+ + "\u0000\u18e2\u0512\u0001\u0000\u0000\u0000\u18e3\u18e1\u0001\u0000\u0000"+ + "\u0000\u18e4\u18e5\u0003\u0515\u0288\u0000\u18e5\u18e6\u0005\"\u0000\u0000"+ + "\u18e6\u0514\u0001\u0000\u0000\u0000\u18e7\u18ed\u0005\"\u0000\u0000\u18e8"+ + "\u18e9\u0005\"\u0000\u0000\u18e9\u18ec\u0005\"\u0000\u0000\u18ea\u18ec"+ + "\b$\u0000\u0000\u18eb\u18e8\u0001\u0000\u0000\u0000\u18eb\u18ea\u0001"+ + "\u0000\u0000\u0000\u18ec\u18ef\u0001\u0000\u0000\u0000\u18ed\u18eb\u0001"+ + "\u0000\u0000\u0000\u18ed\u18ee\u0001\u0000\u0000\u0000\u18ee\u0516\u0001"+ + "\u0000\u0000\u0000\u18ef\u18ed\u0001\u0000\u0000\u0000\u18f0\u18f1\u0007"+ + "\u0016\u0000\u0000\u18f1\u18f2\u0005&\u0000\u0000\u18f2\u18f3\u0003\u050f"+ + "\u0285\u0000\u18f3\u0518\u0001\u0000\u0000\u0000\u18f4\u18f5\u0007\u0016"+ + "\u0000\u0000\u18f5\u18f6\u0005&\u0000\u0000\u18f6\u18f7\u0003\u0511\u0286"+ + "\u0000\u18f7\u051a\u0001\u0000\u0000\u0000\u18f8\u18f9\u0007\u0016\u0000"+ + "\u0000\u18f9\u18fa\u0005&\u0000\u0000\u18fa\u18fb\u0003\u0513\u0287\u0000"+ + "\u18fb\u051c\u0001\u0000\u0000\u0000\u18fc\u18fd\u0007\u0016\u0000\u0000"+ + "\u18fd\u18fe\u0005&\u0000\u0000\u18fe\u18ff\u0003\u0515\u0288\u0000\u18ff"+ + "\u051e\u0001\u0000\u0000\u0000\u1900\u1901\u0003\u0521\u028e\u0000\u1901"+ + "\u1902\u0005\'\u0000\u0000\u1902\u0520\u0001\u0000\u0000\u0000\u1903\u1909"+ + "\u0005\'\u0000\u0000\u1904\u1905\u0005\'\u0000\u0000\u1905\u1908\u0005"+ + "\'\u0000\u0000\u1906\u1908\b%\u0000\u0000\u1907\u1904\u0001\u0000\u0000"+ + "\u0000\u1907\u1906\u0001\u0000\u0000\u0000\u1908\u190b\u0001\u0000\u0000"+ + "\u0000\u1909\u1907\u0001\u0000\u0000\u0000\u1909\u190a\u0001\u0000\u0000"+ + "\u0000\u190a\u0522\u0001\u0000\u0000\u0000\u190b\u1909\u0001\u0000\u0000"+ + "\u0000\u190c\u190d\u0007\n\u0000\u0000\u190d\u190e\u0005\'\u0000\u0000"+ + "\u190e\u190f\u0001\u0000\u0000\u0000\u190f\u1910\u0006\u028f\u0002\u0000"+ + "\u1910\u1911\u0006\u028f\u0003\u0000\u1911\u0524\u0001\u0000\u0000\u0000"+ + "\u1912\u1913\u0003\u0527\u0291\u0000\u1913\u1914\u0005\'\u0000\u0000\u1914"+ + "\u0526\u0001\u0000\u0000\u0000\u1915\u1916\u0007\u0016\u0000\u0000\u1916"+ + "\u1917\u0005&\u0000\u0000\u1917\u1918\u0003\u0521\u028e\u0000\u1918\u0528"+ + "\u0001\u0000\u0000\u0000\u1919\u191b\u0005$\u0000\u0000\u191a\u191c\u0003"+ + "\u052b\u0293\u0000\u191b\u191a\u0001\u0000\u0000\u0000\u191b\u191c\u0001"+ + "\u0000\u0000\u0000\u191c\u191d\u0001\u0000\u0000\u0000\u191d\u191e\u0005"+ + "$\u0000\u0000\u191e\u191f\u0006\u0292\u0004\u0000\u191f\u1920\u0001\u0000"+ + "\u0000\u0000\u1920\u1921\u0006\u0292\u0005\u0000\u1921\u052a\u0001\u0000"+ + "\u0000\u0000\u1922\u1926\u0003\u0509\u0282\u0000\u1923\u1925\u0003\u050d"+ + "\u0284\u0000\u1924\u1923\u0001\u0000\u0000\u0000\u1925\u1928\u0001\u0000"+ + "\u0000\u0000\u1926\u1924\u0001\u0000\u0000\u0000\u1926\u1927\u0001\u0000"+ + "\u0000\u0000\u1927\u052c\u0001\u0000\u0000\u0000\u1928\u1926\u0001\u0000"+ + "\u0000\u0000\u1929\u192a\u0003\u052f\u0295\u0000\u192a\u192b\u0005\'\u0000"+ + "\u0000\u192b\u052e\u0001\u0000\u0000\u0000\u192c\u192d\u0007\u0012\u0000"+ + "\u0000\u192d\u1931\u0005\'\u0000\u0000\u192e\u1930\u0007&\u0000\u0000"+ + "\u192f\u192e\u0001\u0000\u0000\u0000\u1930\u1933\u0001\u0000\u0000\u0000"+ + "\u1931\u192f\u0001\u0000\u0000\u0000\u1931\u1932\u0001\u0000\u0000\u0000"+ + "\u1932\u0530\u0001\u0000\u0000\u0000\u1933\u1931\u0001\u0000\u0000\u0000"+ + "\u1934\u1935\u0003\u0533\u0297\u0000\u1935\u1936\u0005\'\u0000\u0000\u1936"+ + "\u0532\u0001\u0000\u0000\u0000\u1937\u1938\u0007\u0012\u0000\u0000\u1938"+ + "\u1939\u0003\u0521\u028e\u0000\u1939\u0534\u0001\u0000\u0000\u0000\u193a"+ + "\u193b\u0003\u0537\u0299\u0000\u193b\u193c\u0005\'\u0000\u0000\u193c\u0536"+ + "\u0001\u0000\u0000\u0000\u193d\u193e\u0007\u001a\u0000\u0000\u193e\u1942"+ + "\u0005\'\u0000\u0000\u193f\u1941\u0007\'\u0000\u0000\u1940\u193f\u0001"+ + "\u0000\u0000\u0000\u1941\u1944\u0001\u0000\u0000\u0000\u1942\u1940\u0001"+ + "\u0000\u0000\u0000\u1942\u1943\u0001\u0000\u0000\u0000\u1943\u0538\u0001"+ + "\u0000\u0000\u0000\u1944\u1942\u0001\u0000\u0000\u0000\u1945\u1946\u0003"+ + "\u053b\u029b\u0000\u1946\u1947\u0005\'\u0000\u0000\u1947\u053a\u0001\u0000"+ + "\u0000\u0000\u1948\u1949\u0007\u001a\u0000\u0000\u1949\u194a\u0003\u0521"+ + "\u028e\u0000\u194a\u053c\u0001\u0000\u0000\u0000\u194b\u194c\u0003\u0543"+ + "\u029f\u0000\u194c\u053e\u0001\u0000\u0000\u0000\u194d\u194e\u0003\u0543"+ + "\u029f\u0000\u194e\u194f\u0005.\u0000\u0000\u194f\u1950\u0005.\u0000\u0000"+ + "\u1950\u1951\u0001\u0000\u0000\u0000\u1951\u1952\u0006\u029d\u0006\u0000"+ + "\u1952\u0540\u0001\u0000\u0000\u0000\u1953\u1954\u0003\u0543\u029f\u0000"+ + "\u1954\u1956\u0005.\u0000\u0000\u1955\u1957\u0003\u0543\u029f\u0000\u1956"+ + "\u1955\u0001\u0000\u0000\u0000\u1956\u1957\u0001\u0000\u0000\u0000\u1957"+ + "\u195d\u0001\u0000\u0000\u0000\u1958\u195a\u0007\n\u0000\u0000\u1959\u195b"+ + "\u0007\u0001\u0000\u0000\u195a\u1959\u0001\u0000\u0000\u0000\u195a\u195b"+ + "\u0001\u0000\u0000\u0000\u195b\u195c\u0001\u0000\u0000\u0000\u195c\u195e"+ + "\u0003\u0543\u029f\u0000\u195d\u1958\u0001\u0000\u0000\u0000\u195d\u195e"+ + "\u0001\u0000\u0000\u0000\u195e\u1970\u0001\u0000\u0000\u0000\u195f\u1960"+ + "\u0005.\u0000\u0000\u1960\u1966\u0003\u0543\u029f\u0000\u1961\u1963\u0007"+ + "\n\u0000\u0000\u1962\u1964\u0007\u0001\u0000\u0000\u1963\u1962\u0001\u0000"+ + "\u0000\u0000\u1963\u1964\u0001\u0000\u0000\u0000\u1964\u1965\u0001\u0000"+ + "\u0000\u0000\u1965\u1967\u0003\u0543\u029f\u0000\u1966\u1961\u0001\u0000"+ + "\u0000\u0000\u1966\u1967\u0001\u0000\u0000\u0000\u1967\u1970\u0001\u0000"+ + "\u0000\u0000\u1968\u1969\u0003\u0543\u029f\u0000\u1969\u196b\u0007\n\u0000"+ + "\u0000\u196a\u196c\u0007\u0001\u0000\u0000\u196b\u196a\u0001\u0000\u0000"+ + "\u0000\u196b\u196c\u0001\u0000\u0000\u0000\u196c\u196d\u0001\u0000\u0000"+ + "\u0000\u196d\u196e\u0003\u0543\u029f\u0000\u196e\u1970\u0001\u0000\u0000"+ + "\u0000\u196f\u1953\u0001\u0000\u0000\u0000\u196f\u195f\u0001\u0000\u0000"+ + "\u0000\u196f\u1968\u0001\u0000\u0000\u0000\u1970\u0542\u0001\u0000\u0000"+ + "\u0000\u1971\u1973\u0007\u0000\u0000\u0000\u1972\u1971\u0001\u0000\u0000"+ + "\u0000\u1973\u1974\u0001\u0000\u0000\u0000\u1974\u1972\u0001\u0000\u0000"+ + "\u0000\u1974\u1975\u0001\u0000\u0000\u0000\u1975\u0544\u0001\u0000\u0000"+ + "\u0000\u1976\u1977\u0005:\u0000\u0000\u1977\u197b\u0007(\u0000\u0000\u1978"+ + "\u197a\u0007)\u0000\u0000\u1979\u1978\u0001\u0000\u0000\u0000\u197a\u197d"+ + "\u0001\u0000\u0000\u0000\u197b\u1979\u0001\u0000\u0000\u0000\u197b\u197c"+ + "\u0001\u0000\u0000\u0000\u197c\u0546\u0001\u0000\u0000\u0000\u197d\u197b"+ + "\u0001\u0000\u0000\u0000\u197e\u197f\u0005:\u0000\u0000\u197f\u1980\u0005"+ + "\"\u0000\u0000\u1980\u1988\u0001\u0000\u0000\u0000\u1981\u1982\u0005\\"+ + "\u0000\u0000\u1982\u1987\t\u0000\u0000\u0000\u1983\u1984\u0005\"\u0000"+ + "\u0000\u1984\u1987\u0005\"\u0000\u0000\u1985\u1987\b*\u0000\u0000\u1986"+ + "\u1981\u0001\u0000\u0000\u0000\u1986\u1983\u0001\u0000\u0000\u0000\u1986"+ + "\u1985\u0001\u0000\u0000\u0000\u1987\u198a\u0001\u0000\u0000\u0000\u1988"+ + "\u1986\u0001\u0000\u0000\u0000\u1988\u1989\u0001\u0000\u0000\u0000\u1989"+ + "\u198b\u0001\u0000\u0000\u0000\u198a\u1988\u0001\u0000\u0000\u0000\u198b"+ + "\u198c\u0005\"\u0000\u0000\u198c\u0548\u0001\u0000\u0000\u0000\u198d\u198f"+ + "\u0007+\u0000\u0000\u198e\u198d\u0001\u0000\u0000\u0000\u198f\u1990\u0001"+ + "\u0000\u0000\u0000\u1990\u198e\u0001\u0000\u0000\u0000\u1990\u1991\u0001"+ + "\u0000\u0000\u0000\u1991\u1992\u0001\u0000\u0000\u0000\u1992\u1993\u0006"+ + "\u02a2\u0007\u0000\u1993\u054a\u0001\u0000\u0000\u0000\u1994\u1996\u0005"+ + "\r\u0000\u0000\u1995\u1997\u0005\n\u0000\u0000\u1996\u1995\u0001\u0000"+ + "\u0000\u0000\u1996\u1997\u0001\u0000\u0000\u0000\u1997\u199a\u0001\u0000"+ + "\u0000\u0000\u1998\u199a\u0005\n\u0000\u0000\u1999\u1994\u0001\u0000\u0000"+ + "\u0000\u1999\u1998\u0001\u0000\u0000\u0000\u199a\u199b\u0001\u0000\u0000"+ + "\u0000\u199b\u199c\u0006\u02a3\u0007\u0000\u199c\u054c\u0001\u0000\u0000"+ + "\u0000\u199d\u199e\u0005-\u0000\u0000\u199e\u199f\u0005-\u0000\u0000\u199f"+ + "\u19a3\u0001\u0000\u0000\u0000\u19a0\u19a2\b,\u0000\u0000\u19a1\u19a0"+ + "\u0001\u0000\u0000\u0000\u19a2\u19a5\u0001\u0000\u0000\u0000\u19a3\u19a1"+ + "\u0001\u0000\u0000\u0000\u19a3\u19a4\u0001\u0000\u0000\u0000\u19a4\u19a6"+ + "\u0001\u0000\u0000\u0000\u19a5\u19a3\u0001\u0000\u0000\u0000\u19a6\u19a7"+ + "\u0006\u02a4\u0007\u0000\u19a7\u054e\u0001\u0000\u0000\u0000\u19a8\u19a9"+ + "\u0005/\u0000\u0000\u19a9\u19aa\u0005*\u0000\u0000\u19aa\u19c1\u0001\u0000"+ + "\u0000\u0000\u19ab\u19ad\u0005/\u0000\u0000\u19ac\u19ab\u0001\u0000\u0000"+ + "\u0000\u19ad\u19b0\u0001\u0000\u0000\u0000\u19ae\u19ac\u0001\u0000\u0000"+ + "\u0000\u19ae\u19af\u0001\u0000\u0000\u0000\u19af\u19b1\u0001\u0000\u0000"+ + "\u0000\u19b0\u19ae\u0001\u0000\u0000\u0000\u19b1\u19c0\u0003\u054f\u02a5"+ + "\u0000\u19b2\u19c0\b-\u0000\u0000\u19b3\u19b5\u0005/\u0000\u0000\u19b4"+ + "\u19b3\u0001\u0000\u0000\u0000\u19b5\u19b6\u0001\u0000\u0000\u0000\u19b6"+ + "\u19b4\u0001\u0000\u0000\u0000\u19b6\u19b7\u0001\u0000\u0000\u0000\u19b7"+ + "\u19b8\u0001\u0000\u0000\u0000\u19b8\u19c0\b-\u0000\u0000\u19b9\u19bb"+ + "\u0005*\u0000\u0000\u19ba\u19b9\u0001\u0000\u0000\u0000\u19bb\u19bc\u0001"+ + "\u0000\u0000\u0000\u19bc\u19ba\u0001\u0000\u0000\u0000\u19bc\u19bd\u0001"+ + "\u0000\u0000\u0000\u19bd\u19be\u0001\u0000\u0000\u0000\u19be\u19c0\b-"+ + "\u0000\u0000\u19bf\u19ae\u0001\u0000\u0000\u0000\u19bf\u19b2\u0001\u0000"+ + "\u0000\u0000\u19bf\u19b4\u0001\u0000\u0000\u0000\u19bf\u19ba\u0001\u0000"+ + "\u0000\u0000\u19c0\u19c3\u0001\u0000\u0000\u0000\u19c1\u19bf\u0001\u0000"+ + "\u0000\u0000\u19c1\u19c2\u0001\u0000\u0000\u0000\u19c2\u19c7\u0001\u0000"+ + "\u0000\u0000\u19c3\u19c1\u0001\u0000\u0000\u0000\u19c4\u19c6\u0005*\u0000"+ + "\u0000\u19c5\u19c4\u0001\u0000\u0000\u0000\u19c6\u19c9\u0001\u0000\u0000"+ + "\u0000\u19c7\u19c5\u0001\u0000\u0000\u0000\u19c7\u19c8\u0001\u0000\u0000"+ + "\u0000\u19c8\u19ca\u0001\u0000\u0000\u0000\u19c9\u19c7\u0001\u0000\u0000"+ + "\u0000\u19ca\u19cb\u0005*\u0000\u0000\u19cb\u19cc\u0005/\u0000\u0000\u19cc"+ + "\u19cd\u0001\u0000\u0000\u0000\u19cd\u19ce\u0006\u02a5\u0007\u0000\u19ce"+ + "\u0550\u0001\u0000\u0000\u0000\u19cf\u19d0\u0005/\u0000\u0000\u19d0\u19d1"+ + "\u0005*\u0000\u0000\u19d1\u19ea\u0001\u0000\u0000\u0000\u19d2\u19d4\u0005"+ + "/\u0000\u0000\u19d3\u19d2\u0001\u0000\u0000\u0000\u19d4\u19d7\u0001\u0000"+ + "\u0000\u0000\u19d5\u19d3\u0001\u0000\u0000\u0000\u19d5\u19d6\u0001\u0000"+ + "\u0000\u0000\u19d6\u19d8\u0001\u0000\u0000\u0000\u19d7\u19d5\u0001\u0000"+ + "\u0000\u0000\u19d8\u19e9\u0003\u054f\u02a5\u0000\u19d9\u19e9\b-\u0000"+ + "\u0000\u19da\u19dc\u0005/\u0000\u0000\u19db\u19da\u0001\u0000\u0000\u0000"+ + "\u19dc\u19dd\u0001\u0000\u0000\u0000\u19dd\u19db\u0001\u0000\u0000\u0000"+ + "\u19dd\u19de\u0001\u0000\u0000\u0000\u19de\u19df\u0001\u0000\u0000\u0000"+ + "\u19df\u19e7\b-\u0000\u0000\u19e0\u19e2\u0005*\u0000\u0000\u19e1\u19e0"+ + "\u0001\u0000\u0000\u0000\u19e2\u19e3\u0001\u0000\u0000\u0000\u19e3\u19e1"+ + "\u0001\u0000\u0000\u0000\u19e3\u19e4\u0001\u0000\u0000\u0000\u19e4\u19e5"+ + "\u0001\u0000\u0000\u0000\u19e5\u19e7\b-\u0000\u0000\u19e6\u19db\u0001"+ + "\u0000\u0000\u0000\u19e6\u19e1\u0001\u0000\u0000\u0000\u19e7\u19e9\u0001"+ + "\u0000\u0000\u0000\u19e8\u19d5\u0001\u0000\u0000\u0000\u19e8\u19d9\u0001"+ + "\u0000\u0000\u0000\u19e8\u19e6\u0001\u0000\u0000\u0000\u19e9\u19ec\u0001"+ + "\u0000\u0000\u0000\u19ea\u19e8\u0001\u0000\u0000\u0000\u19ea\u19eb\u0001"+ + "\u0000\u0000\u0000\u19eb\u19fe\u0001\u0000\u0000\u0000\u19ec\u19ea\u0001"+ + "\u0000\u0000\u0000\u19ed\u19ef\u0005/\u0000\u0000\u19ee\u19ed\u0001\u0000"+ + "\u0000\u0000\u19ef\u19f0\u0001\u0000\u0000\u0000\u19f0\u19ee\u0001\u0000"+ + "\u0000\u0000\u19f0\u19f1\u0001\u0000\u0000\u0000\u19f1\u19ff\u0001\u0000"+ + "\u0000\u0000\u19f2\u19f4\u0005*\u0000\u0000\u19f3\u19f2\u0001\u0000\u0000"+ + "\u0000\u19f4\u19f5\u0001\u0000\u0000\u0000\u19f5\u19f3\u0001\u0000\u0000"+ + "\u0000\u19f5\u19f6\u0001\u0000\u0000\u0000\u19f6\u19ff\u0001\u0000\u0000"+ + "\u0000\u19f7\u19f9\u0005/\u0000\u0000\u19f8\u19f7\u0001\u0000\u0000\u0000"+ + "\u19f9\u19fc\u0001\u0000\u0000\u0000\u19fa\u19f8\u0001\u0000\u0000\u0000"+ + "\u19fa\u19fb\u0001\u0000\u0000\u0000\u19fb\u19fd\u0001\u0000\u0000\u0000"+ + "\u19fc\u19fa\u0001\u0000\u0000\u0000\u19fd\u19ff\u0003\u0551\u02a6\u0000"+ + "\u19fe\u19ee\u0001\u0000\u0000\u0000\u19fe\u19f3\u0001\u0000\u0000\u0000"+ + "\u19fe\u19fa\u0001\u0000\u0000\u0000\u19fe\u19ff\u0001\u0000\u0000\u0000"+ + "\u19ff\u1a00\u0001\u0000\u0000\u0000\u1a00\u1a01\u0006\u02a6\b\u0000\u1a01"+ + "\u0552\u0001\u0000\u0000\u0000\u1a02\u1a0e\u0005\\\u0000\u0000\u1a03\u1a0d"+ + "\b.\u0000\u0000\u1a04\u1a08\u0005\"\u0000\u0000\u1a05\u1a07\b/\u0000\u0000"+ + "\u1a06\u1a05\u0001\u0000\u0000\u0000\u1a07\u1a0a\u0001\u0000\u0000\u0000"+ + "\u1a08\u1a06\u0001\u0000\u0000\u0000\u1a08\u1a09\u0001\u0000\u0000\u0000"+ + "\u1a09\u1a0b\u0001\u0000\u0000\u0000\u1a0a\u1a08\u0001\u0000\u0000\u0000"+ + "\u1a0b\u1a0d\u0005\"\u0000\u0000\u1a0c\u1a03\u0001\u0000\u0000\u0000\u1a0c"+ + "\u1a04\u0001\u0000\u0000\u0000\u1a0d\u1a10\u0001\u0000\u0000\u0000\u1a0e"+ + "\u1a0c\u0001\u0000\u0000\u0000\u1a0e\u1a0f\u0001\u0000\u0000\u0000\u1a0f"+ + "\u1a18\u0001\u0000\u0000\u0000\u1a10\u1a0e\u0001\u0000\u0000\u0000\u1a11"+ + "\u1a15\u0005\"\u0000\u0000\u1a12\u1a14\b/\u0000\u0000\u1a13\u1a12\u0001"+ + "\u0000\u0000\u0000\u1a14\u1a17\u0001\u0000\u0000\u0000\u1a15\u1a13\u0001"+ + "\u0000\u0000\u0000\u1a15\u1a16\u0001\u0000\u0000\u0000\u1a16\u1a19\u0001"+ + "\u0000\u0000\u0000\u1a17\u1a15\u0001\u0000\u0000\u0000\u1a18\u1a11\u0001"+ + "\u0000\u0000\u0000\u1a18\u1a19\u0001\u0000\u0000\u0000\u1a19\u0554\u0001"+ + "\u0000\u0000\u0000\u1a1a\u1a1b\u0005\\\u0000\u0000\u1a1b\u1a1c\u0005\\"+ + "\u0000\u0000\u1a1c\u0556\u0001\u0000\u0000\u0000\u1a1d\u1a1e\t\u0000\u0000"+ + "\u0000\u1a1e\u0558\u0001\u0000\u0000\u0000\u1a1f\u1a20\u0003\u055d\u02ac"+ + "\u0000\u1a20\u1a21\u0005\'\u0000\u0000\u1a21\u1a22\u0001\u0000\u0000\u0000"+ + "\u1a22\u1a23\u0006\u02aa\t\u0000\u1a23\u055a\u0001\u0000\u0000\u0000\u1a24"+ + "\u1a26\u0003\u055d\u02ac\u0000\u1a25\u1a27\u0005\\\u0000\u0000\u1a26\u1a25"+ + "\u0001\u0000\u0000\u0000\u1a26\u1a27\u0001\u0000\u0000\u0000\u1a27\u1a28"+ + "\u0001\u0000\u0000\u0000\u1a28\u1a29\u0005\u0000\u0000\u0001\u1a29\u055c"+ + "\u0001\u0000\u0000\u0000\u1a2a\u1a2b\u0005\'\u0000\u0000\u1a2b\u1a42\u0005"+ + "\'\u0000\u0000\u1a2c\u1a3e\u0005\\\u0000\u0000\u1a2d\u1a2e\u0005x\u0000"+ + "\u0000\u1a2e\u1a3f\u0007\'\u0000\u0000\u1a2f\u1a30\u0005u\u0000\u0000"+ + "\u1a30\u1a31\u0007\'\u0000\u0000\u1a31\u1a32\u0007\'\u0000\u0000\u1a32"+ + "\u1a33\u0007\'\u0000\u0000\u1a33\u1a3f\u0007\'\u0000\u0000\u1a34\u1a35"+ + "\u0005U\u0000\u0000\u1a35\u1a36\u0007\'\u0000\u0000\u1a36\u1a37\u0007"+ + "\'\u0000\u0000\u1a37\u1a38\u0007\'\u0000\u0000\u1a38\u1a39\u0007\'\u0000"+ + "\u0000\u1a39\u1a3a\u0007\'\u0000\u0000\u1a3a\u1a3b\u0007\'\u0000\u0000"+ + "\u1a3b\u1a3c\u0007\'\u0000\u0000\u1a3c\u1a3f\u0007\'\u0000\u0000\u1a3d"+ + "\u1a3f\b0\u0000\u0000\u1a3e\u1a2d\u0001\u0000\u0000\u0000\u1a3e\u1a2f"+ + "\u0001\u0000\u0000\u0000\u1a3e\u1a34\u0001\u0000\u0000\u0000\u1a3e\u1a3d"+ + "\u0001\u0000\u0000\u0000\u1a3f\u1a42\u0001\u0000\u0000\u0000\u1a40\u1a42"+ + "\b1\u0000\u0000\u1a41\u1a2a\u0001\u0000\u0000\u0000\u1a41\u1a2c\u0001"+ + "\u0000\u0000\u0000\u1a41\u1a40\u0001\u0000\u0000\u0000\u1a42\u1a45\u0001"+ + "\u0000\u0000\u0000\u1a43\u1a41\u0001\u0000\u0000\u0000\u1a43\u1a44\u0001"+ + "\u0000\u0000\u0000\u1a44\u055e\u0001\u0000\u0000\u0000\u1a45\u1a43\u0001"+ + "\u0000\u0000\u0000\u1a46\u1a47\u0003\u0563\u02af\u0000\u1a47\u1a48\u0005"+ + "\'\u0000\u0000\u1a48\u1a49\u0001\u0000\u0000\u0000\u1a49\u1a4a\u0006\u02ad"+ + "\t\u0000\u1a4a\u0560\u0001\u0000\u0000\u0000\u1a4b\u1a4d\u0003\u0563\u02af"+ + "\u0000\u1a4c\u1a4e\u0005\\\u0000\u0000\u1a4d\u1a4c\u0001\u0000\u0000\u0000"+ + "\u1a4d\u1a4e\u0001\u0000\u0000\u0000\u1a4e\u1a4f\u0001\u0000\u0000\u0000"+ + "\u1a4f\u1a50\u0005\u0000\u0000\u0001\u1a50\u0562\u0001\u0000\u0000\u0000"+ + "\u1a51\u1a52\u0005\'\u0000\u0000\u1a52\u1a57\u0005\'\u0000\u0000\u1a53"+ + "\u1a54\u0005\\\u0000\u0000\u1a54\u1a57\t\u0000\u0000\u0000\u1a55\u1a57"+ + "\b1\u0000\u0000\u1a56\u1a51\u0001\u0000\u0000\u0000\u1a56\u1a53\u0001"+ + "\u0000\u0000\u0000\u1a56\u1a55\u0001\u0000\u0000\u0000\u1a57\u1a5a\u0001"+ + "\u0000\u0000\u0000\u1a58\u1a56\u0001\u0000\u0000\u0000\u1a58\u1a59\u0001"+ + "\u0000\u0000\u0000\u1a59\u0564\u0001\u0000\u0000\u0000\u1a5a\u1a58\u0001"+ + "\u0000\u0000\u0000\u1a5b\u1a5c\u0003\u0549\u02a2\u0000\u1a5c\u1a5d\u0001"+ + "\u0000\u0000\u0000\u1a5d\u1a5e\u0006\u02b0\n\u0000\u1a5e\u1a5f\u0006\u02b0"+ + "\u0007\u0000\u1a5f\u0566\u0001\u0000\u0000\u0000\u1a60\u1a61\u0003\u054b"+ + "\u02a3\u0000\u1a61\u1a62\u0001\u0000\u0000\u0000\u1a62\u1a63\u0006\u02b1"+ + "\u000b\u0000\u1a63\u1a64\u0006\u02b1\u0007\u0000\u1a64\u1a65\u0006\u02b1"+ + "\f\u0000\u1a65\u0568\u0001\u0000\u0000\u0000\u1a66\u1a67\u0006\u02b2\r"+ + "\u0000\u1a67\u1a68\u0001\u0000\u0000\u0000\u1a68\u1a69\u0006\u02b2\u000e"+ + "\u0000\u1a69\u1a6a\u0006\u02b2\u000f\u0000\u1a6a\u056a\u0001\u0000\u0000"+ + "\u0000\u1a6b\u1a6c\u0003\u0549\u02a2\u0000\u1a6c\u1a6d\u0001\u0000\u0000"+ + "\u0000\u1a6d\u1a6e\u0006\u02b3\n\u0000\u1a6e\u1a6f\u0006\u02b3\u0007\u0000"+ + "\u1a6f\u056c\u0001\u0000\u0000\u0000\u1a70\u1a71\u0003\u054b\u02a3\u0000"+ + "\u1a71\u1a72\u0001\u0000\u0000\u0000\u1a72\u1a73\u0006\u02b4\u000b\u0000"+ + "\u1a73\u1a74\u0006\u02b4\u0007\u0000\u1a74\u056e\u0001\u0000\u0000\u0000"+ + "\u1a75\u1a76\u0005\'\u0000\u0000\u1a76\u1a77\u0001\u0000\u0000\u0000\u1a77"+ + "\u1a78\u0006\u02b5\u0002\u0000\u1a78\u1a79\u0006\u02b5\u0010\u0000\u1a79"+ + "\u0570\u0001\u0000\u0000\u0000\u1a7a\u1a7b\u0006\u02b6\u0011\u0000\u1a7b"+ + "\u1a7c\u0001\u0000\u0000\u0000\u1a7c\u1a7d\u0006\u02b6\u000e\u0000\u1a7d"+ + "\u1a7e\u0006\u02b6\u000f\u0000\u1a7e\u0572\u0001\u0000\u0000\u0000\u1a7f"+ + "\u1a81\b2\u0000\u0000\u1a80\u1a7f\u0001\u0000\u0000\u0000\u1a81\u1a82"+ + "\u0001\u0000\u0000\u0000\u1a82\u1a80\u0001\u0000\u0000\u0000\u1a82\u1a83"+ + "\u0001\u0000\u0000\u0000\u1a83\u1a8c\u0001\u0000\u0000\u0000\u1a84\u1a88"+ + "\u0005$\u0000\u0000\u1a85\u1a87\b2\u0000\u0000\u1a86\u1a85\u0001\u0000"+ + "\u0000\u0000\u1a87\u1a8a\u0001\u0000\u0000\u0000\u1a88\u1a86\u0001\u0000"+ + "\u0000\u0000\u1a88\u1a89\u0001\u0000\u0000\u0000\u1a89\u1a8c\u0001\u0000"+ + "\u0000\u0000\u1a8a\u1a88\u0001\u0000\u0000\u0000\u1a8b\u1a80\u0001\u0000"+ + "\u0000\u0000\u1a8b\u1a84\u0001\u0000\u0000\u0000\u1a8c\u0574\u0001\u0000"+ + "\u0000\u0000\u1a8d\u1a8f\u0005$\u0000\u0000\u1a8e\u1a90\u0003\u052b\u0293"+ + "\u0000\u1a8f\u1a8e\u0001\u0000\u0000\u0000\u1a8f\u1a90\u0001\u0000\u0000"+ + "\u0000\u1a90\u1a91\u0001\u0000\u0000\u0000\u1a91\u1a92\u0005$\u0000\u0000"+ + "\u1a92\u1a93\u0001\u0000\u0000\u0000\u1a93\u1a94\u0004\u02b8\b\u0000\u1a94"+ + "\u1a95\u0006\u02b8\u0012\u0000\u1a95\u1a96\u0001\u0000\u0000\u0000\u1a96"+ + "\u1a97\u0006\u02b8\u000f\u0000\u1a97\u0576\u0001\u0000\u0000\u0000N\u0000"+ + "\u0001\u0002\u0003\u0004\u05ba\u05c0\u05c2\u05c7\u05cb\u05cd\u05d0\u05d9"+ + "\u05db\u05e0\u05e5\u05e7\u18c5\u18ce\u18d2\u18d6\u18df\u18e1\u18eb\u18ed"+ + "\u1907\u1909\u191b\u1926\u1931\u1942\u1956\u195a\u195d\u1963\u1966\u196b"+ + "\u196f\u1974\u197b\u1986\u1988\u1990\u1996\u1999\u19a3\u19ae\u19b6\u19bc"+ + "\u19bf\u19c1\u19c7\u19d5\u19dd\u19e3\u19e6\u19e8\u19ea\u19f0\u19f5\u19fa"+ + "\u19fe\u1a08\u1a0c\u1a0e\u1a15\u1a18\u1a26\u1a3e\u1a41\u1a43\u1a4d\u1a56"+ + "\u1a58\u1a82\u1a88\u1a8b\u1a8f\u0013\u0001\u001c\u0000\u0007\u001d\u0000"+ + "\u0003\u0000\u0000\u0005\u0001\u0000\u0001\u0292\u0001\u0005\u0004\u0000"+ + "\u0001\u029d\u0002\u0000\u0001\u0000\u0001\u02a6\u0003\u0002\u0002\u0000"+ + "\u0007\u0299\u0000\u0007\u029a\u0000\u0002\u0003\u0000\u0001\u02b2\u0004"+ + "\u0006\u0000\u0000\u0004\u0000\u0000\u0002\u0001\u0000\u0001\u02b6\u0005"+ + "\u0001\u02b8\u0006"; public static final String _serializedATN = Utils.join( new String[] { _serializedATNSegment0, diff --git a/incubator/binding-pgsql/gen/PostgreSqlLexer.tokens b/incubator/binding-pgsql/gen/PostgreSqlLexer.tokens index 1d45608bf4..57204083e0 100644 --- a/incubator/binding-pgsql/gen/PostgreSqlLexer.tokens +++ b/incubator/binding-pgsql/gen/PostgreSqlLexer.tokens @@ -92,591 +92,593 @@ SYMMETRIC=91 TABLE=92 THEN=93 TO=94 -TRAILING=95 -TRUE_P=96 -UNION=97 -UNIQUE=98 -USER=99 -USING=100 -VARIADIC=101 -WHEN=102 -WHERE=103 -WINDOW=104 -WITH=105 -AUTHORIZATION=106 -BINARY=107 -COLLATION=108 -CONCURRENTLY=109 -CROSS=110 -CURRENT_SCHEMA=111 -FREEZE=112 -FULL=113 -ILIKE=114 -INNER_P=115 -IS=116 -ISNULL=117 -JOIN=118 -LEFT=119 -LIKE=120 -NATURAL=121 -NOTNULL=122 -OUTER_P=123 -OVER=124 -OVERLAPS=125 -RIGHT=126 -SIMILAR=127 -VERBOSE=128 -ABORT_P=129 -ABSOLUTE_P=130 -ACCESS=131 -ACTION=132 -ADD_P=133 -ADMIN=134 -AFTER=135 -AGGREGATE=136 -ALSO=137 -ALTER=138 -ALWAYS=139 -ASSERTION=140 -ASSIGNMENT=141 -AT=142 -ATTRIBUTE=143 -BACKWARD=144 -BEFORE=145 -BEGIN_P=146 -BY=147 -CACHE=148 -CALLED=149 -CASCADE=150 -CASCADED=151 -CATALOG=152 -CHAIN=153 -CHARACTERISTICS=154 -CHECKPOINT=155 -CLASS=156 -CLOSE=157 -CLUSTER=158 -COMMENT=159 -COMMENTS=160 -COMMIT=161 -COMMITTED=162 -CONFIGURATION=163 -CONNECTION=164 -CONSTRAINTS=165 -CONTENT_P=166 -CONTINUE_P=167 -CONVERSION_P=168 -COPY=169 -COST=170 -CSV=171 -CURSOR=172 -CYCLE=173 -DATA_P=174 -DATABASE=175 -DAY_P=176 -DEALLOCATE=177 -DECLARE=178 -DEFAULTS=179 -DEFERRED=180 -DEFINER=181 -DELETE_P=182 -DELIMITER=183 -DELIMITERS=184 -DICTIONARY=185 -DISABLE_P=186 -DISCARD=187 -DOCUMENT_P=188 -DOMAIN_P=189 -DOUBLE_P=190 -DROP=191 -EACH=192 -ENABLE_P=193 -ENCODING=194 -ENCRYPTED=195 -ENUM_P=196 -ESCAPE=197 -EVENT=198 -EXCLUDE=199 -EXCLUDING=200 -EXCLUSIVE=201 -EXECUTE=202 -EXPLAIN=203 -EXTENSION=204 -EXTERNAL=205 -FAMILY=206 -FIRST_P=207 -FOLLOWING=208 -FORCE=209 -FORWARD=210 -FUNCTION=211 -FUNCTIONS=212 -GLOBAL=213 -GRANTED=214 -HANDLER=215 -HEADER_P=216 -HOLD=217 -HOUR_P=218 -IDENTITY_P=219 -IF_P=220 -IMMEDIATE=221 -IMMUTABLE=222 -IMPLICIT_P=223 -INCLUDING=224 -INCREMENT=225 -INDEX=226 -INDEXES=227 -INHERIT=228 -INHERITS=229 -INLINE_P=230 -INSENSITIVE=231 -INSERT=232 -INSTEAD=233 -INVOKER=234 -ISOLATION=235 -KEY=236 -LABEL=237 -LANGUAGE=238 -LARGE_P=239 -LAST_P=240 -LEAKPROOF=241 -LEVEL=242 -LISTEN=243 -LOAD=244 -LOCAL=245 -LOCATION=246 -LOCK_P=247 -MAPPING=248 -MATCH=249 -MATCHED=250 -MATERIALIZED=251 -MAXVALUE=252 -MERGE=253 -MINUTE_P=254 -MINVALUE=255 -MODE=256 -MONTH_P=257 -MOVE=258 -NAME_P=259 -NAMES=260 -NEXT=261 -NO=262 -NOTHING=263 -NOTIFY=264 -NOWAIT=265 -NULLS_P=266 -OBJECT_P=267 -OF=268 -OFF=269 -OIDS=270 -OPERATOR=271 -OPTION=272 -OPTIONS=273 -OWNED=274 -OWNER=275 -PARSER=276 -PARTIAL=277 -PARTITION=278 -PASSING=279 -PASSWORD=280 -PLANS=281 -PRECEDING=282 -PREPARE=283 -PREPARED=284 -PRESERVE=285 -PRIOR=286 -PRIVILEGES=287 -PROCEDURAL=288 -PROCEDURE=289 -PROGRAM=290 -QUOTE=291 -RANGE=292 -READ=293 -REASSIGN=294 -RECHECK=295 -RECURSIVE=296 -REF=297 -REFRESH=298 -REINDEX=299 -RELATIVE_P=300 -RELEASE=301 -RENAME=302 -REPEATABLE=303 -REPLACE=304 -REPLICA=305 -RESET=306 -RESTART=307 -RESTRICT=308 -RETURNS=309 -REVOKE=310 -ROLE=311 -ROLLBACK=312 -ROWS=313 -RULE=314 -SAVEPOINT=315 -SCHEMA=316 -SCROLL=317 -SEARCH=318 -SECOND_P=319 -SECURITY=320 -SEQUENCE=321 -SEQUENCES=322 -SERIALIZABLE=323 -SERVER=324 -SESSION=325 -SET=326 -SHARE=327 -SHOW=328 -SIMPLE=329 -SNAPSHOT=330 -STABLE=331 -STANDALONE_P=332 -START=333 -STATEMENT=334 -STATISTICS=335 -STDIN=336 -STDOUT=337 -STORAGE=338 -STRICT_P=339 -STRIP_P=340 -SYSID=341 -SYSTEM_P=342 -TABLES=343 -TABLESPACE=344 -TEMP=345 -TEMPLATE=346 -TEMPORARY=347 -TEXT_P=348 -TRANSACTION=349 -TRIGGER=350 -TRUNCATE=351 -TRUSTED=352 -TYPE_P=353 -TYPES_P=354 -UNBOUNDED=355 -UNCOMMITTED=356 -UNENCRYPTED=357 -UNKNOWN=358 -UNLISTEN=359 -UNLOGGED=360 -UNTIL=361 -UPDATE=362 -VACUUM=363 -VALID=364 -VALIDATE=365 -VALIDATOR=366 -VARYING=367 -VERSION_P=368 -VIEW=369 -VOLATILE=370 -WHITESPACE_P=371 -WITHOUT=372 -WORK=373 -WRAPPER=374 -WRITE=375 -XML_P=376 -YEAR_P=377 -YES_P=378 -ZONE=379 -BETWEEN=380 -BIGINT=381 -BIT=382 -BOOLEAN_P=383 -CHAR_P=384 -CHARACTER=385 -COALESCE=386 -DEC=387 -DECIMAL_P=388 -EXISTS=389 -EXTRACT=390 -FLOAT_P=391 -GREATEST=392 -INOUT=393 -INT_P=394 -INTEGER=395 -INTERVAL=396 -LEAST=397 -NATIONAL=398 -NCHAR=399 -NONE=400 -NULLIF=401 -NUMERIC=402 -OVERLAY=403 -POSITION=404 -PRECISION=405 -REAL=406 -ROW=407 -SETOF=408 -SMALLINT=409 -SUBSTRING=410 -TIME=411 -TIMESTAMP=412 -TREAT=413 -TRIM=414 -VALUES=415 -VARCHAR=416 -XMLATTRIBUTES=417 -XMLCOMMENT=418 -XMLAGG=419 -XML_IS_WELL_FORMED=420 -XML_IS_WELL_FORMED_DOCUMENT=421 -XML_IS_WELL_FORMED_CONTENT=422 -XPATH=423 -XPATH_EXISTS=424 -XMLCONCAT=425 -XMLELEMENT=426 -XMLEXISTS=427 -XMLFOREST=428 -XMLPARSE=429 -XMLPI=430 -XMLROOT=431 -XMLSERIALIZE=432 -CALL=433 -CURRENT_P=434 -ATTACH=435 -DETACH=436 -EXPRESSION=437 -GENERATED=438 -LOGGED=439 -STORED=440 -INCLUDE=441 -ROUTINE=442 -TRANSFORM=443 -IMPORT_P=444 -POLICY=445 -METHOD=446 -REFERENCING=447 -NEW=448 -OLD=449 -VALUE_P=450 -SUBSCRIPTION=451 -PUBLICATION=452 -OUT_P=453 -END_P=454 -ROUTINES=455 -SCHEMAS=456 -PROCEDURES=457 -INPUT_P=458 -SUPPORT=459 -PARALLEL=460 -SQL_P=461 -DEPENDS=462 -OVERRIDING=463 -CONFLICT=464 -SKIP_P=465 -LOCKED=466 -TIES=467 -ROLLUP=468 -CUBE=469 -GROUPING=470 -SETS=471 -TABLESAMPLE=472 -ORDINALITY=473 -XMLTABLE=474 -COLUMNS=475 -XMLNAMESPACES=476 -ROWTYPE=477 -NORMALIZED=478 -WITHIN=479 -FILTER=480 -GROUPS=481 -OTHERS=482 -NFC=483 -NFD=484 -NFKC=485 -NFKD=486 -UESCAPE=487 -VIEWS=488 -NORMALIZE=489 -DUMP=490 -PRINT_STRICT_PARAMS=491 -VARIABLE_CONFLICT=492 -ERROR=493 -USE_VARIABLE=494 -USE_COLUMN=495 -ALIAS=496 -CONSTANT=497 -PERFORM=498 -GET=499 -DIAGNOSTICS=500 -STACKED=501 -ELSIF=502 -WHILE=503 -REVERSE=504 -FOREACH=505 -SLICE=506 -EXIT=507 -RETURN=508 -QUERY=509 -RAISE=510 -SQLSTATE=511 -DEBUG=512 -LOG=513 -INFO=514 -NOTICE=515 -WARNING=516 -EXCEPTION=517 -ASSERT=518 -LOOP=519 -OPEN=520 -ABS=521 -CBRT=522 -CEIL=523 -CEILING=524 -DEGREES=525 -DIV=526 -EXP=527 -FACTORIAL=528 -FLOOR=529 -GCD=530 -LCM=531 -LN=532 -LOG10=533 -MIN_SCALE=534 -MOD=535 -PI=536 -POWER=537 -RADIANS=538 -ROUND=539 -SCALE=540 -SIGN=541 -SQRT=542 -TRIM_SCALE=543 -TRUNC=544 -WIDTH_BUCKET=545 -RANDOM=546 -SETSEED=547 -ACOS=548 -ACOSD=549 -ASIN=550 -ASIND=551 -ATAN=552 -ATAND=553 -ATAN2=554 -ATAN2D=555 -COS=556 -COSD=557 -COT=558 -COTD=559 -SIN=560 -SIND=561 -TAN=562 -TAND=563 -SINH=564 -COSH=565 -TANH=566 -ASINH=567 -ACOSH=568 -ATANH=569 -BIT_LENGTH=570 -CHAR_LENGTH=571 -CHARACTER_LENGTH=572 -LOWER=573 -OCTET_LENGTH=574 -UPPER=575 -ASCII=576 -BTRIM=577 -CHR=578 -CONCAT=579 -CONCAT_WS=580 -FORMAT=581 -INITCAP=582 -LENGTH=583 -LPAD=584 -LTRIM=585 -MD5=586 -PARSE_IDENT=587 -PG_CLIENT_ENCODING=588 -QUOTE_IDENT=589 -QUOTE_LITERAL=590 -QUOTE_NULLABLE=591 -REGEXP_COUNT=592 -REGEXP_INSTR=593 -REGEXP_LIKE=594 -REGEXP_MATCH=595 -REGEXP_MATCHES=596 -REGEXP_REPLACE=597 -REGEXP_SPLIT_TO_ARRAY=598 -REGEXP_SPLIT_TO_TABLE=599 -REGEXP_SUBSTR=600 -REPEAT=601 -RPAD=602 -RTRIM=603 -SPLIT_PART=604 -STARTS_WITH=605 -STRING_TO_ARRAY=606 -STRING_TO_TABLE=607 -STRPOS=608 -SUBSTR=609 -TO_ASCII=610 -TO_HEX=611 -TRANSLATE=612 -UNISTR=613 -AGE=614 -CLOCK_TIMESTAMP=615 -DATE_BIN=616 -DATE_PART=617 -DATE_TRUNC=618 -ISFINITE=619 -JUSTIFY_DAYS=620 -JUSTIFY_HOURS=621 -JUSTIFY_INTERVAL=622 -MAKE_DATE=623 -MAKE_INTERVAL=624 -MAKE_TIME=625 -MAKE_TIMESTAMP=626 -MAKE_TIMESTAMPTZ=627 -NOW=628 -STATEMENT_TIMESTAMP=629 -TIMEOFDAY=630 -TRANSACTION_TIMESTAMP=631 -TO_TIMESTAMP=632 -TO_CHAR=633 -TO_DATE=634 -TO_NUMBER=635 -Identifier=636 -QuotedIdentifier=637 -UnterminatedQuotedIdentifier=638 -InvalidQuotedIdentifier=639 -InvalidUnterminatedQuotedIdentifier=640 -UnicodeQuotedIdentifier=641 -UnterminatedUnicodeQuotedIdentifier=642 -InvalidUnicodeQuotedIdentifier=643 -InvalidUnterminatedUnicodeQuotedIdentifier=644 -StringConstant=645 -UnterminatedStringConstant=646 -UnicodeEscapeStringConstant=647 -UnterminatedUnicodeEscapeStringConstant=648 -BeginDollarStringConstant=649 -BinaryStringConstant=650 -UnterminatedBinaryStringConstant=651 -InvalidBinaryStringConstant=652 -InvalidUnterminatedBinaryStringConstant=653 -HexadecimalStringConstant=654 -UnterminatedHexadecimalStringConstant=655 -InvalidHexadecimalStringConstant=656 -InvalidUnterminatedHexadecimalStringConstant=657 -Integral=658 -NumericFail=659 -Numeric=660 -PLSQLVARIABLENAME=661 -PLSQLIDENTIFIER=662 -Whitespace=663 -Newline=664 -LineComment=665 -BlockComment=666 -UnterminatedBlockComment=667 -MetaCommand=668 -EndMetaCommand=669 -ErrorCharacter=670 -EscapeStringConstant=671 -UnterminatedEscapeStringConstant=672 -InvalidEscapeStringConstant=673 -InvalidUnterminatedEscapeStringConstant=674 -AfterEscapeStringConstantMode_NotContinued=675 -AfterEscapeStringConstantWithNewlineMode_NotContinued=676 -DollarText=677 -EndDollarStringConstant=678 -AfterEscapeStringConstantWithNewlineMode_Continued=679 +TOPIC=95 +STREAM=96 +TRAILING=97 +TRUE_P=98 +UNION=99 +UNIQUE=100 +USER=101 +USING=102 +VARIADIC=103 +WHEN=104 +WHERE=105 +WINDOW=106 +WITH=107 +AUTHORIZATION=108 +BINARY=109 +COLLATION=110 +CONCURRENTLY=111 +CROSS=112 +CURRENT_SCHEMA=113 +FREEZE=114 +FULL=115 +ILIKE=116 +INNER_P=117 +IS=118 +ISNULL=119 +JOIN=120 +LEFT=121 +LIKE=122 +NATURAL=123 +NOTNULL=124 +OUTER_P=125 +OVER=126 +OVERLAPS=127 +RIGHT=128 +SIMILAR=129 +VERBOSE=130 +ABORT_P=131 +ABSOLUTE_P=132 +ACCESS=133 +ACTION=134 +ADD_P=135 +ADMIN=136 +AFTER=137 +AGGREGATE=138 +ALSO=139 +ALTER=140 +ALWAYS=141 +ASSERTION=142 +ASSIGNMENT=143 +AT=144 +ATTRIBUTE=145 +BACKWARD=146 +BEFORE=147 +BEGIN_P=148 +BY=149 +CACHE=150 +CALLED=151 +CASCADE=152 +CASCADED=153 +CATALOG=154 +CHAIN=155 +CHARACTERISTICS=156 +CHECKPOINT=157 +CLASS=158 +CLOSE=159 +CLUSTER=160 +COMMENT=161 +COMMENTS=162 +COMMIT=163 +COMMITTED=164 +CONFIGURATION=165 +CONNECTION=166 +CONSTRAINTS=167 +CONTENT_P=168 +CONTINUE_P=169 +CONVERSION_P=170 +COPY=171 +COST=172 +CSV=173 +CURSOR=174 +CYCLE=175 +DATA_P=176 +DATABASE=177 +DAY_P=178 +DEALLOCATE=179 +DECLARE=180 +DEFAULTS=181 +DEFERRED=182 +DEFINER=183 +DELETE_P=184 +DELIMITER=185 +DELIMITERS=186 +DICTIONARY=187 +DISABLE_P=188 +DISCARD=189 +DOCUMENT_P=190 +DOMAIN_P=191 +DOUBLE_P=192 +DROP=193 +EACH=194 +ENABLE_P=195 +ENCODING=196 +ENCRYPTED=197 +ENUM_P=198 +ESCAPE=199 +EVENT=200 +EXCLUDE=201 +EXCLUDING=202 +EXCLUSIVE=203 +EXECUTE=204 +EXPLAIN=205 +EXTENSION=206 +EXTERNAL=207 +FAMILY=208 +FIRST_P=209 +FOLLOWING=210 +FORCE=211 +FORWARD=212 +FUNCTION=213 +FUNCTIONS=214 +GLOBAL=215 +GRANTED=216 +HANDLER=217 +HEADER_P=218 +HOLD=219 +HOUR_P=220 +IDENTITY_P=221 +IF_P=222 +IMMEDIATE=223 +IMMUTABLE=224 +IMPLICIT_P=225 +INCLUDING=226 +INCREMENT=227 +INDEX=228 +INDEXES=229 +INHERIT=230 +INHERITS=231 +INLINE_P=232 +INSENSITIVE=233 +INSERT=234 +INSTEAD=235 +INVOKER=236 +ISOLATION=237 +KEY=238 +LABEL=239 +LANGUAGE=240 +LARGE_P=241 +LAST_P=242 +LEAKPROOF=243 +LEVEL=244 +LISTEN=245 +LOAD=246 +LOCAL=247 +LOCATION=248 +LOCK_P=249 +MAPPING=250 +MATCH=251 +MATCHED=252 +MATERIALIZED=253 +MAXVALUE=254 +MERGE=255 +MINUTE_P=256 +MINVALUE=257 +MODE=258 +MONTH_P=259 +MOVE=260 +NAME_P=261 +NAMES=262 +NEXT=263 +NO=264 +NOTHING=265 +NOTIFY=266 +NOWAIT=267 +NULLS_P=268 +OBJECT_P=269 +OF=270 +OFF=271 +OIDS=272 +OPERATOR=273 +OPTION=274 +OPTIONS=275 +OWNED=276 +OWNER=277 +PARSER=278 +PARTIAL=279 +PARTITION=280 +PASSING=281 +PASSWORD=282 +PLANS=283 +PRECEDING=284 +PREPARE=285 +PREPARED=286 +PRESERVE=287 +PRIOR=288 +PRIVILEGES=289 +PROCEDURAL=290 +PROCEDURE=291 +PROGRAM=292 +QUOTE=293 +RANGE=294 +READ=295 +REASSIGN=296 +RECHECK=297 +RECURSIVE=298 +REF=299 +REFRESH=300 +REINDEX=301 +RELATIVE_P=302 +RELEASE=303 +RENAME=304 +REPEATABLE=305 +REPLACE=306 +REPLICA=307 +RESET=308 +RESTART=309 +RESTRICT=310 +RETURNS=311 +REVOKE=312 +ROLE=313 +ROLLBACK=314 +ROWS=315 +RULE=316 +SAVEPOINT=317 +SCHEMA=318 +SCROLL=319 +SEARCH=320 +SECOND_P=321 +SECURITY=322 +SEQUENCE=323 +SEQUENCES=324 +SERIALIZABLE=325 +SERVER=326 +SESSION=327 +SET=328 +SHARE=329 +SHOW=330 +SIMPLE=331 +SNAPSHOT=332 +STABLE=333 +STANDALONE_P=334 +START=335 +STATEMENT=336 +STATISTICS=337 +STDIN=338 +STDOUT=339 +STORAGE=340 +STRICT_P=341 +STRIP_P=342 +SYSID=343 +SYSTEM_P=344 +TABLES=345 +TABLESPACE=346 +TEMP=347 +TEMPLATE=348 +TEMPORARY=349 +TEXT_P=350 +TRANSACTION=351 +TRIGGER=352 +TRUNCATE=353 +TRUSTED=354 +TYPE_P=355 +TYPES_P=356 +UNBOUNDED=357 +UNCOMMITTED=358 +UNENCRYPTED=359 +UNKNOWN=360 +UNLISTEN=361 +UNLOGGED=362 +UNTIL=363 +UPDATE=364 +VACUUM=365 +VALID=366 +VALIDATE=367 +VALIDATOR=368 +VARYING=369 +VERSION_P=370 +VIEW=371 +VOLATILE=372 +WHITESPACE_P=373 +WITHOUT=374 +WORK=375 +WRAPPER=376 +WRITE=377 +XML_P=378 +YEAR_P=379 +YES_P=380 +ZONE=381 +BETWEEN=382 +BIGINT=383 +BIT=384 +BOOLEAN_P=385 +CHAR_P=386 +CHARACTER=387 +COALESCE=388 +DEC=389 +DECIMAL_P=390 +EXISTS=391 +EXTRACT=392 +FLOAT_P=393 +GREATEST=394 +INOUT=395 +INT_P=396 +INTEGER=397 +INTERVAL=398 +LEAST=399 +NATIONAL=400 +NCHAR=401 +NONE=402 +NULLIF=403 +NUMERIC=404 +OVERLAY=405 +POSITION=406 +PRECISION=407 +REAL=408 +ROW=409 +SETOF=410 +SMALLINT=411 +SUBSTRING=412 +TIME=413 +TIMESTAMP=414 +TREAT=415 +TRIM=416 +VALUES=417 +VARCHAR=418 +XMLATTRIBUTES=419 +XMLCOMMENT=420 +XMLAGG=421 +XML_IS_WELL_FORMED=422 +XML_IS_WELL_FORMED_DOCUMENT=423 +XML_IS_WELL_FORMED_CONTENT=424 +XPATH=425 +XPATH_EXISTS=426 +XMLCONCAT=427 +XMLELEMENT=428 +XMLEXISTS=429 +XMLFOREST=430 +XMLPARSE=431 +XMLPI=432 +XMLROOT=433 +XMLSERIALIZE=434 +CALL=435 +CURRENT_P=436 +ATTACH=437 +DETACH=438 +EXPRESSION=439 +GENERATED=440 +LOGGED=441 +STORED=442 +INCLUDE=443 +ROUTINE=444 +TRANSFORM=445 +IMPORT_P=446 +POLICY=447 +METHOD=448 +REFERENCING=449 +NEW=450 +OLD=451 +VALUE_P=452 +SUBSCRIPTION=453 +PUBLICATION=454 +OUT_P=455 +END_P=456 +ROUTINES=457 +SCHEMAS=458 +PROCEDURES=459 +INPUT_P=460 +SUPPORT=461 +PARALLEL=462 +SQL_P=463 +DEPENDS=464 +OVERRIDING=465 +CONFLICT=466 +SKIP_P=467 +LOCKED=468 +TIES=469 +ROLLUP=470 +CUBE=471 +GROUPING=472 +SETS=473 +TABLESAMPLE=474 +ORDINALITY=475 +XMLTABLE=476 +COLUMNS=477 +XMLNAMESPACES=478 +ROWTYPE=479 +NORMALIZED=480 +WITHIN=481 +FILTER=482 +GROUPS=483 +OTHERS=484 +NFC=485 +NFD=486 +NFKC=487 +NFKD=488 +UESCAPE=489 +VIEWS=490 +NORMALIZE=491 +DUMP=492 +PRINT_STRICT_PARAMS=493 +VARIABLE_CONFLICT=494 +ERROR=495 +USE_VARIABLE=496 +USE_COLUMN=497 +ALIAS=498 +CONSTANT=499 +PERFORM=500 +GET=501 +DIAGNOSTICS=502 +STACKED=503 +ELSIF=504 +WHILE=505 +REVERSE=506 +FOREACH=507 +SLICE=508 +EXIT=509 +RETURN=510 +QUERY=511 +RAISE=512 +SQLSTATE=513 +DEBUG=514 +LOG=515 +INFO=516 +NOTICE=517 +WARNING=518 +EXCEPTION=519 +ASSERT=520 +LOOP=521 +OPEN=522 +ABS=523 +CBRT=524 +CEIL=525 +CEILING=526 +DEGREES=527 +DIV=528 +EXP=529 +FACTORIAL=530 +FLOOR=531 +GCD=532 +LCM=533 +LN=534 +LOG10=535 +MIN_SCALE=536 +MOD=537 +PI=538 +POWER=539 +RADIANS=540 +ROUND=541 +SCALE=542 +SIGN=543 +SQRT=544 +TRIM_SCALE=545 +TRUNC=546 +WIDTH_BUCKET=547 +RANDOM=548 +SETSEED=549 +ACOS=550 +ACOSD=551 +ASIN=552 +ASIND=553 +ATAN=554 +ATAND=555 +ATAN2=556 +ATAN2D=557 +COS=558 +COSD=559 +COT=560 +COTD=561 +SIN=562 +SIND=563 +TAN=564 +TAND=565 +SINH=566 +COSH=567 +TANH=568 +ASINH=569 +ACOSH=570 +ATANH=571 +BIT_LENGTH=572 +CHAR_LENGTH=573 +CHARACTER_LENGTH=574 +LOWER=575 +OCTET_LENGTH=576 +UPPER=577 +ASCII=578 +BTRIM=579 +CHR=580 +CONCAT=581 +CONCAT_WS=582 +FORMAT=583 +INITCAP=584 +LENGTH=585 +LPAD=586 +LTRIM=587 +MD5=588 +PARSE_IDENT=589 +PG_CLIENT_ENCODING=590 +QUOTE_IDENT=591 +QUOTE_LITERAL=592 +QUOTE_NULLABLE=593 +REGEXP_COUNT=594 +REGEXP_INSTR=595 +REGEXP_LIKE=596 +REGEXP_MATCH=597 +REGEXP_MATCHES=598 +REGEXP_REPLACE=599 +REGEXP_SPLIT_TO_ARRAY=600 +REGEXP_SPLIT_TO_TABLE=601 +REGEXP_SUBSTR=602 +REPEAT=603 +RPAD=604 +RTRIM=605 +SPLIT_PART=606 +STARTS_WITH=607 +STRING_TO_ARRAY=608 +STRING_TO_TABLE=609 +STRPOS=610 +SUBSTR=611 +TO_ASCII=612 +TO_HEX=613 +TRANSLATE=614 +UNISTR=615 +AGE=616 +CLOCK_TIMESTAMP=617 +DATE_BIN=618 +DATE_PART=619 +DATE_TRUNC=620 +ISFINITE=621 +JUSTIFY_DAYS=622 +JUSTIFY_HOURS=623 +JUSTIFY_INTERVAL=624 +MAKE_DATE=625 +MAKE_INTERVAL=626 +MAKE_TIME=627 +MAKE_TIMESTAMP=628 +MAKE_TIMESTAMPTZ=629 +NOW=630 +STATEMENT_TIMESTAMP=631 +TIMEOFDAY=632 +TRANSACTION_TIMESTAMP=633 +TO_TIMESTAMP=634 +TO_CHAR=635 +TO_DATE=636 +TO_NUMBER=637 +Identifier=638 +QuotedIdentifier=639 +UnterminatedQuotedIdentifier=640 +InvalidQuotedIdentifier=641 +InvalidUnterminatedQuotedIdentifier=642 +UnicodeQuotedIdentifier=643 +UnterminatedUnicodeQuotedIdentifier=644 +InvalidUnicodeQuotedIdentifier=645 +InvalidUnterminatedUnicodeQuotedIdentifier=646 +StringConstant=647 +UnterminatedStringConstant=648 +UnicodeEscapeStringConstant=649 +UnterminatedUnicodeEscapeStringConstant=650 +BeginDollarStringConstant=651 +BinaryStringConstant=652 +UnterminatedBinaryStringConstant=653 +InvalidBinaryStringConstant=654 +InvalidUnterminatedBinaryStringConstant=655 +HexadecimalStringConstant=656 +UnterminatedHexadecimalStringConstant=657 +InvalidHexadecimalStringConstant=658 +InvalidUnterminatedHexadecimalStringConstant=659 +Integral=660 +NumericFail=661 +Numeric=662 +PLSQLVARIABLENAME=663 +PLSQLIDENTIFIER=664 +Whitespace=665 +Newline=666 +LineComment=667 +BlockComment=668 +UnterminatedBlockComment=669 +MetaCommand=670 +EndMetaCommand=671 +ErrorCharacter=672 +EscapeStringConstant=673 +UnterminatedEscapeStringConstant=674 +InvalidEscapeStringConstant=675 +InvalidUnterminatedEscapeStringConstant=676 +AfterEscapeStringConstantMode_NotContinued=677 +AfterEscapeStringConstantWithNewlineMode_NotContinued=678 +DollarText=679 +EndDollarStringConstant=680 +AfterEscapeStringConstantWithNewlineMode_Continued=681 '$'=1 '('=2 ')'=3 @@ -769,546 +771,548 @@ AfterEscapeStringConstantWithNewlineMode_Continued=679 'TABLE'=92 'THEN'=93 'TO'=94 -'TRAILING'=95 -'TRUE'=96 -'UNION'=97 -'UNIQUE'=98 -'USER'=99 -'USING'=100 -'VARIADIC'=101 -'WHEN'=102 -'WHERE'=103 -'WINDOW'=104 -'WITH'=105 -'AUTHORIZATION'=106 -'BINARY'=107 -'COLLATION'=108 -'CONCURRENTLY'=109 -'CROSS'=110 -'CURRENT_SCHEMA'=111 -'FREEZE'=112 -'FULL'=113 -'ILIKE'=114 -'INNER'=115 -'IS'=116 -'ISNULL'=117 -'JOIN'=118 -'LEFT'=119 -'LIKE'=120 -'NATURAL'=121 -'NOTNULL'=122 -'OUTER'=123 -'OVER'=124 -'OVERLAPS'=125 -'RIGHT'=126 -'SIMILAR'=127 -'VERBOSE'=128 -'ABORT'=129 -'ABSOLUTE'=130 -'ACCESS'=131 -'ACTION'=132 -'ADD'=133 -'ADMIN'=134 -'AFTER'=135 -'AGGREGATE'=136 -'ALSO'=137 -'ALTER'=138 -'ALWAYS'=139 -'ASSERTION'=140 -'ASSIGNMENT'=141 -'AT'=142 -'ATTRIBUTE'=143 -'BACKWARD'=144 -'BEFORE'=145 -'BEGIN'=146 -'BY'=147 -'CACHE'=148 -'CALLED'=149 -'CASCADE'=150 -'CASCADED'=151 -'CATALOG'=152 -'CHAIN'=153 -'CHARACTERISTICS'=154 -'CHECKPOINT'=155 -'CLASS'=156 -'CLOSE'=157 -'CLUSTER'=158 -'COMMENT'=159 -'COMMENTS'=160 -'COMMIT'=161 -'COMMITTED'=162 -'CONFIGURATION'=163 -'CONNECTION'=164 -'CONSTRAINTS'=165 -'CONTENT'=166 -'CONTINUE'=167 -'CONVERSION'=168 -'COPY'=169 -'COST'=170 -'CSV'=171 -'CURSOR'=172 -'CYCLE'=173 -'DATA'=174 -'DATABASE'=175 -'DAY'=176 -'DEALLOCATE'=177 -'DECLARE'=178 -'DEFAULTS'=179 -'DEFERRED'=180 -'DEFINER'=181 -'DELETE'=182 -'DELIMITER'=183 -'DELIMITERS'=184 -'DICTIONARY'=185 -'DISABLE'=186 -'DISCARD'=187 -'DOCUMENT'=188 -'DOMAIN'=189 -'DOUBLE'=190 -'DROP'=191 -'EACH'=192 -'ENABLE'=193 -'ENCODING'=194 -'ENCRYPTED'=195 -'ENUM'=196 -'ESCAPE'=197 -'EVENT'=198 -'EXCLUDE'=199 -'EXCLUDING'=200 -'EXCLUSIVE'=201 -'EXECUTE'=202 -'EXPLAIN'=203 -'EXTENSION'=204 -'EXTERNAL'=205 -'FAMILY'=206 -'FIRST'=207 -'FOLLOWING'=208 -'FORCE'=209 -'FORWARD'=210 -'FUNCTION'=211 -'FUNCTIONS'=212 -'GLOBAL'=213 -'GRANTED'=214 -'HANDLER'=215 -'HEADER'=216 -'HOLD'=217 -'HOUR'=218 -'IDENTITY'=219 -'IF'=220 -'IMMEDIATE'=221 -'IMMUTABLE'=222 -'IMPLICIT'=223 -'INCLUDING'=224 -'INCREMENT'=225 -'INDEX'=226 -'INDEXES'=227 -'INHERIT'=228 -'INHERITS'=229 -'INLINE'=230 -'INSENSITIVE'=231 -'INSERT'=232 -'INSTEAD'=233 -'INVOKER'=234 -'ISOLATION'=235 -'KEY'=236 -'LABEL'=237 -'LANGUAGE'=238 -'LARGE'=239 -'LAST'=240 -'LEAKPROOF'=241 -'LEVEL'=242 -'LISTEN'=243 -'LOAD'=244 -'LOCAL'=245 -'LOCATION'=246 -'LOCK'=247 -'MAPPING'=248 -'MATCH'=249 -'MATCHED'=250 -'MATERIALIZED'=251 -'MAXVALUE'=252 -'MERGE'=253 -'MINUTE'=254 -'MINVALUE'=255 -'MODE'=256 -'MONTH'=257 -'MOVE'=258 -'NAME'=259 -'NAMES'=260 -'NEXT'=261 -'NO'=262 -'NOTHING'=263 -'NOTIFY'=264 -'NOWAIT'=265 -'NULLS'=266 -'OBJECT'=267 -'OF'=268 -'OFF'=269 -'OIDS'=270 -'OPERATOR'=271 -'OPTION'=272 -'OPTIONS'=273 -'OWNED'=274 -'OWNER'=275 -'PARSER'=276 -'PARTIAL'=277 -'PARTITION'=278 -'PASSING'=279 -'PASSWORD'=280 -'PLANS'=281 -'PRECEDING'=282 -'PREPARE'=283 -'PREPARED'=284 -'PRESERVE'=285 -'PRIOR'=286 -'PRIVILEGES'=287 -'PROCEDURAL'=288 -'PROCEDURE'=289 -'PROGRAM'=290 -'QUOTE'=291 -'RANGE'=292 -'READ'=293 -'REASSIGN'=294 -'RECHECK'=295 -'RECURSIVE'=296 -'REF'=297 -'REFRESH'=298 -'REINDEX'=299 -'RELATIVE'=300 -'RELEASE'=301 -'RENAME'=302 -'REPEATABLE'=303 -'REPLACE'=304 -'REPLICA'=305 -'RESET'=306 -'RESTART'=307 -'RESTRICT'=308 -'RETURNS'=309 -'REVOKE'=310 -'ROLE'=311 -'ROLLBACK'=312 -'ROWS'=313 -'RULE'=314 -'SAVEPOINT'=315 -'SCHEMA'=316 -'SCROLL'=317 -'SEARCH'=318 -'SECOND'=319 -'SECURITY'=320 -'SEQUENCE'=321 -'SEQUENCES'=322 -'SERIALIZABLE'=323 -'SERVER'=324 -'SESSION'=325 -'SET'=326 -'SHARE'=327 -'SHOW'=328 -'SIMPLE'=329 -'SNAPSHOT'=330 -'STABLE'=331 -'STANDALONE'=332 -'START'=333 -'STATEMENT'=334 -'STATISTICS'=335 -'STDIN'=336 -'STDOUT'=337 -'STORAGE'=338 -'STRICT'=339 -'STRIP'=340 -'SYSID'=341 -'SYSTEM'=342 -'TABLES'=343 -'TABLESPACE'=344 -'TEMP'=345 -'TEMPLATE'=346 -'TEMPORARY'=347 -'TEXT'=348 -'TRANSACTION'=349 -'TRIGGER'=350 -'TRUNCATE'=351 -'TRUSTED'=352 -'TYPE'=353 -'TYPES'=354 -'UNBOUNDED'=355 -'UNCOMMITTED'=356 -'UNENCRYPTED'=357 -'UNKNOWN'=358 -'UNLISTEN'=359 -'UNLOGGED'=360 -'UNTIL'=361 -'UPDATE'=362 -'VACUUM'=363 -'VALID'=364 -'VALIDATE'=365 -'VALIDATOR'=366 -'VARYING'=367 -'VERSION'=368 -'VIEW'=369 -'VOLATILE'=370 -'WHITESPACE'=371 -'WITHOUT'=372 -'WORK'=373 -'WRAPPER'=374 -'WRITE'=375 -'XML'=376 -'YEAR'=377 -'YES'=378 -'ZONE'=379 -'BETWEEN'=380 -'BIGINT'=381 -'BIT'=382 -'BOOLEAN'=383 -'CHAR'=384 -'CHARACTER'=385 -'COALESCE'=386 -'DEC'=387 -'DECIMAL'=388 -'EXISTS'=389 -'EXTRACT'=390 -'FLOAT'=391 -'GREATEST'=392 -'INOUT'=393 -'INT'=394 -'INTEGER'=395 -'INTERVAL'=396 -'LEAST'=397 -'NATIONAL'=398 -'NCHAR'=399 -'NONE'=400 -'NULLIF'=401 -'NUMERIC'=402 -'OVERLAY'=403 -'POSITION'=404 -'PRECISION'=405 -'REAL'=406 -'ROW'=407 -'SETOF'=408 -'SMALLINT'=409 -'SUBSTRING'=410 -'TIME'=411 -'TIMESTAMP'=412 -'TREAT'=413 -'TRIM'=414 -'VALUES'=415 -'VARCHAR'=416 -'XMLATTRIBUTES'=417 -'XMLCOMMENT'=418 -'XMLAGG'=419 -'XML_IS_WELL_FORMED'=420 -'XML_IS_WELL_FORMED_DOCUMENT'=421 -'XML_IS_WELL_FORMED_CONTENT'=422 -'XPATH'=423 -'XPATH_EXISTS'=424 -'XMLCONCAT'=425 -'XMLELEMENT'=426 -'XMLEXISTS'=427 -'XMLFOREST'=428 -'XMLPARSE'=429 -'XMLPI'=430 -'XMLROOT'=431 -'XMLSERIALIZE'=432 -'CALL'=433 -'CURRENT'=434 -'ATTACH'=435 -'DETACH'=436 -'EXPRESSION'=437 -'GENERATED'=438 -'LOGGED'=439 -'STORED'=440 -'INCLUDE'=441 -'ROUTINE'=442 -'TRANSFORM'=443 -'IMPORT'=444 -'POLICY'=445 -'METHOD'=446 -'REFERENCING'=447 -'NEW'=448 -'OLD'=449 -'VALUE'=450 -'SUBSCRIPTION'=451 -'PUBLICATION'=452 -'OUT'=453 -'END'=454 -'ROUTINES'=455 -'SCHEMAS'=456 -'PROCEDURES'=457 -'INPUT'=458 -'SUPPORT'=459 -'PARALLEL'=460 -'SQL'=461 -'DEPENDS'=462 -'OVERRIDING'=463 -'CONFLICT'=464 -'SKIP'=465 -'LOCKED'=466 -'TIES'=467 -'ROLLUP'=468 -'CUBE'=469 -'GROUPING'=470 -'SETS'=471 -'TABLESAMPLE'=472 -'ORDINALITY'=473 -'XMLTABLE'=474 -'COLUMNS'=475 -'XMLNAMESPACES'=476 -'ROWTYPE'=477 -'NORMALIZED'=478 -'WITHIN'=479 -'FILTER'=480 -'GROUPS'=481 -'OTHERS'=482 -'NFC'=483 -'NFD'=484 -'NFKC'=485 -'NFKD'=486 -'UESCAPE'=487 -'VIEWS'=488 -'NORMALIZE'=489 -'DUMP'=490 -'PRINT_STRICT_PARAMS'=491 -'VARIABLE_CONFLICT'=492 -'ERROR'=493 -'USE_VARIABLE'=494 -'USE_COLUMN'=495 -'ALIAS'=496 -'CONSTANT'=497 -'PERFORM'=498 -'GET'=499 -'DIAGNOSTICS'=500 -'STACKED'=501 -'ELSIF'=502 -'WHILE'=503 -'REVERSE'=504 -'FOREACH'=505 -'SLICE'=506 -'EXIT'=507 -'RETURN'=508 -'QUERY'=509 -'RAISE'=510 -'SQLSTATE'=511 -'DEBUG'=512 -'LOG'=513 -'INFO'=514 -'NOTICE'=515 -'WARNING'=516 -'EXCEPTION'=517 -'ASSERT'=518 -'LOOP'=519 -'OPEN'=520 -'ABS'=521 -'CBRT'=522 -'CEIL'=523 -'CEILING'=524 -'DEGREES'=525 -'DIV'=526 -'EXP'=527 -'FACTORIAL'=528 -'FLOOR'=529 -'GCD'=530 -'LCM'=531 -'LN'=532 -'LOG10'=533 -'MIN_SCALE'=534 -'MOD'=535 -'PI'=536 -'POWER'=537 -'RADIANS'=538 -'ROUND'=539 -'SCALE'=540 -'SIGN'=541 -'SQRT'=542 -'TRIM_SCALE'=543 -'TRUNC'=544 -'WIDTH_BUCKET'=545 -'RANDOM'=546 -'SETSEED'=547 -'ACOS'=548 -'ACOSD'=549 -'ASIN'=550 -'ASIND'=551 -'ATAN'=552 -'ATAND'=553 -'ATAN2'=554 -'ATAN2D'=555 -'COS'=556 -'COSD'=557 -'COT'=558 -'COTD'=559 -'SIN'=560 -'SIND'=561 -'TAN'=562 -'TAND'=563 -'SINH'=564 -'COSH'=565 -'TANH'=566 -'ASINH'=567 -'ACOSH'=568 -'ATANH'=569 -'BIT_LENGTH'=570 -'CHAR_LENGTH'=571 -'CHARACTER_LENGTH'=572 -'LOWER'=573 -'OCTET_LENGTH'=574 -'UPPER'=575 -'ASCII'=576 -'BTRIM'=577 -'CHR'=578 -'CONCAT'=579 -'CONCAT_WS'=580 -'FORMAT'=581 -'INITCAP'=582 -'LENGTH'=583 -'LPAD'=584 -'LTRIM'=585 -'MD5'=586 -'PARSE_IDENT'=587 -'PG_CLIENT_ENCODING'=588 -'QUOTE_IDENT'=589 -'QUOTE_LITERAL'=590 -'QUOTE_NULLABLE'=591 -'REGEXP_COUNT'=592 -'REGEXP_INSTR'=593 -'REGEXP_LIKE'=594 -'REGEXP_MATCH'=595 -'REGEXP_MATCHES'=596 -'REGEXP_REPLACE'=597 -'REGEXP_SPLIT_TO_ARRAY'=598 -'REGEXP_SPLIT_TO_TABLE'=599 -'REGEXP_SUBSTR'=600 -'REPEAT'=601 -'RPAD'=602 -'RTRIM'=603 -'SPLIT_PART'=604 -'STARTS_WITH'=605 -'STRING_TO_ARRAY'=606 -'STRING_TO_TABLE'=607 -'STRPOS'=608 -'SUBSTR'=609 -'TO_ASCII'=610 -'TO_HEX'=611 -'TRANSLATE'=612 -'UNISTR'=613 -'AGE'=614 -'CLOCK_TIMESTAMP'=615 -'DATE_BIN'=616 -'DATE_PART'=617 -'DATE_TRUNC'=618 -'ISFINITE'=619 -'JUSTIFY_DAYS'=620 -'JUSTIFY_HOURS'=621 -'JUSTIFY_INTERVAL'=622 -'MAKE_DATE'=623 -'MAKE_INTERVAL'=624 -'MAKE_TIME'=625 -'MAKE_TIMESTAMP'=626 -'MAKE_TIMESTAMPTZ'=627 -'NOW'=628 -'STATEMENT_TIMESTAMP'=629 -'TIMEOFDAY'=630 -'TRANSACTION_TIMESTAMP'=631 -'TO_TIMESTAMP'=632 -'TO_CHAR'=633 -'TO_DATE'=634 -'TO_NUMBER'=635 -'\\\\'=669 -'\''=679 +'TOPIC'=95 +'STREAM'=96 +'TRAILING'=97 +'TRUE'=98 +'UNION'=99 +'UNIQUE'=100 +'USER'=101 +'USING'=102 +'VARIADIC'=103 +'WHEN'=104 +'WHERE'=105 +'WINDOW'=106 +'WITH'=107 +'AUTHORIZATION'=108 +'BINARY'=109 +'COLLATION'=110 +'CONCURRENTLY'=111 +'CROSS'=112 +'CURRENT_SCHEMA'=113 +'FREEZE'=114 +'FULL'=115 +'ILIKE'=116 +'INNER'=117 +'IS'=118 +'ISNULL'=119 +'JOIN'=120 +'LEFT'=121 +'LIKE'=122 +'NATURAL'=123 +'NOTNULL'=124 +'OUTER'=125 +'OVER'=126 +'OVERLAPS'=127 +'RIGHT'=128 +'SIMILAR'=129 +'VERBOSE'=130 +'ABORT'=131 +'ABSOLUTE'=132 +'ACCESS'=133 +'ACTION'=134 +'ADD'=135 +'ADMIN'=136 +'AFTER'=137 +'AGGREGATE'=138 +'ALSO'=139 +'ALTER'=140 +'ALWAYS'=141 +'ASSERTION'=142 +'ASSIGNMENT'=143 +'AT'=144 +'ATTRIBUTE'=145 +'BACKWARD'=146 +'BEFORE'=147 +'BEGIN'=148 +'BY'=149 +'CACHE'=150 +'CALLED'=151 +'CASCADE'=152 +'CASCADED'=153 +'CATALOG'=154 +'CHAIN'=155 +'CHARACTERISTICS'=156 +'CHECKPOINT'=157 +'CLASS'=158 +'CLOSE'=159 +'CLUSTER'=160 +'COMMENT'=161 +'COMMENTS'=162 +'COMMIT'=163 +'COMMITTED'=164 +'CONFIGURATION'=165 +'CONNECTION'=166 +'CONSTRAINTS'=167 +'CONTENT'=168 +'CONTINUE'=169 +'CONVERSION'=170 +'COPY'=171 +'COST'=172 +'CSV'=173 +'CURSOR'=174 +'CYCLE'=175 +'DATA'=176 +'DATABASE'=177 +'DAY'=178 +'DEALLOCATE'=179 +'DECLARE'=180 +'DEFAULTS'=181 +'DEFERRED'=182 +'DEFINER'=183 +'DELETE'=184 +'DELIMITER'=185 +'DELIMITERS'=186 +'DICTIONARY'=187 +'DISABLE'=188 +'DISCARD'=189 +'DOCUMENT'=190 +'DOMAIN'=191 +'DOUBLE'=192 +'DROP'=193 +'EACH'=194 +'ENABLE'=195 +'ENCODING'=196 +'ENCRYPTED'=197 +'ENUM'=198 +'ESCAPE'=199 +'EVENT'=200 +'EXCLUDE'=201 +'EXCLUDING'=202 +'EXCLUSIVE'=203 +'EXECUTE'=204 +'EXPLAIN'=205 +'EXTENSION'=206 +'EXTERNAL'=207 +'FAMILY'=208 +'FIRST'=209 +'FOLLOWING'=210 +'FORCE'=211 +'FORWARD'=212 +'FUNCTION'=213 +'FUNCTIONS'=214 +'GLOBAL'=215 +'GRANTED'=216 +'HANDLER'=217 +'HEADER'=218 +'HOLD'=219 +'HOUR'=220 +'IDENTITY'=221 +'IF'=222 +'IMMEDIATE'=223 +'IMMUTABLE'=224 +'IMPLICIT'=225 +'INCLUDING'=226 +'INCREMENT'=227 +'INDEX'=228 +'INDEXES'=229 +'INHERIT'=230 +'INHERITS'=231 +'INLINE'=232 +'INSENSITIVE'=233 +'INSERT'=234 +'INSTEAD'=235 +'INVOKER'=236 +'ISOLATION'=237 +'KEY'=238 +'LABEL'=239 +'LANGUAGE'=240 +'LARGE'=241 +'LAST'=242 +'LEAKPROOF'=243 +'LEVEL'=244 +'LISTEN'=245 +'LOAD'=246 +'LOCAL'=247 +'LOCATION'=248 +'LOCK'=249 +'MAPPING'=250 +'MATCH'=251 +'MATCHED'=252 +'MATERIALIZED'=253 +'MAXVALUE'=254 +'MERGE'=255 +'MINUTE'=256 +'MINVALUE'=257 +'MODE'=258 +'MONTH'=259 +'MOVE'=260 +'NAME'=261 +'NAMES'=262 +'NEXT'=263 +'NO'=264 +'NOTHING'=265 +'NOTIFY'=266 +'NOWAIT'=267 +'NULLS'=268 +'OBJECT'=269 +'OF'=270 +'OFF'=271 +'OIDS'=272 +'OPERATOR'=273 +'OPTION'=274 +'OPTIONS'=275 +'OWNED'=276 +'OWNER'=277 +'PARSER'=278 +'PARTIAL'=279 +'PARTITION'=280 +'PASSING'=281 +'PASSWORD'=282 +'PLANS'=283 +'PRECEDING'=284 +'PREPARE'=285 +'PREPARED'=286 +'PRESERVE'=287 +'PRIOR'=288 +'PRIVILEGES'=289 +'PROCEDURAL'=290 +'PROCEDURE'=291 +'PROGRAM'=292 +'QUOTE'=293 +'RANGE'=294 +'READ'=295 +'REASSIGN'=296 +'RECHECK'=297 +'RECURSIVE'=298 +'REF'=299 +'REFRESH'=300 +'REINDEX'=301 +'RELATIVE'=302 +'RELEASE'=303 +'RENAME'=304 +'REPEATABLE'=305 +'REPLACE'=306 +'REPLICA'=307 +'RESET'=308 +'RESTART'=309 +'RESTRICT'=310 +'RETURNS'=311 +'REVOKE'=312 +'ROLE'=313 +'ROLLBACK'=314 +'ROWS'=315 +'RULE'=316 +'SAVEPOINT'=317 +'SCHEMA'=318 +'SCROLL'=319 +'SEARCH'=320 +'SECOND'=321 +'SECURITY'=322 +'SEQUENCE'=323 +'SEQUENCES'=324 +'SERIALIZABLE'=325 +'SERVER'=326 +'SESSION'=327 +'SET'=328 +'SHARE'=329 +'SHOW'=330 +'SIMPLE'=331 +'SNAPSHOT'=332 +'STABLE'=333 +'STANDALONE'=334 +'START'=335 +'STATEMENT'=336 +'STATISTICS'=337 +'STDIN'=338 +'STDOUT'=339 +'STORAGE'=340 +'STRICT'=341 +'STRIP'=342 +'SYSID'=343 +'SYSTEM'=344 +'TABLES'=345 +'TABLESPACE'=346 +'TEMP'=347 +'TEMPLATE'=348 +'TEMPORARY'=349 +'TEXT'=350 +'TRANSACTION'=351 +'TRIGGER'=352 +'TRUNCATE'=353 +'TRUSTED'=354 +'TYPE'=355 +'TYPES'=356 +'UNBOUNDED'=357 +'UNCOMMITTED'=358 +'UNENCRYPTED'=359 +'UNKNOWN'=360 +'UNLISTEN'=361 +'UNLOGGED'=362 +'UNTIL'=363 +'UPDATE'=364 +'VACUUM'=365 +'VALID'=366 +'VALIDATE'=367 +'VALIDATOR'=368 +'VARYING'=369 +'VERSION'=370 +'VIEW'=371 +'VOLATILE'=372 +'WHITESPACE'=373 +'WITHOUT'=374 +'WORK'=375 +'WRAPPER'=376 +'WRITE'=377 +'XML'=378 +'YEAR'=379 +'YES'=380 +'ZONE'=381 +'BETWEEN'=382 +'BIGINT'=383 +'BIT'=384 +'BOOLEAN'=385 +'CHAR'=386 +'CHARACTER'=387 +'COALESCE'=388 +'DEC'=389 +'DECIMAL'=390 +'EXISTS'=391 +'EXTRACT'=392 +'FLOAT'=393 +'GREATEST'=394 +'INOUT'=395 +'INT'=396 +'INTEGER'=397 +'INTERVAL'=398 +'LEAST'=399 +'NATIONAL'=400 +'NCHAR'=401 +'NONE'=402 +'NULLIF'=403 +'NUMERIC'=404 +'OVERLAY'=405 +'POSITION'=406 +'PRECISION'=407 +'REAL'=408 +'ROW'=409 +'SETOF'=410 +'SMALLINT'=411 +'SUBSTRING'=412 +'TIME'=413 +'TIMESTAMP'=414 +'TREAT'=415 +'TRIM'=416 +'VALUES'=417 +'VARCHAR'=418 +'XMLATTRIBUTES'=419 +'XMLCOMMENT'=420 +'XMLAGG'=421 +'XML_IS_WELL_FORMED'=422 +'XML_IS_WELL_FORMED_DOCUMENT'=423 +'XML_IS_WELL_FORMED_CONTENT'=424 +'XPATH'=425 +'XPATH_EXISTS'=426 +'XMLCONCAT'=427 +'XMLELEMENT'=428 +'XMLEXISTS'=429 +'XMLFOREST'=430 +'XMLPARSE'=431 +'XMLPI'=432 +'XMLROOT'=433 +'XMLSERIALIZE'=434 +'CALL'=435 +'CURRENT'=436 +'ATTACH'=437 +'DETACH'=438 +'EXPRESSION'=439 +'GENERATED'=440 +'LOGGED'=441 +'STORED'=442 +'INCLUDE'=443 +'ROUTINE'=444 +'TRANSFORM'=445 +'IMPORT'=446 +'POLICY'=447 +'METHOD'=448 +'REFERENCING'=449 +'NEW'=450 +'OLD'=451 +'VALUE'=452 +'SUBSCRIPTION'=453 +'PUBLICATION'=454 +'OUT'=455 +'END'=456 +'ROUTINES'=457 +'SCHEMAS'=458 +'PROCEDURES'=459 +'INPUT'=460 +'SUPPORT'=461 +'PARALLEL'=462 +'SQL'=463 +'DEPENDS'=464 +'OVERRIDING'=465 +'CONFLICT'=466 +'SKIP'=467 +'LOCKED'=468 +'TIES'=469 +'ROLLUP'=470 +'CUBE'=471 +'GROUPING'=472 +'SETS'=473 +'TABLESAMPLE'=474 +'ORDINALITY'=475 +'XMLTABLE'=476 +'COLUMNS'=477 +'XMLNAMESPACES'=478 +'ROWTYPE'=479 +'NORMALIZED'=480 +'WITHIN'=481 +'FILTER'=482 +'GROUPS'=483 +'OTHERS'=484 +'NFC'=485 +'NFD'=486 +'NFKC'=487 +'NFKD'=488 +'UESCAPE'=489 +'VIEWS'=490 +'NORMALIZE'=491 +'DUMP'=492 +'PRINT_STRICT_PARAMS'=493 +'VARIABLE_CONFLICT'=494 +'ERROR'=495 +'USE_VARIABLE'=496 +'USE_COLUMN'=497 +'ALIAS'=498 +'CONSTANT'=499 +'PERFORM'=500 +'GET'=501 +'DIAGNOSTICS'=502 +'STACKED'=503 +'ELSIF'=504 +'WHILE'=505 +'REVERSE'=506 +'FOREACH'=507 +'SLICE'=508 +'EXIT'=509 +'RETURN'=510 +'QUERY'=511 +'RAISE'=512 +'SQLSTATE'=513 +'DEBUG'=514 +'LOG'=515 +'INFO'=516 +'NOTICE'=517 +'WARNING'=518 +'EXCEPTION'=519 +'ASSERT'=520 +'LOOP'=521 +'OPEN'=522 +'ABS'=523 +'CBRT'=524 +'CEIL'=525 +'CEILING'=526 +'DEGREES'=527 +'DIV'=528 +'EXP'=529 +'FACTORIAL'=530 +'FLOOR'=531 +'GCD'=532 +'LCM'=533 +'LN'=534 +'LOG10'=535 +'MIN_SCALE'=536 +'MOD'=537 +'PI'=538 +'POWER'=539 +'RADIANS'=540 +'ROUND'=541 +'SCALE'=542 +'SIGN'=543 +'SQRT'=544 +'TRIM_SCALE'=545 +'TRUNC'=546 +'WIDTH_BUCKET'=547 +'RANDOM'=548 +'SETSEED'=549 +'ACOS'=550 +'ACOSD'=551 +'ASIN'=552 +'ASIND'=553 +'ATAN'=554 +'ATAND'=555 +'ATAN2'=556 +'ATAN2D'=557 +'COS'=558 +'COSD'=559 +'COT'=560 +'COTD'=561 +'SIN'=562 +'SIND'=563 +'TAN'=564 +'TAND'=565 +'SINH'=566 +'COSH'=567 +'TANH'=568 +'ASINH'=569 +'ACOSH'=570 +'ATANH'=571 +'BIT_LENGTH'=572 +'CHAR_LENGTH'=573 +'CHARACTER_LENGTH'=574 +'LOWER'=575 +'OCTET_LENGTH'=576 +'UPPER'=577 +'ASCII'=578 +'BTRIM'=579 +'CHR'=580 +'CONCAT'=581 +'CONCAT_WS'=582 +'FORMAT'=583 +'INITCAP'=584 +'LENGTH'=585 +'LPAD'=586 +'LTRIM'=587 +'MD5'=588 +'PARSE_IDENT'=589 +'PG_CLIENT_ENCODING'=590 +'QUOTE_IDENT'=591 +'QUOTE_LITERAL'=592 +'QUOTE_NULLABLE'=593 +'REGEXP_COUNT'=594 +'REGEXP_INSTR'=595 +'REGEXP_LIKE'=596 +'REGEXP_MATCH'=597 +'REGEXP_MATCHES'=598 +'REGEXP_REPLACE'=599 +'REGEXP_SPLIT_TO_ARRAY'=600 +'REGEXP_SPLIT_TO_TABLE'=601 +'REGEXP_SUBSTR'=602 +'REPEAT'=603 +'RPAD'=604 +'RTRIM'=605 +'SPLIT_PART'=606 +'STARTS_WITH'=607 +'STRING_TO_ARRAY'=608 +'STRING_TO_TABLE'=609 +'STRPOS'=610 +'SUBSTR'=611 +'TO_ASCII'=612 +'TO_HEX'=613 +'TRANSLATE'=614 +'UNISTR'=615 +'AGE'=616 +'CLOCK_TIMESTAMP'=617 +'DATE_BIN'=618 +'DATE_PART'=619 +'DATE_TRUNC'=620 +'ISFINITE'=621 +'JUSTIFY_DAYS'=622 +'JUSTIFY_HOURS'=623 +'JUSTIFY_INTERVAL'=624 +'MAKE_DATE'=625 +'MAKE_INTERVAL'=626 +'MAKE_TIME'=627 +'MAKE_TIMESTAMP'=628 +'MAKE_TIMESTAMPTZ'=629 +'NOW'=630 +'STATEMENT_TIMESTAMP'=631 +'TIMEOFDAY'=632 +'TRANSACTION_TIMESTAMP'=633 +'TO_TIMESTAMP'=634 +'TO_CHAR'=635 +'TO_DATE'=636 +'TO_NUMBER'=637 +'\\\\'=671 +'\''=681 diff --git a/incubator/binding-pgsql/src/main/antlr4/io/aklivity/zilla/runtime/binding/pgsql/parser/PostgreSqlLexer.g4 b/incubator/binding-pgsql/src/main/antlr4/io/aklivity/zilla/runtime/binding/pgsql/parser/PostgreSqlLexer.g4 index 6af18a593b..6c7dfef3cb 100644 --- a/incubator/binding-pgsql/src/main/antlr4/io/aklivity/zilla/runtime/binding/pgsql/parser/PostgreSqlLexer.g4 +++ b/incubator/binding-pgsql/src/main/antlr4/io/aklivity/zilla/runtime/binding/pgsql/parser/PostgreSqlLexer.g4 @@ -288,6 +288,10 @@ THEN: 'THEN'; TO: 'TO'; +TOPIC: 'TOPIC'; + +STREAM: 'STREAM'; + TRAILING: 'TRAILING'; TRUE_P: 'TRUE'; diff --git a/incubator/binding-pgsql/src/main/antlr4/io/aklivity/zilla/runtime/binding/pgsql/parser/PostgreSqlParser.g4 b/incubator/binding-pgsql/src/main/antlr4/io/aklivity/zilla/runtime/binding/pgsql/parser/PostgreSqlParser.g4 index 760015c6f5..6f051ceb2d 100644 --- a/incubator/binding-pgsql/src/main/antlr4/io/aklivity/zilla/runtime/binding/pgsql/parser/PostgreSqlParser.g4 +++ b/incubator/binding-pgsql/src/main/antlr4/io/aklivity/zilla/runtime/binding/pgsql/parser/PostgreSqlParser.g4 @@ -105,6 +105,7 @@ stmt | createschemastmt | createseqstmt | createstmt + | createstreamstmt | createsubscriptionstmt | createstatsstmt | createtablespacestmt @@ -654,6 +655,27 @@ copy_generic_opt_arg_list_item : opt_boolean_or_string ; +createstreamstmt + : CREATE STREAM stream_name OPEN_PAREN stream_columns CLOSE_PAREN opt_with_stream + ; + +stream_name + : qualified_name + ; + +stream_columns + : stream_column (COMMA stream_column)* + ; + +stream_column + : colid typename + ; + +opt_with_stream + : WITH reloptions + | + ; + createstmt : CREATE opttemp TABLE (IF_P NOT EXISTS)? qualified_name ( OPEN_PAREN opttableelementlist CLOSE_PAREN optinherit optpartitionspec table_access_method_clause optwith oncommitoption opttablespace @@ -1569,6 +1591,8 @@ object_type_any_name | SEQUENCE | VIEW | MATERIALIZED VIEW + | TOPIC + | STREAM | INDEX | FOREIGN TABLE | COLLATION diff --git a/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/PgsqlParser.java b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/PgsqlParser.java index e8e4db6d87..8ae905173d 100644 --- a/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/PgsqlParser.java +++ b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/PgsqlParser.java @@ -22,6 +22,7 @@ import org.antlr.v4.runtime.CommonTokenStream; import org.antlr.v4.runtime.tree.ParseTreeWalker; +import io.aklivity.zilla.runtime.binding.pgsql.parser.listener.SqlCommandListener; import io.aklivity.zilla.runtime.binding.pgsql.parser.listener.SqlCreateMaterializedViewListener; import io.aklivity.zilla.runtime.binding.pgsql.parser.listener.SqlCreateTableListener; import io.aklivity.zilla.runtime.binding.pgsql.parser.listener.SqlDropListener; @@ -35,6 +36,7 @@ public final class PgsqlParser private final PostgreSqlLexer lexer; private final CommonTokenStream tokens; private final PostgreSqlParser parser; + private final SqlCommandListener commandListener; private final SqlCreateTableListener createTableListener; private final SqlCreateMaterializedViewListener createMaterializedViewListener; private final SqlDropListener dropListener; @@ -46,12 +48,20 @@ public PgsqlParser() this.lexer = new PostgreSqlLexer(null); this.parser = new PostgreSqlParser(null); this.tokens = new CommonTokenStream(lexer); + this.commandListener = new SqlCommandListener(); this.createTableListener = new SqlCreateTableListener(); this.createMaterializedViewListener = new SqlCreateMaterializedViewListener(); this.dropListener = new SqlDropListener(); parser.setErrorHandler(errorStrategy); } + public String parseCommand( + String sql) + { + parser(sql, commandListener); + return commandListener.command(); + } + public TableInfo parseCreateTable( String sql) { @@ -77,6 +87,8 @@ private void parser( String sql, PostgreSqlParserBaseListener listener) { + sql = sql.replace("\u0000", ""); + CharStream input = CharStreams.fromString(sql); lexer.reset(); lexer.setInputStream(input); diff --git a/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlCommandListener.java b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlCommandListener.java new file mode 100644 index 0000000000..868cb2d388 --- /dev/null +++ b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlCommandListener.java @@ -0,0 +1,49 @@ +/* + * Copyright 2021-2023 Aklivity Inc + * + * Licensed under the Aklivity Community License (the "License"); you may not use + * this file except in compliance with the License. You may obtain a copy of the + * License at + * + * https://www.aklivity.io/aklivity-community-license/ + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OF ANY KIND, either express or implied. See the License for the + * specific language governing permissions and limitations under the License. + */ +package io.aklivity.zilla.runtime.binding.pgsql.parser.listener; + +import io.aklivity.zilla.runtime.binding.pgsql.parser.PostgreSqlParser; +import io.aklivity.zilla.runtime.binding.pgsql.parser.PostgreSqlParserBaseListener; + +public class SqlCommandListener extends PostgreSqlParserBaseListener +{ + private String command; + + public String command() + { + return command; + } + + @Override + public void enterCreatestmt( + PostgreSqlParser.CreatestmtContext ctx) + { + command = "CREATE TABLE"; + } + + @Override + public void enterCreatematviewstmt( + PostgreSqlParser.CreatematviewstmtContext ctx) + { + command = "CREATE MATERIALIZED VIEW"; + } + + @Override + public void enterDropstmt( + PostgreSqlParser.DropstmtContext ctx) + { + command = "DROP %s".formatted(ctx.object_type_any_name().getText()); + } +} diff --git a/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/module/TableInfo.java b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/module/TableInfo.java index ddfe51847b..6244ae7534 100644 --- a/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/module/TableInfo.java +++ b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/module/TableInfo.java @@ -1,3 +1,17 @@ +/* + * Copyright 2021-2023 Aklivity Inc + * + * Licensed under the Aklivity Community License (the "License"); you may not use + * this file except in compliance with the License. You may obtain a copy of the + * License at + * + * https://www.aklivity.io/aklivity-community-license/ + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OF ANY KIND, either express or implied. See the License for the + * specific language governing permissions and limitations under the License. + */ package io.aklivity.zilla.runtime.binding.pgsql.parser.module; import java.util.Map; diff --git a/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/module/ViewInfo.java b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/module/ViewInfo.java index 027a42da00..a046cc1b70 100644 --- a/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/module/ViewInfo.java +++ b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/module/ViewInfo.java @@ -1,3 +1,17 @@ +/* + * Copyright 2021-2023 Aklivity Inc + * + * Licensed under the Aklivity Community License (the "License"); you may not use + * this file except in compliance with the License. You may obtain a copy of the + * License at + * + * https://www.aklivity.io/aklivity-community-license/ + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OF ANY KIND, either express or implied. See the License for the + * specific language governing permissions and limitations under the License. + */ package io.aklivity.zilla.runtime.binding.pgsql.parser.module; public record ViewInfo( diff --git a/incubator/binding-pgsql/src/main/moditect/module-info.java b/incubator/binding-pgsql/src/main/moditect/module-info.java index 3868d46eb3..b7d54cd88f 100644 --- a/incubator/binding-pgsql/src/main/moditect/module-info.java +++ b/incubator/binding-pgsql/src/main/moditect/module-info.java @@ -16,6 +16,8 @@ { requires io.aklivity.zilla.runtime.engine; + exports io.aklivity.zilla.runtime.binding.pgsql.parser; + provides io.aklivity.zilla.runtime.engine.binding.BindingFactorySpi with io.aklivity.zilla.runtime.binding.pgsql.internal.PgsqlBindingFactorySpi; } From 67aacf663c193f4b1f3ee216f9f1f8c5de9ba36d Mon Sep 17 00:00:00 2001 From: Akram Yakubov Date: Wed, 16 Oct 2024 17:05:42 -0700 Subject: [PATCH 08/26] WIP --- .../zilla/specs/binding/pgsql/kafka/config/proxy.yaml | 2 +- .../runtime/binding/pgsql/parser/PostgreSqlParser.g4 | 8 +++++++- .../zilla/runtime/binding/pgsql/parser/PgsqlParser.java | 6 +++--- .../binding/pgsql/parser/listener/SqlCommandListener.java | 2 +- ...ableListener.java => SqlCreateTableTopicListener.java} | 2 +- 5 files changed, 13 insertions(+), 7 deletions(-) rename incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/{SqlCreateTableListener.java => SqlCreateTableTopicListener.java} (97%) diff --git a/incubator/binding-pgsql-kafka.spec/src/main/scripts/io/aklivity/zilla/specs/binding/pgsql/kafka/config/proxy.yaml b/incubator/binding-pgsql-kafka.spec/src/main/scripts/io/aklivity/zilla/specs/binding/pgsql/kafka/config/proxy.yaml index ed7e7b8a13..d4584a4b94 100644 --- a/incubator/binding-pgsql-kafka.spec/src/main/scripts/io/aklivity/zilla/specs/binding/pgsql/kafka/config/proxy.yaml +++ b/incubator/binding-pgsql-kafka.spec/src/main/scripts/io/aklivity/zilla/specs/binding/pgsql/kafka/config/proxy.yaml @@ -24,7 +24,7 @@ catalogs: schema: |- { "schemaType": "AVRO", - "schema": "{\"type\": \"record\", \"name\": \"cities\", \"namespace\": \"dev\", \"fields\": [ {\"name\": \"id\", \"type\": \"string\"}, {\"name\": \"city\", \"type\": \"string\"}]}" + "schema": "{\"type\": \"record\", \"name\": \"cities\", \"namespace\": \"dev\", \"fields\": [ {\"name\": \"city\", \"type\": \"string\"}, {\"name\": \"id\", \"type\": \"string\"}]}" } bindings: app0: diff --git a/incubator/binding-pgsql/src/main/antlr4/io/aklivity/zilla/runtime/binding/pgsql/parser/PostgreSqlParser.g4 b/incubator/binding-pgsql/src/main/antlr4/io/aklivity/zilla/runtime/binding/pgsql/parser/PostgreSqlParser.g4 index 6f051ceb2d..3d4213bf2a 100644 --- a/incubator/binding-pgsql/src/main/antlr4/io/aklivity/zilla/runtime/binding/pgsql/parser/PostgreSqlParser.g4 +++ b/incubator/binding-pgsql/src/main/antlr4/io/aklivity/zilla/runtime/binding/pgsql/parser/PostgreSqlParser.g4 @@ -676,8 +676,9 @@ opt_with_stream | ; + createstmt - : CREATE opttemp TABLE (IF_P NOT EXISTS)? qualified_name ( + : CREATE opttemp opttable_type (IF_P NOT EXISTS)? qualified_name ( OPEN_PAREN opttableelementlist CLOSE_PAREN optinherit optpartitionspec table_access_method_clause optwith oncommitoption opttablespace | OF any_name opttypedtableelementlist optpartitionspec table_access_method_clause optwith oncommitoption opttablespace | PARTITION OF qualified_name opttypedtableelementlist partitionboundspec optpartitionspec table_access_method_clause optwith oncommitoption @@ -685,6 +686,11 @@ createstmt ) ; +opttable_type + : TABLE + | TOPIC + ; + opttemp : TEMPORARY | TEMP diff --git a/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/PgsqlParser.java b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/PgsqlParser.java index 8ae905173d..ef0351ac98 100644 --- a/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/PgsqlParser.java +++ b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/PgsqlParser.java @@ -24,7 +24,7 @@ import io.aklivity.zilla.runtime.binding.pgsql.parser.listener.SqlCommandListener; import io.aklivity.zilla.runtime.binding.pgsql.parser.listener.SqlCreateMaterializedViewListener; -import io.aklivity.zilla.runtime.binding.pgsql.parser.listener.SqlCreateTableListener; +import io.aklivity.zilla.runtime.binding.pgsql.parser.listener.SqlCreateTableTopicListener; import io.aklivity.zilla.runtime.binding.pgsql.parser.listener.SqlDropListener; import io.aklivity.zilla.runtime.binding.pgsql.parser.module.TableInfo; import io.aklivity.zilla.runtime.binding.pgsql.parser.module.ViewInfo; @@ -37,7 +37,7 @@ public final class PgsqlParser private final CommonTokenStream tokens; private final PostgreSqlParser parser; private final SqlCommandListener commandListener; - private final SqlCreateTableListener createTableListener; + private final SqlCreateTableTopicListener createTableListener; private final SqlCreateMaterializedViewListener createMaterializedViewListener; private final SqlDropListener dropListener; @@ -49,7 +49,7 @@ public PgsqlParser() this.parser = new PostgreSqlParser(null); this.tokens = new CommonTokenStream(lexer); this.commandListener = new SqlCommandListener(); - this.createTableListener = new SqlCreateTableListener(); + this.createTableListener = new SqlCreateTableTopicListener(); this.createMaterializedViewListener = new SqlCreateMaterializedViewListener(); this.dropListener = new SqlDropListener(); parser.setErrorHandler(errorStrategy); diff --git a/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlCommandListener.java b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlCommandListener.java index 868cb2d388..91b38d8004 100644 --- a/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlCommandListener.java +++ b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlCommandListener.java @@ -30,7 +30,7 @@ public String command() public void enterCreatestmt( PostgreSqlParser.CreatestmtContext ctx) { - command = "CREATE TABLE"; + command = "CREATE %s".formatted(ctx.opttable_type().getText()); } @Override diff --git a/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlCreateTableListener.java b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlCreateTableTopicListener.java similarity index 97% rename from incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlCreateTableListener.java rename to incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlCreateTableTopicListener.java index fce37e2a3e..56a2cf597f 100644 --- a/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlCreateTableListener.java +++ b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlCreateTableTopicListener.java @@ -24,7 +24,7 @@ import io.aklivity.zilla.runtime.binding.pgsql.parser.PostgreSqlParserBaseListener; import io.aklivity.zilla.runtime.binding.pgsql.parser.module.TableInfo; -public class SqlCreateTableListener extends PostgreSqlParserBaseListener +public class SqlCreateTableTopicListener extends PostgreSqlParserBaseListener { private String name; private final Map columns = new Object2ObjectHashMap<>(); From 449e63a119537953f4a287a81211a9d94e4cec4d Mon Sep 17 00:00:00 2001 From: Akram Yakubov Date: Wed, 16 Oct 2024 17:14:50 -0700 Subject: [PATCH 09/26] Revert back change --- .../binding/pgsql/kafka/streams/pgsql/drop.topic/client.rpt | 1 + 1 file changed, 1 insertion(+) diff --git a/incubator/binding-pgsql-kafka.spec/src/main/scripts/io/aklivity/zilla/specs/binding/pgsql/kafka/streams/pgsql/drop.topic/client.rpt b/incubator/binding-pgsql-kafka.spec/src/main/scripts/io/aklivity/zilla/specs/binding/pgsql/kafka/streams/pgsql/drop.topic/client.rpt index 5c4d5dd7af..8c5c8e65b0 100644 --- a/incubator/binding-pgsql-kafka.spec/src/main/scripts/io/aklivity/zilla/specs/binding/pgsql/kafka/streams/pgsql/drop.topic/client.rpt +++ b/incubator/binding-pgsql-kafka.spec/src/main/scripts/io/aklivity/zilla/specs/binding/pgsql/kafka/streams/pgsql/drop.topic/client.rpt @@ -34,6 +34,7 @@ write zilla:data.ext ${pgsql:dataEx() .build() .build()} write "DROP TOPIC cities;" + [0x00] write flush read advised zilla:flush ${pgsql:flushEx() From 526fc5a1091f382d7a1a2f4d4c1964272752b07e Mon Sep 17 00:00:00 2001 From: Akram Yakubov Date: Thu, 17 Oct 2024 12:05:52 -0700 Subject: [PATCH 10/26] WIP --- .../docker-image/src/main/docker/assembly.xml | 1 - .../src/main/moditect/module-info.java | 1 - .../binding/pgsql/parser/PostgreSqlParser.g4 | 1 - .../binding/pgsql/parser/PgsqlParser.java | 22 +++ .../parser/listener/SqlCommandListener.java | 14 ++ .../listener/SqlCreateFunctionListener.java | 77 +++++++++ .../listener/SqlCreateStreamListener.java | 58 +++++++ .../pgsql/parser/module/FunctionArgument.java | 7 + .../pgsql/parser/module/FunctionInfo.java | 26 +++ .../pgsql/parser/module/StreamInfo.java} | 18 +-- incubator/binding-risingwave/pom.xml | 6 +- .../statement/RisingwaveCommandTemplate.java | 110 ------------- .../RisingwaveCreateFunctionTemplate.java | 48 ++---- ...ingwaveCreateMaterializedViewTemplate.java | 36 +++-- .../RisingwaveCreateSinkTemplate.java | 19 ++- .../RisingwaveCreateSourceTemplate.java | 26 +-- .../RisingwaveCreateTableTemplate.java | 32 ++-- .../RisingwaveCreateTopicTemplate.java | 45 +++--- .../statement/RisingwaveDescribeTemplate.java | 10 +- .../statement/RisingwaveSqlCommandParser.java | 104 ------------ .../stream/RisingwaveProxyFactory.java | 153 ++++++------------ .../src/main/moditect/module-info.java | 1 - pom.xml | 5 - 23 files changed, 362 insertions(+), 458 deletions(-) create mode 100644 incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlCreateFunctionListener.java create mode 100644 incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlCreateStreamListener.java create mode 100644 incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/module/FunctionArgument.java create mode 100644 incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/module/FunctionInfo.java rename incubator/{binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveCreateTableCommand.java => binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/module/StreamInfo.java} (56%) delete mode 100644 incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveSqlCommandParser.java diff --git a/cloud/docker-image/src/main/docker/assembly.xml b/cloud/docker-image/src/main/docker/assembly.xml index eaf132aa3e..7e0d989f1a 100644 --- a/cloud/docker-image/src/main/docker/assembly.xml +++ b/cloud/docker-image/src/main/docker/assembly.xml @@ -66,7 +66,6 @@ org/junit/** com/google/** org/checkerframework/** - com/github/jsqlparser/** diff --git a/incubator/binding-pgsql-kafka/src/main/moditect/module-info.java b/incubator/binding-pgsql-kafka/src/main/moditect/module-info.java index ca4d84298d..56ccf3938d 100644 --- a/incubator/binding-pgsql-kafka/src/main/moditect/module-info.java +++ b/incubator/binding-pgsql-kafka/src/main/moditect/module-info.java @@ -14,7 +14,6 @@ */ module io.aklivity.zilla.runtime.binding.pgsql.kafka { - requires net.sf.jsqlparser; requires io.aklivity.zilla.runtime.engine; provides io.aklivity.zilla.runtime.engine.binding.BindingFactorySpi diff --git a/incubator/binding-pgsql/src/main/antlr4/io/aklivity/zilla/runtime/binding/pgsql/parser/PostgreSqlParser.g4 b/incubator/binding-pgsql/src/main/antlr4/io/aklivity/zilla/runtime/binding/pgsql/parser/PostgreSqlParser.g4 index 3d4213bf2a..99534e2007 100644 --- a/incubator/binding-pgsql/src/main/antlr4/io/aklivity/zilla/runtime/binding/pgsql/parser/PostgreSqlParser.g4 +++ b/incubator/binding-pgsql/src/main/antlr4/io/aklivity/zilla/runtime/binding/pgsql/parser/PostgreSqlParser.g4 @@ -676,7 +676,6 @@ opt_with_stream | ; - createstmt : CREATE opttemp opttable_type (IF_P NOT EXISTS)? qualified_name ( OPEN_PAREN opttableelementlist CLOSE_PAREN optinherit optpartitionspec table_access_method_clause optwith oncommitoption opttablespace diff --git a/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/PgsqlParser.java b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/PgsqlParser.java index ef0351ac98..1c7b703090 100644 --- a/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/PgsqlParser.java +++ b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/PgsqlParser.java @@ -23,9 +23,13 @@ import org.antlr.v4.runtime.tree.ParseTreeWalker; import io.aklivity.zilla.runtime.binding.pgsql.parser.listener.SqlCommandListener; +import io.aklivity.zilla.runtime.binding.pgsql.parser.listener.SqlCreateFunctionListener; import io.aklivity.zilla.runtime.binding.pgsql.parser.listener.SqlCreateMaterializedViewListener; +import io.aklivity.zilla.runtime.binding.pgsql.parser.listener.SqlCreateStreamListener; import io.aklivity.zilla.runtime.binding.pgsql.parser.listener.SqlCreateTableTopicListener; import io.aklivity.zilla.runtime.binding.pgsql.parser.listener.SqlDropListener; +import io.aklivity.zilla.runtime.binding.pgsql.parser.module.FunctionInfo; +import io.aklivity.zilla.runtime.binding.pgsql.parser.module.StreamInfo; import io.aklivity.zilla.runtime.binding.pgsql.parser.module.TableInfo; import io.aklivity.zilla.runtime.binding.pgsql.parser.module.ViewInfo; @@ -37,7 +41,9 @@ public final class PgsqlParser private final CommonTokenStream tokens; private final PostgreSqlParser parser; private final SqlCommandListener commandListener; + private final SqlCreateStreamListener createStreamListener; private final SqlCreateTableTopicListener createTableListener; + private final SqlCreateFunctionListener createFunctionListener; private final SqlCreateMaterializedViewListener createMaterializedViewListener; private final SqlDropListener dropListener; @@ -50,6 +56,8 @@ public PgsqlParser() this.tokens = new CommonTokenStream(lexer); this.commandListener = new SqlCommandListener(); this.createTableListener = new SqlCreateTableTopicListener(); + this.createStreamListener = new SqlCreateStreamListener(); + this.createFunctionListener = new SqlCreateFunctionListener(); this.createMaterializedViewListener = new SqlCreateMaterializedViewListener(); this.dropListener = new SqlDropListener(); parser.setErrorHandler(errorStrategy); @@ -69,6 +77,20 @@ public TableInfo parseCreateTable( return createTableListener.tableInfo(); } + public StreamInfo parseCreateStream( + String sql) + { + parser(sql, createStreamListener); + return createStreamListener.streamInfo(); + } + + public FunctionInfo parseCreateFunction( + String sql) + { + parser(sql, createFunctionListener); + return createFunctionListener.functionInfo(); + } + public ViewInfo parseCreateMaterializedView( String sql) { diff --git a/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlCommandListener.java b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlCommandListener.java index 91b38d8004..1b0f7f4861 100644 --- a/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlCommandListener.java +++ b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlCommandListener.java @@ -33,6 +33,13 @@ public void enterCreatestmt( command = "CREATE %s".formatted(ctx.opttable_type().getText()); } + @Override + public void enterCreatestreamstmt( + PostgreSqlParser.CreatestreamstmtContext ctx) + { + command = "CREATE STREAM"; + } + @Override public void enterCreatematviewstmt( PostgreSqlParser.CreatematviewstmtContext ctx) @@ -40,6 +47,13 @@ public void enterCreatematviewstmt( command = "CREATE MATERIALIZED VIEW"; } + @Override + public void enterCreatefunctionstmt( + PostgreSqlParser.CreatefunctionstmtContext ctx) + { + command = "CREATE FUNCTION"; + } + @Override public void enterDropstmt( PostgreSqlParser.DropstmtContext ctx) diff --git a/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlCreateFunctionListener.java b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlCreateFunctionListener.java new file mode 100644 index 0000000000..56f5e5dd7f --- /dev/null +++ b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlCreateFunctionListener.java @@ -0,0 +1,77 @@ +/* + * Copyright 2021-2023 Aklivity Inc + * + * Licensed under the Aklivity Community License (the "License"); you may not use + * this file except in compliance with the License. You may obtain a copy of the + * License at + * + * https://www.aklivity.io/aklivity-community-license/ + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OF ANY KIND, either express or implied. See the License for the + * specific language governing permissions and limitations under the License. + */ +package io.aklivity.zilla.runtime.binding.pgsql.parser.listener; + +import java.util.ArrayList; +import java.util.List; + +import io.aklivity.zilla.runtime.binding.pgsql.parser.PostgreSqlParser; +import io.aklivity.zilla.runtime.binding.pgsql.parser.PostgreSqlParserBaseListener; +import io.aklivity.zilla.runtime.binding.pgsql.parser.module.FunctionArgument; +import io.aklivity.zilla.runtime.binding.pgsql.parser.module.FunctionInfo; + +public class SqlCreateFunctionListener extends PostgreSqlParserBaseListener +{ + private String name; + private final List arguments = new ArrayList<>(); + private String returnType; + private String asFunction; + private String language; + + public FunctionInfo functionInfo() + { + return new FunctionInfo(name, arguments, returnType, asFunction, language); + } + + @Override + public void enterCreatefunctionstmt( + PostgreSqlParser.CreatefunctionstmtContext ctx) + { + name = ctx.func_name().getText(); + } + + @Override + public void enterFunc_args( + PostgreSqlParser.Func_argsContext ctx) + { + ctx.func_args_list().func_arg().forEach(arg -> + { + String argName = arg.param_name() != null ? arg.param_name().getText() : null; + String argType = arg.func_type().getText(); + arguments.add(new FunctionArgument(argName, argType)); + }); + } + + @Override + public void enterFunc_type( + PostgreSqlParser.Func_typeContext ctx) + { + returnType = ctx.typename().getText(); + } + + @Override + public void enterFunc_as( + PostgreSqlParser.Func_asContext ctx) + { + asFunction = ctx.getText(); + } + + @Override + public void enterNonreservedword_or_sconst( + PostgreSqlParser.Nonreservedword_or_sconstContext ctx) + { + language = ctx.getText(); + } +} diff --git a/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlCreateStreamListener.java b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlCreateStreamListener.java new file mode 100644 index 0000000000..cb922d14f7 --- /dev/null +++ b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlCreateStreamListener.java @@ -0,0 +1,58 @@ +/* + * Copyright 2021-2023 Aklivity Inc + * + * Licensed under the Aklivity Community License (the "License"); you may not use + * this file except in compliance with the License. You may obtain a copy of the + * License at + * + * https://www.aklivity.io/aklivity-community-license/ + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OF ANY KIND, either express or implied. See the License for the + * specific language governing permissions and limitations under the License. + */ +package io.aklivity.zilla.runtime.binding.pgsql.parser.listener; + +import java.util.Map; + +import org.agrona.collections.Object2ObjectHashMap; + +import io.aklivity.zilla.runtime.binding.pgsql.parser.PostgreSqlParser; +import io.aklivity.zilla.runtime.binding.pgsql.parser.PostgreSqlParserBaseListener; +import io.aklivity.zilla.runtime.binding.pgsql.parser.module.StreamInfo; + +public class SqlCreateStreamListener extends PostgreSqlParserBaseListener +{ + private String name; + private final Map columns = new Object2ObjectHashMap<>(); + + public StreamInfo streamInfo() + { + return new StreamInfo(name, columns); + } + + @Override + public void enterQualified_name( + PostgreSqlParser.Qualified_nameContext ctx) + { + name = ctx.getText(); + } + + @Override + public void enterCreatestreamstmt( + PostgreSqlParser.CreatestreamstmtContext ctx) + { + columns.clear(); + + if (ctx.stream_columns() != null) + { + for (PostgreSqlParser.Stream_columnContext streamElement : ctx.stream_columns().stream_column()) + { + String columnName = streamElement.colid().getText(); + String dataType = streamElement.typename().getText(); + columns.put(columnName, dataType); + } + } + } +} diff --git a/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/module/FunctionArgument.java b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/module/FunctionArgument.java new file mode 100644 index 0000000000..d9e140e804 --- /dev/null +++ b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/module/FunctionArgument.java @@ -0,0 +1,7 @@ +package io.aklivity.zilla.runtime.binding.pgsql.parser.module; + +public record FunctionArgument( + String name, + String type) +{ +} diff --git a/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/module/FunctionInfo.java b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/module/FunctionInfo.java new file mode 100644 index 0000000000..ff63e0f7d6 --- /dev/null +++ b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/module/FunctionInfo.java @@ -0,0 +1,26 @@ +/* + * Copyright 2021-2023 Aklivity Inc + * + * Licensed under the Aklivity Community License (the "License"); you may not use + * this file except in compliance with the License. You may obtain a copy of the + * License at + * + * https://www.aklivity.io/aklivity-community-license/ + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OF ANY KIND, either express or implied. See the License for the + * specific language governing permissions and limitations under the License. + */ +package io.aklivity.zilla.runtime.binding.pgsql.parser.module; + +import java.util.List; + +public record FunctionInfo( + String name, + List arguments, + String returnType, + String asFunction, + String language) +{ +} diff --git a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveCreateTableCommand.java b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/module/StreamInfo.java similarity index 56% rename from incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveCreateTableCommand.java rename to incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/module/StreamInfo.java index 02c14773b0..5c8db5dc69 100644 --- a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveCreateTableCommand.java +++ b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/module/StreamInfo.java @@ -12,22 +12,12 @@ * WARRANTIES OF ANY KIND, either express or implied. See the License for the * specific language governing permissions and limitations under the License. */ -package io.aklivity.zilla.runtime.binding.risingwave.internal.statement; +package io.aklivity.zilla.runtime.binding.pgsql.parser.module; import java.util.Map; -import net.sf.jsqlparser.statement.create.table.CreateTable; - -public final class RisingwaveCreateTableCommand +public record StreamInfo( + String name, + Map columns) { - public final CreateTable createTable; - public final Map includes; - - public RisingwaveCreateTableCommand( - CreateTable createTable, - Map includes) - { - this.createTable = createTable; - this.includes = includes; - } } diff --git a/incubator/binding-risingwave/pom.xml b/incubator/binding-risingwave/pom.xml index 98571514a4..1e2fc5de7c 100644 --- a/incubator/binding-risingwave/pom.xml +++ b/incubator/binding-risingwave/pom.xml @@ -42,8 +42,9 @@ provided - com.github.jsqlparser - jsqlparser + io.aklivity.zilla + binding-pgsql + provided ${project.groupId} @@ -195,7 +196,6 @@ io/aklivity/zilla/runtime/binding/risingwave/internal/types/**/*.class - net/sf/jsqlparser/parser/* diff --git a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveCommandTemplate.java b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveCommandTemplate.java index bb65d54a24..e510e40e94 100644 --- a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveCommandTemplate.java +++ b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveCommandTemplate.java @@ -14,23 +14,13 @@ */ package io.aklivity.zilla.runtime.binding.risingwave.internal.statement; -import java.io.StringReader; -import java.util.LinkedHashMap; -import java.util.List; import java.util.Map; -import org.agrona.DirectBuffer; import org.agrona.collections.Object2ObjectHashMap; -import net.sf.jsqlparser.parser.CCJSqlParserManager; -import net.sf.jsqlparser.statement.create.table.CreateTable; -import net.sf.jsqlparser.statement.create.table.Index; public abstract class RisingwaveCommandTemplate { - private final CCJSqlParserManager parserManager = new CCJSqlParserManager(); - private final Map includeMap = new LinkedHashMap<>(); - protected final StringBuilder fieldBuilder = new StringBuilder(); protected final StringBuilder includeBuilder = new StringBuilder(); protected static final Map ZILLA_MAPPINGS = new Object2ObjectHashMap<>(); @@ -48,104 +38,4 @@ public abstract class RisingwaveCommandTemplate ZILLA_INCLUDE_TYPE_MAPPINGS.put("zilla_identity", "VARCHAR"); ZILLA_INCLUDE_TYPE_MAPPINGS.put("timestamp", "TIMESTAMP"); } - - public String primaryKey( - CreateTable statement) - { - String primaryKey = null; - - final List indexes = statement.getIndexes(); - - if (indexes != null && !indexes.isEmpty()) - { - match: - for (Index index : indexes) - { - if ("PRIMARY KEY".equalsIgnoreCase(index.getType())) - { - final List primaryKeyColumns = index.getColumns(); - primaryKey = primaryKeyColumns.get(0).columnName; - break match; - } - } - } - - return primaryKey; - } - - public RisingwaveCreateTableCommand parserCreateTable( - DirectBuffer buffer, - int offset, - int length) - { - String query = buffer.getStringWithoutLengthUtf8(offset, length); - query = query.replaceAll("(?i)\\bCREATE\\s+STREAM\\b", "CREATE TABLE"); - - int includeIndex = query.indexOf("INCLUDE"); - - String createTablePart; - String includePart = null; - - CreateTable createTable = null; - Map includes = null; - - if (includeIndex != -1) - { - createTablePart = query.substring(0, includeIndex).trim(); - includePart = query.substring(includeIndex).trim(); - } - else - { - createTablePart = query.trim(); - } - - try - { - createTable = (CreateTable) parserManager.parse(new StringReader(createTablePart)); - } - catch (Exception ignore) - { - } - - if (includePart != null) - { - includes = parseSpecificIncludes(includePart); - } - - return new RisingwaveCreateTableCommand(createTable, includes); - } - - private Map parseSpecificIncludes( - String includePart) - { - String[] includeClauses = includePart.toLowerCase().split("include"); - for (String clause : includeClauses) - { - clause = clause.trim(); - if (!clause.isEmpty()) - { - String[] parts = clause.toLowerCase().split("as"); - if (parts.length == 2) - { - String key = parts[0].trim(); - String value = parts[1].trim().replace(";", ""); - - if (isValidInclude(key)) - { - includeMap.put(key, value); - } - } - } - } - - return includeMap; - } - - private static boolean isValidInclude( - String key) - { - return "zilla_correlation_id".equals(key) || - "zilla_identity".equals(key) || - "timestamp".equals(key); - } } diff --git a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveCreateFunctionTemplate.java b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveCreateFunctionTemplate.java index 6c687b2e90..ef8b038877 100644 --- a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveCreateFunctionTemplate.java +++ b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveCreateFunctionTemplate.java @@ -16,9 +16,8 @@ import java.util.List; +import io.aklivity.zilla.runtime.binding.pgsql.parser.module.FunctionInfo; import io.aklivity.zilla.runtime.binding.risingwave.config.RisingwaveUdfConfig; -import net.sf.jsqlparser.statement.Statement; -import net.sf.jsqlparser.statement.create.function.CreateFunction; public class RisingwaveCreateFunctionTemplate extends RisingwaveCommandTemplate { @@ -30,8 +29,8 @@ public class RisingwaveCreateFunctionTemplate extends RisingwaveCommandTemplate LANGUAGE %s USING LINK '%s';\u0000"""; - private final String java; - private final String python; + private final String javaServer; + private final String pythonServer; public RisingwaveCreateFunctionTemplate( List udfs) @@ -54,43 +53,24 @@ else if (udf.language.equalsIgnoreCase("python")) } } - this.java = javaServer; - this.python = pythonServer; + this.javaServer = javaServer; + this.pythonServer = pythonServer; } public String generate( - Statement statement) + FunctionInfo functionInfo) { - CreateFunction createFunction = (CreateFunction) statement; - List parts = createFunction.getFunctionDeclarationParts(); + String functionName = functionInfo.name(); - String functionName = parts.get(0); + List parameters = functionInfo.arguments().stream() + .map(arg -> arg.name() != null ? "%s %s".formatted(arg.name(), arg.type()) : arg.type()) + .toList(); - int paramStartIndex = parts.indexOf("("); - int paramEndIndex = parts.indexOf(")"); - String parameters = paramStartIndex >= 0 && paramEndIndex > paramStartIndex - ? String.join(" ", parts.subList(paramStartIndex + 1, paramEndIndex)) - : ""; + String language = functionInfo.language(); + String server = "python".equalsIgnoreCase(language) ? pythonServer : javaServer; + String returnType = functionInfo.returnType(); - int returnsIndex = parts.indexOf("RETURNS"); - String returnType = returnsIndex >= 0 ? parts.get(returnsIndex + 1) : ""; - - if (returnsIndex >= 0) - { - int nextKeywordIndex = findNextKeywordIndex(parts, returnsIndex + 1); - returnType = nextKeywordIndex >= 0 - ? String.join(" ", parts.subList(returnsIndex + 1, nextKeywordIndex)) - : String.join(" ", parts.subList(returnsIndex + 1, parts.size())); - } - - int asIndex = parts.indexOf("AS"); - String body = asIndex >= 0 ? parts.get(asIndex + 1) : ""; - - int langIndex = parts.indexOf("LANGUAGE"); - String language = langIndex >= 0 ? parts.get(langIndex + 1) : "java"; - - return sqlFormat.formatted(functionName, parameters, returnType.trim(), body, language, - "python".equalsIgnoreCase(language) ? python : java); + return sqlFormat.formatted(functionName, parameters, returnType, "", language, server); } private int findNextKeywordIndex( diff --git a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveCreateMaterializedViewTemplate.java b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveCreateMaterializedViewTemplate.java index 4a57891eb3..0e3f9ea80e 100644 --- a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveCreateMaterializedViewTemplate.java +++ b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveCreateMaterializedViewTemplate.java @@ -14,8 +14,12 @@ */ package io.aklivity.zilla.runtime.binding.risingwave.internal.statement; -import net.sf.jsqlparser.statement.create.table.CreateTable; -import net.sf.jsqlparser.statement.create.view.CreateView; +import java.util.Map; +import java.util.stream.Collectors; + +import io.aklivity.zilla.runtime.binding.pgsql.parser.module.TableInfo; +import io.aklivity.zilla.runtime.binding.pgsql.parser.module.ViewInfo; + public class RisingwaveCreateMaterializedViewTemplate extends RisingwaveCommandTemplate { @@ -29,30 +33,34 @@ public RisingwaveCreateMaterializedViewTemplate() } public String generate( - CreateView createView) + ViewInfo viewInfo) { - String view = createView.getView().getName(); - String select = createView.getSelect().toString(); + String name = viewInfo.name(); + String select = viewInfo.select(); - return String.format(sqlFormat, view, select); + return String.format(sqlFormat, name, select); } public String generate( - RisingwaveCreateTableCommand command) + TableInfo tableInfo) { - CreateTable createTable = command.createTable; - String name = createTable.getTable().getName(); + String name = tableInfo.name(); String select = "*"; - if (command.includes != null) + Map includes = tableInfo.columns().entrySet().stream() + .filter(e -> ZILLA_MAPPINGS.containsKey(e.getKey())) + .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue)); + + if (!includes.isEmpty()) { fieldBuilder.setLength(0); - createTable.getColumnDefinitions() - .forEach(c -> fieldBuilder.append( - String.format(fieldFormat, c.getColumnName()))); - command.includes.forEach((k, v) -> + tableInfo.columns().values().stream() + .filter(c -> !ZILLA_MAPPINGS.containsKey(c)) + .forEach(c -> fieldBuilder.append(String.format(fieldFormat, c))); + + includes.forEach((k, v) -> { if ("timestamp".equals(k)) { diff --git a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveCreateSinkTemplate.java b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveCreateSinkTemplate.java index e30a55b5f3..d8263ecfcb 100644 --- a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveCreateSinkTemplate.java +++ b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveCreateSinkTemplate.java @@ -17,8 +17,8 @@ import java.util.Map; import java.util.Optional; -import net.sf.jsqlparser.statement.create.table.CreateTable; -import net.sf.jsqlparser.statement.create.view.CreateView; +import io.aklivity.zilla.runtime.binding.pgsql.parser.module.TableInfo; +import io.aklivity.zilla.runtime.binding.pgsql.parser.module.ViewInfo; public class RisingwaveCreateSinkTemplate extends RisingwaveCommandTemplate { @@ -51,9 +51,9 @@ public RisingwaveCreateSinkTemplate( public String generate( String database, Map columns, - CreateView createView) + ViewInfo viewInfo) { - String viewName = createView.getView().getName(); + String viewName = viewInfo.name(); Optional> primaryKeyMatch = columns.entrySet().stream() .filter(e -> "id".equalsIgnoreCase(e.getKey())) @@ -74,19 +74,18 @@ public String generate( public String generate( String database, - String primaryKey, - CreateTable createTable) + TableInfo tableInfo) { - String table = createTable.getTable().getName(); + String table = tableInfo.name(); return String.format(sqlKafkaFormat, table, table, bootstrapServer, database, table, - primaryKeyFormat.formatted(primaryKey), schemaRegistry); + primaryKeyFormat.formatted(tableInfo.primaryKeys().stream().findFirst().get()), schemaRegistry); } public String generate( - CreateTable createTable) + TableInfo tableInfo) { - String table = createTable.getTable().getName(); + String table = tableInfo.name(); return String.format(sqlFormat, table, table, table); } diff --git a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveCreateSourceTemplate.java b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveCreateSourceTemplate.java index 1e64e8456d..52e890aef9 100644 --- a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveCreateSourceTemplate.java +++ b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveCreateSourceTemplate.java @@ -15,6 +15,10 @@ package io.aklivity.zilla.runtime.binding.risingwave.internal.statement; import java.util.Map; +import java.util.stream.Collectors; + +import io.aklivity.zilla.runtime.binding.pgsql.parser.module.StreamInfo; +import io.aklivity.zilla.runtime.binding.pgsql.parser.module.TableInfo; public class RisingwaveCreateSourceTemplate extends RisingwaveCommandTemplate { @@ -46,13 +50,15 @@ public RisingwaveCreateSourceTemplate( public String generateStreamSource( String database, - RisingwaveCreateTableCommand command) + StreamInfo streamInfo) { - String table = command.createTable.getTable().getName(); + String table = streamInfo.name(); includeBuilder.setLength(0); - final Map includes = command.includes; - if (includes != null && !includes.isEmpty()) + Map includes = streamInfo.columns().entrySet().stream() + .filter(e -> ZILLA_MAPPINGS.containsKey(e.getKey())) + .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue)); + if (!includes.isEmpty()) { includeBuilder.append("\n"); includes.forEach((k, v) -> includeBuilder.append(String.format(ZILLA_MAPPINGS.get(k), v))); @@ -64,14 +70,17 @@ public String generateStreamSource( public String generateTableSource( String database, - RisingwaveCreateTableCommand command) + TableInfo tableInfo) { - String table = command.createTable.getTable().getName(); + String table = tableInfo.name(); String sourceName = "%s_source".formatted(table); includeBuilder.setLength(0); - final Map includes = command.includes; - if (includes != null && !includes.isEmpty()) + Map includes = tableInfo.columns().entrySet().stream() + .filter(e -> ZILLA_MAPPINGS.containsKey(e.getKey())) + .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue)); + + if (!includes.isEmpty()) { includeBuilder.append("\n"); includes.forEach((k, v) -> @@ -84,7 +93,6 @@ public String generateTableSource( { includeBuilder.append(String.format(ZILLA_MAPPINGS.get(k), "zilla_%s_header".formatted(v))); } - }); includeBuilder.delete(includeBuilder.length() - 1, includeBuilder.length()); } diff --git a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveCreateTableTemplate.java b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveCreateTableTemplate.java index 9e8f98acf0..207cd871fe 100644 --- a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveCreateTableTemplate.java +++ b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveCreateTableTemplate.java @@ -14,7 +14,10 @@ */ package io.aklivity.zilla.runtime.binding.risingwave.internal.statement; -import net.sf.jsqlparser.statement.create.table.CreateTable; +import java.util.Map; +import java.util.stream.Collectors; + +import io.aklivity.zilla.runtime.binding.pgsql.parser.module.TableInfo; public class RisingwaveCreateTableTemplate extends RisingwaveCommandTemplate { @@ -28,24 +31,25 @@ public RisingwaveCreateTableTemplate() } public String generate( - RisingwaveCreateTableCommand command) + TableInfo tableInfo) { - CreateTable createTable = command.createTable; - String topic = createTable.getTable().getName(); - String primaryKeyField = primaryKey(createTable); - String primaryKey = primaryKeyField != null ? String.format(primaryKeyFormat, primaryKeyField) : ""; + String topic = tableInfo.name(); + String primaryKey = !tableInfo.primaryKeys().isEmpty() + ? String.format(primaryKeyFormat, tableInfo.primaryKeys().stream().findFirst().get()) + : ""; fieldBuilder.setLength(0); - createTable.getColumnDefinitions() - .forEach(c -> fieldBuilder.append( - String.format(fieldFormat, c.getColumnName(), c.getColDataType().getDataType()))); + tableInfo.columns() + .forEach((k, v) -> fieldBuilder.append( + String.format(fieldFormat, k, v))); + + Map includes = tableInfo.columns().entrySet().stream() + .filter(e -> ZILLA_MAPPINGS.containsKey(e.getKey())) + .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue)); - if (command.includes != null) - { - command.includes.forEach((k, v) -> fieldBuilder.append( - String.format(fieldFormat, v, ZILLA_INCLUDE_TYPE_MAPPINGS.get(k)))); - } + includes.forEach((k, v) -> fieldBuilder.append( + String.format(fieldFormat, v, ZILLA_INCLUDE_TYPE_MAPPINGS.get(k)))); fieldBuilder.delete(fieldBuilder.length() - 2, fieldBuilder.length()); diff --git a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveCreateTopicTemplate.java b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveCreateTopicTemplate.java index f088a3111a..b6d56e6980 100644 --- a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveCreateTopicTemplate.java +++ b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveCreateTopicTemplate.java @@ -16,8 +16,9 @@ import java.util.Map; -import net.sf.jsqlparser.statement.create.table.CreateTable; -import net.sf.jsqlparser.statement.create.view.CreateView; +import io.aklivity.zilla.runtime.binding.pgsql.parser.module.StreamInfo; +import io.aklivity.zilla.runtime.binding.pgsql.parser.module.TableInfo; +import io.aklivity.zilla.runtime.binding.pgsql.parser.module.ViewInfo; public class RisingwaveCreateTopicTemplate extends RisingwaveCommandTemplate { @@ -34,17 +35,18 @@ public RisingwaveCreateTopicTemplate() } public String generate( - CreateTable createTable) + TableInfo tableInfo) { - String topic = createTable.getTable().getName(); - String primaryKeyField = primaryKey(createTable); - String primaryKey = primaryKeyField != null ? String.format(primaryKeyFormat, primaryKeyField) : ""; + String topic = tableInfo.name(); + String primaryKey = !tableInfo.primaryKeys().isEmpty() + ? String.format(primaryKeyFormat, tableInfo.primaryKeys().stream().findFirst().get()) + : ""; fieldBuilder.setLength(0); - createTable.getColumnDefinitions() - .forEach(c -> fieldBuilder.append( - String.format(fieldFormat, c.getColumnName(), c.getColDataType().getDataType()))); + tableInfo.columns() + .forEach((k, v) -> fieldBuilder.append( + String.format(fieldFormat, k, v))); fieldBuilder.delete(fieldBuilder.length() - 2, fieldBuilder.length()); @@ -52,35 +54,26 @@ public String generate( } public String generate( - RisingwaveCreateTableCommand command) + StreamInfo streamInfo) { - CreateTable createTable = command.createTable; - String topic = createTable.getTable().getName(); - String primaryKeyField = primaryKey(createTable); - String primaryKey = primaryKeyField != null ? String.format(primaryKeyFormat, primaryKeyField) : ""; + String topic = streamInfo.name(); fieldBuilder.setLength(0); - createTable.getColumnDefinitions() - .forEach(c -> fieldBuilder.append( - String.format(fieldFormat, c.getColumnName(), c.getColDataType().getDataType()))); - - if (command.includes != null) - { - command.includes.forEach((k, v) -> fieldBuilder.append( - String.format(fieldFormat, v, ZILLA_INCLUDE_TYPE_MAPPINGS.get(k)))); - } + streamInfo.columns() + .forEach((k, v) -> fieldBuilder.append( + String.format(fieldFormat, k, v))); fieldBuilder.delete(fieldBuilder.length() - 2, fieldBuilder.length()); - return String.format(sqlFormat, topic, fieldBuilder, primaryKey); + return String.format(sqlFormat, topic, fieldBuilder, ""); } public String generate( - CreateView createView, + ViewInfo viewInfo, Map columns) { - String topic = createView.getView().getName(); + String topic = viewInfo.name(); primaryKeyBuilder.setLength(0); columns.keySet().forEach(k -> primaryKeyBuilder.append(k).append(", ")); diff --git a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveDescribeTemplate.java b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveDescribeTemplate.java index 238d75bb06..7f5feed609 100644 --- a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveDescribeTemplate.java +++ b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveDescribeTemplate.java @@ -14,8 +14,7 @@ */ package io.aklivity.zilla.runtime.binding.risingwave.internal.statement; -import net.sf.jsqlparser.statement.Statement; -import net.sf.jsqlparser.statement.create.view.CreateView; +import io.aklivity.zilla.runtime.binding.pgsql.parser.module.ViewInfo; public class RisingwaveDescribeTemplate extends RisingwaveCommandTemplate { @@ -27,11 +26,10 @@ public RisingwaveDescribeTemplate() } public String generate( - Statement statement) + ViewInfo viewInfo) { - CreateView createView = (CreateView) statement; - String view = createView.getView().getName(); + String name = viewInfo.name(); - return String.format(sqlFormat, view); + return String.format(sqlFormat, name); } } diff --git a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveSqlCommandParser.java b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveSqlCommandParser.java deleted file mode 100644 index a3ddf19ed0..0000000000 --- a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveSqlCommandParser.java +++ /dev/null @@ -1,104 +0,0 @@ -/* - * Copyright 2021-2023 Aklivity Inc - * - * Licensed under the Aklivity Community License (the "License"); you may not use - * this file except in compliance with the License. You may obtain a copy of the - * License at - * - * https://www.aklivity.io/aklivity-community-license/ - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OF ANY KIND, either express or implied. See the License for the - * specific language governing permissions and limitations under the License. - */ -package io.aklivity.zilla.runtime.binding.risingwave.internal.statement; - -import java.nio.charset.StandardCharsets; -import java.util.regex.Matcher; -import java.util.regex.Pattern; - -import io.aklivity.zilla.runtime.binding.risingwave.internal.config.RisingwaveCommandType; - -public final class RisingwaveSqlCommandParser -{ - private static final String SQL_FUNCTION_PATTERN = - "CREATE\\s+FUNCTION[\\s\\S]+?\\$\\$[\\s\\S]+?\\$\\$"; - private static final String SQL_COMMAND_PATTERN = - "(?i)\\b(CREATE FUNCTION)\\b.*?\\$\\$(.*?)\\$\\$\\s*;[\\x00\\n]*" + - "|\\b(CREATE FUNCTION)\\b.*?RETURNS .*?AS.*?;[\\x00\\n]*" + - "|\\b(CREATE MATERIALIZED VIEW|CREATE SOURCE|CREATE SINK|CREATE INDEX|CREATE STREAM" + - "|CREATE VIEW|SHOW TABLES|DESCRIBE|SHOW)\\b.*?;[\\x00\\n]*" + - "|\\b(SELECT|INSERT|UPDATE|DELETE|ALTER|DROP|CREATE TABLE|CREATE SCHEMA|CREATE DATABASE)\\b.*?;[\\x00\\n]*" + - "|\\b(SET)\\b\\s+.*?=.*[\\x00\\n]*"; - - private final Pattern functionPattern = Pattern.compile(SQL_FUNCTION_PATTERN, Pattern.CASE_INSENSITIVE); - private final Pattern sqlPattern = Pattern.compile(SQL_COMMAND_PATTERN, Pattern.DOTALL); - - public RisingwaveSqlCommandParser() - { - } - - public String detectFirstSQLCommand( - String input) - { - String command = null; - Matcher matcher = sqlPattern.matcher(input); - - if (matcher.find()) - { - command = matcher.group(); - } - - return command; - } - - public RisingwaveCommandType decodeCommandType( - String input) - { - RisingwaveCommandType matchingCommand = RisingwaveCommandType.UNKNOWN_COMMAND; - - command: - for (RisingwaveCommandType command : RisingwaveCommandType.values()) - { - byte[] strBytes = input.getBytes(StandardCharsets.UTF_8); - byte[] prefixBytes = command.value(); - - boolean match = strBytes.length > prefixBytes.length; - - if (match) - { - for (int i = 0; i < prefixBytes.length; i++) - { - if (strBytes[i] != prefixBytes[i]) - { - match = false; - break; - } - } - } - - if (match) - { - matchingCommand = command; - break command; - } - } - - if (matchingCommand == RisingwaveCommandType.CREATE_FUNCTION_COMMAND && - isEmbeddedFunction(input)) - { - matchingCommand = RisingwaveCommandType.UNKNOWN_COMMAND; - } - - - return matchingCommand; - } - - private boolean isEmbeddedFunction( - String sqlQuery) - { - Matcher matcher = functionPattern.matcher(sqlQuery); - return matcher.find(); - } -} diff --git a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/stream/RisingwaveProxyFactory.java b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/stream/RisingwaveProxyFactory.java index 3037753452..e26714c506 100644 --- a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/stream/RisingwaveProxyFactory.java +++ b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/stream/RisingwaveProxyFactory.java @@ -17,9 +17,6 @@ import static io.aklivity.zilla.runtime.engine.buffer.BufferPool.NO_SLOT; import static java.util.Objects.requireNonNull; -import java.io.InputStreamReader; -import java.io.Reader; -import java.io.StringReader; import java.nio.ByteOrder; import java.util.ArrayList; import java.util.LinkedHashMap; @@ -36,14 +33,16 @@ import org.agrona.collections.LongArrayQueue; import org.agrona.collections.Object2ObjectHashMap; import org.agrona.concurrent.UnsafeBuffer; -import org.agrona.io.DirectBufferInputStream; +import io.aklivity.zilla.runtime.binding.pgsql.parser.PgsqlParser; +import io.aklivity.zilla.runtime.binding.pgsql.parser.module.FunctionInfo; +import io.aklivity.zilla.runtime.binding.pgsql.parser.module.StreamInfo; +import io.aklivity.zilla.runtime.binding.pgsql.parser.module.TableInfo; +import io.aklivity.zilla.runtime.binding.pgsql.parser.module.ViewInfo; import io.aklivity.zilla.runtime.binding.risingwave.internal.RisingwaveConfiguration; import io.aklivity.zilla.runtime.binding.risingwave.internal.config.RisingwaveBindingConfig; import io.aklivity.zilla.runtime.binding.risingwave.internal.config.RisingwaveCommandType; import io.aklivity.zilla.runtime.binding.risingwave.internal.config.RisingwaveRouteConfig; -import io.aklivity.zilla.runtime.binding.risingwave.internal.statement.RisingwaveCreateTableCommand; -import io.aklivity.zilla.runtime.binding.risingwave.internal.statement.RisingwaveSqlCommandParser; import io.aklivity.zilla.runtime.binding.risingwave.internal.types.Flyweight; import io.aklivity.zilla.runtime.binding.risingwave.internal.types.OctetsFW; import io.aklivity.zilla.runtime.binding.risingwave.internal.types.String32FW; @@ -65,13 +64,10 @@ import io.aklivity.zilla.runtime.engine.buffer.BufferPool; import io.aklivity.zilla.runtime.engine.catalog.CatalogHandler; import io.aklivity.zilla.runtime.engine.config.BindingConfig; -import net.sf.jsqlparser.parser.CCJSqlParserManager; -import net.sf.jsqlparser.statement.Statement; -import net.sf.jsqlparser.statement.create.function.CreateFunction; -import net.sf.jsqlparser.statement.create.view.CreateView; public final class RisingwaveProxyFactory implements RisingwaveStreamFactory { + private static final String SPLIT_STATEMENTS = "\"(?<=;)(?!\\x00)\""; private static final int END_OF_FIELD = 0x00; private static final int FLAGS_INIT = 0x02; @@ -86,10 +82,7 @@ public final class RisingwaveProxyFactory implements RisingwaveStreamFactory private static final OctetsFW EMPTY_OCTETS = new OctetsFW().wrap(EMPTY_BUFFER, 0, 0); private static final Consumer EMPTY_EXTENSION = ex -> {}; - private final RisingwaveSqlCommandParser sqlCommandParser = new RisingwaveSqlCommandParser(); - private final CCJSqlParserManager parserManager = new CCJSqlParserManager(); - private final DirectBufferInputStream inputStream = new DirectBufferInputStream(EMPTY_BUFFER); - private final Reader reader = new InputStreamReader(inputStream); + private final PgsqlParser parser = new PgsqlParser(); private final BeginFW beginRO = new BeginFW(); private final DataFW dataRO = new DataFW(); @@ -731,23 +724,16 @@ private void doParseQuery( { final MutableDirectBuffer parserBuffer = bufferPool.buffer(parserSlot); - int progress = 0; + String sql = parserBuffer.getStringWithoutLengthAscii(0, parserSlotOffset); + String[] statements = sql.split(SPLIT_STATEMENTS); - parse: - while (progress <= parserSlotOffset) + int length = statements.length; + if (length > 0) { - final String query = parserBuffer.getStringWithoutLengthUtf8(progress, parserSlotOffset); - final String statement = sqlCommandParser.detectFirstSQLCommand(query); - int statementLength = statement != null ? statement.length() : parserSlotOffset; - - if (statement != null) - { - final RisingwaveCommandType command = sqlCommandParser.decodeCommandType(statement); - final PgsqlTransform transform = clientTransforms.get(command); - transform.transform(this, traceId, authorizationId, parserBuffer, progress, statementLength); - break parse; - } - progress += statementLength; + String statement = statements[0]; + String command = parser.parseCommand(statement); + final PgsqlTransform transform = clientTransforms.get(RisingwaveCommandType.valueOf(command.getBytes())); + transform.transform(this, traceId, authorizationId, statement); } } } @@ -1497,47 +1483,45 @@ private void decodeCreateTableCommand( PgsqlServer server, long traceId, long authorization, - DirectBuffer buffer, - int offset, - int length) + String statement) { if (server.commandsProcessed == 6 || server.commandsProcessed == COMMAND_PROCESSED_ERRORED) { + final int length = statement.length(); server.onCommandCompleted(traceId, authorization, length, RisingwaveCompletionCommand.CREATE_TABLE_COMMAND); } else { final RisingwaveBindingConfig binding = server.binding; - final RisingwaveCreateTableCommand command = binding.createTable.parserCreateTable(buffer, offset, length); - final String primaryKey = binding.createTable.primaryKey(command.createTable); + final TableInfo tableInfo = parser.parseCreateTable(statement); String newStatement = ""; int progress = 0; if (server.commandsProcessed == 0) { - newStatement = binding.createTopic.generate(command); + newStatement = binding.createTopic.generate(tableInfo); } else if (server.commandsProcessed == 1) { - newStatement = binding.createSource.generateTableSource(server.database, command); + newStatement = binding.createSource.generateTableSource(server.database, tableInfo); } else if (server.commandsProcessed == 2) { - newStatement = binding.createView.generate(command); + newStatement = binding.createView.generate(tableInfo); } else if (server.commandsProcessed == 3) { - newStatement = binding.createTable.generate(command); + newStatement = binding.createTable.generate(tableInfo); } else if (server.commandsProcessed == 4) { - newStatement = binding.createSink.generate(command.createTable); + newStatement = binding.createSink.generate(tableInfo); } else if (server.commandsProcessed == 5) { - newStatement = binding.createSink.generate(server.database, primaryKey, command.createTable); + newStatement = binding.createSink.generate(server.database, tableInfo); } statementBuffer.putBytes(progress, newStatement.getBytes()); @@ -1556,30 +1540,29 @@ private void decodeCreateStreamCommand( PgsqlServer server, long traceId, long authorization, - DirectBuffer buffer, - int offset, - int length) + String statement) { if (server.commandsProcessed == 2 || server.commandsProcessed == COMMAND_PROCESSED_ERRORED) { + final int length = statement.length(); server.onCommandCompleted(traceId, authorization, length, RisingwaveCompletionCommand.CREATE_STREAM_COMMAND); } else { final RisingwaveBindingConfig binding = server.binding; - final RisingwaveCreateTableCommand command = binding.createTable.parserCreateTable(buffer, offset, length); + final StreamInfo streamInfo = parser.parseCreateStream(statement); String newStatement = ""; int progress = 0; if (server.commandsProcessed == 0) { - newStatement = binding.createTopic.generate(command.createTable); + newStatement = binding.createTopic.generate(streamInfo); } else if (server.commandsProcessed == 1) { - newStatement = binding.createSource.generateStreamSource(server.database, command); + newStatement = binding.createSource.generateStreamSource(server.database, streamInfo); } statementBuffer.putBytes(progress, newStatement.getBytes()); @@ -1598,20 +1581,19 @@ private void decodeCreateMaterializedViewCommand( PgsqlServer server, long traceId, long authorization, - DirectBuffer buffer, - int offset, - int length) + String statement) { if (server.commandsProcessed == 4 || server.commandsProcessed == COMMAND_PROCESSED_ERRORED) { + final int length = statement.length(); server.onCommandCompleted(traceId, authorization, length, RisingwaveCompletionCommand.CREATE_MATERIALIZED_VIEW_COMMAND); } else { final RisingwaveBindingConfig binding = server.binding; - final CreateView statement = (CreateView) parseStatement(buffer, offset, length); + final ViewInfo viewInfo = parser.parseCreateMaterializedView(statement); PgsqlFlushCommand typeCommand = ignoreFlushCommand; PgsqlDataCommand dataCommand = proxyDataCommand; @@ -1620,22 +1602,22 @@ private void decodeCreateMaterializedViewCommand( if (server.commandsProcessed == 0) { - newStatement = binding.createView.generate(statement); + newStatement = binding.createView.generate(viewInfo); } else if (server.commandsProcessed == 1) { - newStatement = binding.describeView.generate(statement); + newStatement = binding.describeView.generate(viewInfo); typeCommand = typeFlushCommand; dataCommand = rowDataCommand; server.columns.clear(); } else if (server.commandsProcessed == 2) { - newStatement = binding.createTopic.generate(statement, server.columns); + newStatement = binding.createTopic.generate(viewInfo, server.columns); } else if (server.commandsProcessed == 3) { - newStatement = binding.createSink.generate(server.database, server.columns, statement); + newStatement = binding.createSink.generate(server.database, server.columns, viewInfo); } statementBuffer.putBytes(progress, newStatement.getBytes()); @@ -1656,26 +1638,25 @@ private void decodeCreateFunctionCommand( PgsqlServer server, long traceId, long authorization, - DirectBuffer buffer, - int offset, - int length) + String statement) { if (server.commandsProcessed == 1 || server.commandsProcessed == COMMAND_PROCESSED_ERRORED) { + final int length = statement.length(); server.onCommandCompleted(traceId, authorization, length, RisingwaveCompletionCommand.CREATE_FUNCTION_COMMAND); } else { final RisingwaveBindingConfig binding = server.binding; - final CreateFunction statement = (CreateFunction) parseStatement(buffer, offset, length); + final FunctionInfo functionInfo = parser.parseCreateFunction(statement); String newStatement = ""; int progress = 0; if (server.commandsProcessed == 0) { - newStatement = binding.createFunction.generate(statement); + newStatement = binding.createFunction.generate(functionInfo); } statementBuffer.putBytes(progress, newStatement.getBytes()); @@ -1694,10 +1675,10 @@ private void decodeUnknownCommand( PgsqlServer server, long traceId, long authorization, - DirectBuffer buffer, - int offset, - int length) + String statement) { + final int length = statement.length(); + if (server.commandsProcessed == 1 || server.commandsProcessed == COMMAND_PROCESSED_ERRORED) { @@ -1705,11 +1686,13 @@ private void decodeUnknownCommand( } else { + statementBuffer.putBytes(0, statement.getBytes()); + final RisingwaveRouteConfig route = - server.binding.resolve(authorization, buffer, offset, length); + server.binding.resolve(authorization, statementBuffer, 0, length); final PgsqlClient client = server.streamsByRouteIds.get(route.id); - client.doPgsqlQuery(traceId, authorization, buffer, offset, length); + client.doPgsqlQuery(traceId, authorization, statementBuffer, 0, length); client.completionCommand = proxyFlushCommand; } } @@ -1809,44 +1792,6 @@ private void proxyDataCommand( server.doAppData(routedId, traceId, authorization, flags, buffer, offset, limit, extension); } - private Statement parseStatement( - DirectBuffer buffer, - int offset, - int length) - { - Statement statement = null; - try - { - //TODO: Avoid object creation - String query = buffer.getStringWithoutLengthUtf8(offset, length); - RisingwaveCommandType commandType = sqlCommandParser.decodeCommandType(query); - if (commandType.equals(RisingwaveCommandType.CREATE_MATERIALIZED_VIEW_COMMAND)) - { - String sql = buffer.getStringWithoutLengthUtf8(offset, length); - // Replace "CREATE MATERIALIZED VIEW" with "CREATE VIEW" for compatibility - sql = sql.replace("CREATE MATERIALIZED VIEW", "CREATE VIEW"); - // Remove "IF NOT EXISTS" clause because JSqlParser doesn't support it - sql = sql.replace("IF NOT EXISTS", ""); - statement = parserManager.parse(new StringReader(sql)); - } - else if (commandType.equals(RisingwaveCommandType.CREATE_FUNCTION_COMMAND)) - { - query = query.substring(0, query.length() - 1); - statement = parserManager.parse(new StringReader(query)); - } - else - { - inputStream.wrap(buffer, offset, length); - statement = parserManager.parse(reader); - } - } - catch (Exception ignored) - { - } - - return statement; - } - @FunctionalInterface private interface PgsqlTransform { @@ -1854,9 +1799,7 @@ void transform( PgsqlServer server, long traceId, long authorization, - DirectBuffer writeBuffer, - int offset, - int length); + String statement); } @FunctionalInterface diff --git a/incubator/binding-risingwave/src/main/moditect/module-info.java b/incubator/binding-risingwave/src/main/moditect/module-info.java index 77bc6206bd..f37ab76014 100644 --- a/incubator/binding-risingwave/src/main/moditect/module-info.java +++ b/incubator/binding-risingwave/src/main/moditect/module-info.java @@ -14,7 +14,6 @@ */ module io.aklivity.zilla.runtime.binding.risingwave { - requires net.sf.jsqlparser; requires io.aklivity.zilla.runtime.engine; exports io.aklivity.zilla.runtime.binding.risingwave.config; diff --git a/pom.xml b/pom.xml index d0393b6c0d..bb74266968 100644 --- a/pom.xml +++ b/pom.xml @@ -204,11 +204,6 @@ jmh-profilers 0.1.4 - - com.github.jsqlparser - jsqlparser - 5.0 - io.aklivity.k3po driver From 3a9a48340c685d8329347f9a20326a228e18b239 Mon Sep 17 00:00:00 2001 From: Akram Yakubov Date: Thu, 17 Oct 2024 14:01:11 -0700 Subject: [PATCH 11/26] WIP --- .../binding/pgsql/kafka/config/proxy.yaml | 2 +- .../stream/PgsqlKafkaProxyFactory.java | 2 +- .../binding/pgsql/parser/PostgreSqlParser.g4 | 2 +- .../binding/pgsql/parser/PgsqlParser.java | 4 +- .../listener/SqlCreateFunctionListener.java | 3 +- .../listener/SqlCreateStreamListener.java | 5 +- .../listener/SqlCreateTableTopicListener.java | 4 +- .../parser/listener/SqlDropListener.java | 9 ++- .../pgsql/parser/module/FunctionArgument.java | 14 +++++ .../pgsql/parser/module/StreamInfo.java | 4 +- .../pgsql/parser/module/TableInfo.java | 6 +- .../binding/pgsql/parser/PgsqlParserTest.java | 62 +++++++++++++++++-- incubator/binding-risingwave/NOTICE | 1 - 13 files changed, 90 insertions(+), 28 deletions(-) diff --git a/incubator/binding-pgsql-kafka.spec/src/main/scripts/io/aklivity/zilla/specs/binding/pgsql/kafka/config/proxy.yaml b/incubator/binding-pgsql-kafka.spec/src/main/scripts/io/aklivity/zilla/specs/binding/pgsql/kafka/config/proxy.yaml index d4584a4b94..ed7e7b8a13 100644 --- a/incubator/binding-pgsql-kafka.spec/src/main/scripts/io/aklivity/zilla/specs/binding/pgsql/kafka/config/proxy.yaml +++ b/incubator/binding-pgsql-kafka.spec/src/main/scripts/io/aklivity/zilla/specs/binding/pgsql/kafka/config/proxy.yaml @@ -24,7 +24,7 @@ catalogs: schema: |- { "schemaType": "AVRO", - "schema": "{\"type\": \"record\", \"name\": \"cities\", \"namespace\": \"dev\", \"fields\": [ {\"name\": \"city\", \"type\": \"string\"}, {\"name\": \"id\", \"type\": \"string\"}]}" + "schema": "{\"type\": \"record\", \"name\": \"cities\", \"namespace\": \"dev\", \"fields\": [ {\"name\": \"id\", \"type\": \"string\"}, {\"name\": \"city\", \"type\": \"string\"}]}" } bindings: app0: diff --git a/incubator/binding-pgsql-kafka/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/kafka/internal/stream/PgsqlKafkaProxyFactory.java b/incubator/binding-pgsql-kafka/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/kafka/internal/stream/PgsqlKafkaProxyFactory.java index f01fdf3530..afd2658690 100644 --- a/incubator/binding-pgsql-kafka/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/kafka/internal/stream/PgsqlKafkaProxyFactory.java +++ b/incubator/binding-pgsql-kafka/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/kafka/internal/stream/PgsqlKafkaProxyFactory.java @@ -1364,7 +1364,7 @@ private void decodeDropTopicCommand( } else if (server.commandsProcessed == 0) { - Set drops = parser.parseDrop(statement); + List drops = parser.parseDrop(statement); drops.stream().findFirst().ifPresent(d -> { final PgsqlKafkaBindingConfig binding = server.binding; diff --git a/incubator/binding-pgsql/src/main/antlr4/io/aklivity/zilla/runtime/binding/pgsql/parser/PostgreSqlParser.g4 b/incubator/binding-pgsql/src/main/antlr4/io/aklivity/zilla/runtime/binding/pgsql/parser/PostgreSqlParser.g4 index 99534e2007..267617c5ff 100644 --- a/incubator/binding-pgsql/src/main/antlr4/io/aklivity/zilla/runtime/binding/pgsql/parser/PostgreSqlParser.g4 +++ b/incubator/binding-pgsql/src/main/antlr4/io/aklivity/zilla/runtime/binding/pgsql/parser/PostgreSqlParser.g4 @@ -656,7 +656,7 @@ copy_generic_opt_arg_list_item ; createstreamstmt - : CREATE STREAM stream_name OPEN_PAREN stream_columns CLOSE_PAREN opt_with_stream + : CREATE STREAM (IF_P NOT EXISTS)? stream_name OPEN_PAREN stream_columns CLOSE_PAREN opt_with_stream ; stream_name diff --git a/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/PgsqlParser.java b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/PgsqlParser.java index 1c7b703090..8a6a60ca29 100644 --- a/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/PgsqlParser.java +++ b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/PgsqlParser.java @@ -14,7 +14,7 @@ */ package io.aklivity.zilla.runtime.binding.pgsql.parser; -import java.util.Set; +import java.util.List; import org.antlr.v4.runtime.BailErrorStrategy; import org.antlr.v4.runtime.CharStream; @@ -98,7 +98,7 @@ public ViewInfo parseCreateMaterializedView( return createMaterializedViewListener.viewInfo(); } - public Set parseDrop( + public List parseDrop( String sql) { parser(sql, dropListener); diff --git a/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlCreateFunctionListener.java b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlCreateFunctionListener.java index 56f5e5dd7f..878a77f9fb 100644 --- a/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlCreateFunctionListener.java +++ b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlCreateFunctionListener.java @@ -24,8 +24,9 @@ public class SqlCreateFunctionListener extends PostgreSqlParserBaseListener { - private String name; private final List arguments = new ArrayList<>(); + + private String name; private String returnType; private String asFunction; private String language; diff --git a/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlCreateStreamListener.java b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlCreateStreamListener.java index cb922d14f7..f0dd2306a3 100644 --- a/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlCreateStreamListener.java +++ b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlCreateStreamListener.java @@ -14,10 +14,9 @@ */ package io.aklivity.zilla.runtime.binding.pgsql.parser.listener; +import java.util.LinkedHashMap; import java.util.Map; -import org.agrona.collections.Object2ObjectHashMap; - import io.aklivity.zilla.runtime.binding.pgsql.parser.PostgreSqlParser; import io.aklivity.zilla.runtime.binding.pgsql.parser.PostgreSqlParserBaseListener; import io.aklivity.zilla.runtime.binding.pgsql.parser.module.StreamInfo; @@ -25,7 +24,7 @@ public class SqlCreateStreamListener extends PostgreSqlParserBaseListener { private String name; - private final Map columns = new Object2ObjectHashMap<>(); + private final Map columns = new LinkedHashMap<>(); public StreamInfo streamInfo() { diff --git a/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlCreateTableTopicListener.java b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlCreateTableTopicListener.java index 56a2cf597f..7fbc3cd6b7 100644 --- a/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlCreateTableTopicListener.java +++ b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlCreateTableTopicListener.java @@ -14,10 +14,10 @@ */ package io.aklivity.zilla.runtime.binding.pgsql.parser.listener; +import java.util.LinkedHashMap; import java.util.Map; import java.util.Set; -import org.agrona.collections.Object2ObjectHashMap; import org.agrona.collections.ObjectHashSet; import io.aklivity.zilla.runtime.binding.pgsql.parser.PostgreSqlParser; @@ -27,7 +27,7 @@ public class SqlCreateTableTopicListener extends PostgreSqlParserBaseListener { private String name; - private final Map columns = new Object2ObjectHashMap<>(); + private final Map columns = new LinkedHashMap<>(); private final Set primaryKeys = new ObjectHashSet<>(); public TableInfo tableInfo() diff --git a/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlDropListener.java b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlDropListener.java index ca079d0323..d4fc4b31b1 100644 --- a/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlDropListener.java +++ b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlDropListener.java @@ -14,18 +14,17 @@ */ package io.aklivity.zilla.runtime.binding.pgsql.parser.listener; -import java.util.Set; - -import org.agrona.collections.ObjectHashSet; +import java.util.ArrayList; +import java.util.List; import io.aklivity.zilla.runtime.binding.pgsql.parser.PostgreSqlParser; import io.aklivity.zilla.runtime.binding.pgsql.parser.PostgreSqlParserBaseListener; public class SqlDropListener extends PostgreSqlParserBaseListener { - private final Set drops = new ObjectHashSet<>(); + private final List drops = new ArrayList<>(); - public Set drops() + public List drops() { return drops; } diff --git a/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/module/FunctionArgument.java b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/module/FunctionArgument.java index d9e140e804..7196c49f5a 100644 --- a/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/module/FunctionArgument.java +++ b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/module/FunctionArgument.java @@ -1,3 +1,17 @@ +/* + * Copyright 2021-2023 Aklivity Inc + * + * Licensed under the Aklivity Community License (the "License"); you may not use + * this file except in compliance with the License. You may obtain a copy of the + * License at + * + * https://www.aklivity.io/aklivity-community-license/ + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OF ANY KIND, either express or implied. See the License for the + * specific language governing permissions and limitations under the License. + */ package io.aklivity.zilla.runtime.binding.pgsql.parser.module; public record FunctionArgument( diff --git a/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/module/StreamInfo.java b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/module/StreamInfo.java index 5c8db5dc69..5a2880ea68 100644 --- a/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/module/StreamInfo.java +++ b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/module/StreamInfo.java @@ -17,7 +17,7 @@ import java.util.Map; public record StreamInfo( - String name, - Map columns) + String name, + Map columns) { } diff --git a/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/module/TableInfo.java b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/module/TableInfo.java index 6244ae7534..8b0067d5b1 100644 --- a/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/module/TableInfo.java +++ b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/module/TableInfo.java @@ -18,8 +18,8 @@ import java.util.Set; public record TableInfo( - String name, - Map columns, - Set primaryKeys) + String name, + Map columns, + Set primaryKeys) { } diff --git a/incubator/binding-pgsql/src/test/java/io/aklivity/zilla/runtime/binding/pgsql/parser/PgsqlParserTest.java b/incubator/binding-pgsql/src/test/java/io/aklivity/zilla/runtime/binding/pgsql/parser/PgsqlParserTest.java index d25bea9fb2..f069fc8d9b 100644 --- a/incubator/binding-pgsql/src/test/java/io/aklivity/zilla/runtime/binding/pgsql/parser/PgsqlParserTest.java +++ b/incubator/binding-pgsql/src/test/java/io/aklivity/zilla/runtime/binding/pgsql/parser/PgsqlParserTest.java @@ -18,12 +18,14 @@ import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertTrue; -import java.util.Set; +import java.util.List; import org.antlr.v4.runtime.misc.ParseCancellationException; import org.junit.Before; import org.junit.Test; +import io.aklivity.zilla.runtime.binding.pgsql.parser.module.FunctionInfo; +import io.aklivity.zilla.runtime.binding.pgsql.parser.module.StreamInfo; import io.aklivity.zilla.runtime.binding.pgsql.parser.module.TableInfo; import io.aklivity.zilla.runtime.binding.pgsql.parser.module.ViewInfo; @@ -154,7 +156,7 @@ public void shouldHandleInvalidCreateTable() public void shouldParseDropSingleTable() { String sql = "DROP TABLE test_table;"; - Set drops = parser.parseDrop(sql); + List drops = parser.parseDrop(sql); assertEquals(1, drops.size()); assertTrue(drops.contains("test_table")); } @@ -163,7 +165,7 @@ public void shouldParseDropSingleTable() public void shouldParseDropMultipleTables() { String sql = "DROP TABLE table1, table2;"; - Set drops = parser.parseDrop(sql); + List drops = parser.parseDrop(sql); assertEquals(2, drops.size()); assertTrue(drops.contains("table1")); assertTrue(drops.contains("table2")); @@ -173,7 +175,7 @@ public void shouldParseDropMultipleTables() public void shouldHandleEmptyDropStatement() { String sql = "DROP TABLE;"; - Set drops = parser.parseDrop(sql); + List drops = parser.parseDrop(sql); assertEquals(0, drops.size()); } @@ -181,7 +183,7 @@ public void shouldHandleEmptyDropStatement() public void shouldParseDropView() { String sql = "DROP VIEW test_view;"; - Set drops = parser.parseDrop(sql); + List drops = parser.parseDrop(sql); assertEquals(1, drops.size()); assertTrue(drops.contains("test_view")); } @@ -190,9 +192,57 @@ public void shouldParseDropView() public void shouldParseDropMaterializedView() { String sql = "DROP MATERIALIZED VIEW test_materialized_view;"; - Set drops = parser.parseDrop(sql); + List drops = parser.parseDrop(sql); assertEquals(1, drops.size()); assertTrue(drops.contains("test_materialized_view")); } + @Test + public void shouldParseCreateStream() + { + String sql = "CREATE STREAM test_stream (id INT, name VARCHAR(100));"; + StreamInfo streamInfo = parser.parseCreateStream(sql); + assertNotNull(streamInfo); + assertEquals("test_stream", streamInfo.name()); + assertEquals(2, streamInfo.columns().size()); + assertEquals("INT", streamInfo.columns().get("id")); + assertEquals("VARCHAR(100)", streamInfo.columns().get("name")); + } + + @Test + public void shouldParseCreateStreamIfNotExists() + { + String sql = "CREATE STREAM IF NOT EXISTS test_stream (id INT, name VARCHAR(100));"; + StreamInfo streamInfo = parser.parseCreateStream(sql); + assertNotNull(streamInfo); + assertEquals("test_stream", streamInfo.name()); + assertEquals(2, streamInfo.columns().size()); + assertEquals("INT", streamInfo.columns().get("id")); + assertEquals("VARCHAR(100)", streamInfo.columns().get("name")); + } + + @Test(expected = ParseCancellationException.class) + public void shouldHandleInvalidCreateStream() + { + String sql = "CREATE STREAM test_stream"; + parser.parseCreateStream(sql); + } + + @Test + public void shouldParseCreateFunction() + { + String sql = "CREATE FUNCTION test_function() RETURNS INT AS $$ BEGIN RETURN 1; END $$ LANGUAGE plpgsql;"; + FunctionInfo functionInfo = parser.parseCreateFunction(sql); + assertNotNull(functionInfo); + assertEquals("test_function", functionInfo.name()); + assertEquals("INT", functionInfo.returnType()); + } + + @Test(expected = ParseCancellationException.class) + public void shouldHandleInvalidCreateFunction() + { + String sql = "CREATE FUNCTION test_function()"; + parser.parseCreateFunction(sql); + } + } diff --git a/incubator/binding-risingwave/NOTICE b/incubator/binding-risingwave/NOTICE index c6b7d9c015..9024d8926d 100644 --- a/incubator/binding-risingwave/NOTICE +++ b/incubator/binding-risingwave/NOTICE @@ -10,5 +10,4 @@ WARRANTIES OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. This project includes: - JSQLParser library under GNU Library or Lesser General Public License (LGPL) V2.1 or The Apache Software License, Version 2.0 From 9af3f6087900952e597883d5188096d1694ff1e5 Mon Sep 17 00:00:00 2001 From: Akram Yakubov Date: Thu, 17 Oct 2024 17:25:33 -0700 Subject: [PATCH 12/26] WIP --- .../binding/pgsql/parser/PgsqlParser.java | 1 + .../parser/listener/SqlCommandListener.java | 7 +- .../client.rpt | 13 +- .../server.rpt | 13 +- .../client.rpt | 7 +- .../server.rpt | 7 +- ...ingwaveCreateMaterializedViewTemplate.java | 12 +- .../RisingwaveCreateSourceTemplate.java | 7 +- .../RisingwaveCreateTableTemplate.java | 10 -- .../stream/RisingwaveProxyFactory.java | 2 +- ...aveCreateMaterializedViewTemplateTest.java | 78 ++++++++++++ .../RisingwaveCreateSourceTemplateTest.java | 118 ++++++++++++++++++ .../RisingwaveCreateTableTemplateTest.java | 82 ++++++++++++ 13 files changed, 315 insertions(+), 42 deletions(-) create mode 100644 incubator/binding-risingwave/src/test/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveCreateMaterializedViewTemplateTest.java create mode 100644 incubator/binding-risingwave/src/test/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveCreateSourceTemplateTest.java create mode 100644 incubator/binding-risingwave/src/test/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveCreateTableTemplateTest.java diff --git a/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/PgsqlParser.java b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/PgsqlParser.java index 8a6a60ca29..9dadc83ac3 100644 --- a/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/PgsqlParser.java +++ b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/PgsqlParser.java @@ -66,6 +66,7 @@ public PgsqlParser() public String parseCommand( String sql) { + commandListener.resetCommand(); parser(sql, commandListener); return commandListener.command(); } diff --git a/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlCommandListener.java b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlCommandListener.java index 1b0f7f4861..5ffed22ee5 100644 --- a/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlCommandListener.java +++ b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlCommandListener.java @@ -19,13 +19,18 @@ public class SqlCommandListener extends PostgreSqlParserBaseListener { - private String command; + private String command = ""; public String command() { return command; } + public void resetCommand() + { + command = ""; + } + @Override public void enterCreatestmt( PostgreSqlParser.CreatestmtContext ctx) diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.table.with.primary.key.and.includes/client.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.table.with.primary.key.and.includes/client.rpt index 7c587a897b..eb239977d9 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.table.with.primary.key.and.includes/client.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.table.with.primary.key.and.includes/client.rpt @@ -67,11 +67,10 @@ write zilla:data.ext ${pgsql:dataEx() .query() .build() .build()} -write "CREATE MATERIALIZED VIEW IF NOT EXISTS cities_view AS" - " SELECT id, name, description," - " COALESCE(correlation_id, zilla_correlation_id_header::varchar) as correlation_id," - " COALESCE(identity, zilla_identity_header::varchar) as identity," - " timestamp" +write "CREATE MATERIALIZED VIEW IF NOT EXISTS cities_view" + " AS SELECT id, name, description," + " COALESCE(zilla_correlation_id, zilla_correlation_id_header::varchar) as zilla_correlation_id," + " COALESCE(zilla_identity, zilla_identity_header::varchar) as zilla_identity, timestamp" " FROM cities_source;" [0x00] write flush @@ -97,7 +96,7 @@ write zilla:data.ext ${pgsql:dataEx() .build()} write "CREATE TABLE IF NOT EXISTS cities" " (id VARCHAR, name VARCHAR, description VARCHAR," - " correlation_id VARCHAR, identity VARCHAR, timestamp TIMESTAMP," + " zilla_correlation_id VARCHAR, zilla_identity VARCHAR, timestamp TIMESTAMP," " PRIMARY KEY (id));" [0x00] write flush @@ -192,7 +191,7 @@ write zilla:data.ext ${pgsql:dataEx() .build()} write "CREATE TOPIC IF NOT EXISTS cities " "(id VARCHAR, name VARCHAR, description VARCHAR," - " correlation_id VARCHAR, identity VARCHAR, timestamp TIMESTAMP," + " zilla_correlation_id VARCHAR, zilla_identity VARCHAR, timestamp TIMESTAMP," " PRIMARY KEY (id));" [0x00] write flush diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.table.with.primary.key.and.includes/server.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.table.with.primary.key.and.includes/server.rpt index 4bc34b76a3..1879dd135c 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.table.with.primary.key.and.includes/server.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.table.with.primary.key.and.includes/server.rpt @@ -70,11 +70,10 @@ read zilla:data.ext ${pgsql:dataEx() .query() .build() .build()} -read "CREATE MATERIALIZED VIEW IF NOT EXISTS cities_view AS" - " SELECT id, name, description," - " COALESCE(correlation_id, zilla_correlation_id_header::varchar) as correlation_id," - " COALESCE(identity, zilla_identity_header::varchar) as identity," - " timestamp" +read "CREATE MATERIALIZED VIEW IF NOT EXISTS cities_view" + " AS SELECT id, name, description," + " COALESCE(zilla_correlation_id, zilla_correlation_id_header::varchar) as zilla_correlation_id," + " COALESCE(zilla_identity, zilla_identity_header::varchar) as zilla_identity, timestamp" " FROM cities_source;" [0x00] @@ -99,7 +98,7 @@ read zilla:data.ext ${pgsql:dataEx() .build()} read "CREATE TABLE IF NOT EXISTS cities" " (id VARCHAR, name VARCHAR, description VARCHAR," - " correlation_id VARCHAR, identity VARCHAR, timestamp TIMESTAMP," + " zilla_correlation_id VARCHAR, zilla_identity VARCHAR, timestamp TIMESTAMP," " PRIMARY KEY (id));" [0x00] @@ -193,7 +192,7 @@ read zilla:data.ext ${pgsql:dataEx() .build()} read "CREATE TOPIC IF NOT EXISTS cities " "(id VARCHAR, name VARCHAR, description VARCHAR," - " correlation_id VARCHAR, identity VARCHAR, timestamp TIMESTAMP," + " zilla_correlation_id VARCHAR, zilla_identity VARCHAR, timestamp TIMESTAMP," " PRIMARY KEY (id));" [0x00] diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.table.with.primary.key.and.includes/client.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.table.with.primary.key.and.includes/client.rpt index f40e1041f9..3689bca93f 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.table.with.primary.key.and.includes/client.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.table.with.primary.key.and.includes/client.rpt @@ -33,10 +33,9 @@ write zilla:data.ext ${pgsql:dataEx() .build() .build()} write "CREATE TABLE IF NOT EXISTS cities " - "(id VARCHAR, name VARCHAR, description VARCHAR, PRIMARY KEY (id))\n" - "INCLUDE zilla_correlation_id AS correlation_id\n" - "INCLUDE zilla_identity AS identity\n" - "INCLUDE timestamp as timestamp;" + "(id VARCHAR, name VARCHAR, description VARCHAR," + " zilla_correlation_id VARCHAR, zilla_identity VARCHAR, timestamp TIMESTAMP," + " PRIMARY KEY (id));" [0x00] write flush diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.table.with.primary.key.and.includes/server.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.table.with.primary.key.and.includes/server.rpt index ed5fda502c..2add559a18 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.table.with.primary.key.and.includes/server.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.table.with.primary.key.and.includes/server.rpt @@ -37,10 +37,9 @@ read zilla:data.ext ${pgsql:dataEx() .build() .build()} read "CREATE TABLE IF NOT EXISTS cities " - "(id VARCHAR, name VARCHAR, description VARCHAR, PRIMARY KEY (id))\n" - "INCLUDE zilla_correlation_id AS correlation_id\n" - "INCLUDE zilla_identity AS identity\n" - "INCLUDE timestamp as timestamp;" + "(id VARCHAR, name VARCHAR, description VARCHAR," + " zilla_correlation_id VARCHAR, zilla_identity VARCHAR, timestamp TIMESTAMP," + " PRIMARY KEY (id));" [0x00] write advise zilla:flush ${pgsql:flushEx() diff --git a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveCreateMaterializedViewTemplate.java b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveCreateMaterializedViewTemplate.java index 0e3f9ea80e..c0ad0a5538 100644 --- a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveCreateMaterializedViewTemplate.java +++ b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveCreateMaterializedViewTemplate.java @@ -14,6 +14,7 @@ */ package io.aklivity.zilla.runtime.binding.risingwave.internal.statement; +import java.util.LinkedHashMap; import java.util.Map; import java.util.stream.Collectors; @@ -26,7 +27,7 @@ public class RisingwaveCreateMaterializedViewTemplate extends RisingwaveCommandT private final String sqlFormat = """ CREATE MATERIALIZED VIEW IF NOT EXISTS %s AS %s;\u0000"""; private final String fieldFormat = "%s, "; - private final String includeFormat = "COALESCE(%s, zilla_%s_header::varchar) as %s, "; + private final String includeFormat = "COALESCE(%s, %s_header::varchar) as %s, "; public RisingwaveCreateMaterializedViewTemplate() { @@ -50,13 +51,14 @@ public String generate( Map includes = tableInfo.columns().entrySet().stream() .filter(e -> ZILLA_MAPPINGS.containsKey(e.getKey())) - .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue)); + .collect(LinkedHashMap::new, (m, e) -> m.put(e.getKey(), e.getValue()), Map::putAll); if (!includes.isEmpty()) { fieldBuilder.setLength(0); - tableInfo.columns().values().stream() + tableInfo.columns().keySet() + .stream() .filter(c -> !ZILLA_MAPPINGS.containsKey(c)) .forEach(c -> fieldBuilder.append(String.format(fieldFormat, c))); @@ -64,11 +66,11 @@ public String generate( { if ("timestamp".equals(k)) { - fieldBuilder.append(String.format(fieldFormat, v)); + fieldBuilder.append(String.format(fieldFormat, k)); } else { - fieldBuilder.append(String.format(includeFormat, v, v, v)); + fieldBuilder.append(String.format(includeFormat, k, k, k)); } }); diff --git a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveCreateSourceTemplate.java b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveCreateSourceTemplate.java index 52e890aef9..7906ec81a0 100644 --- a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveCreateSourceTemplate.java +++ b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveCreateSourceTemplate.java @@ -14,6 +14,7 @@ */ package io.aklivity.zilla.runtime.binding.risingwave.internal.statement; +import java.util.LinkedHashMap; import java.util.Map; import java.util.stream.Collectors; @@ -78,7 +79,7 @@ public String generateTableSource( includeBuilder.setLength(0); Map includes = tableInfo.columns().entrySet().stream() .filter(e -> ZILLA_MAPPINGS.containsKey(e.getKey())) - .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue)); + .collect(LinkedHashMap::new, (m, e) -> m.put(e.getKey(), e.getValue()), Map::putAll); if (!includes.isEmpty()) { @@ -87,11 +88,11 @@ public String generateTableSource( { if ("timestamp".equals(k)) { - includeBuilder.append(String.format(ZILLA_MAPPINGS.get(k), v)); + includeBuilder.append(String.format(ZILLA_MAPPINGS.get(k), k)); } else { - includeBuilder.append(String.format(ZILLA_MAPPINGS.get(k), "zilla_%s_header".formatted(v))); + includeBuilder.append(String.format(ZILLA_MAPPINGS.get(k), "%s_header".formatted(k))); } }); includeBuilder.delete(includeBuilder.length() - 1, includeBuilder.length()); diff --git a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveCreateTableTemplate.java b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveCreateTableTemplate.java index 207cd871fe..24858e8353 100644 --- a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveCreateTableTemplate.java +++ b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveCreateTableTemplate.java @@ -14,9 +14,6 @@ */ package io.aklivity.zilla.runtime.binding.risingwave.internal.statement; -import java.util.Map; -import java.util.stream.Collectors; - import io.aklivity.zilla.runtime.binding.pgsql.parser.module.TableInfo; public class RisingwaveCreateTableTemplate extends RisingwaveCommandTemplate @@ -44,13 +41,6 @@ public String generate( .forEach((k, v) -> fieldBuilder.append( String.format(fieldFormat, k, v))); - Map includes = tableInfo.columns().entrySet().stream() - .filter(e -> ZILLA_MAPPINGS.containsKey(e.getKey())) - .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue)); - - includes.forEach((k, v) -> fieldBuilder.append( - String.format(fieldFormat, v, ZILLA_INCLUDE_TYPE_MAPPINGS.get(k)))); - fieldBuilder.delete(fieldBuilder.length() - 2, fieldBuilder.length()); return String.format(sqlFormat, topic, fieldBuilder, primaryKey); diff --git a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/stream/RisingwaveProxyFactory.java b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/stream/RisingwaveProxyFactory.java index e26714c506..06d502b791 100644 --- a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/stream/RisingwaveProxyFactory.java +++ b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/stream/RisingwaveProxyFactory.java @@ -67,7 +67,7 @@ public final class RisingwaveProxyFactory implements RisingwaveStreamFactory { - private static final String SPLIT_STATEMENTS = "\"(?<=;)(?!\\x00)\""; + private static final String SPLIT_STATEMENTS = "(?<=;)(?!\\x00)"; private static final int END_OF_FIELD = 0x00; private static final int FLAGS_INIT = 0x02; diff --git a/incubator/binding-risingwave/src/test/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveCreateMaterializedViewTemplateTest.java b/incubator/binding-risingwave/src/test/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveCreateMaterializedViewTemplateTest.java new file mode 100644 index 0000000000..b371da2e12 --- /dev/null +++ b/incubator/binding-risingwave/src/test/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveCreateMaterializedViewTemplateTest.java @@ -0,0 +1,78 @@ +package io.aklivity.zilla.runtime.binding.risingwave.internal.statement; + +import static org.junit.Assert.assertEquals; + +import java.util.LinkedHashMap; +import java.util.Map; +import java.util.Set; + +import org.junit.Ignore; +import org.junit.Test; + +import io.aklivity.zilla.runtime.binding.pgsql.parser.module.TableInfo; +import io.aklivity.zilla.runtime.binding.pgsql.parser.module.ViewInfo; + +public class RisingwaveCreateMaterializedViewTemplateTest +{ + private final RisingwaveCreateMaterializedViewTemplate template = new RisingwaveCreateMaterializedViewTemplate(); + + @Test + public void shouldGenerateMaterializedViewWithValidViewInfo() + { + ViewInfo viewInfo = new ViewInfo("test_view", "SELECT * FROM test_table"); + String expectedSQL = """ + CREATE MATERIALIZED VIEW IF NOT EXISTS test_view AS SELECT * FROM test_table;\u0000"""; + + String actualSQL = template.generate(viewInfo); + + assertEquals(expectedSQL, actualSQL); + } + + @Ignore("TODO") + @Test + public void shouldGenerateMaterializedViewWithValidTableInfo() + { + TableInfo tableInfo = new TableInfo( + "test_table", + Map.of("id", "INT", "name", "STRING"), + Set.of("id")); + String expectedSQL = """ + CREATE MATERIALIZED VIEW IF NOT EXISTS test_table_view AS SELECT id, name FROM test_table_source;\u0000"""; + + String actualSQL = template.generate(tableInfo); + + assertEquals(expectedSQL, actualSQL); + } + + @Test + public void shouldGenerateMaterializedViewWithEmptyColumns() + { + TableInfo tableInfo = new TableInfo("empty_table", Map.of(), Set.of()); + String expectedSQL = """ + CREATE MATERIALIZED VIEW IF NOT EXISTS empty_table_view AS SELECT * FROM empty_table_source;\u0000"""; + + String actualSQL = template.generate(tableInfo); + + assertEquals(expectedSQL, actualSQL); + } + + @Test + public void shouldGenerateMaterializedViewWithIncludes() + { + Map columns = new LinkedHashMap<>(); + columns.put("id", "INT"); + columns.put("zilla_correlation_id", "VARCHAR"); + columns.put("zilla_identity", "VARCHAR"); + columns.put("timestamp", "TIMESTAMP"); + + TableInfo tableInfo = new TableInfo("test_table", columns, Set.of("id")); + String expectedSQL = "CREATE MATERIALIZED VIEW IF NOT EXISTS test_table_view AS SELECT id," + + " COALESCE(zilla_correlation_id, zilla_correlation_id_header::varchar) as zilla_correlation_id," + + " COALESCE(zilla_identity, zilla_identity_header::varchar) as zilla_identity, timestamp" + + " FROM test_table_source;\u0000"; + + String actualSQL = template.generate(tableInfo); + + assertEquals(expectedSQL, actualSQL); + } +} diff --git a/incubator/binding-risingwave/src/test/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveCreateSourceTemplateTest.java b/incubator/binding-risingwave/src/test/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveCreateSourceTemplateTest.java new file mode 100644 index 0000000000..3f9b2bdc09 --- /dev/null +++ b/incubator/binding-risingwave/src/test/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveCreateSourceTemplateTest.java @@ -0,0 +1,118 @@ +package io.aklivity.zilla.runtime.binding.risingwave.internal.statement; + +import static org.junit.Assert.assertEquals; + +import java.util.LinkedHashMap; +import java.util.Map; +import java.util.Set; + +import org.junit.BeforeClass; +import org.junit.Test; + +import io.aklivity.zilla.runtime.binding.pgsql.parser.module.StreamInfo; +import io.aklivity.zilla.runtime.binding.pgsql.parser.module.TableInfo; + +public class RisingwaveCreateSourceTemplateTest +{ + private static RisingwaveCreateSourceTemplate template; + + @BeforeClass + public static void setUp() + { + template = new RisingwaveCreateSourceTemplate("localhost:9092", "http://localhost:8081", 1627846260000L); + } + + @Test + public void shouldGenerateStreamSourceWithValidStreamInfo() + { + StreamInfo streamInfo = new StreamInfo("test_stream", Map.of("id", "INT", "name", "STRING")); + String expectedSQL = """ + CREATE SOURCE IF NOT EXISTS test_stream (*) + WITH ( + connector='kafka', + properties.bootstrap.server='localhost:9092', + topic='test_db.test_stream', + scan.startup.mode='latest', + scan.startup.timestamp.millis='1627846260000' + ) FORMAT PLAIN ENCODE AVRO ( + schema.registry = 'http://localhost:8081' + );\u0000"""; + + String actualSQL = template.generateStreamSource("test_db", streamInfo); + + assertEquals(expectedSQL, actualSQL); + } + + @Test + public void shouldGenerateTableSourceWithValidTableInfoAndIncludes() + { + Map columns = new LinkedHashMap<>(); + columns.put("id", "INT"); + columns.put("zilla_correlation_id", "VARCHAR"); + columns.put("zilla_identity", "VARCHAR"); + columns.put("timestamp", "TIMESTAMP"); + + TableInfo tableInfo = new TableInfo( + "test_table", columns, Set.of("id")); + String expectedSQL = """ + CREATE SOURCE IF NOT EXISTS test_table_source (*) + INCLUDE header 'zilla:correlation-id' AS zilla_zilla_correlation_id_header + INCLUDE header 'zilla:identity' AS zilla_zilla_identity_header + INCLUDE timestamp AS TIMESTAMP + WITH ( + connector='kafka', + properties.bootstrap.server='localhost:9092', + topic='test_db.test_table', + scan.startup.mode='latest', + scan.startup.timestamp.millis='1627846260000' + ) FORMAT PLAIN ENCODE AVRO ( + schema.registry = 'http://localhost:8081' + );\u0000"""; + + String actualSQL = template.generateTableSource("test_db", tableInfo); + + assertEquals(expectedSQL, actualSQL); + } + + @Test + public void shouldGenerateStreamSourceWithEmptyColumnsReturnsSQLWithoutIncludes() + { + StreamInfo streamInfo = new StreamInfo("empty_stream", Map.of()); + String expectedSQL = """ + CREATE SOURCE IF NOT EXISTS empty_stream (*) + WITH ( + connector='kafka', + properties.bootstrap.server='localhost:9092', + topic='test_db.empty_stream', + scan.startup.mode='latest', + scan.startup.timestamp.millis='1627846260000' + ) FORMAT PLAIN ENCODE AVRO ( + schema.registry = 'http://localhost:8081' + );\u0000"""; + + String actualSQL = template.generateStreamSource("test_db", streamInfo); + + assertEquals(expectedSQL, actualSQL); + } + + @Test + public void shouldGenerateTableSourceWithEmptyColumnsAndWithoutIncludes() + { + TableInfo tableInfo = new TableInfo("empty_table", Map.of(), Set.of()); + String expectedSQL = """ + CREATE SOURCE IF NOT EXISTS empty_table_source (*) + WITH ( + connector='kafka', + properties.bootstrap.server='localhost:9092', + topic='test_db.empty_table', + scan.startup.mode='latest', + scan.startup.timestamp.millis='1627846260000' + ) FORMAT PLAIN ENCODE AVRO ( + schema.registry = 'http://localhost:8081' + );\u0000"""; + + String actualSQL = template.generateTableSource("test_db", tableInfo); + + assertEquals(expectedSQL, actualSQL); + } +} diff --git a/incubator/binding-risingwave/src/test/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveCreateTableTemplateTest.java b/incubator/binding-risingwave/src/test/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveCreateTableTemplateTest.java new file mode 100644 index 0000000000..92d55d27f7 --- /dev/null +++ b/incubator/binding-risingwave/src/test/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveCreateTableTemplateTest.java @@ -0,0 +1,82 @@ +package io.aklivity.zilla.runtime.binding.risingwave.internal.statement; + +import static org.junit.Assert.assertEquals; + +import java.util.LinkedHashMap; +import java.util.Map; +import java.util.Set; + +import org.junit.BeforeClass; +import org.junit.Ignore; +import org.junit.Test; + +import io.aklivity.zilla.runtime.binding.pgsql.parser.module.TableInfo; + +public class RisingwaveCreateTableTemplateTest +{ + private static RisingwaveCreateTableTemplate template; + + @BeforeClass + public static void setUp() + { + template = new RisingwaveCreateTableTemplate(); + } + + @Test + public void shouldGenerateTableWithValidTableInfo() + { + Map columns = new LinkedHashMap<>(); + columns.put("id", "INT"); + columns.put("name", "STRING"); + + TableInfo tableInfo = new TableInfo( + "test_table", + columns, + Set.of("id")); + String expectedSQL = """ + CREATE TABLE IF NOT EXISTS test_table (id INT, name STRING, PRIMARY KEY (id));\u0000"""; + + String actualSQL = template.generate(tableInfo); + + assertEquals(expectedSQL, actualSQL); + } + + @Test + public void shouldGenerateTableWithoutPrimaryKey() + { + Map columns = new LinkedHashMap<>(); + columns.put("id", "INT"); + columns.put("name", "STRING"); + + TableInfo tableInfo = new TableInfo( + "test_table", + columns, + Set.of()); + String expectedSQL = """ + CREATE TABLE IF NOT EXISTS test_table (id INT, name STRING);\u0000"""; + + String actualSQL = template.generate(tableInfo); + + assertEquals(expectedSQL, actualSQL); + } + + @Ignore("TODO") + @Test + public void shouldGenerateTableWithMultiplePrimaryKeys() + { + Map columns = new LinkedHashMap<>(); + columns.put("id", "INT"); + columns.put("name", "STRING"); + + TableInfo tableInfo = new TableInfo( + "test_table", + columns, + Set.of("id", "name")); + String expectedSQL = """ + CREATE TABLE IF NOT EXISTS test_table (id INT, name STRING, PRIMARY KEY (id));\u0000"""; + + String actualSQL = template.generate(tableInfo); + + assertEquals(expectedSQL, actualSQL); + } +} From 4704dda8188ce4fd447b884797c0ee5e7305a750 Mon Sep 17 00:00:00 2001 From: Akram Yakubov Date: Thu, 17 Oct 2024 17:46:39 -0700 Subject: [PATCH 13/26] WIP --- .../risingwave/internal/stream/RisingwaveProxyFactory.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/stream/RisingwaveProxyFactory.java b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/stream/RisingwaveProxyFactory.java index 06d502b791..212bae30a6 100644 --- a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/stream/RisingwaveProxyFactory.java +++ b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/stream/RisingwaveProxyFactory.java @@ -67,7 +67,7 @@ public final class RisingwaveProxyFactory implements RisingwaveStreamFactory { - private static final String SPLIT_STATEMENTS = "(?<=;)(?!\\x00)"; + private static final String SPLIT_STATEMENTS = "(?<=;)(?!\\s*\\x00)"; private static final int END_OF_FIELD = 0x00; private static final int FLAGS_INIT = 0x02; From 6ba3bce4d4e9b2cee8e470c161ea9b57d3be5e41 Mon Sep 17 00:00:00 2001 From: Akram Yakubov Date: Thu, 17 Oct 2024 18:10:37 -0700 Subject: [PATCH 14/26] WIP --- .../effective/create.stream.with.includes/client.rpt | 7 ++++--- .../effective/create.stream.with.includes/server.rpt | 7 ++++--- .../streams/pgsql/create.stream.with.includes/client.rpt | 6 ++---- .../streams/pgsql/create.stream.with.includes/server.rpt | 7 +++---- .../internal/statement/RisingwaveCreateSourceTemplate.java | 5 +++-- 5 files changed, 16 insertions(+), 16 deletions(-) diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.stream.with.includes/client.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.stream.with.includes/client.rpt index 679a78508e..97ef77b50b 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.stream.with.includes/client.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.stream.with.includes/client.rpt @@ -33,8 +33,8 @@ write zilla:data.ext ${pgsql:dataEx() .build() .build()} write "CREATE SOURCE IF NOT EXISTS weather (*)\n" - "INCLUDE header 'zilla:correlation-id' AS correlation_id\n" - "INCLUDE header 'zilla:identity' AS identity\n" + "INCLUDE header 'zilla:correlation-id' AS zilla_correlation_id\n" + "INCLUDE header 'zilla:identity' AS zilla_identity\n" "INCLUDE timestamp AS timestamp\n" "WITH (\n" " connector='kafka',\n" @@ -82,7 +82,8 @@ write zilla:data.ext ${pgsql:dataEx() .build() .build()} write "CREATE TOPIC IF NOT EXISTS weather " - "(city VARCHAR, temperature DOUBLE, date DATE);" + "(city VARCHAR, temperature DOUBLE, date DATE," + " zilla_correlation_id VARCHAR, zilla_identity VARCHAR, timestamp TIMESTAMP);" [0x00] write flush diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.stream.with.includes/server.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.stream.with.includes/server.rpt index 9871eea900..2aaf5aac20 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.stream.with.includes/server.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.stream.with.includes/server.rpt @@ -37,8 +37,8 @@ read zilla:data.ext ${pgsql:dataEx() .build() .build()} read "CREATE SOURCE IF NOT EXISTS weather (*)\n" - "INCLUDE header 'zilla:correlation-id' AS correlation_id\n" - "INCLUDE header 'zilla:identity' AS identity\n" + "INCLUDE header 'zilla:correlation-id' AS zilla_correlation_id\n" + "INCLUDE header 'zilla:identity' AS zilla_identity\n" "INCLUDE timestamp AS timestamp\n" "WITH (\n" " connector='kafka',\n" @@ -88,7 +88,8 @@ read zilla:data.ext ${pgsql:dataEx() .build() .build()} read "CREATE TOPIC IF NOT EXISTS weather " - "(city VARCHAR, temperature DOUBLE, date DATE);" + "(city VARCHAR, temperature DOUBLE, date DATE," + " zilla_correlation_id VARCHAR, zilla_identity VARCHAR, timestamp TIMESTAMP);" [0x00] write advise zilla:flush ${pgsql:flushEx() diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.stream.with.includes/client.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.stream.with.includes/client.rpt index dbb1c245b7..8b28390df8 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.stream.with.includes/client.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.stream.with.includes/client.rpt @@ -33,10 +33,8 @@ write zilla:data.ext ${pgsql:dataEx() .build() .build()} write "CREATE STREAM IF NOT EXISTS weather " - "(city VARCHAR, temperature DOUBLE, date DATE)\n" - "INCLUDE zilla_correlation_id AS correlation_id\n" - "INCLUDE zilla_identity AS identity\n" - "INCLUDE timestamp as timestamp;" + "(city VARCHAR, temperature DOUBLE, date DATE," + " zilla_correlation_id VARCHAR, zilla_identity VARCHAR, timestamp TIMESTAMP);" [0x00] write flush diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.stream.with.includes/server.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.stream.with.includes/server.rpt index 19833142cf..cb803e58c4 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.stream.with.includes/server.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.stream.with.includes/server.rpt @@ -37,12 +37,11 @@ read zilla:data.ext ${pgsql:dataEx() .build() .build()} read "CREATE STREAM IF NOT EXISTS weather " - "(city VARCHAR, temperature DOUBLE, date DATE)\n" - "INCLUDE zilla_correlation_id AS correlation_id\n" - "INCLUDE zilla_identity AS identity\n" - "INCLUDE timestamp as timestamp;" + "(city VARCHAR, temperature DOUBLE, date DATE," + " zilla_correlation_id VARCHAR, zilla_identity VARCHAR, timestamp TIMESTAMP);" [0x00] + write advise zilla:flush ${pgsql:flushEx() .typeId(zilla:id("pgsql")) .completion() diff --git a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveCreateSourceTemplate.java b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveCreateSourceTemplate.java index 7906ec81a0..98ac9a8db7 100644 --- a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveCreateSourceTemplate.java +++ b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveCreateSourceTemplate.java @@ -58,11 +58,12 @@ public String generateStreamSource( includeBuilder.setLength(0); Map includes = streamInfo.columns().entrySet().stream() .filter(e -> ZILLA_MAPPINGS.containsKey(e.getKey())) - .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue)); + .collect(LinkedHashMap::new, (m, e) -> m.put(e.getKey(), e.getValue()), Map::putAll); + if (!includes.isEmpty()) { includeBuilder.append("\n"); - includes.forEach((k, v) -> includeBuilder.append(String.format(ZILLA_MAPPINGS.get(k), v))); + includes.forEach((k, v) -> includeBuilder.append(String.format(ZILLA_MAPPINGS.get(k), k))); includeBuilder.delete(includeBuilder.length() - 1, includeBuilder.length()); } From ae8264e110e68bf302973b33cd5f1015a709e6de Mon Sep 17 00:00:00 2001 From: Akram Yakubov Date: Thu, 17 Oct 2024 18:34:05 -0700 Subject: [PATCH 15/26] WIP only create function left --- .../runtime/binding/pgsql/parser/PgsqlParser.java | 4 ++-- .../listener/SqlCreateMaterializedViewListener.java | 11 ++++++++++- .../runtime/binding/pgsql/parser/PgsqlParserTest.java | 1 + .../RisingwaveCreateMaterializedViewTemplate.java | 1 - 4 files changed, 13 insertions(+), 4 deletions(-) diff --git a/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/PgsqlParser.java b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/PgsqlParser.java index 9dadc83ac3..a2e5b7f256 100644 --- a/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/PgsqlParser.java +++ b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/PgsqlParser.java @@ -52,13 +52,13 @@ public PgsqlParser() this.walker = new ParseTreeWalker(); this.errorStrategy = new BailErrorStrategy(); this.lexer = new PostgreSqlLexer(null); - this.parser = new PostgreSqlParser(null); this.tokens = new CommonTokenStream(lexer); + this.parser = new PostgreSqlParser(tokens); this.commandListener = new SqlCommandListener(); this.createTableListener = new SqlCreateTableTopicListener(); this.createStreamListener = new SqlCreateStreamListener(); this.createFunctionListener = new SqlCreateFunctionListener(); - this.createMaterializedViewListener = new SqlCreateMaterializedViewListener(); + this.createMaterializedViewListener = new SqlCreateMaterializedViewListener(tokens); this.dropListener = new SqlDropListener(); parser.setErrorHandler(errorStrategy); } diff --git a/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlCreateMaterializedViewListener.java b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlCreateMaterializedViewListener.java index b4ced88842..640646b3fa 100644 --- a/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlCreateMaterializedViewListener.java +++ b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlCreateMaterializedViewListener.java @@ -14,6 +14,8 @@ */ package io.aklivity.zilla.runtime.binding.pgsql.parser.listener; +import org.antlr.v4.runtime.TokenStream; + import io.aklivity.zilla.runtime.binding.pgsql.parser.PostgreSqlParser; import io.aklivity.zilla.runtime.binding.pgsql.parser.PostgreSqlParserBaseListener; import io.aklivity.zilla.runtime.binding.pgsql.parser.module.ViewInfo; @@ -22,6 +24,13 @@ public class SqlCreateMaterializedViewListener extends PostgreSqlParserBaseListe { private String name; private String select; + private TokenStream tokens; + + public SqlCreateMaterializedViewListener( + TokenStream tokens) + { + this.tokens = tokens; + } public ViewInfo viewInfo() { @@ -39,6 +48,6 @@ public void enterCreatematviewstmt( public void enterSelectstmt( PostgreSqlParser.SelectstmtContext ctx) { - select = ctx.getText(); + select = tokens.getText(ctx); } } diff --git a/incubator/binding-pgsql/src/test/java/io/aklivity/zilla/runtime/binding/pgsql/parser/PgsqlParserTest.java b/incubator/binding-pgsql/src/test/java/io/aklivity/zilla/runtime/binding/pgsql/parser/PgsqlParserTest.java index f069fc8d9b..84213f1c8d 100644 --- a/incubator/binding-pgsql/src/test/java/io/aklivity/zilla/runtime/binding/pgsql/parser/PgsqlParserTest.java +++ b/incubator/binding-pgsql/src/test/java/io/aklivity/zilla/runtime/binding/pgsql/parser/PgsqlParserTest.java @@ -127,6 +127,7 @@ public void shouldParseCreateMaterializedView() ViewInfo viewInfo = parser.parseCreateMaterializedView(sql); assertNotNull(viewInfo); assertEquals("test_view", viewInfo.name()); + assertEquals("SELECT * FROM test_table", viewInfo.select()); } @Test(expected = ParseCancellationException.class) diff --git a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveCreateMaterializedViewTemplate.java b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveCreateMaterializedViewTemplate.java index c0ad0a5538..a4a40d5774 100644 --- a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveCreateMaterializedViewTemplate.java +++ b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveCreateMaterializedViewTemplate.java @@ -16,7 +16,6 @@ import java.util.LinkedHashMap; import java.util.Map; -import java.util.stream.Collectors; import io.aklivity.zilla.runtime.binding.pgsql.parser.module.TableInfo; import io.aklivity.zilla.runtime.binding.pgsql.parser.module.ViewInfo; From 982a955e954118db14c12aa0cf18651b21caf5a7 Mon Sep 17 00:00:00 2001 From: Akram Yakubov Date: Fri, 18 Oct 2024 10:05:29 -0700 Subject: [PATCH 16/26] WIP --- .../listener/SqlCreateFunctionListener.java | 25 ++- .../pgsql/parser/module/FunctionInfo.java | 1 + .../binding/pgsql/parser/PgsqlParserTest.java | 11 ++ .../create.function.python/client.rpt | 4 +- .../create.function.python/server.rpt | 4 +- .../create.function.return.table/client.rpt | 4 +- .../create.function.return.table/server.rpt | 4 +- .../effective/create.function/client.rpt | 4 +- .../effective/create.function/server.rpt | 4 +- .../pgsql/create.function.python/client.rpt | 2 +- .../pgsql/create.function.python/server.rpt | 2 +- .../create.function.return.struct/client.rpt | 2 +- .../create.function.return.struct/server.rpt | 2 +- .../create.function.return.table/client.rpt | 2 +- .../create.function.return.table/server.rpt | 2 +- .../streams/pgsql/create.function/client.rpt | 2 +- .../streams/pgsql/create.function/server.rpt | 2 +- .../RisingwaveCreateFunctionTemplate.java | 53 +++--- .../RisingwaveCreateFunctionTemplateTest.java | 164 ++++++++++++++++++ 19 files changed, 244 insertions(+), 50 deletions(-) create mode 100644 incubator/binding-risingwave/src/test/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveCreateFunctionTemplateTest.java diff --git a/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlCreateFunctionListener.java b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlCreateFunctionListener.java index 878a77f9fb..b1ce5bb7f4 100644 --- a/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlCreateFunctionListener.java +++ b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlCreateFunctionListener.java @@ -25,6 +25,7 @@ public class SqlCreateFunctionListener extends PostgreSqlParserBaseListener { private final List arguments = new ArrayList<>(); + private final List tables = new ArrayList<>(); private String name; private String returnType; @@ -33,7 +34,7 @@ public class SqlCreateFunctionListener extends PostgreSqlParserBaseListener public FunctionInfo functionInfo() { - return new FunctionInfo(name, arguments, returnType, asFunction, language); + return new FunctionInfo(name, arguments, returnType, tables, asFunction, language); } @Override @@ -44,15 +45,21 @@ public void enterCreatefunctionstmt( } @Override - public void enterFunc_args( - PostgreSqlParser.Func_argsContext ctx) + public void enterFunc_arg( + PostgreSqlParser.Func_argContext ctx) { - ctx.func_args_list().func_arg().forEach(arg -> - { - String argName = arg.param_name() != null ? arg.param_name().getText() : null; - String argType = arg.func_type().getText(); - arguments.add(new FunctionArgument(argName, argType)); - }); + String argName = ctx.param_name() != null ? ctx.param_name().getText() : null; + String argType = ctx.func_type().getText(); + arguments.add(new FunctionArgument(argName, argType)); + } + + @Override + public void enterTable_func_column( + PostgreSqlParser.Table_func_columnContext ctx) + { + String argName = ctx.param_name() != null ? ctx.param_name().getText() : null; + String argType = ctx.func_type().getText(); + tables.add(new FunctionArgument(argName, argType)); } @Override diff --git a/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/module/FunctionInfo.java b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/module/FunctionInfo.java index ff63e0f7d6..f096608cc2 100644 --- a/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/module/FunctionInfo.java +++ b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/module/FunctionInfo.java @@ -20,6 +20,7 @@ public record FunctionInfo( String name, List arguments, String returnType, + List tables, String asFunction, String language) { diff --git a/incubator/binding-pgsql/src/test/java/io/aklivity/zilla/runtime/binding/pgsql/parser/PgsqlParserTest.java b/incubator/binding-pgsql/src/test/java/io/aklivity/zilla/runtime/binding/pgsql/parser/PgsqlParserTest.java index 84213f1c8d..33db78ded6 100644 --- a/incubator/binding-pgsql/src/test/java/io/aklivity/zilla/runtime/binding/pgsql/parser/PgsqlParserTest.java +++ b/incubator/binding-pgsql/src/test/java/io/aklivity/zilla/runtime/binding/pgsql/parser/PgsqlParserTest.java @@ -239,6 +239,17 @@ public void shouldParseCreateFunction() assertEquals("INT", functionInfo.returnType()); } + @Test + public void shouldParseCreateFunctionWithLanguage() + { + String sql = "CREATE FUNCTION test_function(int) RETURNS TABLE (x INT) LANGUAGE python AS 'test_function';"; + FunctionInfo functionInfo = parser.parseCreateFunction(sql); + assertNotNull(functionInfo); + assertEquals("test_function", functionInfo.name()); + assertEquals("INT", functionInfo.returnType()); + assertEquals("python", functionInfo.language()); + } + @Test(expected = ParseCancellationException.class) public void shouldHandleInvalidCreateFunction() { diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.function.python/client.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.function.python/client.rpt index 33ee75c8cb..9612e522fa 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.function.python/client.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.function.python/client.rpt @@ -32,9 +32,9 @@ write zilla:data.ext ${pgsql:dataEx() .query() .build() .build()} -write "CREATE FUNCTION gcd(int , int)\n" +write "CREATE FUNCTION gcd(int, int)\n" "RETURNS int\n" - "AS gcd\n" + "AS 'gcd'\n" "LANGUAGE python\n" "USING LINK 'http://localhost:8816';" [0x00] diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.function.python/server.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.function.python/server.rpt index 7bda0b7335..538c98b141 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.function.python/server.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.function.python/server.rpt @@ -34,9 +34,9 @@ read zilla:data.ext ${pgsql:dataEx() .query() .build() .build()} -read "CREATE FUNCTION gcd(int , int)\n" +read "CREATE FUNCTION gcd(int, int)\n" "RETURNS int\n" - "AS gcd\n" + "AS 'gcd'\n" "LANGUAGE python\n" "USING LINK 'http://localhost:8816';" [0x00] diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.function.return.table/client.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.function.return.table/client.rpt index ebcab805e4..88160cdb0d 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.function.return.table/client.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.function.return.table/client.rpt @@ -33,8 +33,8 @@ write zilla:data.ext ${pgsql:dataEx() .build() .build()} write "CREATE FUNCTION series(int)\n" - "RETURNS TABLE ( x int )\n" - "AS series\n" + "RETURNS TABLE (x int)\n" + "AS 'series'\n" "LANGUAGE java\n" "USING LINK 'http://localhost:8815';" [0x00] diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.function.return.table/server.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.function.return.table/server.rpt index ec7a49322a..f02bca873d 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.function.return.table/server.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.function.return.table/server.rpt @@ -35,8 +35,8 @@ read zilla:data.ext ${pgsql:dataEx() .build() .build()} read "CREATE FUNCTION series(int)\n" - "RETURNS TABLE ( x int )\n" - "AS series\n" + "RETURNS TABLE (x int)\n" + "AS 'series'\n" "LANGUAGE java\n" "USING LINK 'http://localhost:8815';" [0x00] diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.function/client.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.function/client.rpt index 182d430247..1a9a69c6e0 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.function/client.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.function/client.rpt @@ -32,9 +32,9 @@ write zilla:data.ext ${pgsql:dataEx() .query() .build() .build()} -write "CREATE FUNCTION gcd(int , int)\n" +write "CREATE FUNCTION gcd(int, int)\n" "RETURNS int\n" - "AS gcd\n" + "AS 'gcd'\n" "LANGUAGE java\n" "USING LINK 'http://localhost:8815';" [0x00] diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.function/server.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.function/server.rpt index 475e1d7c17..b925f5bcdd 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.function/server.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.function/server.rpt @@ -34,9 +34,9 @@ read zilla:data.ext ${pgsql:dataEx() .query() .build() .build()} -read "CREATE FUNCTION gcd(int , int)\n" +read "CREATE FUNCTION gcd(int, int)\n" "RETURNS int\n" - "AS gcd\n" + "AS 'gcd'\n" "LANGUAGE java\n" "USING LINK 'http://localhost:8815';" [0x00] diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.function.python/client.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.function.python/client.rpt index 340e999227..93bfa33205 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.function.python/client.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.function.python/client.rpt @@ -33,7 +33,7 @@ write zilla:data.ext ${pgsql:dataEx() .build() .build()} write "CREATE FUNCTION gcd(int, int) RETURNS int " - "LANGUAGE python AS gcd;" + "LANGUAGE python AS 'gcd';" [0x00] write flush diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.function.python/server.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.function.python/server.rpt index 20e83d8382..0170ffc27a 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.function.python/server.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.function.python/server.rpt @@ -37,7 +37,7 @@ read zilla:data.ext ${pgsql:dataEx() .build() .build()} read "CREATE FUNCTION gcd(int, int) RETURNS int " - "LANGUAGE python AS gcd;" + "LANGUAGE python AS 'gcd';" [0x00] write advise zilla:flush ${pgsql:flushEx() diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.function.return.struct/client.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.function.return.struct/client.rpt index bf1030e822..7b03821097 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.function.return.struct/client.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.function.return.struct/client.rpt @@ -33,7 +33,7 @@ write zilla:data.ext ${pgsql:dataEx() .build() .build()} write "CREATE FUNCTION key_value(bytea) RETURNS struct " - "LANGUAGE python AS key_value;" + "LANGUAGE python AS 'key_value';" [0x00] write flush diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.function.return.struct/server.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.function.return.struct/server.rpt index 05a9d55584..dddbbe6eee 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.function.return.struct/server.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.function.return.struct/server.rpt @@ -37,7 +37,7 @@ read zilla:data.ext ${pgsql:dataEx() .build() .build()} read "CREATE FUNCTION key_value(bytea) RETURNS struct " - "LANGUAGE python AS key_value;" + "LANGUAGE python AS 'key_value';" [0x00] write advise zilla:flush ${pgsql:flushEx() diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.function.return.table/client.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.function.return.table/client.rpt index 8f7384ab62..e8599cdbf5 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.function.return.table/client.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.function.return.table/client.rpt @@ -33,7 +33,7 @@ write zilla:data.ext ${pgsql:dataEx() .build() .build()} write "CREATE FUNCTION series(int) RETURNS TABLE (x int) " - "AS series;" + "AS 'series';" [0x00] write flush diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.function.return.table/server.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.function.return.table/server.rpt index 073520fff6..38ada2e027 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.function.return.table/server.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.function.return.table/server.rpt @@ -37,7 +37,7 @@ read zilla:data.ext ${pgsql:dataEx() .build() .build()} read "CREATE FUNCTION series(int) RETURNS TABLE (x int) " - "AS series;" + "AS 'series';" [0x00] write advise zilla:flush ${pgsql:flushEx() diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.function/client.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.function/client.rpt index 49ccf60200..cada6175a2 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.function/client.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.function/client.rpt @@ -33,7 +33,7 @@ write zilla:data.ext ${pgsql:dataEx() .build() .build()} write "CREATE FUNCTION gcd(int, int) RETURNS int " - "AS gcd;" + "AS 'gcd';" [0x00] write flush diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.function/server.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.function/server.rpt index 4fc06f7a40..8036c14b74 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.function/server.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.function/server.rpt @@ -37,7 +37,7 @@ read zilla:data.ext ${pgsql:dataEx() .build() .build()} read "CREATE FUNCTION gcd(int, int) RETURNS int " - "AS gcd;" + "AS 'gcd';" [0x00] write advise zilla:flush ${pgsql:flushEx() diff --git a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveCreateFunctionTemplate.java b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveCreateFunctionTemplate.java index ef8b038877..be5ce29e4d 100644 --- a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveCreateFunctionTemplate.java +++ b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveCreateFunctionTemplate.java @@ -16,12 +16,12 @@ import java.util.List; +import io.aklivity.zilla.runtime.binding.pgsql.parser.module.FunctionArgument; import io.aklivity.zilla.runtime.binding.pgsql.parser.module.FunctionInfo; import io.aklivity.zilla.runtime.binding.risingwave.config.RisingwaveUdfConfig; public class RisingwaveCreateFunctionTemplate extends RisingwaveCommandTemplate { - private static final List KEYWORDS = List.of("LANGUAGE", "AS", "USING"); private final String sqlFormat = """ CREATE FUNCTION %s(%s) RETURNS %s @@ -61,31 +61,42 @@ public String generate( FunctionInfo functionInfo) { String functionName = functionInfo.name(); + String asFunction = functionInfo.asFunction(); + List tables = functionInfo.tables(); - List parameters = functionInfo.arguments().stream() - .map(arg -> arg.name() != null ? "%s %s".formatted(arg.name(), arg.type()) : arg.type()) - .toList(); + fieldBuilder.setLength(0); - String language = functionInfo.language(); - String server = "python".equalsIgnoreCase(language) ? pythonServer : javaServer; - String returnType = functionInfo.returnType(); + functionInfo.arguments() + .forEach(arg -> fieldBuilder.append( + arg.name() != null + ? "%s %s, ".formatted(arg.name(), arg.type()) + : "%s, ".formatted(arg.type()))); - return sqlFormat.formatted(functionName, parameters, returnType, "", language, server); - } + if (!functionInfo.arguments().isEmpty()) + { + fieldBuilder.delete(fieldBuilder.length() - 2, fieldBuilder.length()); + } + String arguments = fieldBuilder.toString(); - private int findNextKeywordIndex( - List parts, - int startIndex) - { - int endIndex = -1; - for (int index = startIndex; index < parts.size(); index++) + + String language = functionInfo.language() != null ? functionInfo.language() : "java"; + String server = "python".equalsIgnoreCase(language) ? pythonServer : javaServer; + + String returnType = functionInfo.returnType(); + if (!tables.isEmpty()) { - if (KEYWORDS.contains(parts.get(index).toUpperCase())) - { - endIndex = index; - break; - } + fieldBuilder.setLength(0); + fieldBuilder.append("TABLE ("); + tables.forEach(arg -> fieldBuilder.append( + arg.name() != null + ? "%s %s, ".formatted(arg.name(), arg.type()) + : "%s, ".formatted(arg.type()))); + fieldBuilder.delete(fieldBuilder.length() - 2, fieldBuilder.length()); + fieldBuilder.append(")"); + + returnType = fieldBuilder.toString(); } - return endIndex; + + return sqlFormat.formatted(functionName, arguments, returnType, asFunction, language, server); } } diff --git a/incubator/binding-risingwave/src/test/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveCreateFunctionTemplateTest.java b/incubator/binding-risingwave/src/test/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveCreateFunctionTemplateTest.java new file mode 100644 index 0000000000..d2230e1c48 --- /dev/null +++ b/incubator/binding-risingwave/src/test/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveCreateFunctionTemplateTest.java @@ -0,0 +1,164 @@ +package io.aklivity.zilla.runtime.binding.risingwave.internal.statement; + +import static org.junit.Assert.assertEquals; + +import java.util.List; + +import org.junit.BeforeClass; +import org.junit.Test; + +import io.aklivity.zilla.runtime.binding.pgsql.parser.module.FunctionArgument; +import io.aklivity.zilla.runtime.binding.pgsql.parser.module.FunctionInfo; +import io.aklivity.zilla.runtime.binding.risingwave.config.RisingwaveUdfConfig; + + +public class RisingwaveCreateFunctionTemplateTest +{ + private static RisingwaveCreateFunctionTemplate template; + + @BeforeClass + public static void setUp() + { + template = new RisingwaveCreateFunctionTemplate(List.of( + RisingwaveUdfConfig.builder().server("http://localhost:8815").language("java").build(), + RisingwaveUdfConfig.builder().server("http://localhost:8816").language("python").build())); + } + + @Test + public void shouldGenerateFunctionWithValidFunctionInfo() + { + FunctionInfo functionInfo = new FunctionInfo( + "test_function", + List.of(new FunctionArgument("arg1", "INT")), + "INT", + List.of(), + "test_function", + "java"); + String expectedSQL = """ + CREATE FUNCTION test_function(arg1 INT) + RETURNS INT + AS test_function + LANGUAGE java + USING LINK 'http://localhost:8815';\u0000"""; + + String actualSQL = template.generate(functionInfo); + + assertEquals(expectedSQL, actualSQL); + } + + @Test + public void shouldGenerateFunctionWithTableReturnType() + { + FunctionInfo functionInfo = new FunctionInfo( + "test_function", + List.of(new FunctionArgument("arg1", "INT")), + "INT", + List.of(new FunctionArgument("tab1", "INT")), + "test_function", + "java"); + + String expectedSQL = """ + CREATE FUNCTION test_function(arg1 INT) + RETURNS TABLE (tab1 INT) + AS test_function + LANGUAGE java + USING LINK 'http://localhost:8815';\u0000"""; + + String actualSQL = template.generate(functionInfo); + + assertEquals(expectedSQL, actualSQL); + } + + @Test + public void shouldGenerateFunctionWithTableAsReturnType() + { + FunctionInfo functionInfo = new FunctionInfo( + "test_function", + List.of(new FunctionArgument("arg1", "INT")), + "INT", + List.of(), + "test_function", + "java"); + + String expectedSQL = """ + CREATE FUNCTION test_function(arg1 INT) + RETURNS INT + AS test_function + LANGUAGE java + USING LINK 'http://localhost:8815';\u0000"""; + + String actualSQL = template.generate(functionInfo); + + assertEquals(expectedSQL, actualSQL); + } + + @Test + public void shouldGenerateFunctionWithMultipleArguments() + { + FunctionInfo functionInfo = new FunctionInfo( + "test_function", + List.of(new FunctionArgument("arg1", "INT"), new FunctionArgument("arg2", "STRING")), + "STRING", + List.of(), + "test_function", + "python"); + + String expectedSQL = """ + CREATE FUNCTION test_function(arg1 INT, arg2 STRING) + RETURNS STRING + AS test_function + LANGUAGE python + USING LINK 'http://localhost:8816';\u0000"""; + + String actualSQL = template.generate(functionInfo); + + assertEquals(expectedSQL, actualSQL); + } + + @Test + public void shouldGenerateFunctionWithUnnamedArguments() + { + FunctionInfo functionInfo = new FunctionInfo( + "test_function", + List.of(new FunctionArgument(null, "INT"), new FunctionArgument(null, "STRING")), + "STRING", + List.of(), + "test_function", + "java"); + + String expectedSQL = """ + CREATE FUNCTION test_function(INT, STRING) + RETURNS STRING + AS test_function + LANGUAGE java + USING LINK 'http://localhost:8815';\u0000"""; + + String actualSQL = template.generate(functionInfo); + + assertEquals(expectedSQL, actualSQL); + } + + @Test + public void shouldGenerateFunctionWithEmptyArguments() + { + FunctionInfo functionInfo = new FunctionInfo( + "test_function", + List.of(), + "VOID", + List.of(), + "test_function", + "python"); + + String expectedSQL = """ + CREATE FUNCTION test_function() + RETURNS VOID + AS test_function + LANGUAGE python + USING LINK 'http://localhost:8816';\u0000"""; + + String actualSQL = template.generate(functionInfo); + + assertEquals(expectedSQL, actualSQL); + } + +} From 5d4414d415c846d310f6271868bd12e76c693179 Mon Sep 17 00:00:00 2001 From: Akram Yakubov Date: Fri, 18 Oct 2024 11:01:18 -0700 Subject: [PATCH 17/26] Checkpoint --- incubator/binding-pgsql-kafka/pom.xml | 2 +- incubator/binding-pgsql/pom.xml | 2 +- .../binding/pgsql/parser/PostgreSqlParser.g4 | 16 +++- .../binding/pgsql/parser/PgsqlParser.java | 2 +- .../parser/listener/SqlCommandListener.java | 7 +- .../listener/SqlCreateFunctionListener.java | 12 ++- .../binding/pgsql/parser/PgsqlParserTest.java | 87 +++++++++++++++++++ .../create.function.return.struct/client.rpt | 4 +- .../create.function.return.struct/server.rpt | 4 +- incubator/binding-risingwave/pom.xml | 2 +- .../RisingwaveCreateFunctionTemplate.java | 10 +-- .../RisingwaveCreateSourceTemplate.java | 1 - .../stream/RisingwaveProxyFactory.java | 72 ++++++++++++--- .../RisingwaveCreateFunctionTemplateTest.java | 14 +++ ...aveCreateMaterializedViewTemplateTest.java | 14 +++ .../RisingwaveCreateSourceTemplateTest.java | 20 ++++- .../RisingwaveCreateTableTemplateTest.java | 14 +++ 17 files changed, 251 insertions(+), 32 deletions(-) diff --git a/incubator/binding-pgsql-kafka/pom.xml b/incubator/binding-pgsql-kafka/pom.xml index 44f768412f..6e5414dc72 100644 --- a/incubator/binding-pgsql-kafka/pom.xml +++ b/incubator/binding-pgsql-kafka/pom.xml @@ -24,7 +24,7 @@ - 0.82 + 0.86 0 diff --git a/incubator/binding-pgsql/pom.xml b/incubator/binding-pgsql/pom.xml index 04f811d1f0..4c0cd40a3d 100644 --- a/incubator/binding-pgsql/pom.xml +++ b/incubator/binding-pgsql/pom.xml @@ -24,7 +24,7 @@ - 0.89 + 0.91 0 diff --git a/incubator/binding-pgsql/src/main/antlr4/io/aklivity/zilla/runtime/binding/pgsql/parser/PostgreSqlParser.g4 b/incubator/binding-pgsql/src/main/antlr4/io/aklivity/zilla/runtime/binding/pgsql/parser/PostgreSqlParser.g4 index 267617c5ff..d2bf3dcbd2 100644 --- a/incubator/binding-pgsql/src/main/antlr4/io/aklivity/zilla/runtime/binding/pgsql/parser/PostgreSqlParser.g4 +++ b/incubator/binding-pgsql/src/main/antlr4/io/aklivity/zilla/runtime/binding/pgsql/parser/PostgreSqlParser.g4 @@ -1939,6 +1939,19 @@ createfunctionstmt )? createfunc_opt_list ; +opt_type_parameters + : '<' type_parameters '>' + | + ; + +type_parameters + : type_parameter (COMMA type_parameter)* + ; + +type_parameter + : colid typename + ; + opt_or_replace : OR REPLACE | @@ -1996,7 +2009,6 @@ func_return func_type : typename - | SETOF? (builtin_function_name | type_function_name | LEFT | RIGHT) attrs PERCENT TYPE_P ; func_arg_with_default @@ -3400,7 +3412,7 @@ consttypename ; generictype - : (builtin_function_name | type_function_name | LEFT | RIGHT) attrs? opt_type_modifiers + : (builtin_function_name | type_function_name | LEFT | RIGHT) attrs? opt_type_modifiers opt_type_parameters ; opt_type_modifiers diff --git a/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/PgsqlParser.java b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/PgsqlParser.java index a2e5b7f256..447328c810 100644 --- a/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/PgsqlParser.java +++ b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/PgsqlParser.java @@ -57,7 +57,7 @@ public PgsqlParser() this.commandListener = new SqlCommandListener(); this.createTableListener = new SqlCreateTableTopicListener(); this.createStreamListener = new SqlCreateStreamListener(); - this.createFunctionListener = new SqlCreateFunctionListener(); + this.createFunctionListener = new SqlCreateFunctionListener(tokens); this.createMaterializedViewListener = new SqlCreateMaterializedViewListener(tokens); this.dropListener = new SqlDropListener(); parser.setErrorHandler(errorStrategy); diff --git a/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlCommandListener.java b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlCommandListener.java index 5ffed22ee5..bc4a949c95 100644 --- a/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlCommandListener.java +++ b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlCommandListener.java @@ -56,7 +56,12 @@ public void enterCreatematviewstmt( public void enterCreatefunctionstmt( PostgreSqlParser.CreatefunctionstmtContext ctx) { - command = "CREATE FUNCTION"; + String functionBody = ctx.getText(); + + if (!functionBody.contains("$$")) + { + command = "CREATE FUNCTION"; + } } @Override diff --git a/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlCreateFunctionListener.java b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlCreateFunctionListener.java index b1ce5bb7f4..024b7f525a 100644 --- a/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlCreateFunctionListener.java +++ b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlCreateFunctionListener.java @@ -17,6 +17,8 @@ import java.util.ArrayList; import java.util.List; +import org.antlr.v4.runtime.TokenStream; + import io.aklivity.zilla.runtime.binding.pgsql.parser.PostgreSqlParser; import io.aklivity.zilla.runtime.binding.pgsql.parser.PostgreSqlParserBaseListener; import io.aklivity.zilla.runtime.binding.pgsql.parser.module.FunctionArgument; @@ -27,11 +29,19 @@ public class SqlCreateFunctionListener extends PostgreSqlParserBaseListener private final List arguments = new ArrayList<>(); private final List tables = new ArrayList<>(); + private final TokenStream tokens; + private String name; private String returnType; private String asFunction; private String language; + public SqlCreateFunctionListener( + TokenStream tokens) + { + this.tokens = tokens; + } + public FunctionInfo functionInfo() { return new FunctionInfo(name, arguments, returnType, tables, asFunction, language); @@ -66,7 +76,7 @@ public void enterTable_func_column( public void enterFunc_type( PostgreSqlParser.Func_typeContext ctx) { - returnType = ctx.typename().getText(); + returnType = tokens.getText(ctx.typename()); } @Override diff --git a/incubator/binding-pgsql/src/test/java/io/aklivity/zilla/runtime/binding/pgsql/parser/PgsqlParserTest.java b/incubator/binding-pgsql/src/test/java/io/aklivity/zilla/runtime/binding/pgsql/parser/PgsqlParserTest.java index 33db78ded6..54f753ffd6 100644 --- a/incubator/binding-pgsql/src/test/java/io/aklivity/zilla/runtime/binding/pgsql/parser/PgsqlParserTest.java +++ b/incubator/binding-pgsql/src/test/java/io/aklivity/zilla/runtime/binding/pgsql/parser/PgsqlParserTest.java @@ -250,6 +250,18 @@ public void shouldParseCreateFunctionWithLanguage() assertEquals("python", functionInfo.language()); } + @Test + public void shouldParseCreateFunctionWithStructReturnType() + { + String sql = "CREATE FUNCTION test_function(int) RETURNS struct" + + " LANGUAGE python AS 'test_function';"; + FunctionInfo functionInfo = parser.parseCreateFunction(sql); + assertNotNull(functionInfo); + assertEquals("test_function", functionInfo.name()); + assertEquals("struct", functionInfo.returnType()); + assertEquals("python", functionInfo.language()); + } + @Test(expected = ParseCancellationException.class) public void shouldHandleInvalidCreateFunction() { @@ -257,4 +269,79 @@ public void shouldHandleInvalidCreateFunction() parser.parseCreateFunction(sql); } + @Test + public void shouldParseCreateTableWithUniqueConstraint() + { + String sql = "CREATE TABLE test (id INT UNIQUE, name VARCHAR(100));"; + TableInfo tableInfo = parser.parseCreateTable(sql); + assertNotNull(tableInfo); + assertEquals(2, tableInfo.columns().size()); + assertTrue(tableInfo.columns().containsKey("id")); + assertTrue(tableInfo.columns().containsKey("name")); + } + + @Test + public void shouldParseCreateTableWithForeignKey() + { + String sql = "CREATE TABLE test (id INT, name VARCHAR(100), CONSTRAINT fk_name FOREIGN KEY (name)" + + " REFERENCES other_table(name));"; + TableInfo tableInfo = parser.parseCreateTable(sql); + assertNotNull(tableInfo); + assertEquals(2, tableInfo.columns().size()); + assertTrue(tableInfo.columns().containsKey("id")); + assertTrue(tableInfo.columns().containsKey("name")); + } + + @Test + public void shouldParseCreateTableWithCheckConstraint() + { + String sql = "CREATE TABLE test (id INT, name VARCHAR(100), CHECK (id > 0));"; + TableInfo tableInfo = parser.parseCreateTable(sql); + assertNotNull(tableInfo); + assertEquals(2, tableInfo.columns().size()); + assertTrue(tableInfo.columns().containsKey("id")); + assertTrue(tableInfo.columns().containsKey("name")); + } + + @Test + public void shouldHandleInvalidCreateTableWithMissingColumns() + { + String sql = "CREATE TABLE test ();"; + parser.parseCreateTable(sql); + } + + @Test + public void shouldParseCreateTableWithDefaultValues() + { + String sql = "CREATE TABLE test (id INT DEFAULT 0, name VARCHAR(100) DEFAULT 'unknown');"; + TableInfo tableInfo = parser.parseCreateTable(sql); + assertNotNull(tableInfo); + assertEquals(2, tableInfo.columns().size()); + assertEquals("INT", tableInfo.columns().get("id")); + assertEquals("VARCHAR(100)", tableInfo.columns().get("name")); + } + + @Test + public void shouldParseCreateTableWithNotNullConstraint() + { + String sql = "CREATE TABLE test (id INT NOT NULL, name VARCHAR(100) NOT NULL);"; + TableInfo tableInfo = parser.parseCreateTable(sql); + assertNotNull(tableInfo); + assertEquals(2, tableInfo.columns().size()); + assertTrue(tableInfo.columns().containsKey("id")); + assertTrue(tableInfo.columns().containsKey("name")); + } + + @Test + public void shouldParseCreateTableWithMultipleConstraints() + { + String sql = "CREATE TABLE test (id INT PRIMARY KEY, name VARCHAR(100) UNIQUE, age INT CHECK (age > 0));"; + TableInfo tableInfo = parser.parseCreateTable(sql); + assertNotNull(tableInfo); + assertEquals(3, tableInfo.columns().size()); + assertTrue(tableInfo.primaryKeys().contains("id")); + assertTrue(tableInfo.columns().containsKey("name")); + assertTrue(tableInfo.columns().containsKey("age")); + } + } diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.function.return.struct/client.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.function.return.struct/client.rpt index 6c81524818..0a33a54114 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.function.return.struct/client.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.function.return.struct/client.rpt @@ -33,8 +33,8 @@ write zilla:data.ext ${pgsql:dataEx() .build() .build()} write "CREATE FUNCTION key_value(bytea)\n" - "RETURNS struct < key varchar , value varchar >\n" - "AS key_value\n" + "RETURNS struct\n" + "AS 'key_value'\n" "LANGUAGE python\n" "USING LINK 'http://localhost:8816';" [0x00] diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.function.return.struct/server.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.function.return.struct/server.rpt index 23335bb651..cffa0b2496 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.function.return.struct/server.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.function.return.struct/server.rpt @@ -35,8 +35,8 @@ read zilla:data.ext ${pgsql:dataEx() .build() .build()} read "CREATE FUNCTION key_value(bytea)\n" - "RETURNS struct < key varchar , value varchar >\n" - "AS key_value\n" + "RETURNS struct\n" + "AS 'key_value'\n" "LANGUAGE python\n" "USING LINK 'http://localhost:8816';" [0x00] diff --git a/incubator/binding-risingwave/pom.xml b/incubator/binding-risingwave/pom.xml index 1e2fc5de7c..5cae1d2917 100644 --- a/incubator/binding-risingwave/pom.xml +++ b/incubator/binding-risingwave/pom.xml @@ -24,7 +24,7 @@ - 0.86 + 0.92 0 diff --git a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveCreateFunctionTemplate.java b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveCreateFunctionTemplate.java index be5ce29e4d..781afabeff 100644 --- a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveCreateFunctionTemplate.java +++ b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveCreateFunctionTemplate.java @@ -62,22 +62,22 @@ public String generate( { String functionName = functionInfo.name(); String asFunction = functionInfo.asFunction(); + List arguments = functionInfo.arguments(); List tables = functionInfo.tables(); fieldBuilder.setLength(0); - functionInfo.arguments() + arguments .forEach(arg -> fieldBuilder.append( arg.name() != null ? "%s %s, ".formatted(arg.name(), arg.type()) : "%s, ".formatted(arg.type()))); - if (!functionInfo.arguments().isEmpty()) + if (!arguments.isEmpty()) { fieldBuilder.delete(fieldBuilder.length() - 2, fieldBuilder.length()); } - String arguments = fieldBuilder.toString(); - + String funcArguments = fieldBuilder.toString(); String language = functionInfo.language() != null ? functionInfo.language() : "java"; String server = "python".equalsIgnoreCase(language) ? pythonServer : javaServer; @@ -97,6 +97,6 @@ public String generate( returnType = fieldBuilder.toString(); } - return sqlFormat.formatted(functionName, arguments, returnType, asFunction, language, server); + return sqlFormat.formatted(functionName, funcArguments, returnType, asFunction, language, server); } } diff --git a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveCreateSourceTemplate.java b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveCreateSourceTemplate.java index 98ac9a8db7..bf29514b14 100644 --- a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveCreateSourceTemplate.java +++ b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveCreateSourceTemplate.java @@ -16,7 +16,6 @@ import java.util.LinkedHashMap; import java.util.Map; -import java.util.stream.Collectors; import io.aklivity.zilla.runtime.binding.pgsql.parser.module.StreamInfo; import io.aklivity.zilla.runtime.binding.pgsql.parser.module.TableInfo; diff --git a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/stream/RisingwaveProxyFactory.java b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/stream/RisingwaveProxyFactory.java index 212bae30a6..1f793be4de 100644 --- a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/stream/RisingwaveProxyFactory.java +++ b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/stream/RisingwaveProxyFactory.java @@ -67,7 +67,6 @@ public final class RisingwaveProxyFactory implements RisingwaveStreamFactory { - private static final String SPLIT_STATEMENTS = "(?<=;)(?!\\s*\\x00)"; private static final int END_OF_FIELD = 0x00; private static final int FLAGS_INIT = 0x02; @@ -83,6 +82,8 @@ public final class RisingwaveProxyFactory implements RisingwaveStreamFactory private static final Consumer EMPTY_EXTENSION = ex -> {}; private final PgsqlParser parser = new PgsqlParser(); + private final List statements = new ArrayList<>(); + private final StringBuilder currentStatement = new StringBuilder(); private final BeginFW beginRO = new BeginFW(); private final DataFW dataRO = new DataFW(); @@ -725,16 +726,16 @@ private void doParseQuery( final MutableDirectBuffer parserBuffer = bufferPool.buffer(parserSlot); String sql = parserBuffer.getStringWithoutLengthAscii(0, parserSlotOffset); - String[] statements = sql.split(SPLIT_STATEMENTS); - - int length = statements.length; - if (length > 0) - { - String statement = statements[0]; - String command = parser.parseCommand(statement); - final PgsqlTransform transform = clientTransforms.get(RisingwaveCommandType.valueOf(command.getBytes())); - transform.transform(this, traceId, authorizationId, statement); - } + splitStatements(sql) + .stream() + .findFirst() + .ifPresent(s -> + { + String statement = s; + String command = parser.parseCommand(statement); + final PgsqlTransform transform = clientTransforms.get(RisingwaveCommandType.valueOf(command.getBytes())); + transform.transform(this, traceId, authorizationId, statement); + }); } } @@ -1792,6 +1793,55 @@ private void proxyDataCommand( server.doAppData(routedId, traceId, authorization, flags, buffer, offset, limit, extension); } + public List splitStatements( + String sql) + { + statements.clear(); + currentStatement.setLength(0); + + boolean inDollarQuotes = false; + int length = sql.length(); + + for (int i = 0; i < length; i++) + { + char c = sql.charAt(i); + currentStatement.append(c); + + if (c == '$' && i + 1 < length && sql.charAt(i + 1) == '$') + { + inDollarQuotes = !inDollarQuotes; + currentStatement.append(sql.charAt(++i)); + } + else if (c == ';' && !inDollarQuotes) + { + int j = i + 1; + while (j < length && Character.isWhitespace(sql.charAt(j))) + { + currentStatement.append(sql.charAt(j)); + j++; + } + if (j < length && sql.charAt(j) == '\0') + { + currentStatement.append(sql.charAt(j)); + i = j; // Move the main loop index forward + } + else + { + statements.add(currentStatement.toString()); + currentStatement.setLength(0); + } + } + } + + if (!currentStatement.isEmpty()) + { + statements.add(currentStatement.toString()); + } + + return statements; + } + + @FunctionalInterface private interface PgsqlTransform { diff --git a/incubator/binding-risingwave/src/test/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveCreateFunctionTemplateTest.java b/incubator/binding-risingwave/src/test/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveCreateFunctionTemplateTest.java index d2230e1c48..e6ba37c9a6 100644 --- a/incubator/binding-risingwave/src/test/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveCreateFunctionTemplateTest.java +++ b/incubator/binding-risingwave/src/test/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveCreateFunctionTemplateTest.java @@ -1,3 +1,17 @@ +/* + * Copyright 2021-2023 Aklivity Inc + * + * Licensed under the Aklivity Community License (the "License"); you may not use + * this file except in compliance with the License. You may obtain a copy of the + * License at + * + * https://www.aklivity.io/aklivity-community-license/ + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OF ANY KIND, either express or implied. See the License for the + * specific language governing permissions and limitations under the License. + */ package io.aklivity.zilla.runtime.binding.risingwave.internal.statement; import static org.junit.Assert.assertEquals; diff --git a/incubator/binding-risingwave/src/test/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveCreateMaterializedViewTemplateTest.java b/incubator/binding-risingwave/src/test/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveCreateMaterializedViewTemplateTest.java index b371da2e12..3af2459caa 100644 --- a/incubator/binding-risingwave/src/test/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveCreateMaterializedViewTemplateTest.java +++ b/incubator/binding-risingwave/src/test/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveCreateMaterializedViewTemplateTest.java @@ -1,3 +1,17 @@ +/* + * Copyright 2021-2023 Aklivity Inc + * + * Licensed under the Aklivity Community License (the "License"); you may not use + * this file except in compliance with the License. You may obtain a copy of the + * License at + * + * https://www.aklivity.io/aklivity-community-license/ + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OF ANY KIND, either express or implied. See the License for the + * specific language governing permissions and limitations under the License. + */ package io.aklivity.zilla.runtime.binding.risingwave.internal.statement; import static org.junit.Assert.assertEquals; diff --git a/incubator/binding-risingwave/src/test/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveCreateSourceTemplateTest.java b/incubator/binding-risingwave/src/test/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveCreateSourceTemplateTest.java index 3f9b2bdc09..26e4ed00be 100644 --- a/incubator/binding-risingwave/src/test/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveCreateSourceTemplateTest.java +++ b/incubator/binding-risingwave/src/test/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveCreateSourceTemplateTest.java @@ -1,3 +1,17 @@ +/* + * Copyright 2021-2023 Aklivity Inc + * + * Licensed under the Aklivity Community License (the "License"); you may not use + * this file except in compliance with the License. You may obtain a copy of the + * License at + * + * https://www.aklivity.io/aklivity-community-license/ + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OF ANY KIND, either express or implied. See the License for the + * specific language governing permissions and limitations under the License. + */ package io.aklivity.zilla.runtime.binding.risingwave.internal.statement; import static org.junit.Assert.assertEquals; @@ -56,9 +70,9 @@ public void shouldGenerateTableSourceWithValidTableInfoAndIncludes() "test_table", columns, Set.of("id")); String expectedSQL = """ CREATE SOURCE IF NOT EXISTS test_table_source (*) - INCLUDE header 'zilla:correlation-id' AS zilla_zilla_correlation_id_header - INCLUDE header 'zilla:identity' AS zilla_zilla_identity_header - INCLUDE timestamp AS TIMESTAMP + INCLUDE header 'zilla:correlation-id' AS zilla_correlation_id_header + INCLUDE header 'zilla:identity' AS zilla_identity_header + INCLUDE timestamp AS timestamp WITH ( connector='kafka', properties.bootstrap.server='localhost:9092', diff --git a/incubator/binding-risingwave/src/test/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveCreateTableTemplateTest.java b/incubator/binding-risingwave/src/test/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveCreateTableTemplateTest.java index 92d55d27f7..70b66eb152 100644 --- a/incubator/binding-risingwave/src/test/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveCreateTableTemplateTest.java +++ b/incubator/binding-risingwave/src/test/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveCreateTableTemplateTest.java @@ -1,3 +1,17 @@ +/* + * Copyright 2021-2023 Aklivity Inc + * + * Licensed under the Aklivity Community License (the "License"); you may not use + * this file except in compliance with the License. You may obtain a copy of the + * License at + * + * https://www.aklivity.io/aklivity-community-license/ + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OF ANY KIND, either express or implied. See the License for the + * specific language governing permissions and limitations under the License. + */ package io.aklivity.zilla.runtime.binding.risingwave.internal.statement; import static org.junit.Assert.assertEquals; From e28d8434d4d94e1a2cca4767cf0827425536c931 Mon Sep 17 00:00:00 2001 From: Akram Yakubov Date: Fri, 18 Oct 2024 11:07:49 -0700 Subject: [PATCH 18/26] Remove regenerated files --- .../binding-pgsql/gen/PostgreSqlLexer.interp | 2080 ------- .../binding-pgsql/gen/PostgreSqlLexer.java | 5257 ----------------- .../binding-pgsql/gen/PostgreSqlLexer.tokens | 1318 ----- 3 files changed, 8655 deletions(-) delete mode 100644 incubator/binding-pgsql/gen/PostgreSqlLexer.interp delete mode 100644 incubator/binding-pgsql/gen/PostgreSqlLexer.java delete mode 100644 incubator/binding-pgsql/gen/PostgreSqlLexer.tokens diff --git a/incubator/binding-pgsql/gen/PostgreSqlLexer.interp b/incubator/binding-pgsql/gen/PostgreSqlLexer.interp deleted file mode 100644 index 6dca9f3ec2..0000000000 --- a/incubator/binding-pgsql/gen/PostgreSqlLexer.interp +++ /dev/null @@ -1,2080 +0,0 @@ -token literal names: -null -'$' -'(' -')' -'[' -']' -',' -';' -':' -'*' -'=' -'.' -'+' -'-' -'/' -'^' -'<' -'>' -'<<' -'>>' -':=' -'<=' -'=>' -'>=' -'..' -'<>' -'::' -'%' -null -null -'ALL' -'ANALYSE' -'ANALYZE' -'AND' -'ANY' -'ARRAY' -'AS' -'ASC' -'ASYMMETRIC' -'BOTH' -'CASE' -'CAST' -'CHECK' -'COLLATE' -'COLUMN' -'CONSTRAINT' -'CREATE' -'CURRENT_CATALOG' -'CURRENT_DATE' -'CURRENT_ROLE' -'CURRENT_TIME' -'CURRENT_TIMESTAMP' -'CURRENT_USER' -'DEFAULT' -'DEFERRABLE' -'DESC' -'DISTINCT' -'DO' -'ELSE' -'EXCEPT' -'FALSE' -'FETCH' -'FOR' -'FOREIGN' -'FROM' -'GRANT' -'GROUP' -'HAVING' -'IN' -'INITIALLY' -'INTERSECT' -'INTO' -'LATERAL' -'LEADING' -'LIMIT' -'LOCALTIME' -'LOCALTIMESTAMP' -'NOT' -'NULL' -'OFFSET' -'ON' -'ONLY' -'OR' -'ORDER' -'PLACING' -'PRIMARY' -'REFERENCES' -'RETURNING' -'SELECT' -'SESSION_USER' -'SOME' -'SYMMETRIC' -'TABLE' -'THEN' -'TO' -'TOPIC' -'STREAM' -'TRAILING' -'TRUE' -'UNION' -'UNIQUE' -'USER' -'USING' -'VARIADIC' -'WHEN' -'WHERE' -'WINDOW' -'WITH' -'AUTHORIZATION' -'BINARY' -'COLLATION' -'CONCURRENTLY' -'CROSS' -'CURRENT_SCHEMA' -'FREEZE' -'FULL' -'ILIKE' -'INNER' -'IS' -'ISNULL' -'JOIN' -'LEFT' -'LIKE' -'NATURAL' -'NOTNULL' -'OUTER' -'OVER' -'OVERLAPS' -'RIGHT' -'SIMILAR' -'VERBOSE' -'ABORT' -'ABSOLUTE' -'ACCESS' -'ACTION' -'ADD' -'ADMIN' -'AFTER' -'AGGREGATE' -'ALSO' -'ALTER' -'ALWAYS' -'ASSERTION' -'ASSIGNMENT' -'AT' -'ATTRIBUTE' -'BACKWARD' -'BEFORE' -'BEGIN' -'BY' -'CACHE' -'CALLED' -'CASCADE' -'CASCADED' -'CATALOG' -'CHAIN' -'CHARACTERISTICS' -'CHECKPOINT' -'CLASS' -'CLOSE' -'CLUSTER' -'COMMENT' -'COMMENTS' -'COMMIT' -'COMMITTED' -'CONFIGURATION' -'CONNECTION' -'CONSTRAINTS' -'CONTENT' -'CONTINUE' -'CONVERSION' -'COPY' -'COST' -'CSV' -'CURSOR' -'CYCLE' -'DATA' -'DATABASE' -'DAY' -'DEALLOCATE' -'DECLARE' -'DEFAULTS' -'DEFERRED' -'DEFINER' -'DELETE' -'DELIMITER' -'DELIMITERS' -'DICTIONARY' -'DISABLE' -'DISCARD' -'DOCUMENT' -'DOMAIN' -'DOUBLE' -'DROP' -'EACH' -'ENABLE' -'ENCODING' -'ENCRYPTED' -'ENUM' -'ESCAPE' -'EVENT' -'EXCLUDE' -'EXCLUDING' -'EXCLUSIVE' -'EXECUTE' -'EXPLAIN' -'EXTENSION' -'EXTERNAL' -'FAMILY' -'FIRST' -'FOLLOWING' -'FORCE' -'FORWARD' -'FUNCTION' -'FUNCTIONS' -'GLOBAL' -'GRANTED' -'HANDLER' -'HEADER' -'HOLD' -'HOUR' -'IDENTITY' -'IF' -'IMMEDIATE' -'IMMUTABLE' -'IMPLICIT' -'INCLUDING' -'INCREMENT' -'INDEX' -'INDEXES' -'INHERIT' -'INHERITS' -'INLINE' -'INSENSITIVE' -'INSERT' -'INSTEAD' -'INVOKER' -'ISOLATION' -'KEY' -'LABEL' -'LANGUAGE' -'LARGE' -'LAST' -'LEAKPROOF' -'LEVEL' -'LISTEN' -'LOAD' -'LOCAL' -'LOCATION' -'LOCK' -'MAPPING' -'MATCH' -'MATCHED' -'MATERIALIZED' -'MAXVALUE' -'MERGE' -'MINUTE' -'MINVALUE' -'MODE' -'MONTH' -'MOVE' -'NAME' -'NAMES' -'NEXT' -'NO' -'NOTHING' -'NOTIFY' -'NOWAIT' -'NULLS' -'OBJECT' -'OF' -'OFF' -'OIDS' -'OPERATOR' -'OPTION' -'OPTIONS' -'OWNED' -'OWNER' -'PARSER' -'PARTIAL' -'PARTITION' -'PASSING' -'PASSWORD' -'PLANS' -'PRECEDING' -'PREPARE' -'PREPARED' -'PRESERVE' -'PRIOR' -'PRIVILEGES' -'PROCEDURAL' -'PROCEDURE' -'PROGRAM' -'QUOTE' -'RANGE' -'READ' -'REASSIGN' -'RECHECK' -'RECURSIVE' -'REF' -'REFRESH' -'REINDEX' -'RELATIVE' -'RELEASE' -'RENAME' -'REPEATABLE' -'REPLACE' -'REPLICA' -'RESET' -'RESTART' -'RESTRICT' -'RETURNS' -'REVOKE' -'ROLE' -'ROLLBACK' -'ROWS' -'RULE' -'SAVEPOINT' -'SCHEMA' -'SCROLL' -'SEARCH' -'SECOND' -'SECURITY' -'SEQUENCE' -'SEQUENCES' -'SERIALIZABLE' -'SERVER' -'SESSION' -'SET' -'SHARE' -'SHOW' -'SIMPLE' -'SNAPSHOT' -'STABLE' -'STANDALONE' -'START' -'STATEMENT' -'STATISTICS' -'STDIN' -'STDOUT' -'STORAGE' -'STRICT' -'STRIP' -'SYSID' -'SYSTEM' -'TABLES' -'TABLESPACE' -'TEMP' -'TEMPLATE' -'TEMPORARY' -'TEXT' -'TRANSACTION' -'TRIGGER' -'TRUNCATE' -'TRUSTED' -'TYPE' -'TYPES' -'UNBOUNDED' -'UNCOMMITTED' -'UNENCRYPTED' -'UNKNOWN' -'UNLISTEN' -'UNLOGGED' -'UNTIL' -'UPDATE' -'VACUUM' -'VALID' -'VALIDATE' -'VALIDATOR' -'VARYING' -'VERSION' -'VIEW' -'VOLATILE' -'WHITESPACE' -'WITHOUT' -'WORK' -'WRAPPER' -'WRITE' -'XML' -'YEAR' -'YES' -'ZONE' -'BETWEEN' -'BIGINT' -'BIT' -'BOOLEAN' -'CHAR' -'CHARACTER' -'COALESCE' -'DEC' -'DECIMAL' -'EXISTS' -'EXTRACT' -'FLOAT' -'GREATEST' -'INOUT' -'INT' -'INTEGER' -'INTERVAL' -'LEAST' -'NATIONAL' -'NCHAR' -'NONE' -'NULLIF' -'NUMERIC' -'OVERLAY' -'POSITION' -'PRECISION' -'REAL' -'ROW' -'SETOF' -'SMALLINT' -'SUBSTRING' -'TIME' -'TIMESTAMP' -'TREAT' -'TRIM' -'VALUES' -'VARCHAR' -'XMLATTRIBUTES' -'XMLCOMMENT' -'XMLAGG' -'XML_IS_WELL_FORMED' -'XML_IS_WELL_FORMED_DOCUMENT' -'XML_IS_WELL_FORMED_CONTENT' -'XPATH' -'XPATH_EXISTS' -'XMLCONCAT' -'XMLELEMENT' -'XMLEXISTS' -'XMLFOREST' -'XMLPARSE' -'XMLPI' -'XMLROOT' -'XMLSERIALIZE' -'CALL' -'CURRENT' -'ATTACH' -'DETACH' -'EXPRESSION' -'GENERATED' -'LOGGED' -'STORED' -'INCLUDE' -'ROUTINE' -'TRANSFORM' -'IMPORT' -'POLICY' -'METHOD' -'REFERENCING' -'NEW' -'OLD' -'VALUE' -'SUBSCRIPTION' -'PUBLICATION' -'OUT' -'END' -'ROUTINES' -'SCHEMAS' -'PROCEDURES' -'INPUT' -'SUPPORT' -'PARALLEL' -'SQL' -'DEPENDS' -'OVERRIDING' -'CONFLICT' -'SKIP' -'LOCKED' -'TIES' -'ROLLUP' -'CUBE' -'GROUPING' -'SETS' -'TABLESAMPLE' -'ORDINALITY' -'XMLTABLE' -'COLUMNS' -'XMLNAMESPACES' -'ROWTYPE' -'NORMALIZED' -'WITHIN' -'FILTER' -'GROUPS' -'OTHERS' -'NFC' -'NFD' -'NFKC' -'NFKD' -'UESCAPE' -'VIEWS' -'NORMALIZE' -'DUMP' -'PRINT_STRICT_PARAMS' -'VARIABLE_CONFLICT' -'ERROR' -'USE_VARIABLE' -'USE_COLUMN' -'ALIAS' -'CONSTANT' -'PERFORM' -'GET' -'DIAGNOSTICS' -'STACKED' -'ELSIF' -'WHILE' -'REVERSE' -'FOREACH' -'SLICE' -'EXIT' -'RETURN' -'QUERY' -'RAISE' -'SQLSTATE' -'DEBUG' -'LOG' -'INFO' -'NOTICE' -'WARNING' -'EXCEPTION' -'ASSERT' -'LOOP' -'OPEN' -'ABS' -'CBRT' -'CEIL' -'CEILING' -'DEGREES' -'DIV' -'EXP' -'FACTORIAL' -'FLOOR' -'GCD' -'LCM' -'LN' -'LOG10' -'MIN_SCALE' -'MOD' -'PI' -'POWER' -'RADIANS' -'ROUND' -'SCALE' -'SIGN' -'SQRT' -'TRIM_SCALE' -'TRUNC' -'WIDTH_BUCKET' -'RANDOM' -'SETSEED' -'ACOS' -'ACOSD' -'ASIN' -'ASIND' -'ATAN' -'ATAND' -'ATAN2' -'ATAN2D' -'COS' -'COSD' -'COT' -'COTD' -'SIN' -'SIND' -'TAN' -'TAND' -'SINH' -'COSH' -'TANH' -'ASINH' -'ACOSH' -'ATANH' -'BIT_LENGTH' -'CHAR_LENGTH' -'CHARACTER_LENGTH' -'LOWER' -'OCTET_LENGTH' -'UPPER' -'ASCII' -'BTRIM' -'CHR' -'CONCAT' -'CONCAT_WS' -'FORMAT' -'INITCAP' -'LENGTH' -'LPAD' -'LTRIM' -'MD5' -'PARSE_IDENT' -'PG_CLIENT_ENCODING' -'QUOTE_IDENT' -'QUOTE_LITERAL' -'QUOTE_NULLABLE' -'REGEXP_COUNT' -'REGEXP_INSTR' -'REGEXP_LIKE' -'REGEXP_MATCH' -'REGEXP_MATCHES' -'REGEXP_REPLACE' -'REGEXP_SPLIT_TO_ARRAY' -'REGEXP_SPLIT_TO_TABLE' -'REGEXP_SUBSTR' -'REPEAT' -'RPAD' -'RTRIM' -'SPLIT_PART' -'STARTS_WITH' -'STRING_TO_ARRAY' -'STRING_TO_TABLE' -'STRPOS' -'SUBSTR' -'TO_ASCII' -'TO_HEX' -'TRANSLATE' -'UNISTR' -'AGE' -'CLOCK_TIMESTAMP' -'DATE_BIN' -'DATE_PART' -'DATE_TRUNC' -'ISFINITE' -'JUSTIFY_DAYS' -'JUSTIFY_HOURS' -'JUSTIFY_INTERVAL' -'MAKE_DATE' -'MAKE_INTERVAL' -'MAKE_TIME' -'MAKE_TIMESTAMP' -'MAKE_TIMESTAMPTZ' -'NOW' -'STATEMENT_TIMESTAMP' -'TIMEOFDAY' -'TRANSACTION_TIMESTAMP' -'TO_TIMESTAMP' -'TO_CHAR' -'TO_DATE' -'TO_NUMBER' -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -'\\\\' -null -null -null -null -null -null -null -null -null -'\'' - -token symbolic names: -null -Dollar -OPEN_PAREN -CLOSE_PAREN -OPEN_BRACKET -CLOSE_BRACKET -COMMA -SEMI -COLON -STAR -EQUAL -DOT -PLUS -MINUS -SLASH -CARET -LT -GT -LESS_LESS -GREATER_GREATER -COLON_EQUALS -LESS_EQUALS -EQUALS_GREATER -GREATER_EQUALS -DOT_DOT -NOT_EQUALS -TYPECAST -PERCENT -PARAM -Operator -ALL -ANALYSE -ANALYZE -AND -ANY -ARRAY -AS -ASC -ASYMMETRIC -BOTH -CASE -CAST -CHECK -COLLATE -COLUMN -CONSTRAINT -CREATE -CURRENT_CATALOG -CURRENT_DATE -CURRENT_ROLE -CURRENT_TIME -CURRENT_TIMESTAMP -CURRENT_USER -DEFAULT -DEFERRABLE -DESC -DISTINCT -DO -ELSE -EXCEPT -FALSE_P -FETCH -FOR -FOREIGN -FROM -GRANT -GROUP_P -HAVING -IN_P -INITIALLY -INTERSECT -INTO -LATERAL_P -LEADING -LIMIT -LOCALTIME -LOCALTIMESTAMP -NOT -NULL_P -OFFSET -ON -ONLY -OR -ORDER -PLACING -PRIMARY -REFERENCES -RETURNING -SELECT -SESSION_USER -SOME -SYMMETRIC -TABLE -THEN -TO -TOPIC -STREAM -TRAILING -TRUE_P -UNION -UNIQUE -USER -USING -VARIADIC -WHEN -WHERE -WINDOW -WITH -AUTHORIZATION -BINARY -COLLATION -CONCURRENTLY -CROSS -CURRENT_SCHEMA -FREEZE -FULL -ILIKE -INNER_P -IS -ISNULL -JOIN -LEFT -LIKE -NATURAL -NOTNULL -OUTER_P -OVER -OVERLAPS -RIGHT -SIMILAR -VERBOSE -ABORT_P -ABSOLUTE_P -ACCESS -ACTION -ADD_P -ADMIN -AFTER -AGGREGATE -ALSO -ALTER -ALWAYS -ASSERTION -ASSIGNMENT -AT -ATTRIBUTE -BACKWARD -BEFORE -BEGIN_P -BY -CACHE -CALLED -CASCADE -CASCADED -CATALOG -CHAIN -CHARACTERISTICS -CHECKPOINT -CLASS -CLOSE -CLUSTER -COMMENT -COMMENTS -COMMIT -COMMITTED -CONFIGURATION -CONNECTION -CONSTRAINTS -CONTENT_P -CONTINUE_P -CONVERSION_P -COPY -COST -CSV -CURSOR -CYCLE -DATA_P -DATABASE -DAY_P -DEALLOCATE -DECLARE -DEFAULTS -DEFERRED -DEFINER -DELETE_P -DELIMITER -DELIMITERS -DICTIONARY -DISABLE_P -DISCARD -DOCUMENT_P -DOMAIN_P -DOUBLE_P -DROP -EACH -ENABLE_P -ENCODING -ENCRYPTED -ENUM_P -ESCAPE -EVENT -EXCLUDE -EXCLUDING -EXCLUSIVE -EXECUTE -EXPLAIN -EXTENSION -EXTERNAL -FAMILY -FIRST_P -FOLLOWING -FORCE -FORWARD -FUNCTION -FUNCTIONS -GLOBAL -GRANTED -HANDLER -HEADER_P -HOLD -HOUR_P -IDENTITY_P -IF_P -IMMEDIATE -IMMUTABLE -IMPLICIT_P -INCLUDING -INCREMENT -INDEX -INDEXES -INHERIT -INHERITS -INLINE_P -INSENSITIVE -INSERT -INSTEAD -INVOKER -ISOLATION -KEY -LABEL -LANGUAGE -LARGE_P -LAST_P -LEAKPROOF -LEVEL -LISTEN -LOAD -LOCAL -LOCATION -LOCK_P -MAPPING -MATCH -MATCHED -MATERIALIZED -MAXVALUE -MERGE -MINUTE_P -MINVALUE -MODE -MONTH_P -MOVE -NAME_P -NAMES -NEXT -NO -NOTHING -NOTIFY -NOWAIT -NULLS_P -OBJECT_P -OF -OFF -OIDS -OPERATOR -OPTION -OPTIONS -OWNED -OWNER -PARSER -PARTIAL -PARTITION -PASSING -PASSWORD -PLANS -PRECEDING -PREPARE -PREPARED -PRESERVE -PRIOR -PRIVILEGES -PROCEDURAL -PROCEDURE -PROGRAM -QUOTE -RANGE -READ -REASSIGN -RECHECK -RECURSIVE -REF -REFRESH -REINDEX -RELATIVE_P -RELEASE -RENAME -REPEATABLE -REPLACE -REPLICA -RESET -RESTART -RESTRICT -RETURNS -REVOKE -ROLE -ROLLBACK -ROWS -RULE -SAVEPOINT -SCHEMA -SCROLL -SEARCH -SECOND_P -SECURITY -SEQUENCE -SEQUENCES -SERIALIZABLE -SERVER -SESSION -SET -SHARE -SHOW -SIMPLE -SNAPSHOT -STABLE -STANDALONE_P -START -STATEMENT -STATISTICS -STDIN -STDOUT -STORAGE -STRICT_P -STRIP_P -SYSID -SYSTEM_P -TABLES -TABLESPACE -TEMP -TEMPLATE -TEMPORARY -TEXT_P -TRANSACTION -TRIGGER -TRUNCATE -TRUSTED -TYPE_P -TYPES_P -UNBOUNDED -UNCOMMITTED -UNENCRYPTED -UNKNOWN -UNLISTEN -UNLOGGED -UNTIL -UPDATE -VACUUM -VALID -VALIDATE -VALIDATOR -VARYING -VERSION_P -VIEW -VOLATILE -WHITESPACE_P -WITHOUT -WORK -WRAPPER -WRITE -XML_P -YEAR_P -YES_P -ZONE -BETWEEN -BIGINT -BIT -BOOLEAN_P -CHAR_P -CHARACTER -COALESCE -DEC -DECIMAL_P -EXISTS -EXTRACT -FLOAT_P -GREATEST -INOUT -INT_P -INTEGER -INTERVAL -LEAST -NATIONAL -NCHAR -NONE -NULLIF -NUMERIC -OVERLAY -POSITION -PRECISION -REAL -ROW -SETOF -SMALLINT -SUBSTRING -TIME -TIMESTAMP -TREAT -TRIM -VALUES -VARCHAR -XMLATTRIBUTES -XMLCOMMENT -XMLAGG -XML_IS_WELL_FORMED -XML_IS_WELL_FORMED_DOCUMENT -XML_IS_WELL_FORMED_CONTENT -XPATH -XPATH_EXISTS -XMLCONCAT -XMLELEMENT -XMLEXISTS -XMLFOREST -XMLPARSE -XMLPI -XMLROOT -XMLSERIALIZE -CALL -CURRENT_P -ATTACH -DETACH -EXPRESSION -GENERATED -LOGGED -STORED -INCLUDE -ROUTINE -TRANSFORM -IMPORT_P -POLICY -METHOD -REFERENCING -NEW -OLD -VALUE_P -SUBSCRIPTION -PUBLICATION -OUT_P -END_P -ROUTINES -SCHEMAS -PROCEDURES -INPUT_P -SUPPORT -PARALLEL -SQL_P -DEPENDS -OVERRIDING -CONFLICT -SKIP_P -LOCKED -TIES -ROLLUP -CUBE -GROUPING -SETS -TABLESAMPLE -ORDINALITY -XMLTABLE -COLUMNS -XMLNAMESPACES -ROWTYPE -NORMALIZED -WITHIN -FILTER -GROUPS -OTHERS -NFC -NFD -NFKC -NFKD -UESCAPE -VIEWS -NORMALIZE -DUMP -PRINT_STRICT_PARAMS -VARIABLE_CONFLICT -ERROR -USE_VARIABLE -USE_COLUMN -ALIAS -CONSTANT -PERFORM -GET -DIAGNOSTICS -STACKED -ELSIF -WHILE -REVERSE -FOREACH -SLICE -EXIT -RETURN -QUERY -RAISE -SQLSTATE -DEBUG -LOG -INFO -NOTICE -WARNING -EXCEPTION -ASSERT -LOOP -OPEN -ABS -CBRT -CEIL -CEILING -DEGREES -DIV -EXP -FACTORIAL -FLOOR -GCD -LCM -LN -LOG10 -MIN_SCALE -MOD -PI -POWER -RADIANS -ROUND -SCALE -SIGN -SQRT -TRIM_SCALE -TRUNC -WIDTH_BUCKET -RANDOM -SETSEED -ACOS -ACOSD -ASIN -ASIND -ATAN -ATAND -ATAN2 -ATAN2D -COS -COSD -COT -COTD -SIN -SIND -TAN -TAND -SINH -COSH -TANH -ASINH -ACOSH -ATANH -BIT_LENGTH -CHAR_LENGTH -CHARACTER_LENGTH -LOWER -OCTET_LENGTH -UPPER -ASCII -BTRIM -CHR -CONCAT -CONCAT_WS -FORMAT -INITCAP -LENGTH -LPAD -LTRIM -MD5 -PARSE_IDENT -PG_CLIENT_ENCODING -QUOTE_IDENT -QUOTE_LITERAL -QUOTE_NULLABLE -REGEXP_COUNT -REGEXP_INSTR -REGEXP_LIKE -REGEXP_MATCH -REGEXP_MATCHES -REGEXP_REPLACE -REGEXP_SPLIT_TO_ARRAY -REGEXP_SPLIT_TO_TABLE -REGEXP_SUBSTR -REPEAT -RPAD -RTRIM -SPLIT_PART -STARTS_WITH -STRING_TO_ARRAY -STRING_TO_TABLE -STRPOS -SUBSTR -TO_ASCII -TO_HEX -TRANSLATE -UNISTR -AGE -CLOCK_TIMESTAMP -DATE_BIN -DATE_PART -DATE_TRUNC -ISFINITE -JUSTIFY_DAYS -JUSTIFY_HOURS -JUSTIFY_INTERVAL -MAKE_DATE -MAKE_INTERVAL -MAKE_TIME -MAKE_TIMESTAMP -MAKE_TIMESTAMPTZ -NOW -STATEMENT_TIMESTAMP -TIMEOFDAY -TRANSACTION_TIMESTAMP -TO_TIMESTAMP -TO_CHAR -TO_DATE -TO_NUMBER -Identifier -QuotedIdentifier -UnterminatedQuotedIdentifier -InvalidQuotedIdentifier -InvalidUnterminatedQuotedIdentifier -UnicodeQuotedIdentifier -UnterminatedUnicodeQuotedIdentifier -InvalidUnicodeQuotedIdentifier -InvalidUnterminatedUnicodeQuotedIdentifier -StringConstant -UnterminatedStringConstant -UnicodeEscapeStringConstant -UnterminatedUnicodeEscapeStringConstant -BeginDollarStringConstant -BinaryStringConstant -UnterminatedBinaryStringConstant -InvalidBinaryStringConstant -InvalidUnterminatedBinaryStringConstant -HexadecimalStringConstant -UnterminatedHexadecimalStringConstant -InvalidHexadecimalStringConstant -InvalidUnterminatedHexadecimalStringConstant -Integral -NumericFail -Numeric -PLSQLVARIABLENAME -PLSQLIDENTIFIER -Whitespace -Newline -LineComment -BlockComment -UnterminatedBlockComment -MetaCommand -EndMetaCommand -ErrorCharacter -EscapeStringConstant -UnterminatedEscapeStringConstant -InvalidEscapeStringConstant -InvalidUnterminatedEscapeStringConstant -AfterEscapeStringConstantMode_NotContinued -AfterEscapeStringConstantWithNewlineMode_NotContinued -DollarText -EndDollarStringConstant -AfterEscapeStringConstantWithNewlineMode_Continued - -rule names: -Dollar -OPEN_PAREN -CLOSE_PAREN -OPEN_BRACKET -CLOSE_BRACKET -COMMA -SEMI -COLON -STAR -EQUAL -DOT -PLUS -MINUS -SLASH -CARET -LT -GT -LESS_LESS -GREATER_GREATER -COLON_EQUALS -LESS_EQUALS -EQUALS_GREATER -GREATER_EQUALS -DOT_DOT -NOT_EQUALS -TYPECAST -PERCENT -PARAM -Operator -OperatorEndingWithPlusMinus -OperatorCharacter -OperatorCharacterNotAllowPlusMinusAtEnd -OperatorCharacterAllowPlusMinusAtEnd -ALL -ANALYSE -ANALYZE -AND -ANY -ARRAY -AS -ASC -ASYMMETRIC -BOTH -CASE -CAST -CHECK -COLLATE -COLUMN -CONSTRAINT -CREATE -CURRENT_CATALOG -CURRENT_DATE -CURRENT_ROLE -CURRENT_TIME -CURRENT_TIMESTAMP -CURRENT_USER -DEFAULT -DEFERRABLE -DESC -DISTINCT -DO -ELSE -EXCEPT -FALSE_P -FETCH -FOR -FOREIGN -FROM -GRANT -GROUP_P -HAVING -IN_P -INITIALLY -INTERSECT -INTO -LATERAL_P -LEADING -LIMIT -LOCALTIME -LOCALTIMESTAMP -NOT -NULL_P -OFFSET -ON -ONLY -OR -ORDER -PLACING -PRIMARY -REFERENCES -RETURNING -SELECT -SESSION_USER -SOME -SYMMETRIC -TABLE -THEN -TO -TOPIC -STREAM -TRAILING -TRUE_P -UNION -UNIQUE -USER -USING -VARIADIC -WHEN -WHERE -WINDOW -WITH -AUTHORIZATION -BINARY -COLLATION -CONCURRENTLY -CROSS -CURRENT_SCHEMA -FREEZE -FULL -ILIKE -INNER_P -IS -ISNULL -JOIN -LEFT -LIKE -NATURAL -NOTNULL -OUTER_P -OVER -OVERLAPS -RIGHT -SIMILAR -VERBOSE -ABORT_P -ABSOLUTE_P -ACCESS -ACTION -ADD_P -ADMIN -AFTER -AGGREGATE -ALSO -ALTER -ALWAYS -ASSERTION -ASSIGNMENT -AT -ATTRIBUTE -BACKWARD -BEFORE -BEGIN_P -BY -CACHE -CALLED -CASCADE -CASCADED -CATALOG -CHAIN -CHARACTERISTICS -CHECKPOINT -CLASS -CLOSE -CLUSTER -COMMENT -COMMENTS -COMMIT -COMMITTED -CONFIGURATION -CONNECTION -CONSTRAINTS -CONTENT_P -CONTINUE_P -CONVERSION_P -COPY -COST -CSV -CURSOR -CYCLE -DATA_P -DATABASE -DAY_P -DEALLOCATE -DECLARE -DEFAULTS -DEFERRED -DEFINER -DELETE_P -DELIMITER -DELIMITERS -DICTIONARY -DISABLE_P -DISCARD -DOCUMENT_P -DOMAIN_P -DOUBLE_P -DROP -EACH -ENABLE_P -ENCODING -ENCRYPTED -ENUM_P -ESCAPE -EVENT -EXCLUDE -EXCLUDING -EXCLUSIVE -EXECUTE -EXPLAIN -EXTENSION -EXTERNAL -FAMILY -FIRST_P -FOLLOWING -FORCE -FORWARD -FUNCTION -FUNCTIONS -GLOBAL -GRANTED -HANDLER -HEADER_P -HOLD -HOUR_P -IDENTITY_P -IF_P -IMMEDIATE -IMMUTABLE -IMPLICIT_P -INCLUDING -INCREMENT -INDEX -INDEXES -INHERIT -INHERITS -INLINE_P -INSENSITIVE -INSERT -INSTEAD -INVOKER -ISOLATION -KEY -LABEL -LANGUAGE -LARGE_P -LAST_P -LEAKPROOF -LEVEL -LISTEN -LOAD -LOCAL -LOCATION -LOCK_P -MAPPING -MATCH -MATCHED -MATERIALIZED -MAXVALUE -MERGE -MINUTE_P -MINVALUE -MODE -MONTH_P -MOVE -NAME_P -NAMES -NEXT -NO -NOTHING -NOTIFY -NOWAIT -NULLS_P -OBJECT_P -OF -OFF -OIDS -OPERATOR -OPTION -OPTIONS -OWNED -OWNER -PARSER -PARTIAL -PARTITION -PASSING -PASSWORD -PLANS -PRECEDING -PREPARE -PREPARED -PRESERVE -PRIOR -PRIVILEGES -PROCEDURAL -PROCEDURE -PROGRAM -QUOTE -RANGE -READ -REASSIGN -RECHECK -RECURSIVE -REF -REFRESH -REINDEX -RELATIVE_P -RELEASE -RENAME -REPEATABLE -REPLACE -REPLICA -RESET -RESTART -RESTRICT -RETURNS -REVOKE -ROLE -ROLLBACK -ROWS -RULE -SAVEPOINT -SCHEMA -SCROLL -SEARCH -SECOND_P -SECURITY -SEQUENCE -SEQUENCES -SERIALIZABLE -SERVER -SESSION -SET -SHARE -SHOW -SIMPLE -SNAPSHOT -STABLE -STANDALONE_P -START -STATEMENT -STATISTICS -STDIN -STDOUT -STORAGE -STRICT_P -STRIP_P -SYSID -SYSTEM_P -TABLES -TABLESPACE -TEMP -TEMPLATE -TEMPORARY -TEXT_P -TRANSACTION -TRIGGER -TRUNCATE -TRUSTED -TYPE_P -TYPES_P -UNBOUNDED -UNCOMMITTED -UNENCRYPTED -UNKNOWN -UNLISTEN -UNLOGGED -UNTIL -UPDATE -VACUUM -VALID -VALIDATE -VALIDATOR -VARYING -VERSION_P -VIEW -VOLATILE -WHITESPACE_P -WITHOUT -WORK -WRAPPER -WRITE -XML_P -YEAR_P -YES_P -ZONE -BETWEEN -BIGINT -BIT -BOOLEAN_P -CHAR_P -CHARACTER -COALESCE -DEC -DECIMAL_P -EXISTS -EXTRACT -FLOAT_P -GREATEST -INOUT -INT_P -INTEGER -INTERVAL -LEAST -NATIONAL -NCHAR -NONE -NULLIF -NUMERIC -OVERLAY -POSITION -PRECISION -REAL -ROW -SETOF -SMALLINT -SUBSTRING -TIME -TIMESTAMP -TREAT -TRIM -VALUES -VARCHAR -XMLATTRIBUTES -XMLCOMMENT -XMLAGG -XML_IS_WELL_FORMED -XML_IS_WELL_FORMED_DOCUMENT -XML_IS_WELL_FORMED_CONTENT -XPATH -XPATH_EXISTS -XMLCONCAT -XMLELEMENT -XMLEXISTS -XMLFOREST -XMLPARSE -XMLPI -XMLROOT -XMLSERIALIZE -CALL -CURRENT_P -ATTACH -DETACH -EXPRESSION -GENERATED -LOGGED -STORED -INCLUDE -ROUTINE -TRANSFORM -IMPORT_P -POLICY -METHOD -REFERENCING -NEW -OLD -VALUE_P -SUBSCRIPTION -PUBLICATION -OUT_P -END_P -ROUTINES -SCHEMAS -PROCEDURES -INPUT_P -SUPPORT -PARALLEL -SQL_P -DEPENDS -OVERRIDING -CONFLICT -SKIP_P -LOCKED -TIES -ROLLUP -CUBE -GROUPING -SETS -TABLESAMPLE -ORDINALITY -XMLTABLE -COLUMNS -XMLNAMESPACES -ROWTYPE -NORMALIZED -WITHIN -FILTER -GROUPS -OTHERS -NFC -NFD -NFKC -NFKD -UESCAPE -VIEWS -NORMALIZE -DUMP -PRINT_STRICT_PARAMS -VARIABLE_CONFLICT -ERROR -USE_VARIABLE -USE_COLUMN -ALIAS -CONSTANT -PERFORM -GET -DIAGNOSTICS -STACKED -ELSIF -WHILE -REVERSE -FOREACH -SLICE -EXIT -RETURN -QUERY -RAISE -SQLSTATE -DEBUG -LOG -INFO -NOTICE -WARNING -EXCEPTION -ASSERT -LOOP -OPEN -ABS -CBRT -CEIL -CEILING -DEGREES -DIV -EXP -FACTORIAL -FLOOR -GCD -LCM -LN -LOG10 -MIN_SCALE -MOD -PI -POWER -RADIANS -ROUND -SCALE -SIGN -SQRT -TRIM_SCALE -TRUNC -WIDTH_BUCKET -RANDOM -SETSEED -ACOS -ACOSD -ASIN -ASIND -ATAN -ATAND -ATAN2 -ATAN2D -COS -COSD -COT -COTD -SIN -SIND -TAN -TAND -SINH -COSH -TANH -ASINH -ACOSH -ATANH -BIT_LENGTH -CHAR_LENGTH -CHARACTER_LENGTH -LOWER -OCTET_LENGTH -UPPER -ASCII -BTRIM -CHR -CONCAT -CONCAT_WS -FORMAT -INITCAP -LENGTH -LPAD -LTRIM -MD5 -PARSE_IDENT -PG_CLIENT_ENCODING -QUOTE_IDENT -QUOTE_LITERAL -QUOTE_NULLABLE -REGEXP_COUNT -REGEXP_INSTR -REGEXP_LIKE -REGEXP_MATCH -REGEXP_MATCHES -REGEXP_REPLACE -REGEXP_SPLIT_TO_ARRAY -REGEXP_SPLIT_TO_TABLE -REGEXP_SUBSTR -REPEAT -RPAD -RTRIM -SPLIT_PART -STARTS_WITH -STRING_TO_ARRAY -STRING_TO_TABLE -STRPOS -SUBSTR -TO_ASCII -TO_HEX -TRANSLATE -UNISTR -AGE -CLOCK_TIMESTAMP -DATE_BIN -DATE_PART -DATE_TRUNC -ISFINITE -JUSTIFY_DAYS -JUSTIFY_HOURS -JUSTIFY_INTERVAL -MAKE_DATE -MAKE_INTERVAL -MAKE_TIME -MAKE_TIMESTAMP -MAKE_TIMESTAMPTZ -NOW -STATEMENT_TIMESTAMP -TIMEOFDAY -TRANSACTION_TIMESTAMP -TO_TIMESTAMP -TO_CHAR -TO_DATE -TO_NUMBER -Identifier -IdentifierStartChar -IdentifierChar -StrictIdentifierChar -QuotedIdentifier -UnterminatedQuotedIdentifier -InvalidQuotedIdentifier -InvalidUnterminatedQuotedIdentifier -UnicodeQuotedIdentifier -UnterminatedUnicodeQuotedIdentifier -InvalidUnicodeQuotedIdentifier -InvalidUnterminatedUnicodeQuotedIdentifier -StringConstant -UnterminatedStringConstant -BeginEscapeStringConstant -UnicodeEscapeStringConstant -UnterminatedUnicodeEscapeStringConstant -BeginDollarStringConstant -Tag -BinaryStringConstant -UnterminatedBinaryStringConstant -InvalidBinaryStringConstant -InvalidUnterminatedBinaryStringConstant -HexadecimalStringConstant -UnterminatedHexadecimalStringConstant -InvalidHexadecimalStringConstant -InvalidUnterminatedHexadecimalStringConstant -Integral -NumericFail -Numeric -Digits -PLSQLVARIABLENAME -PLSQLIDENTIFIER -Whitespace -Newline -LineComment -BlockComment -UnterminatedBlockComment -MetaCommand -EndMetaCommand -ErrorCharacter -EscapeStringConstant -UnterminatedEscapeStringConstant -EscapeStringText -InvalidEscapeStringConstant -InvalidUnterminatedEscapeStringConstant -InvalidEscapeStringText -AfterEscapeStringConstantMode_Whitespace -AfterEscapeStringConstantMode_Newline -AfterEscapeStringConstantMode_NotContinued -AfterEscapeStringConstantWithNewlineMode_Whitespace -AfterEscapeStringConstantWithNewlineMode_Newline -AfterEscapeStringConstantWithNewlineMode_Continued -AfterEscapeStringConstantWithNewlineMode_NotContinued -DollarText -EndDollarStringConstant - -channel names: -DEFAULT_TOKEN_CHANNEL -HIDDEN - -mode names: -DEFAULT_MODE -EscapeStringConstantMode -AfterEscapeStringConstantMode -AfterEscapeStringConstantWithNewlineMode -DollarQuotedStringMode - -atn: -[4, 0, 681, 6808, 6, -1, 6, -1, 6, -1, 6, -1, 6, -1, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7, 13, 2, 14, 7, 14, 2, 15, 7, 15, 2, 16, 7, 16, 2, 17, 7, 17, 2, 18, 7, 18, 2, 19, 7, 19, 2, 20, 7, 20, 2, 21, 7, 21, 2, 22, 7, 22, 2, 23, 7, 23, 2, 24, 7, 24, 2, 25, 7, 25, 2, 26, 7, 26, 2, 27, 7, 27, 2, 28, 7, 28, 2, 29, 7, 29, 2, 30, 7, 30, 2, 31, 7, 31, 2, 32, 7, 32, 2, 33, 7, 33, 2, 34, 7, 34, 2, 35, 7, 35, 2, 36, 7, 36, 2, 37, 7, 37, 2, 38, 7, 38, 2, 39, 7, 39, 2, 40, 7, 40, 2, 41, 7, 41, 2, 42, 7, 42, 2, 43, 7, 43, 2, 44, 7, 44, 2, 45, 7, 45, 2, 46, 7, 46, 2, 47, 7, 47, 2, 48, 7, 48, 2, 49, 7, 49, 2, 50, 7, 50, 2, 51, 7, 51, 2, 52, 7, 52, 2, 53, 7, 53, 2, 54, 7, 54, 2, 55, 7, 55, 2, 56, 7, 56, 2, 57, 7, 57, 2, 58, 7, 58, 2, 59, 7, 59, 2, 60, 7, 60, 2, 61, 7, 61, 2, 62, 7, 62, 2, 63, 7, 63, 2, 64, 7, 64, 2, 65, 7, 65, 2, 66, 7, 66, 2, 67, 7, 67, 2, 68, 7, 68, 2, 69, 7, 69, 2, 70, 7, 70, 2, 71, 7, 71, 2, 72, 7, 72, 2, 73, 7, 73, 2, 74, 7, 74, 2, 75, 7, 75, 2, 76, 7, 76, 2, 77, 7, 77, 2, 78, 7, 78, 2, 79, 7, 79, 2, 80, 7, 80, 2, 81, 7, 81, 2, 82, 7, 82, 2, 83, 7, 83, 2, 84, 7, 84, 2, 85, 7, 85, 2, 86, 7, 86, 2, 87, 7, 87, 2, 88, 7, 88, 2, 89, 7, 89, 2, 90, 7, 90, 2, 91, 7, 91, 2, 92, 7, 92, 2, 93, 7, 93, 2, 94, 7, 94, 2, 95, 7, 95, 2, 96, 7, 96, 2, 97, 7, 97, 2, 98, 7, 98, 2, 99, 7, 99, 2, 100, 7, 100, 2, 101, 7, 101, 2, 102, 7, 102, 2, 103, 7, 103, 2, 104, 7, 104, 2, 105, 7, 105, 2, 106, 7, 106, 2, 107, 7, 107, 2, 108, 7, 108, 2, 109, 7, 109, 2, 110, 7, 110, 2, 111, 7, 111, 2, 112, 7, 112, 2, 113, 7, 113, 2, 114, 7, 114, 2, 115, 7, 115, 2, 116, 7, 116, 2, 117, 7, 117, 2, 118, 7, 118, 2, 119, 7, 119, 2, 120, 7, 120, 2, 121, 7, 121, 2, 122, 7, 122, 2, 123, 7, 123, 2, 124, 7, 124, 2, 125, 7, 125, 2, 126, 7, 126, 2, 127, 7, 127, 2, 128, 7, 128, 2, 129, 7, 129, 2, 130, 7, 130, 2, 131, 7, 131, 2, 132, 7, 132, 2, 133, 7, 133, 2, 134, 7, 134, 2, 135, 7, 135, 2, 136, 7, 136, 2, 137, 7, 137, 2, 138, 7, 138, 2, 139, 7, 139, 2, 140, 7, 140, 2, 141, 7, 141, 2, 142, 7, 142, 2, 143, 7, 143, 2, 144, 7, 144, 2, 145, 7, 145, 2, 146, 7, 146, 2, 147, 7, 147, 2, 148, 7, 148, 2, 149, 7, 149, 2, 150, 7, 150, 2, 151, 7, 151, 2, 152, 7, 152, 2, 153, 7, 153, 2, 154, 7, 154, 2, 155, 7, 155, 2, 156, 7, 156, 2, 157, 7, 157, 2, 158, 7, 158, 2, 159, 7, 159, 2, 160, 7, 160, 2, 161, 7, 161, 2, 162, 7, 162, 2, 163, 7, 163, 2, 164, 7, 164, 2, 165, 7, 165, 2, 166, 7, 166, 2, 167, 7, 167, 2, 168, 7, 168, 2, 169, 7, 169, 2, 170, 7, 170, 2, 171, 7, 171, 2, 172, 7, 172, 2, 173, 7, 173, 2, 174, 7, 174, 2, 175, 7, 175, 2, 176, 7, 176, 2, 177, 7, 177, 2, 178, 7, 178, 2, 179, 7, 179, 2, 180, 7, 180, 2, 181, 7, 181, 2, 182, 7, 182, 2, 183, 7, 183, 2, 184, 7, 184, 2, 185, 7, 185, 2, 186, 7, 186, 2, 187, 7, 187, 2, 188, 7, 188, 2, 189, 7, 189, 2, 190, 7, 190, 2, 191, 7, 191, 2, 192, 7, 192, 2, 193, 7, 193, 2, 194, 7, 194, 2, 195, 7, 195, 2, 196, 7, 196, 2, 197, 7, 197, 2, 198, 7, 198, 2, 199, 7, 199, 2, 200, 7, 200, 2, 201, 7, 201, 2, 202, 7, 202, 2, 203, 7, 203, 2, 204, 7, 204, 2, 205, 7, 205, 2, 206, 7, 206, 2, 207, 7, 207, 2, 208, 7, 208, 2, 209, 7, 209, 2, 210, 7, 210, 2, 211, 7, 211, 2, 212, 7, 212, 2, 213, 7, 213, 2, 214, 7, 214, 2, 215, 7, 215, 2, 216, 7, 216, 2, 217, 7, 217, 2, 218, 7, 218, 2, 219, 7, 219, 2, 220, 7, 220, 2, 221, 7, 221, 2, 222, 7, 222, 2, 223, 7, 223, 2, 224, 7, 224, 2, 225, 7, 225, 2, 226, 7, 226, 2, 227, 7, 227, 2, 228, 7, 228, 2, 229, 7, 229, 2, 230, 7, 230, 2, 231, 7, 231, 2, 232, 7, 232, 2, 233, 7, 233, 2, 234, 7, 234, 2, 235, 7, 235, 2, 236, 7, 236, 2, 237, 7, 237, 2, 238, 7, 238, 2, 239, 7, 239, 2, 240, 7, 240, 2, 241, 7, 241, 2, 242, 7, 242, 2, 243, 7, 243, 2, 244, 7, 244, 2, 245, 7, 245, 2, 246, 7, 246, 2, 247, 7, 247, 2, 248, 7, 248, 2, 249, 7, 249, 2, 250, 7, 250, 2, 251, 7, 251, 2, 252, 7, 252, 2, 253, 7, 253, 2, 254, 7, 254, 2, 255, 7, 255, 2, 256, 7, 256, 2, 257, 7, 257, 2, 258, 7, 258, 2, 259, 7, 259, 2, 260, 7, 260, 2, 261, 7, 261, 2, 262, 7, 262, 2, 263, 7, 263, 2, 264, 7, 264, 2, 265, 7, 265, 2, 266, 7, 266, 2, 267, 7, 267, 2, 268, 7, 268, 2, 269, 7, 269, 2, 270, 7, 270, 2, 271, 7, 271, 2, 272, 7, 272, 2, 273, 7, 273, 2, 274, 7, 274, 2, 275, 7, 275, 2, 276, 7, 276, 2, 277, 7, 277, 2, 278, 7, 278, 2, 279, 7, 279, 2, 280, 7, 280, 2, 281, 7, 281, 2, 282, 7, 282, 2, 283, 7, 283, 2, 284, 7, 284, 2, 285, 7, 285, 2, 286, 7, 286, 2, 287, 7, 287, 2, 288, 7, 288, 2, 289, 7, 289, 2, 290, 7, 290, 2, 291, 7, 291, 2, 292, 7, 292, 2, 293, 7, 293, 2, 294, 7, 294, 2, 295, 7, 295, 2, 296, 7, 296, 2, 297, 7, 297, 2, 298, 7, 298, 2, 299, 7, 299, 2, 300, 7, 300, 2, 301, 7, 301, 2, 302, 7, 302, 2, 303, 7, 303, 2, 304, 7, 304, 2, 305, 7, 305, 2, 306, 7, 306, 2, 307, 7, 307, 2, 308, 7, 308, 2, 309, 7, 309, 2, 310, 7, 310, 2, 311, 7, 311, 2, 312, 7, 312, 2, 313, 7, 313, 2, 314, 7, 314, 2, 315, 7, 315, 2, 316, 7, 316, 2, 317, 7, 317, 2, 318, 7, 318, 2, 319, 7, 319, 2, 320, 7, 320, 2, 321, 7, 321, 2, 322, 7, 322, 2, 323, 7, 323, 2, 324, 7, 324, 2, 325, 7, 325, 2, 326, 7, 326, 2, 327, 7, 327, 2, 328, 7, 328, 2, 329, 7, 329, 2, 330, 7, 330, 2, 331, 7, 331, 2, 332, 7, 332, 2, 333, 7, 333, 2, 334, 7, 334, 2, 335, 7, 335, 2, 336, 7, 336, 2, 337, 7, 337, 2, 338, 7, 338, 2, 339, 7, 339, 2, 340, 7, 340, 2, 341, 7, 341, 2, 342, 7, 342, 2, 343, 7, 343, 2, 344, 7, 344, 2, 345, 7, 345, 2, 346, 7, 346, 2, 347, 7, 347, 2, 348, 7, 348, 2, 349, 7, 349, 2, 350, 7, 350, 2, 351, 7, 351, 2, 352, 7, 352, 2, 353, 7, 353, 2, 354, 7, 354, 2, 355, 7, 355, 2, 356, 7, 356, 2, 357, 7, 357, 2, 358, 7, 358, 2, 359, 7, 359, 2, 360, 7, 360, 2, 361, 7, 361, 2, 362, 7, 362, 2, 363, 7, 363, 2, 364, 7, 364, 2, 365, 7, 365, 2, 366, 7, 366, 2, 367, 7, 367, 2, 368, 7, 368, 2, 369, 7, 369, 2, 370, 7, 370, 2, 371, 7, 371, 2, 372, 7, 372, 2, 373, 7, 373, 2, 374, 7, 374, 2, 375, 7, 375, 2, 376, 7, 376, 2, 377, 7, 377, 2, 378, 7, 378, 2, 379, 7, 379, 2, 380, 7, 380, 2, 381, 7, 381, 2, 382, 7, 382, 2, 383, 7, 383, 2, 384, 7, 384, 2, 385, 7, 385, 2, 386, 7, 386, 2, 387, 7, 387, 2, 388, 7, 388, 2, 389, 7, 389, 2, 390, 7, 390, 2, 391, 7, 391, 2, 392, 7, 392, 2, 393, 7, 393, 2, 394, 7, 394, 2, 395, 7, 395, 2, 396, 7, 396, 2, 397, 7, 397, 2, 398, 7, 398, 2, 399, 7, 399, 2, 400, 7, 400, 2, 401, 7, 401, 2, 402, 7, 402, 2, 403, 7, 403, 2, 404, 7, 404, 2, 405, 7, 405, 2, 406, 7, 406, 2, 407, 7, 407, 2, 408, 7, 408, 2, 409, 7, 409, 2, 410, 7, 410, 2, 411, 7, 411, 2, 412, 7, 412, 2, 413, 7, 413, 2, 414, 7, 414, 2, 415, 7, 415, 2, 416, 7, 416, 2, 417, 7, 417, 2, 418, 7, 418, 2, 419, 7, 419, 2, 420, 7, 420, 2, 421, 7, 421, 2, 422, 7, 422, 2, 423, 7, 423, 2, 424, 7, 424, 2, 425, 7, 425, 2, 426, 7, 426, 2, 427, 7, 427, 2, 428, 7, 428, 2, 429, 7, 429, 2, 430, 7, 430, 2, 431, 7, 431, 2, 432, 7, 432, 2, 433, 7, 433, 2, 434, 7, 434, 2, 435, 7, 435, 2, 436, 7, 436, 2, 437, 7, 437, 2, 438, 7, 438, 2, 439, 7, 439, 2, 440, 7, 440, 2, 441, 7, 441, 2, 442, 7, 442, 2, 443, 7, 443, 2, 444, 7, 444, 2, 445, 7, 445, 2, 446, 7, 446, 2, 447, 7, 447, 2, 448, 7, 448, 2, 449, 7, 449, 2, 450, 7, 450, 2, 451, 7, 451, 2, 452, 7, 452, 2, 453, 7, 453, 2, 454, 7, 454, 2, 455, 7, 455, 2, 456, 7, 456, 2, 457, 7, 457, 2, 458, 7, 458, 2, 459, 7, 459, 2, 460, 7, 460, 2, 461, 7, 461, 2, 462, 7, 462, 2, 463, 7, 463, 2, 464, 7, 464, 2, 465, 7, 465, 2, 466, 7, 466, 2, 467, 7, 467, 2, 468, 7, 468, 2, 469, 7, 469, 2, 470, 7, 470, 2, 471, 7, 471, 2, 472, 7, 472, 2, 473, 7, 473, 2, 474, 7, 474, 2, 475, 7, 475, 2, 476, 7, 476, 2, 477, 7, 477, 2, 478, 7, 478, 2, 479, 7, 479, 2, 480, 7, 480, 2, 481, 7, 481, 2, 482, 7, 482, 2, 483, 7, 483, 2, 484, 7, 484, 2, 485, 7, 485, 2, 486, 7, 486, 2, 487, 7, 487, 2, 488, 7, 488, 2, 489, 7, 489, 2, 490, 7, 490, 2, 491, 7, 491, 2, 492, 7, 492, 2, 493, 7, 493, 2, 494, 7, 494, 2, 495, 7, 495, 2, 496, 7, 496, 2, 497, 7, 497, 2, 498, 7, 498, 2, 499, 7, 499, 2, 500, 7, 500, 2, 501, 7, 501, 2, 502, 7, 502, 2, 503, 7, 503, 2, 504, 7, 504, 2, 505, 7, 505, 2, 506, 7, 506, 2, 507, 7, 507, 2, 508, 7, 508, 2, 509, 7, 509, 2, 510, 7, 510, 2, 511, 7, 511, 2, 512, 7, 512, 2, 513, 7, 513, 2, 514, 7, 514, 2, 515, 7, 515, 2, 516, 7, 516, 2, 517, 7, 517, 2, 518, 7, 518, 2, 519, 7, 519, 2, 520, 7, 520, 2, 521, 7, 521, 2, 522, 7, 522, 2, 523, 7, 523, 2, 524, 7, 524, 2, 525, 7, 525, 2, 526, 7, 526, 2, 527, 7, 527, 2, 528, 7, 528, 2, 529, 7, 529, 2, 530, 7, 530, 2, 531, 7, 531, 2, 532, 7, 532, 2, 533, 7, 533, 2, 534, 7, 534, 2, 535, 7, 535, 2, 536, 7, 536, 2, 537, 7, 537, 2, 538, 7, 538, 2, 539, 7, 539, 2, 540, 7, 540, 2, 541, 7, 541, 2, 542, 7, 542, 2, 543, 7, 543, 2, 544, 7, 544, 2, 545, 7, 545, 2, 546, 7, 546, 2, 547, 7, 547, 2, 548, 7, 548, 2, 549, 7, 549, 2, 550, 7, 550, 2, 551, 7, 551, 2, 552, 7, 552, 2, 553, 7, 553, 2, 554, 7, 554, 2, 555, 7, 555, 2, 556, 7, 556, 2, 557, 7, 557, 2, 558, 7, 558, 2, 559, 7, 559, 2, 560, 7, 560, 2, 561, 7, 561, 2, 562, 7, 562, 2, 563, 7, 563, 2, 564, 7, 564, 2, 565, 7, 565, 2, 566, 7, 566, 2, 567, 7, 567, 2, 568, 7, 568, 2, 569, 7, 569, 2, 570, 7, 570, 2, 571, 7, 571, 2, 572, 7, 572, 2, 573, 7, 573, 2, 574, 7, 574, 2, 575, 7, 575, 2, 576, 7, 576, 2, 577, 7, 577, 2, 578, 7, 578, 2, 579, 7, 579, 2, 580, 7, 580, 2, 581, 7, 581, 2, 582, 7, 582, 2, 583, 7, 583, 2, 584, 7, 584, 2, 585, 7, 585, 2, 586, 7, 586, 2, 587, 7, 587, 2, 588, 7, 588, 2, 589, 7, 589, 2, 590, 7, 590, 2, 591, 7, 591, 2, 592, 7, 592, 2, 593, 7, 593, 2, 594, 7, 594, 2, 595, 7, 595, 2, 596, 7, 596, 2, 597, 7, 597, 2, 598, 7, 598, 2, 599, 7, 599, 2, 600, 7, 600, 2, 601, 7, 601, 2, 602, 7, 602, 2, 603, 7, 603, 2, 604, 7, 604, 2, 605, 7, 605, 2, 606, 7, 606, 2, 607, 7, 607, 2, 608, 7, 608, 2, 609, 7, 609, 2, 610, 7, 610, 2, 611, 7, 611, 2, 612, 7, 612, 2, 613, 7, 613, 2, 614, 7, 614, 2, 615, 7, 615, 2, 616, 7, 616, 2, 617, 7, 617, 2, 618, 7, 618, 2, 619, 7, 619, 2, 620, 7, 620, 2, 621, 7, 621, 2, 622, 7, 622, 2, 623, 7, 623, 2, 624, 7, 624, 2, 625, 7, 625, 2, 626, 7, 626, 2, 627, 7, 627, 2, 628, 7, 628, 2, 629, 7, 629, 2, 630, 7, 630, 2, 631, 7, 631, 2, 632, 7, 632, 2, 633, 7, 633, 2, 634, 7, 634, 2, 635, 7, 635, 2, 636, 7, 636, 2, 637, 7, 637, 2, 638, 7, 638, 2, 639, 7, 639, 2, 640, 7, 640, 2, 641, 7, 641, 2, 642, 7, 642, 2, 643, 7, 643, 2, 644, 7, 644, 2, 645, 7, 645, 2, 646, 7, 646, 2, 647, 7, 647, 2, 648, 7, 648, 2, 649, 7, 649, 2, 650, 7, 650, 2, 651, 7, 651, 2, 652, 7, 652, 2, 653, 7, 653, 2, 654, 7, 654, 2, 655, 7, 655, 2, 656, 7, 656, 2, 657, 7, 657, 2, 658, 7, 658, 2, 659, 7, 659, 2, 660, 7, 660, 2, 661, 7, 661, 2, 662, 7, 662, 2, 663, 7, 663, 2, 664, 7, 664, 2, 665, 7, 665, 2, 666, 7, 666, 2, 667, 7, 667, 2, 668, 7, 668, 2, 669, 7, 669, 2, 670, 7, 670, 2, 671, 7, 671, 2, 672, 7, 672, 2, 673, 7, 673, 2, 674, 7, 674, 2, 675, 7, 675, 2, 676, 7, 676, 2, 677, 7, 677, 2, 678, 7, 678, 2, 679, 7, 679, 2, 680, 7, 680, 2, 681, 7, 681, 2, 682, 7, 682, 2, 683, 7, 683, 2, 684, 7, 684, 2, 685, 7, 685, 2, 686, 7, 686, 2, 687, 7, 687, 2, 688, 7, 688, 2, 689, 7, 689, 2, 690, 7, 690, 2, 691, 7, 691, 2, 692, 7, 692, 2, 693, 7, 693, 2, 694, 7, 694, 2, 695, 7, 695, 2, 696, 7, 696, 1, 0, 1, 0, 1, 1, 1, 1, 1, 2, 1, 2, 1, 3, 1, 3, 1, 4, 1, 4, 1, 5, 1, 5, 1, 6, 1, 6, 1, 7, 1, 7, 1, 8, 1, 8, 1, 9, 1, 9, 1, 10, 1, 10, 1, 11, 1, 11, 1, 12, 1, 12, 1, 13, 1, 13, 1, 14, 1, 14, 1, 15, 1, 15, 1, 16, 1, 16, 1, 17, 1, 17, 1, 17, 1, 18, 1, 18, 1, 18, 1, 19, 1, 19, 1, 19, 1, 20, 1, 20, 1, 20, 1, 21, 1, 21, 1, 21, 1, 22, 1, 22, 1, 22, 1, 23, 1, 23, 1, 23, 1, 24, 1, 24, 1, 24, 1, 25, 1, 25, 1, 25, 1, 26, 1, 26, 1, 27, 1, 27, 4, 27, 1465, 8, 27, 11, 27, 12, 27, 1466, 1, 28, 1, 28, 1, 28, 1, 28, 4, 28, 1473, 8, 28, 11, 28, 12, 28, 1474, 1, 28, 1, 28, 1, 28, 3, 28, 1480, 8, 28, 1, 28, 1, 28, 4, 28, 1484, 8, 28, 11, 28, 12, 28, 1485, 1, 28, 3, 28, 1489, 8, 28, 1, 28, 1, 28, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 5, 29, 1498, 8, 29, 10, 29, 12, 29, 1501, 9, 29, 1, 29, 1, 29, 3, 29, 1505, 8, 29, 1, 29, 1, 29, 1, 29, 4, 29, 1510, 8, 29, 11, 29, 12, 29, 1511, 1, 29, 1, 29, 1, 30, 1, 30, 1, 31, 1, 31, 1, 32, 1, 32, 1, 33, 1, 33, 1, 33, 1, 33, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 36, 1, 36, 1, 36, 1, 36, 1, 37, 1, 37, 1, 37, 1, 37, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 39, 1, 39, 1, 39, 1, 40, 1, 40, 1, 40, 1, 40, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 60, 1, 60, 1, 60, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 65, 1, 65, 1, 65, 1, 65, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 71, 1, 71, 1, 71, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 80, 1, 80, 1, 80, 1, 80, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 83, 1, 83, 1, 83, 1, 84, 1, 84, 1, 84, 1, 84, 1, 84, 1, 85, 1, 85, 1, 85, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 88, 1, 88, 1, 88, 1, 88, 1, 88, 1, 88, 1, 88, 1, 88, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 93, 1, 93, 1, 93, 1, 93, 1, 93, 1, 94, 1, 94, 1, 94, 1, 94, 1, 94, 1, 94, 1, 94, 1, 94, 1, 94, 1, 94, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 97, 1, 97, 1, 97, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 102, 1, 102, 1, 102, 1, 102, 1, 102, 1, 102, 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 107, 1, 107, 1, 107, 1, 107, 1, 107, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 110, 1, 110, 1, 110, 1, 110, 1, 110, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 1, 113, 1, 113, 1, 113, 1, 113, 1, 113, 1, 113, 1, 113, 1, 113, 1, 113, 1, 113, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 115, 1, 115, 1, 115, 1, 115, 1, 115, 1, 115, 1, 116, 1, 116, 1, 116, 1, 116, 1, 116, 1, 116, 1, 116, 1, 116, 1, 116, 1, 116, 1, 116, 1, 116, 1, 116, 1, 116, 1, 116, 1, 117, 1, 117, 1, 117, 1, 117, 1, 117, 1, 117, 1, 117, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 121, 1, 121, 1, 121, 1, 122, 1, 122, 1, 122, 1, 122, 1, 122, 1, 122, 1, 122, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 126, 1, 126, 1, 126, 1, 126, 1, 126, 1, 126, 1, 126, 1, 126, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 129, 1, 129, 1, 129, 1, 129, 1, 129, 1, 130, 1, 130, 1, 130, 1, 130, 1, 130, 1, 130, 1, 130, 1, 130, 1, 130, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 132, 1, 132, 1, 132, 1, 132, 1, 132, 1, 132, 1, 132, 1, 132, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 1, 136, 1, 136, 1, 136, 1, 136, 1, 136, 1, 136, 1, 136, 1, 137, 1, 137, 1, 137, 1, 137, 1, 137, 1, 137, 1, 137, 1, 138, 1, 138, 1, 138, 1, 138, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 140, 1, 140, 1, 140, 1, 140, 1, 140, 1, 140, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 142, 1, 142, 1, 142, 1, 142, 1, 142, 1, 143, 1, 143, 1, 143, 1, 143, 1, 143, 1, 143, 1, 144, 1, 144, 1, 144, 1, 144, 1, 144, 1, 144, 1, 144, 1, 145, 1, 145, 1, 145, 1, 145, 1, 145, 1, 145, 1, 145, 1, 145, 1, 145, 1, 145, 1, 146, 1, 146, 1, 146, 1, 146, 1, 146, 1, 146, 1, 146, 1, 146, 1, 146, 1, 146, 1, 146, 1, 147, 1, 147, 1, 147, 1, 148, 1, 148, 1, 148, 1, 148, 1, 148, 1, 148, 1, 148, 1, 148, 1, 148, 1, 148, 1, 149, 1, 149, 1, 149, 1, 149, 1, 149, 1, 149, 1, 149, 1, 149, 1, 149, 1, 150, 1, 150, 1, 150, 1, 150, 1, 150, 1, 150, 1, 150, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 152, 1, 152, 1, 152, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 157, 1, 157, 1, 157, 1, 157, 1, 157, 1, 157, 1, 157, 1, 157, 1, 158, 1, 158, 1, 158, 1, 158, 1, 158, 1, 158, 1, 159, 1, 159, 1, 159, 1, 159, 1, 159, 1, 159, 1, 159, 1, 159, 1, 159, 1, 159, 1, 159, 1, 159, 1, 159, 1, 159, 1, 159, 1, 159, 1, 160, 1, 160, 1, 160, 1, 160, 1, 160, 1, 160, 1, 160, 1, 160, 1, 160, 1, 160, 1, 160, 1, 161, 1, 161, 1, 161, 1, 161, 1, 161, 1, 161, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 163, 1, 163, 1, 163, 1, 163, 1, 163, 1, 163, 1, 163, 1, 163, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 165, 1, 165, 1, 165, 1, 165, 1, 165, 1, 165, 1, 165, 1, 165, 1, 165, 1, 166, 1, 166, 1, 166, 1, 166, 1, 166, 1, 166, 1, 166, 1, 167, 1, 167, 1, 167, 1, 167, 1, 167, 1, 167, 1, 167, 1, 167, 1, 167, 1, 167, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 169, 1, 169, 1, 169, 1, 169, 1, 169, 1, 169, 1, 169, 1, 169, 1, 169, 1, 169, 1, 169, 1, 170, 1, 170, 1, 170, 1, 170, 1, 170, 1, 170, 1, 170, 1, 170, 1, 170, 1, 170, 1, 170, 1, 170, 1, 171, 1, 171, 1, 171, 1, 171, 1, 171, 1, 171, 1, 171, 1, 171, 1, 172, 1, 172, 1, 172, 1, 172, 1, 172, 1, 172, 1, 172, 1, 172, 1, 172, 1, 173, 1, 173, 1, 173, 1, 173, 1, 173, 1, 173, 1, 173, 1, 173, 1, 173, 1, 173, 1, 173, 1, 174, 1, 174, 1, 174, 1, 174, 1, 174, 1, 175, 1, 175, 1, 175, 1, 175, 1, 175, 1, 176, 1, 176, 1, 176, 1, 176, 1, 177, 1, 177, 1, 177, 1, 177, 1, 177, 1, 177, 1, 177, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 1, 179, 1, 179, 1, 179, 1, 179, 1, 179, 1, 180, 1, 180, 1, 180, 1, 180, 1, 180, 1, 180, 1, 180, 1, 180, 1, 180, 1, 181, 1, 181, 1, 181, 1, 181, 1, 182, 1, 182, 1, 182, 1, 182, 1, 182, 1, 182, 1, 182, 1, 182, 1, 182, 1, 182, 1, 182, 1, 183, 1, 183, 1, 183, 1, 183, 1, 183, 1, 183, 1, 183, 1, 183, 1, 184, 1, 184, 1, 184, 1, 184, 1, 184, 1, 184, 1, 184, 1, 184, 1, 184, 1, 185, 1, 185, 1, 185, 1, 185, 1, 185, 1, 185, 1, 185, 1, 185, 1, 185, 1, 186, 1, 186, 1, 186, 1, 186, 1, 186, 1, 186, 1, 186, 1, 186, 1, 187, 1, 187, 1, 187, 1, 187, 1, 187, 1, 187, 1, 187, 1, 188, 1, 188, 1, 188, 1, 188, 1, 188, 1, 188, 1, 188, 1, 188, 1, 188, 1, 188, 1, 189, 1, 189, 1, 189, 1, 189, 1, 189, 1, 189, 1, 189, 1, 189, 1, 189, 1, 189, 1, 189, 1, 190, 1, 190, 1, 190, 1, 190, 1, 190, 1, 190, 1, 190, 1, 190, 1, 190, 1, 190, 1, 190, 1, 191, 1, 191, 1, 191, 1, 191, 1, 191, 1, 191, 1, 191, 1, 191, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 193, 1, 193, 1, 193, 1, 193, 1, 193, 1, 193, 1, 193, 1, 193, 1, 193, 1, 194, 1, 194, 1, 194, 1, 194, 1, 194, 1, 194, 1, 194, 1, 195, 1, 195, 1, 195, 1, 195, 1, 195, 1, 195, 1, 195, 1, 196, 1, 196, 1, 196, 1, 196, 1, 196, 1, 197, 1, 197, 1, 197, 1, 197, 1, 197, 1, 198, 1, 198, 1, 198, 1, 198, 1, 198, 1, 198, 1, 198, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 201, 1, 201, 1, 201, 1, 201, 1, 201, 1, 202, 1, 202, 1, 202, 1, 202, 1, 202, 1, 202, 1, 202, 1, 203, 1, 203, 1, 203, 1, 203, 1, 203, 1, 203, 1, 204, 1, 204, 1, 204, 1, 204, 1, 204, 1, 204, 1, 204, 1, 204, 1, 205, 1, 205, 1, 205, 1, 205, 1, 205, 1, 205, 1, 205, 1, 205, 1, 205, 1, 205, 1, 206, 1, 206, 1, 206, 1, 206, 1, 206, 1, 206, 1, 206, 1, 206, 1, 206, 1, 206, 1, 207, 1, 207, 1, 207, 1, 207, 1, 207, 1, 207, 1, 207, 1, 207, 1, 208, 1, 208, 1, 208, 1, 208, 1, 208, 1, 208, 1, 208, 1, 208, 1, 209, 1, 209, 1, 209, 1, 209, 1, 209, 1, 209, 1, 209, 1, 209, 1, 209, 1, 209, 1, 210, 1, 210, 1, 210, 1, 210, 1, 210, 1, 210, 1, 210, 1, 210, 1, 210, 1, 211, 1, 211, 1, 211, 1, 211, 1, 211, 1, 211, 1, 211, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 213, 1, 213, 1, 213, 1, 213, 1, 213, 1, 213, 1, 213, 1, 213, 1, 213, 1, 213, 1, 214, 1, 214, 1, 214, 1, 214, 1, 214, 1, 214, 1, 215, 1, 215, 1, 215, 1, 215, 1, 215, 1, 215, 1, 215, 1, 215, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 217, 1, 217, 1, 217, 1, 217, 1, 217, 1, 217, 1, 217, 1, 217, 1, 217, 1, 217, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 219, 1, 219, 1, 219, 1, 219, 1, 219, 1, 219, 1, 219, 1, 219, 1, 220, 1, 220, 1, 220, 1, 220, 1, 220, 1, 220, 1, 220, 1, 220, 1, 221, 1, 221, 1, 221, 1, 221, 1, 221, 1, 221, 1, 221, 1, 222, 1, 222, 1, 222, 1, 222, 1, 222, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 224, 1, 224, 1, 224, 1, 224, 1, 224, 1, 224, 1, 224, 1, 224, 1, 224, 1, 225, 1, 225, 1, 225, 1, 226, 1, 226, 1, 226, 1, 226, 1, 226, 1, 226, 1, 226, 1, 226, 1, 226, 1, 226, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 228, 1, 228, 1, 228, 1, 228, 1, 228, 1, 228, 1, 228, 1, 228, 1, 228, 1, 229, 1, 229, 1, 229, 1, 229, 1, 229, 1, 229, 1, 229, 1, 229, 1, 229, 1, 229, 1, 230, 1, 230, 1, 230, 1, 230, 1, 230, 1, 230, 1, 230, 1, 230, 1, 230, 1, 230, 1, 231, 1, 231, 1, 231, 1, 231, 1, 231, 1, 231, 1, 232, 1, 232, 1, 232, 1, 232, 1, 232, 1, 232, 1, 232, 1, 232, 1, 233, 1, 233, 1, 233, 1, 233, 1, 233, 1, 233, 1, 233, 1, 233, 1, 234, 1, 234, 1, 234, 1, 234, 1, 234, 1, 234, 1, 234, 1, 234, 1, 234, 1, 235, 1, 235, 1, 235, 1, 235, 1, 235, 1, 235, 1, 235, 1, 236, 1, 236, 1, 236, 1, 236, 1, 236, 1, 236, 1, 236, 1, 236, 1, 236, 1, 236, 1, 236, 1, 236, 1, 237, 1, 237, 1, 237, 1, 237, 1, 237, 1, 237, 1, 237, 1, 238, 1, 238, 1, 238, 1, 238, 1, 238, 1, 238, 1, 238, 1, 238, 1, 239, 1, 239, 1, 239, 1, 239, 1, 239, 1, 239, 1, 239, 1, 239, 1, 240, 1, 240, 1, 240, 1, 240, 1, 240, 1, 240, 1, 240, 1, 240, 1, 240, 1, 240, 1, 241, 1, 241, 1, 241, 1, 241, 1, 242, 1, 242, 1, 242, 1, 242, 1, 242, 1, 242, 1, 243, 1, 243, 1, 243, 1, 243, 1, 243, 1, 243, 1, 243, 1, 243, 1, 243, 1, 244, 1, 244, 1, 244, 1, 244, 1, 244, 1, 244, 1, 245, 1, 245, 1, 245, 1, 245, 1, 245, 1, 246, 1, 246, 1, 246, 1, 246, 1, 246, 1, 246, 1, 246, 1, 246, 1, 246, 1, 246, 1, 247, 1, 247, 1, 247, 1, 247, 1, 247, 1, 247, 1, 248, 1, 248, 1, 248, 1, 248, 1, 248, 1, 248, 1, 248, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 1, 250, 1, 250, 1, 250, 1, 250, 1, 250, 1, 250, 1, 251, 1, 251, 1, 251, 1, 251, 1, 251, 1, 251, 1, 251, 1, 251, 1, 251, 1, 252, 1, 252, 1, 252, 1, 252, 1, 252, 1, 253, 1, 253, 1, 253, 1, 253, 1, 253, 1, 253, 1, 253, 1, 253, 1, 254, 1, 254, 1, 254, 1, 254, 1, 254, 1, 254, 1, 255, 1, 255, 1, 255, 1, 255, 1, 255, 1, 255, 1, 255, 1, 255, 1, 256, 1, 256, 1, 256, 1, 256, 1, 256, 1, 256, 1, 256, 1, 256, 1, 256, 1, 256, 1, 256, 1, 256, 1, 256, 1, 257, 1, 257, 1, 257, 1, 257, 1, 257, 1, 257, 1, 257, 1, 257, 1, 257, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 259, 1, 259, 1, 259, 1, 259, 1, 259, 1, 259, 1, 259, 1, 260, 1, 260, 1, 260, 1, 260, 1, 260, 1, 260, 1, 260, 1, 260, 1, 260, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 262, 1, 262, 1, 262, 1, 262, 1, 262, 1, 262, 1, 263, 1, 263, 1, 263, 1, 263, 1, 263, 1, 264, 1, 264, 1, 264, 1, 264, 1, 264, 1, 265, 1, 265, 1, 265, 1, 265, 1, 265, 1, 265, 1, 266, 1, 266, 1, 266, 1, 266, 1, 266, 1, 267, 1, 267, 1, 267, 1, 268, 1, 268, 1, 268, 1, 268, 1, 268, 1, 268, 1, 268, 1, 268, 1, 269, 1, 269, 1, 269, 1, 269, 1, 269, 1, 269, 1, 269, 1, 270, 1, 270, 1, 270, 1, 270, 1, 270, 1, 270, 1, 270, 1, 271, 1, 271, 1, 271, 1, 271, 1, 271, 1, 271, 1, 272, 1, 272, 1, 272, 1, 272, 1, 272, 1, 272, 1, 272, 1, 273, 1, 273, 1, 273, 1, 274, 1, 274, 1, 274, 1, 274, 1, 275, 1, 275, 1, 275, 1, 275, 1, 275, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 279, 1, 279, 1, 279, 1, 279, 1, 279, 1, 279, 1, 280, 1, 280, 1, 280, 1, 280, 1, 280, 1, 280, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 282, 1, 282, 1, 282, 1, 282, 1, 282, 1, 282, 1, 282, 1, 282, 1, 283, 1, 283, 1, 283, 1, 283, 1, 283, 1, 283, 1, 283, 1, 283, 1, 283, 1, 283, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 285, 1, 285, 1, 285, 1, 285, 1, 285, 1, 285, 1, 285, 1, 285, 1, 285, 1, 286, 1, 286, 1, 286, 1, 286, 1, 286, 1, 286, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 288, 1, 288, 1, 288, 1, 288, 1, 288, 1, 288, 1, 288, 1, 288, 1, 289, 1, 289, 1, 289, 1, 289, 1, 289, 1, 289, 1, 289, 1, 289, 1, 289, 1, 290, 1, 290, 1, 290, 1, 290, 1, 290, 1, 290, 1, 290, 1, 290, 1, 290, 1, 291, 1, 291, 1, 291, 1, 291, 1, 291, 1, 291, 1, 292, 1, 292, 1, 292, 1, 292, 1, 292, 1, 292, 1, 292, 1, 292, 1, 292, 1, 292, 1, 292, 1, 293, 1, 293, 1, 293, 1, 293, 1, 293, 1, 293, 1, 293, 1, 293, 1, 293, 1, 293, 1, 293, 1, 294, 1, 294, 1, 294, 1, 294, 1, 294, 1, 294, 1, 294, 1, 294, 1, 294, 1, 294, 1, 295, 1, 295, 1, 295, 1, 295, 1, 295, 1, 295, 1, 295, 1, 295, 1, 296, 1, 296, 1, 296, 1, 296, 1, 296, 1, 296, 1, 297, 1, 297, 1, 297, 1, 297, 1, 297, 1, 297, 1, 298, 1, 298, 1, 298, 1, 298, 1, 298, 1, 299, 1, 299, 1, 299, 1, 299, 1, 299, 1, 299, 1, 299, 1, 299, 1, 299, 1, 300, 1, 300, 1, 300, 1, 300, 1, 300, 1, 300, 1, 300, 1, 300, 1, 301, 1, 301, 1, 301, 1, 301, 1, 301, 1, 301, 1, 301, 1, 301, 1, 301, 1, 301, 1, 302, 1, 302, 1, 302, 1, 302, 1, 303, 1, 303, 1, 303, 1, 303, 1, 303, 1, 303, 1, 303, 1, 303, 1, 304, 1, 304, 1, 304, 1, 304, 1, 304, 1, 304, 1, 304, 1, 304, 1, 305, 1, 305, 1, 305, 1, 305, 1, 305, 1, 305, 1, 305, 1, 305, 1, 305, 1, 306, 1, 306, 1, 306, 1, 306, 1, 306, 1, 306, 1, 306, 1, 306, 1, 307, 1, 307, 1, 307, 1, 307, 1, 307, 1, 307, 1, 307, 1, 308, 1, 308, 1, 308, 1, 308, 1, 308, 1, 308, 1, 308, 1, 308, 1, 308, 1, 308, 1, 308, 1, 309, 1, 309, 1, 309, 1, 309, 1, 309, 1, 309, 1, 309, 1, 309, 1, 310, 1, 310, 1, 310, 1, 310, 1, 310, 1, 310, 1, 310, 1, 310, 1, 311, 1, 311, 1, 311, 1, 311, 1, 311, 1, 311, 1, 312, 1, 312, 1, 312, 1, 312, 1, 312, 1, 312, 1, 312, 1, 312, 1, 313, 1, 313, 1, 313, 1, 313, 1, 313, 1, 313, 1, 313, 1, 313, 1, 313, 1, 314, 1, 314, 1, 314, 1, 314, 1, 314, 1, 314, 1, 314, 1, 314, 1, 315, 1, 315, 1, 315, 1, 315, 1, 315, 1, 315, 1, 315, 1, 316, 1, 316, 1, 316, 1, 316, 1, 316, 1, 317, 1, 317, 1, 317, 1, 317, 1, 317, 1, 317, 1, 317, 1, 317, 1, 317, 1, 318, 1, 318, 1, 318, 1, 318, 1, 318, 1, 319, 1, 319, 1, 319, 1, 319, 1, 319, 1, 320, 1, 320, 1, 320, 1, 320, 1, 320, 1, 320, 1, 320, 1, 320, 1, 320, 1, 320, 1, 321, 1, 321, 1, 321, 1, 321, 1, 321, 1, 321, 1, 321, 1, 322, 1, 322, 1, 322, 1, 322, 1, 322, 1, 322, 1, 322, 1, 323, 1, 323, 1, 323, 1, 323, 1, 323, 1, 323, 1, 323, 1, 324, 1, 324, 1, 324, 1, 324, 1, 324, 1, 324, 1, 324, 1, 325, 1, 325, 1, 325, 1, 325, 1, 325, 1, 325, 1, 325, 1, 325, 1, 325, 1, 326, 1, 326, 1, 326, 1, 326, 1, 326, 1, 326, 1, 326, 1, 326, 1, 326, 1, 327, 1, 327, 1, 327, 1, 327, 1, 327, 1, 327, 1, 327, 1, 327, 1, 327, 1, 327, 1, 328, 1, 328, 1, 328, 1, 328, 1, 328, 1, 328, 1, 328, 1, 328, 1, 328, 1, 328, 1, 328, 1, 328, 1, 328, 1, 329, 1, 329, 1, 329, 1, 329, 1, 329, 1, 329, 1, 329, 1, 330, 1, 330, 1, 330, 1, 330, 1, 330, 1, 330, 1, 330, 1, 330, 1, 331, 1, 331, 1, 331, 1, 331, 1, 332, 1, 332, 1, 332, 1, 332, 1, 332, 1, 332, 1, 333, 1, 333, 1, 333, 1, 333, 1, 333, 1, 334, 1, 334, 1, 334, 1, 334, 1, 334, 1, 334, 1, 334, 1, 335, 1, 335, 1, 335, 1, 335, 1, 335, 1, 335, 1, 335, 1, 335, 1, 335, 1, 336, 1, 336, 1, 336, 1, 336, 1, 336, 1, 336, 1, 336, 1, 337, 1, 337, 1, 337, 1, 337, 1, 337, 1, 337, 1, 337, 1, 337, 1, 337, 1, 337, 1, 337, 1, 338, 1, 338, 1, 338, 1, 338, 1, 338, 1, 338, 1, 339, 1, 339, 1, 339, 1, 339, 1, 339, 1, 339, 1, 339, 1, 339, 1, 339, 1, 339, 1, 340, 1, 340, 1, 340, 1, 340, 1, 340, 1, 340, 1, 340, 1, 340, 1, 340, 1, 340, 1, 340, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 342, 1, 342, 1, 342, 1, 342, 1, 342, 1, 342, 1, 342, 1, 343, 1, 343, 1, 343, 1, 343, 1, 343, 1, 343, 1, 343, 1, 343, 1, 344, 1, 344, 1, 344, 1, 344, 1, 344, 1, 344, 1, 344, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 346, 1, 346, 1, 346, 1, 346, 1, 346, 1, 346, 1, 347, 1, 347, 1, 347, 1, 347, 1, 347, 1, 347, 1, 347, 1, 348, 1, 348, 1, 348, 1, 348, 1, 348, 1, 348, 1, 348, 1, 349, 1, 349, 1, 349, 1, 349, 1, 349, 1, 349, 1, 349, 1, 349, 1, 349, 1, 349, 1, 349, 1, 350, 1, 350, 1, 350, 1, 350, 1, 350, 1, 351, 1, 351, 1, 351, 1, 351, 1, 351, 1, 351, 1, 351, 1, 351, 1, 351, 1, 352, 1, 352, 1, 352, 1, 352, 1, 352, 1, 352, 1, 352, 1, 352, 1, 352, 1, 352, 1, 353, 1, 353, 1, 353, 1, 353, 1, 353, 1, 354, 1, 354, 1, 354, 1, 354, 1, 354, 1, 354, 1, 354, 1, 354, 1, 354, 1, 354, 1, 354, 1, 354, 1, 355, 1, 355, 1, 355, 1, 355, 1, 355, 1, 355, 1, 355, 1, 355, 1, 356, 1, 356, 1, 356, 1, 356, 1, 356, 1, 356, 1, 356, 1, 356, 1, 356, 1, 357, 1, 357, 1, 357, 1, 357, 1, 357, 1, 357, 1, 357, 1, 357, 1, 358, 1, 358, 1, 358, 1, 358, 1, 358, 1, 359, 1, 359, 1, 359, 1, 359, 1, 359, 1, 359, 1, 360, 1, 360, 1, 360, 1, 360, 1, 360, 1, 360, 1, 360, 1, 360, 1, 360, 1, 360, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 362, 1, 362, 1, 362, 1, 362, 1, 362, 1, 362, 1, 362, 1, 362, 1, 362, 1, 362, 1, 362, 1, 362, 1, 363, 1, 363, 1, 363, 1, 363, 1, 363, 1, 363, 1, 363, 1, 363, 1, 364, 1, 364, 1, 364, 1, 364, 1, 364, 1, 364, 1, 364, 1, 364, 1, 364, 1, 365, 1, 365, 1, 365, 1, 365, 1, 365, 1, 365, 1, 365, 1, 365, 1, 365, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 367, 1, 367, 1, 367, 1, 367, 1, 367, 1, 367, 1, 367, 1, 368, 1, 368, 1, 368, 1, 368, 1, 368, 1, 368, 1, 368, 1, 369, 1, 369, 1, 369, 1, 369, 1, 369, 1, 369, 1, 370, 1, 370, 1, 370, 1, 370, 1, 370, 1, 370, 1, 370, 1, 370, 1, 370, 1, 371, 1, 371, 1, 371, 1, 371, 1, 371, 1, 371, 1, 371, 1, 371, 1, 371, 1, 371, 1, 372, 1, 372, 1, 372, 1, 372, 1, 372, 1, 372, 1, 372, 1, 372, 1, 373, 1, 373, 1, 373, 1, 373, 1, 373, 1, 373, 1, 373, 1, 373, 1, 374, 1, 374, 1, 374, 1, 374, 1, 374, 1, 375, 1, 375, 1, 375, 1, 375, 1, 375, 1, 375, 1, 375, 1, 375, 1, 375, 1, 376, 1, 376, 1, 376, 1, 376, 1, 376, 1, 376, 1, 376, 1, 376, 1, 376, 1, 376, 1, 376, 1, 377, 1, 377, 1, 377, 1, 377, 1, 377, 1, 377, 1, 377, 1, 377, 1, 378, 1, 378, 1, 378, 1, 378, 1, 378, 1, 379, 1, 379, 1, 379, 1, 379, 1, 379, 1, 379, 1, 379, 1, 379, 1, 380, 1, 380, 1, 380, 1, 380, 1, 380, 1, 380, 1, 381, 1, 381, 1, 381, 1, 381, 1, 382, 1, 382, 1, 382, 1, 382, 1, 382, 1, 383, 1, 383, 1, 383, 1, 383, 1, 384, 1, 384, 1, 384, 1, 384, 1, 384, 1, 385, 1, 385, 1, 385, 1, 385, 1, 385, 1, 385, 1, 385, 1, 385, 1, 386, 1, 386, 1, 386, 1, 386, 1, 386, 1, 386, 1, 386, 1, 387, 1, 387, 1, 387, 1, 387, 1, 388, 1, 388, 1, 388, 1, 388, 1, 388, 1, 388, 1, 388, 1, 388, 1, 389, 1, 389, 1, 389, 1, 389, 1, 389, 1, 390, 1, 390, 1, 390, 1, 390, 1, 390, 1, 390, 1, 390, 1, 390, 1, 390, 1, 390, 1, 391, 1, 391, 1, 391, 1, 391, 1, 391, 1, 391, 1, 391, 1, 391, 1, 391, 1, 392, 1, 392, 1, 392, 1, 392, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 394, 1, 394, 1, 394, 1, 394, 1, 394, 1, 394, 1, 394, 1, 395, 1, 395, 1, 395, 1, 395, 1, 395, 1, 395, 1, 395, 1, 395, 1, 396, 1, 396, 1, 396, 1, 396, 1, 396, 1, 396, 1, 397, 1, 397, 1, 397, 1, 397, 1, 397, 1, 397, 1, 397, 1, 397, 1, 397, 1, 398, 1, 398, 1, 398, 1, 398, 1, 398, 1, 398, 1, 399, 1, 399, 1, 399, 1, 399, 1, 400, 1, 400, 1, 400, 1, 400, 1, 400, 1, 400, 1, 400, 1, 400, 1, 401, 1, 401, 1, 401, 1, 401, 1, 401, 1, 401, 1, 401, 1, 401, 1, 401, 1, 402, 1, 402, 1, 402, 1, 402, 1, 402, 1, 402, 1, 403, 1, 403, 1, 403, 1, 403, 1, 403, 1, 403, 1, 403, 1, 403, 1, 403, 1, 404, 1, 404, 1, 404, 1, 404, 1, 404, 1, 404, 1, 405, 1, 405, 1, 405, 1, 405, 1, 405, 1, 406, 1, 406, 1, 406, 1, 406, 1, 406, 1, 406, 1, 406, 1, 407, 1, 407, 1, 407, 1, 407, 1, 407, 1, 407, 1, 407, 1, 407, 1, 408, 1, 408, 1, 408, 1, 408, 1, 408, 1, 408, 1, 408, 1, 408, 1, 409, 1, 409, 1, 409, 1, 409, 1, 409, 1, 409, 1, 409, 1, 409, 1, 409, 1, 410, 1, 410, 1, 410, 1, 410, 1, 410, 1, 410, 1, 410, 1, 410, 1, 410, 1, 410, 1, 411, 1, 411, 1, 411, 1, 411, 1, 411, 1, 412, 1, 412, 1, 412, 1, 412, 1, 413, 1, 413, 1, 413, 1, 413, 1, 413, 1, 413, 1, 414, 1, 414, 1, 414, 1, 414, 1, 414, 1, 414, 1, 414, 1, 414, 1, 414, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 416, 1, 416, 1, 416, 1, 416, 1, 416, 1, 417, 1, 417, 1, 417, 1, 417, 1, 417, 1, 417, 1, 417, 1, 417, 1, 417, 1, 417, 1, 418, 1, 418, 1, 418, 1, 418, 1, 418, 1, 418, 1, 419, 1, 419, 1, 419, 1, 419, 1, 419, 1, 420, 1, 420, 1, 420, 1, 420, 1, 420, 1, 420, 1, 420, 1, 421, 1, 421, 1, 421, 1, 421, 1, 421, 1, 421, 1, 421, 1, 421, 1, 422, 1, 422, 1, 422, 1, 422, 1, 422, 1, 422, 1, 422, 1, 422, 1, 422, 1, 422, 1, 422, 1, 422, 1, 422, 1, 422, 1, 423, 1, 423, 1, 423, 1, 423, 1, 423, 1, 423, 1, 423, 1, 423, 1, 423, 1, 423, 1, 423, 1, 424, 1, 424, 1, 424, 1, 424, 1, 424, 1, 424, 1, 424, 1, 425, 1, 425, 1, 425, 1, 425, 1, 425, 1, 425, 1, 425, 1, 425, 1, 425, 1, 425, 1, 425, 1, 425, 1, 425, 1, 425, 1, 425, 1, 425, 1, 425, 1, 425, 1, 425, 1, 426, 1, 426, 1, 426, 1, 426, 1, 426, 1, 426, 1, 426, 1, 426, 1, 426, 1, 426, 1, 426, 1, 426, 1, 426, 1, 426, 1, 426, 1, 426, 1, 426, 1, 426, 1, 426, 1, 426, 1, 426, 1, 426, 1, 426, 1, 426, 1, 426, 1, 426, 1, 426, 1, 426, 1, 427, 1, 427, 1, 427, 1, 427, 1, 427, 1, 427, 1, 427, 1, 427, 1, 427, 1, 427, 1, 427, 1, 427, 1, 427, 1, 427, 1, 427, 1, 427, 1, 427, 1, 427, 1, 427, 1, 427, 1, 427, 1, 427, 1, 427, 1, 427, 1, 427, 1, 427, 1, 427, 1, 428, 1, 428, 1, 428, 1, 428, 1, 428, 1, 428, 1, 429, 1, 429, 1, 429, 1, 429, 1, 429, 1, 429, 1, 429, 1, 429, 1, 429, 1, 429, 1, 429, 1, 429, 1, 429, 1, 430, 1, 430, 1, 430, 1, 430, 1, 430, 1, 430, 1, 430, 1, 430, 1, 430, 1, 430, 1, 431, 1, 431, 1, 431, 1, 431, 1, 431, 1, 431, 1, 431, 1, 431, 1, 431, 1, 431, 1, 431, 1, 432, 1, 432, 1, 432, 1, 432, 1, 432, 1, 432, 1, 432, 1, 432, 1, 432, 1, 432, 1, 433, 1, 433, 1, 433, 1, 433, 1, 433, 1, 433, 1, 433, 1, 433, 1, 433, 1, 433, 1, 434, 1, 434, 1, 434, 1, 434, 1, 434, 1, 434, 1, 434, 1, 434, 1, 434, 1, 435, 1, 435, 1, 435, 1, 435, 1, 435, 1, 435, 1, 436, 1, 436, 1, 436, 1, 436, 1, 436, 1, 436, 1, 436, 1, 436, 1, 437, 1, 437, 1, 437, 1, 437, 1, 437, 1, 437, 1, 437, 1, 437, 1, 437, 1, 437, 1, 437, 1, 437, 1, 437, 1, 438, 1, 438, 1, 438, 1, 438, 1, 438, 1, 439, 1, 439, 1, 439, 1, 439, 1, 439, 1, 439, 1, 439, 1, 439, 1, 440, 1, 440, 1, 440, 1, 440, 1, 440, 1, 440, 1, 440, 1, 441, 1, 441, 1, 441, 1, 441, 1, 441, 1, 441, 1, 441, 1, 442, 1, 442, 1, 442, 1, 442, 1, 442, 1, 442, 1, 442, 1, 442, 1, 442, 1, 442, 1, 442, 1, 443, 1, 443, 1, 443, 1, 443, 1, 443, 1, 443, 1, 443, 1, 443, 1, 443, 1, 443, 1, 444, 1, 444, 1, 444, 1, 444, 1, 444, 1, 444, 1, 444, 1, 445, 1, 445, 1, 445, 1, 445, 1, 445, 1, 445, 1, 445, 1, 446, 1, 446, 1, 446, 1, 446, 1, 446, 1, 446, 1, 446, 1, 446, 1, 447, 1, 447, 1, 447, 1, 447, 1, 447, 1, 447, 1, 447, 1, 447, 1, 448, 1, 448, 1, 448, 1, 448, 1, 448, 1, 448, 1, 448, 1, 448, 1, 448, 1, 448, 1, 449, 1, 449, 1, 449, 1, 449, 1, 449, 1, 449, 1, 449, 1, 450, 1, 450, 1, 450, 1, 450, 1, 450, 1, 450, 1, 450, 1, 451, 1, 451, 1, 451, 1, 451, 1, 451, 1, 451, 1, 451, 1, 452, 1, 452, 1, 452, 1, 452, 1, 452, 1, 452, 1, 452, 1, 452, 1, 452, 1, 452, 1, 452, 1, 452, 1, 453, 1, 453, 1, 453, 1, 453, 1, 454, 1, 454, 1, 454, 1, 454, 1, 455, 1, 455, 1, 455, 1, 455, 1, 455, 1, 455, 1, 456, 1, 456, 1, 456, 1, 456, 1, 456, 1, 456, 1, 456, 1, 456, 1, 456, 1, 456, 1, 456, 1, 456, 1, 456, 1, 457, 1, 457, 1, 457, 1, 457, 1, 457, 1, 457, 1, 457, 1, 457, 1, 457, 1, 457, 1, 457, 1, 457, 1, 458, 1, 458, 1, 458, 1, 458, 1, 459, 1, 459, 1, 459, 1, 459, 1, 460, 1, 460, 1, 460, 1, 460, 1, 460, 1, 460, 1, 460, 1, 460, 1, 460, 1, 461, 1, 461, 1, 461, 1, 461, 1, 461, 1, 461, 1, 461, 1, 461, 1, 462, 1, 462, 1, 462, 1, 462, 1, 462, 1, 462, 1, 462, 1, 462, 1, 462, 1, 462, 1, 462, 1, 463, 1, 463, 1, 463, 1, 463, 1, 463, 1, 463, 1, 464, 1, 464, 1, 464, 1, 464, 1, 464, 1, 464, 1, 464, 1, 464, 1, 465, 1, 465, 1, 465, 1, 465, 1, 465, 1, 465, 1, 465, 1, 465, 1, 465, 1, 466, 1, 466, 1, 466, 1, 466, 1, 467, 1, 467, 1, 467, 1, 467, 1, 467, 1, 467, 1, 467, 1, 467, 1, 468, 1, 468, 1, 468, 1, 468, 1, 468, 1, 468, 1, 468, 1, 468, 1, 468, 1, 468, 1, 468, 1, 469, 1, 469, 1, 469, 1, 469, 1, 469, 1, 469, 1, 469, 1, 469, 1, 469, 1, 470, 1, 470, 1, 470, 1, 470, 1, 470, 1, 471, 1, 471, 1, 471, 1, 471, 1, 471, 1, 471, 1, 471, 1, 472, 1, 472, 1, 472, 1, 472, 1, 472, 1, 473, 1, 473, 1, 473, 1, 473, 1, 473, 1, 473, 1, 473, 1, 474, 1, 474, 1, 474, 1, 474, 1, 474, 1, 475, 1, 475, 1, 475, 1, 475, 1, 475, 1, 475, 1, 475, 1, 475, 1, 475, 1, 476, 1, 476, 1, 476, 1, 476, 1, 476, 1, 477, 1, 477, 1, 477, 1, 477, 1, 477, 1, 477, 1, 477, 1, 477, 1, 477, 1, 477, 1, 477, 1, 477, 1, 478, 1, 478, 1, 478, 1, 478, 1, 478, 1, 478, 1, 478, 1, 478, 1, 478, 1, 478, 1, 478, 1, 479, 1, 479, 1, 479, 1, 479, 1, 479, 1, 479, 1, 479, 1, 479, 1, 479, 1, 480, 1, 480, 1, 480, 1, 480, 1, 480, 1, 480, 1, 480, 1, 480, 1, 481, 1, 481, 1, 481, 1, 481, 1, 481, 1, 481, 1, 481, 1, 481, 1, 481, 1, 481, 1, 481, 1, 481, 1, 481, 1, 481, 1, 482, 1, 482, 1, 482, 1, 482, 1, 482, 1, 482, 1, 482, 1, 482, 1, 483, 1, 483, 1, 483, 1, 483, 1, 483, 1, 483, 1, 483, 1, 483, 1, 483, 1, 483, 1, 483, 1, 484, 1, 484, 1, 484, 1, 484, 1, 484, 1, 484, 1, 484, 1, 485, 1, 485, 1, 485, 1, 485, 1, 485, 1, 485, 1, 485, 1, 486, 1, 486, 1, 486, 1, 486, 1, 486, 1, 486, 1, 486, 1, 487, 1, 487, 1, 487, 1, 487, 1, 487, 1, 487, 1, 487, 1, 488, 1, 488, 1, 488, 1, 488, 1, 489, 1, 489, 1, 489, 1, 489, 1, 490, 1, 490, 1, 490, 1, 490, 1, 490, 1, 491, 1, 491, 1, 491, 1, 491, 1, 491, 1, 492, 1, 492, 1, 492, 1, 492, 1, 492, 1, 492, 1, 492, 1, 492, 1, 493, 1, 493, 1, 493, 1, 493, 1, 493, 1, 493, 1, 494, 1, 494, 1, 494, 1, 494, 1, 494, 1, 494, 1, 494, 1, 494, 1, 494, 1, 494, 1, 495, 1, 495, 1, 495, 1, 495, 1, 495, 1, 496, 1, 496, 1, 496, 1, 496, 1, 496, 1, 496, 1, 496, 1, 496, 1, 496, 1, 496, 1, 496, 1, 496, 1, 496, 1, 496, 1, 496, 1, 496, 1, 496, 1, 496, 1, 496, 1, 496, 1, 497, 1, 497, 1, 497, 1, 497, 1, 497, 1, 497, 1, 497, 1, 497, 1, 497, 1, 497, 1, 497, 1, 497, 1, 497, 1, 497, 1, 497, 1, 497, 1, 497, 1, 497, 1, 498, 1, 498, 1, 498, 1, 498, 1, 498, 1, 498, 1, 499, 1, 499, 1, 499, 1, 499, 1, 499, 1, 499, 1, 499, 1, 499, 1, 499, 1, 499, 1, 499, 1, 499, 1, 499, 1, 500, 1, 500, 1, 500, 1, 500, 1, 500, 1, 500, 1, 500, 1, 500, 1, 500, 1, 500, 1, 500, 1, 501, 1, 501, 1, 501, 1, 501, 1, 501, 1, 501, 1, 502, 1, 502, 1, 502, 1, 502, 1, 502, 1, 502, 1, 502, 1, 502, 1, 502, 1, 503, 1, 503, 1, 503, 1, 503, 1, 503, 1, 503, 1, 503, 1, 503, 1, 504, 1, 504, 1, 504, 1, 504, 1, 505, 1, 505, 1, 505, 1, 505, 1, 505, 1, 505, 1, 505, 1, 505, 1, 505, 1, 505, 1, 505, 1, 505, 1, 506, 1, 506, 1, 506, 1, 506, 1, 506, 1, 506, 1, 506, 1, 506, 1, 507, 1, 507, 1, 507, 1, 507, 1, 507, 1, 507, 1, 508, 1, 508, 1, 508, 1, 508, 1, 508, 1, 508, 1, 509, 1, 509, 1, 509, 1, 509, 1, 509, 1, 509, 1, 509, 1, 509, 1, 510, 1, 510, 1, 510, 1, 510, 1, 510, 1, 510, 1, 510, 1, 510, 1, 511, 1, 511, 1, 511, 1, 511, 1, 511, 1, 511, 1, 512, 1, 512, 1, 512, 1, 512, 1, 512, 1, 513, 1, 513, 1, 513, 1, 513, 1, 513, 1, 513, 1, 513, 1, 514, 1, 514, 1, 514, 1, 514, 1, 514, 1, 514, 1, 515, 1, 515, 1, 515, 1, 515, 1, 515, 1, 515, 1, 516, 1, 516, 1, 516, 1, 516, 1, 516, 1, 516, 1, 516, 1, 516, 1, 516, 1, 517, 1, 517, 1, 517, 1, 517, 1, 517, 1, 517, 1, 518, 1, 518, 1, 518, 1, 518, 1, 519, 1, 519, 1, 519, 1, 519, 1, 519, 1, 520, 1, 520, 1, 520, 1, 520, 1, 520, 1, 520, 1, 520, 1, 521, 1, 521, 1, 521, 1, 521, 1, 521, 1, 521, 1, 521, 1, 521, 1, 522, 1, 522, 1, 522, 1, 522, 1, 522, 1, 522, 1, 522, 1, 522, 1, 522, 1, 522, 1, 523, 1, 523, 1, 523, 1, 523, 1, 523, 1, 523, 1, 523, 1, 524, 1, 524, 1, 524, 1, 524, 1, 524, 1, 525, 1, 525, 1, 525, 1, 525, 1, 525, 1, 526, 1, 526, 1, 526, 1, 526, 1, 527, 1, 527, 1, 527, 1, 527, 1, 527, 1, 528, 1, 528, 1, 528, 1, 528, 1, 528, 1, 529, 1, 529, 1, 529, 1, 529, 1, 529, 1, 529, 1, 529, 1, 529, 1, 530, 1, 530, 1, 530, 1, 530, 1, 530, 1, 530, 1, 530, 1, 530, 1, 531, 1, 531, 1, 531, 1, 531, 1, 532, 1, 532, 1, 532, 1, 532, 1, 533, 1, 533, 1, 533, 1, 533, 1, 533, 1, 533, 1, 533, 1, 533, 1, 533, 1, 533, 1, 534, 1, 534, 1, 534, 1, 534, 1, 534, 1, 534, 1, 535, 1, 535, 1, 535, 1, 535, 1, 536, 1, 536, 1, 536, 1, 536, 1, 537, 1, 537, 1, 537, 1, 538, 1, 538, 1, 538, 1, 538, 1, 538, 1, 538, 1, 539, 1, 539, 1, 539, 1, 539, 1, 539, 1, 539, 1, 539, 1, 539, 1, 539, 1, 539, 1, 540, 1, 540, 1, 540, 1, 540, 1, 541, 1, 541, 1, 541, 1, 542, 1, 542, 1, 542, 1, 542, 1, 542, 1, 542, 1, 543, 1, 543, 1, 543, 1, 543, 1, 543, 1, 543, 1, 543, 1, 543, 1, 544, 1, 544, 1, 544, 1, 544, 1, 544, 1, 544, 1, 545, 1, 545, 1, 545, 1, 545, 1, 545, 1, 545, 1, 546, 1, 546, 1, 546, 1, 546, 1, 546, 1, 547, 1, 547, 1, 547, 1, 547, 1, 547, 1, 548, 1, 548, 1, 548, 1, 548, 1, 548, 1, 548, 1, 548, 1, 548, 1, 548, 1, 548, 1, 548, 1, 549, 1, 549, 1, 549, 1, 549, 1, 549, 1, 549, 1, 550, 1, 550, 1, 550, 1, 550, 1, 550, 1, 550, 1, 550, 1, 550, 1, 550, 1, 550, 1, 550, 1, 550, 1, 550, 1, 551, 1, 551, 1, 551, 1, 551, 1, 551, 1, 551, 1, 551, 1, 552, 1, 552, 1, 552, 1, 552, 1, 552, 1, 552, 1, 552, 1, 552, 1, 553, 1, 553, 1, 553, 1, 553, 1, 553, 1, 554, 1, 554, 1, 554, 1, 554, 1, 554, 1, 554, 1, 555, 1, 555, 1, 555, 1, 555, 1, 555, 1, 556, 1, 556, 1, 556, 1, 556, 1, 556, 1, 556, 1, 557, 1, 557, 1, 557, 1, 557, 1, 557, 1, 558, 1, 558, 1, 558, 1, 558, 1, 558, 1, 558, 1, 559, 1, 559, 1, 559, 1, 559, 1, 559, 1, 559, 1, 560, 1, 560, 1, 560, 1, 560, 1, 560, 1, 560, 1, 560, 1, 561, 1, 561, 1, 561, 1, 561, 1, 562, 1, 562, 1, 562, 1, 562, 1, 562, 1, 563, 1, 563, 1, 563, 1, 563, 1, 564, 1, 564, 1, 564, 1, 564, 1, 564, 1, 565, 1, 565, 1, 565, 1, 565, 1, 566, 1, 566, 1, 566, 1, 566, 1, 566, 1, 567, 1, 567, 1, 567, 1, 567, 1, 568, 1, 568, 1, 568, 1, 568, 1, 568, 1, 569, 1, 569, 1, 569, 1, 569, 1, 569, 1, 570, 1, 570, 1, 570, 1, 570, 1, 570, 1, 571, 1, 571, 1, 571, 1, 571, 1, 571, 1, 572, 1, 572, 1, 572, 1, 572, 1, 572, 1, 572, 1, 573, 1, 573, 1, 573, 1, 573, 1, 573, 1, 573, 1, 574, 1, 574, 1, 574, 1, 574, 1, 574, 1, 574, 1, 575, 1, 575, 1, 575, 1, 575, 1, 575, 1, 575, 1, 575, 1, 575, 1, 575, 1, 575, 1, 575, 1, 576, 1, 576, 1, 576, 1, 576, 1, 576, 1, 576, 1, 576, 1, 576, 1, 576, 1, 576, 1, 576, 1, 576, 1, 577, 1, 577, 1, 577, 1, 577, 1, 577, 1, 577, 1, 577, 1, 577, 1, 577, 1, 577, 1, 577, 1, 577, 1, 577, 1, 577, 1, 577, 1, 577, 1, 577, 1, 578, 1, 578, 1, 578, 1, 578, 1, 578, 1, 578, 1, 579, 1, 579, 1, 579, 1, 579, 1, 579, 1, 579, 1, 579, 1, 579, 1, 579, 1, 579, 1, 579, 1, 579, 1, 579, 1, 580, 1, 580, 1, 580, 1, 580, 1, 580, 1, 580, 1, 581, 1, 581, 1, 581, 1, 581, 1, 581, 1, 581, 1, 582, 1, 582, 1, 582, 1, 582, 1, 582, 1, 582, 1, 583, 1, 583, 1, 583, 1, 583, 1, 584, 1, 584, 1, 584, 1, 584, 1, 584, 1, 584, 1, 584, 1, 585, 1, 585, 1, 585, 1, 585, 1, 585, 1, 585, 1, 585, 1, 585, 1, 585, 1, 585, 1, 586, 1, 586, 1, 586, 1, 586, 1, 586, 1, 586, 1, 586, 1, 587, 1, 587, 1, 587, 1, 587, 1, 587, 1, 587, 1, 587, 1, 587, 1, 588, 1, 588, 1, 588, 1, 588, 1, 588, 1, 588, 1, 588, 1, 589, 1, 589, 1, 589, 1, 589, 1, 589, 1, 590, 1, 590, 1, 590, 1, 590, 1, 590, 1, 590, 1, 591, 1, 591, 1, 591, 1, 591, 1, 592, 1, 592, 1, 592, 1, 592, 1, 592, 1, 592, 1, 592, 1, 592, 1, 592, 1, 592, 1, 592, 1, 592, 1, 593, 1, 593, 1, 593, 1, 593, 1, 593, 1, 593, 1, 593, 1, 593, 1, 593, 1, 593, 1, 593, 1, 593, 1, 593, 1, 593, 1, 593, 1, 593, 1, 593, 1, 593, 1, 593, 1, 594, 1, 594, 1, 594, 1, 594, 1, 594, 1, 594, 1, 594, 1, 594, 1, 594, 1, 594, 1, 594, 1, 594, 1, 595, 1, 595, 1, 595, 1, 595, 1, 595, 1, 595, 1, 595, 1, 595, 1, 595, 1, 595, 1, 595, 1, 595, 1, 595, 1, 595, 1, 596, 1, 596, 1, 596, 1, 596, 1, 596, 1, 596, 1, 596, 1, 596, 1, 596, 1, 596, 1, 596, 1, 596, 1, 596, 1, 596, 1, 596, 1, 597, 1, 597, 1, 597, 1, 597, 1, 597, 1, 597, 1, 597, 1, 597, 1, 597, 1, 597, 1, 597, 1, 597, 1, 597, 1, 598, 1, 598, 1, 598, 1, 598, 1, 598, 1, 598, 1, 598, 1, 598, 1, 598, 1, 598, 1, 598, 1, 598, 1, 598, 1, 599, 1, 599, 1, 599, 1, 599, 1, 599, 1, 599, 1, 599, 1, 599, 1, 599, 1, 599, 1, 599, 1, 599, 1, 600, 1, 600, 1, 600, 1, 600, 1, 600, 1, 600, 1, 600, 1, 600, 1, 600, 1, 600, 1, 600, 1, 600, 1, 600, 1, 601, 1, 601, 1, 601, 1, 601, 1, 601, 1, 601, 1, 601, 1, 601, 1, 601, 1, 601, 1, 601, 1, 601, 1, 601, 1, 601, 1, 601, 1, 602, 1, 602, 1, 602, 1, 602, 1, 602, 1, 602, 1, 602, 1, 602, 1, 602, 1, 602, 1, 602, 1, 602, 1, 602, 1, 602, 1, 602, 1, 603, 1, 603, 1, 603, 1, 603, 1, 603, 1, 603, 1, 603, 1, 603, 1, 603, 1, 603, 1, 603, 1, 603, 1, 603, 1, 603, 1, 603, 1, 603, 1, 603, 1, 603, 1, 603, 1, 603, 1, 603, 1, 603, 1, 604, 1, 604, 1, 604, 1, 604, 1, 604, 1, 604, 1, 604, 1, 604, 1, 604, 1, 604, 1, 604, 1, 604, 1, 604, 1, 604, 1, 604, 1, 604, 1, 604, 1, 604, 1, 604, 1, 604, 1, 604, 1, 604, 1, 605, 1, 605, 1, 605, 1, 605, 1, 605, 1, 605, 1, 605, 1, 605, 1, 605, 1, 605, 1, 605, 1, 605, 1, 605, 1, 605, 1, 606, 1, 606, 1, 606, 1, 606, 1, 606, 1, 606, 1, 606, 1, 607, 1, 607, 1, 607, 1, 607, 1, 607, 1, 608, 1, 608, 1, 608, 1, 608, 1, 608, 1, 608, 1, 609, 1, 609, 1, 609, 1, 609, 1, 609, 1, 609, 1, 609, 1, 609, 1, 609, 1, 609, 1, 609, 1, 610, 1, 610, 1, 610, 1, 610, 1, 610, 1, 610, 1, 610, 1, 610, 1, 610, 1, 610, 1, 610, 1, 610, 1, 611, 1, 611, 1, 611, 1, 611, 1, 611, 1, 611, 1, 611, 1, 611, 1, 611, 1, 611, 1, 611, 1, 611, 1, 611, 1, 611, 1, 611, 1, 611, 1, 612, 1, 612, 1, 612, 1, 612, 1, 612, 1, 612, 1, 612, 1, 612, 1, 612, 1, 612, 1, 612, 1, 612, 1, 612, 1, 612, 1, 612, 1, 612, 1, 613, 1, 613, 1, 613, 1, 613, 1, 613, 1, 613, 1, 613, 1, 614, 1, 614, 1, 614, 1, 614, 1, 614, 1, 614, 1, 614, 1, 615, 1, 615, 1, 615, 1, 615, 1, 615, 1, 615, 1, 615, 1, 615, 1, 615, 1, 616, 1, 616, 1, 616, 1, 616, 1, 616, 1, 616, 1, 616, 1, 617, 1, 617, 1, 617, 1, 617, 1, 617, 1, 617, 1, 617, 1, 617, 1, 617, 1, 617, 1, 618, 1, 618, 1, 618, 1, 618, 1, 618, 1, 618, 1, 618, 1, 619, 1, 619, 1, 619, 1, 619, 1, 620, 1, 620, 1, 620, 1, 620, 1, 620, 1, 620, 1, 620, 1, 620, 1, 620, 1, 620, 1, 620, 1, 620, 1, 620, 1, 620, 1, 620, 1, 620, 1, 621, 1, 621, 1, 621, 1, 621, 1, 621, 1, 621, 1, 621, 1, 621, 1, 621, 1, 622, 1, 622, 1, 622, 1, 622, 1, 622, 1, 622, 1, 622, 1, 622, 1, 622, 1, 622, 1, 623, 1, 623, 1, 623, 1, 623, 1, 623, 1, 623, 1, 623, 1, 623, 1, 623, 1, 623, 1, 623, 1, 624, 1, 624, 1, 624, 1, 624, 1, 624, 1, 624, 1, 624, 1, 624, 1, 624, 1, 625, 1, 625, 1, 625, 1, 625, 1, 625, 1, 625, 1, 625, 1, 625, 1, 625, 1, 625, 1, 625, 1, 625, 1, 625, 1, 626, 1, 626, 1, 626, 1, 626, 1, 626, 1, 626, 1, 626, 1, 626, 1, 626, 1, 626, 1, 626, 1, 626, 1, 626, 1, 626, 1, 627, 1, 627, 1, 627, 1, 627, 1, 627, 1, 627, 1, 627, 1, 627, 1, 627, 1, 627, 1, 627, 1, 627, 1, 627, 1, 627, 1, 627, 1, 627, 1, 627, 1, 628, 1, 628, 1, 628, 1, 628, 1, 628, 1, 628, 1, 628, 1, 628, 1, 628, 1, 628, 1, 629, 1, 629, 1, 629, 1, 629, 1, 629, 1, 629, 1, 629, 1, 629, 1, 629, 1, 629, 1, 629, 1, 629, 1, 629, 1, 629, 1, 630, 1, 630, 1, 630, 1, 630, 1, 630, 1, 630, 1, 630, 1, 630, 1, 630, 1, 630, 1, 631, 1, 631, 1, 631, 1, 631, 1, 631, 1, 631, 1, 631, 1, 631, 1, 631, 1, 631, 1, 631, 1, 631, 1, 631, 1, 631, 1, 631, 1, 632, 1, 632, 1, 632, 1, 632, 1, 632, 1, 632, 1, 632, 1, 632, 1, 632, 1, 632, 1, 632, 1, 632, 1, 632, 1, 632, 1, 632, 1, 632, 1, 632, 1, 633, 1, 633, 1, 633, 1, 633, 1, 634, 1, 634, 1, 634, 1, 634, 1, 634, 1, 634, 1, 634, 1, 634, 1, 634, 1, 634, 1, 634, 1, 634, 1, 634, 1, 634, 1, 634, 1, 634, 1, 634, 1, 634, 1, 634, 1, 634, 1, 635, 1, 635, 1, 635, 1, 635, 1, 635, 1, 635, 1, 635, 1, 635, 1, 635, 1, 635, 1, 636, 1, 636, 1, 636, 1, 636, 1, 636, 1, 636, 1, 636, 1, 636, 1, 636, 1, 636, 1, 636, 1, 636, 1, 636, 1, 636, 1, 636, 1, 636, 1, 636, 1, 636, 1, 636, 1, 636, 1, 636, 1, 636, 1, 637, 1, 637, 1, 637, 1, 637, 1, 637, 1, 637, 1, 637, 1, 637, 1, 637, 1, 637, 1, 637, 1, 637, 1, 637, 1, 638, 1, 638, 1, 638, 1, 638, 1, 638, 1, 638, 1, 638, 1, 638, 1, 639, 1, 639, 1, 639, 1, 639, 1, 639, 1, 639, 1, 639, 1, 639, 1, 640, 1, 640, 1, 640, 1, 640, 1, 640, 1, 640, 1, 640, 1, 640, 1, 640, 1, 640, 1, 641, 1, 641, 5, 641, 6340, 8, 641, 10, 641, 12, 641, 6343, 9, 641, 1, 642, 1, 642, 1, 642, 1, 642, 1, 642, 1, 642, 3, 642, 6351, 8, 642, 1, 643, 1, 643, 3, 643, 6355, 8, 643, 1, 644, 1, 644, 3, 644, 6359, 8, 644, 1, 645, 1, 645, 1, 645, 1, 646, 1, 646, 1, 646, 1, 646, 5, 646, 6368, 8, 646, 10, 646, 12, 646, 6371, 9, 646, 1, 647, 1, 647, 1, 647, 1, 648, 1, 648, 1, 648, 1, 648, 5, 648, 6380, 8, 648, 10, 648, 12, 648, 6383, 9, 648, 1, 649, 1, 649, 1, 649, 1, 649, 1, 650, 1, 650, 1, 650, 1, 650, 1, 651, 1, 651, 1, 651, 1, 651, 1, 652, 1, 652, 1, 652, 1, 652, 1, 653, 1, 653, 1, 653, 1, 654, 1, 654, 1, 654, 1, 654, 5, 654, 6408, 8, 654, 10, 654, 12, 654, 6411, 9, 654, 1, 655, 1, 655, 1, 655, 1, 655, 1, 655, 1, 655, 1, 656, 1, 656, 1, 656, 1, 657, 1, 657, 1, 657, 1, 657, 1, 658, 1, 658, 3, 658, 6428, 8, 658, 1, 658, 1, 658, 1, 658, 1, 658, 1, 658, 1, 659, 1, 659, 5, 659, 6437, 8, 659, 10, 659, 12, 659, 6440, 9, 659, 1, 660, 1, 660, 1, 660, 1, 661, 1, 661, 1, 661, 5, 661, 6448, 8, 661, 10, 661, 12, 661, 6451, 9, 661, 1, 662, 1, 662, 1, 662, 1, 663, 1, 663, 1, 663, 1, 664, 1, 664, 1, 664, 1, 665, 1, 665, 1, 665, 5, 665, 6465, 8, 665, 10, 665, 12, 665, 6468, 9, 665, 1, 666, 1, 666, 1, 666, 1, 667, 1, 667, 1, 667, 1, 668, 1, 668, 1, 669, 1, 669, 1, 669, 1, 669, 1, 669, 1, 669, 1, 670, 1, 670, 1, 670, 3, 670, 6487, 8, 670, 1, 670, 1, 670, 3, 670, 6491, 8, 670, 1, 670, 3, 670, 6494, 8, 670, 1, 670, 1, 670, 1, 670, 1, 670, 3, 670, 6500, 8, 670, 1, 670, 3, 670, 6503, 8, 670, 1, 670, 1, 670, 1, 670, 3, 670, 6508, 8, 670, 1, 670, 1, 670, 3, 670, 6512, 8, 670, 1, 671, 4, 671, 6515, 8, 671, 11, 671, 12, 671, 6516, 1, 672, 1, 672, 1, 672, 5, 672, 6522, 8, 672, 10, 672, 12, 672, 6525, 9, 672, 1, 673, 1, 673, 1, 673, 1, 673, 1, 673, 1, 673, 1, 673, 1, 673, 5, 673, 6535, 8, 673, 10, 673, 12, 673, 6538, 9, 673, 1, 673, 1, 673, 1, 674, 4, 674, 6543, 8, 674, 11, 674, 12, 674, 6544, 1, 674, 1, 674, 1, 675, 1, 675, 3, 675, 6551, 8, 675, 1, 675, 3, 675, 6554, 8, 675, 1, 675, 1, 675, 1, 676, 1, 676, 1, 676, 1, 676, 5, 676, 6562, 8, 676, 10, 676, 12, 676, 6565, 9, 676, 1, 676, 1, 676, 1, 677, 1, 677, 1, 677, 1, 677, 5, 677, 6573, 8, 677, 10, 677, 12, 677, 6576, 9, 677, 1, 677, 1, 677, 1, 677, 4, 677, 6581, 8, 677, 11, 677, 12, 677, 6582, 1, 677, 1, 677, 4, 677, 6587, 8, 677, 11, 677, 12, 677, 6588, 1, 677, 5, 677, 6592, 8, 677, 10, 677, 12, 677, 6595, 9, 677, 1, 677, 5, 677, 6598, 8, 677, 10, 677, 12, 677, 6601, 9, 677, 1, 677, 1, 677, 1, 677, 1, 677, 1, 677, 1, 678, 1, 678, 1, 678, 1, 678, 5, 678, 6612, 8, 678, 10, 678, 12, 678, 6615, 9, 678, 1, 678, 1, 678, 1, 678, 4, 678, 6620, 8, 678, 11, 678, 12, 678, 6621, 1, 678, 1, 678, 4, 678, 6626, 8, 678, 11, 678, 12, 678, 6627, 1, 678, 3, 678, 6631, 8, 678, 5, 678, 6633, 8, 678, 10, 678, 12, 678, 6636, 9, 678, 1, 678, 4, 678, 6639, 8, 678, 11, 678, 12, 678, 6640, 1, 678, 4, 678, 6644, 8, 678, 11, 678, 12, 678, 6645, 1, 678, 5, 678, 6649, 8, 678, 10, 678, 12, 678, 6652, 9, 678, 1, 678, 3, 678, 6655, 8, 678, 1, 678, 1, 678, 1, 679, 1, 679, 1, 679, 1, 679, 5, 679, 6663, 8, 679, 10, 679, 12, 679, 6666, 9, 679, 1, 679, 5, 679, 6669, 8, 679, 10, 679, 12, 679, 6672, 9, 679, 1, 679, 1, 679, 5, 679, 6676, 8, 679, 10, 679, 12, 679, 6679, 9, 679, 3, 679, 6681, 8, 679, 1, 680, 1, 680, 1, 680, 1, 681, 1, 681, 1, 682, 1, 682, 1, 682, 1, 682, 1, 682, 1, 683, 1, 683, 3, 683, 6695, 8, 683, 1, 683, 1, 683, 1, 684, 1, 684, 1, 684, 1, 684, 1, 684, 1, 684, 1, 684, 1, 684, 1, 684, 1, 684, 1, 684, 1, 684, 1, 684, 1, 684, 1, 684, 1, 684, 1, 684, 1, 684, 1, 684, 1, 684, 3, 684, 6719, 8, 684, 1, 684, 5, 684, 6722, 8, 684, 10, 684, 12, 684, 6725, 9, 684, 1, 685, 1, 685, 1, 685, 1, 685, 1, 685, 1, 686, 1, 686, 3, 686, 6734, 8, 686, 1, 686, 1, 686, 1, 687, 1, 687, 1, 687, 1, 687, 1, 687, 5, 687, 6743, 8, 687, 10, 687, 12, 687, 6746, 9, 687, 1, 688, 1, 688, 1, 688, 1, 688, 1, 688, 1, 689, 1, 689, 1, 689, 1, 689, 1, 689, 1, 689, 1, 690, 1, 690, 1, 690, 1, 690, 1, 690, 1, 691, 1, 691, 1, 691, 1, 691, 1, 691, 1, 692, 1, 692, 1, 692, 1, 692, 1, 692, 1, 693, 1, 693, 1, 693, 1, 693, 1, 693, 1, 694, 1, 694, 1, 694, 1, 694, 1, 694, 1, 695, 4, 695, 6785, 8, 695, 11, 695, 12, 695, 6786, 1, 695, 1, 695, 5, 695, 6791, 8, 695, 10, 695, 12, 695, 6794, 9, 695, 3, 695, 6796, 8, 695, 1, 696, 1, 696, 3, 696, 6800, 8, 696, 1, 696, 1, 696, 1, 696, 1, 696, 1, 696, 1, 696, 1, 696, 0, 0, 697, 5, 1, 7, 2, 9, 3, 11, 4, 13, 5, 15, 6, 17, 7, 19, 8, 21, 9, 23, 10, 25, 11, 27, 12, 29, 13, 31, 14, 33, 15, 35, 16, 37, 17, 39, 18, 41, 19, 43, 20, 45, 21, 47, 22, 49, 23, 51, 24, 53, 25, 55, 26, 57, 27, 59, 28, 61, 29, 63, 0, 65, 0, 67, 0, 69, 0, 71, 30, 73, 31, 75, 32, 77, 33, 79, 34, 81, 35, 83, 36, 85, 37, 87, 38, 89, 39, 91, 40, 93, 41, 95, 42, 97, 43, 99, 44, 101, 45, 103, 46, 105, 47, 107, 48, 109, 49, 111, 50, 113, 51, 115, 52, 117, 53, 119, 54, 121, 55, 123, 56, 125, 57, 127, 58, 129, 59, 131, 60, 133, 61, 135, 62, 137, 63, 139, 64, 141, 65, 143, 66, 145, 67, 147, 68, 149, 69, 151, 70, 153, 71, 155, 72, 157, 73, 159, 74, 161, 75, 163, 76, 165, 77, 167, 78, 169, 79, 171, 80, 173, 81, 175, 82, 177, 83, 179, 84, 181, 85, 183, 86, 185, 87, 187, 88, 189, 89, 191, 90, 193, 91, 195, 92, 197, 93, 199, 94, 201, 95, 203, 96, 205, 97, 207, 98, 209, 99, 211, 100, 213, 101, 215, 102, 217, 103, 219, 104, 221, 105, 223, 106, 225, 107, 227, 108, 229, 109, 231, 110, 233, 111, 235, 112, 237, 113, 239, 114, 241, 115, 243, 116, 245, 117, 247, 118, 249, 119, 251, 120, 253, 121, 255, 122, 257, 123, 259, 124, 261, 125, 263, 126, 265, 127, 267, 128, 269, 129, 271, 130, 273, 131, 275, 132, 277, 133, 279, 134, 281, 135, 283, 136, 285, 137, 287, 138, 289, 139, 291, 140, 293, 141, 295, 142, 297, 143, 299, 144, 301, 145, 303, 146, 305, 147, 307, 148, 309, 149, 311, 150, 313, 151, 315, 152, 317, 153, 319, 154, 321, 155, 323, 156, 325, 157, 327, 158, 329, 159, 331, 160, 333, 161, 335, 162, 337, 163, 339, 164, 341, 165, 343, 166, 345, 167, 347, 168, 349, 169, 351, 170, 353, 171, 355, 172, 357, 173, 359, 174, 361, 175, 363, 176, 365, 177, 367, 178, 369, 179, 371, 180, 373, 181, 375, 182, 377, 183, 379, 184, 381, 185, 383, 186, 385, 187, 387, 188, 389, 189, 391, 190, 393, 191, 395, 192, 397, 193, 399, 194, 401, 195, 403, 196, 405, 197, 407, 198, 409, 199, 411, 200, 413, 201, 415, 202, 417, 203, 419, 204, 421, 205, 423, 206, 425, 207, 427, 208, 429, 209, 431, 210, 433, 211, 435, 212, 437, 213, 439, 214, 441, 215, 443, 216, 445, 217, 447, 218, 449, 219, 451, 220, 453, 221, 455, 222, 457, 223, 459, 224, 461, 225, 463, 226, 465, 227, 467, 228, 469, 229, 471, 230, 473, 231, 475, 232, 477, 233, 479, 234, 481, 235, 483, 236, 485, 237, 487, 238, 489, 239, 491, 240, 493, 241, 495, 242, 497, 243, 499, 244, 501, 245, 503, 246, 505, 247, 507, 248, 509, 249, 511, 250, 513, 251, 515, 252, 517, 253, 519, 254, 521, 255, 523, 256, 525, 257, 527, 258, 529, 259, 531, 260, 533, 261, 535, 262, 537, 263, 539, 264, 541, 265, 543, 266, 545, 267, 547, 268, 549, 269, 551, 270, 553, 271, 555, 272, 557, 273, 559, 274, 561, 275, 563, 276, 565, 277, 567, 278, 569, 279, 571, 280, 573, 281, 575, 282, 577, 283, 579, 284, 581, 285, 583, 286, 585, 287, 587, 288, 589, 289, 591, 290, 593, 291, 595, 292, 597, 293, 599, 294, 601, 295, 603, 296, 605, 297, 607, 298, 609, 299, 611, 300, 613, 301, 615, 302, 617, 303, 619, 304, 621, 305, 623, 306, 625, 307, 627, 308, 629, 309, 631, 310, 633, 311, 635, 312, 637, 313, 639, 314, 641, 315, 643, 316, 645, 317, 647, 318, 649, 319, 651, 320, 653, 321, 655, 322, 657, 323, 659, 324, 661, 325, 663, 326, 665, 327, 667, 328, 669, 329, 671, 330, 673, 331, 675, 332, 677, 333, 679, 334, 681, 335, 683, 336, 685, 337, 687, 338, 689, 339, 691, 340, 693, 341, 695, 342, 697, 343, 699, 344, 701, 345, 703, 346, 705, 347, 707, 348, 709, 349, 711, 350, 713, 351, 715, 352, 717, 353, 719, 354, 721, 355, 723, 356, 725, 357, 727, 358, 729, 359, 731, 360, 733, 361, 735, 362, 737, 363, 739, 364, 741, 365, 743, 366, 745, 367, 747, 368, 749, 369, 751, 370, 753, 371, 755, 372, 757, 373, 759, 374, 761, 375, 763, 376, 765, 377, 767, 378, 769, 379, 771, 380, 773, 381, 775, 382, 777, 383, 779, 384, 781, 385, 783, 386, 785, 387, 787, 388, 789, 389, 791, 390, 793, 391, 795, 392, 797, 393, 799, 394, 801, 395, 803, 396, 805, 397, 807, 398, 809, 399, 811, 400, 813, 401, 815, 402, 817, 403, 819, 404, 821, 405, 823, 406, 825, 407, 827, 408, 829, 409, 831, 410, 833, 411, 835, 412, 837, 413, 839, 414, 841, 415, 843, 416, 845, 417, 847, 418, 849, 419, 851, 420, 853, 421, 855, 422, 857, 423, 859, 424, 861, 425, 863, 426, 865, 427, 867, 428, 869, 429, 871, 430, 873, 431, 875, 432, 877, 433, 879, 434, 881, 435, 883, 436, 885, 437, 887, 438, 889, 439, 891, 440, 893, 441, 895, 442, 897, 443, 899, 444, 901, 445, 903, 446, 905, 447, 907, 448, 909, 449, 911, 450, 913, 451, 915, 452, 917, 453, 919, 454, 921, 455, 923, 456, 925, 457, 927, 458, 929, 459, 931, 460, 933, 461, 935, 462, 937, 463, 939, 464, 941, 465, 943, 466, 945, 467, 947, 468, 949, 469, 951, 470, 953, 471, 955, 472, 957, 473, 959, 474, 961, 475, 963, 476, 965, 477, 967, 478, 969, 479, 971, 480, 973, 481, 975, 482, 977, 483, 979, 484, 981, 485, 983, 486, 985, 487, 987, 488, 989, 489, 991, 490, 993, 491, 995, 492, 997, 493, 999, 494, 1001, 495, 1003, 496, 1005, 497, 1007, 498, 1009, 499, 1011, 500, 1013, 501, 1015, 502, 1017, 503, 1019, 504, 1021, 505, 1023, 506, 1025, 507, 1027, 508, 1029, 509, 1031, 510, 1033, 511, 1035, 512, 1037, 513, 1039, 514, 1041, 515, 1043, 516, 1045, 517, 1047, 518, 1049, 519, 1051, 520, 1053, 521, 1055, 522, 1057, 523, 1059, 524, 1061, 525, 1063, 526, 1065, 527, 1067, 528, 1069, 529, 1071, 530, 1073, 531, 1075, 532, 1077, 533, 1079, 534, 1081, 535, 1083, 536, 1085, 537, 1087, 538, 1089, 539, 1091, 540, 1093, 541, 1095, 542, 1097, 543, 1099, 544, 1101, 545, 1103, 546, 1105, 547, 1107, 548, 1109, 549, 1111, 550, 1113, 551, 1115, 552, 1117, 553, 1119, 554, 1121, 555, 1123, 556, 1125, 557, 1127, 558, 1129, 559, 1131, 560, 1133, 561, 1135, 562, 1137, 563, 1139, 564, 1141, 565, 1143, 566, 1145, 567, 1147, 568, 1149, 569, 1151, 570, 1153, 571, 1155, 572, 1157, 573, 1159, 574, 1161, 575, 1163, 576, 1165, 577, 1167, 578, 1169, 579, 1171, 580, 1173, 581, 1175, 582, 1177, 583, 1179, 584, 1181, 585, 1183, 586, 1185, 587, 1187, 588, 1189, 589, 1191, 590, 1193, 591, 1195, 592, 1197, 593, 1199, 594, 1201, 595, 1203, 596, 1205, 597, 1207, 598, 1209, 599, 1211, 600, 1213, 601, 1215, 602, 1217, 603, 1219, 604, 1221, 605, 1223, 606, 1225, 607, 1227, 608, 1229, 609, 1231, 610, 1233, 611, 1235, 612, 1237, 613, 1239, 614, 1241, 615, 1243, 616, 1245, 617, 1247, 618, 1249, 619, 1251, 620, 1253, 621, 1255, 622, 1257, 623, 1259, 624, 1261, 625, 1263, 626, 1265, 627, 1267, 628, 1269, 629, 1271, 630, 1273, 631, 1275, 632, 1277, 633, 1279, 634, 1281, 635, 1283, 636, 1285, 637, 1287, 638, 1289, 0, 1291, 0, 1293, 0, 1295, 639, 1297, 640, 1299, 641, 1301, 642, 1303, 643, 1305, 644, 1307, 645, 1309, 646, 1311, 647, 1313, 648, 1315, 0, 1317, 649, 1319, 650, 1321, 651, 1323, 0, 1325, 652, 1327, 653, 1329, 654, 1331, 655, 1333, 656, 1335, 657, 1337, 658, 1339, 659, 1341, 660, 1343, 661, 1345, 662, 1347, 0, 1349, 663, 1351, 664, 1353, 665, 1355, 666, 1357, 667, 1359, 668, 1361, 669, 1363, 670, 1365, 671, 1367, 672, 1369, 673, 1371, 674, 1373, 0, 1375, 675, 1377, 676, 1379, 0, 1381, 0, 1383, 0, 1385, 677, 1387, 0, 1389, 0, 1391, 681, 1393, 678, 1395, 679, 1397, 680, 5, 0, 1, 2, 3, 4, 51, 1, 0, 48, 57, 2, 0, 43, 43, 45, 45, 9, 0, 33, 33, 35, 35, 37, 38, 42, 42, 60, 64, 94, 94, 96, 96, 124, 124, 126, 126, 2, 0, 42, 43, 60, 62, 8, 0, 33, 33, 35, 35, 37, 38, 63, 64, 94, 94, 96, 96, 124, 124, 126, 126, 2, 0, 65, 65, 97, 97, 2, 0, 76, 76, 108, 108, 2, 0, 78, 78, 110, 110, 2, 0, 89, 89, 121, 121, 2, 0, 83, 83, 115, 115, 2, 0, 69, 69, 101, 101, 2, 0, 90, 90, 122, 122, 2, 0, 68, 68, 100, 100, 2, 0, 82, 82, 114, 114, 2, 0, 67, 67, 99, 99, 2, 0, 77, 77, 109, 109, 2, 0, 84, 84, 116, 116, 2, 0, 73, 73, 105, 105, 2, 0, 66, 66, 98, 98, 2, 0, 79, 79, 111, 111, 2, 0, 72, 72, 104, 104, 2, 0, 75, 75, 107, 107, 2, 0, 85, 85, 117, 117, 2, 0, 71, 71, 103, 103, 2, 0, 80, 80, 112, 112, 2, 0, 70, 70, 102, 102, 2, 0, 88, 88, 120, 120, 2, 0, 86, 86, 118, 118, 2, 0, 81, 81, 113, 113, 2, 0, 87, 87, 119, 119, 2, 0, 74, 74, 106, 106, 9, 0, 65, 90, 95, 95, 97, 122, 170, 170, 181, 181, 186, 186, 192, 214, 216, 246, 248, 255, 2, 0, 256, 55295, 57344, 65535, 1, 0, 55296, 56319, 1, 0, 56320, 57343, 2, 0, 0, 0, 34, 34, 1, 0, 34, 34, 1, 0, 39, 39, 1, 0, 48, 49, 3, 0, 48, 57, 65, 70, 97, 102, 3, 0, 65, 90, 95, 95, 97, 122, 5, 0, 36, 36, 48, 57, 65, 90, 95, 95, 97, 122, 2, 0, 34, 34, 92, 92, 2, 0, 9, 9, 32, 32, 2, 0, 10, 10, 13, 13, 2, 0, 42, 42, 47, 47, 4, 0, 10, 10, 13, 13, 34, 34, 92, 92, 3, 0, 10, 10, 13, 13, 34, 34, 3, 0, 85, 85, 117, 117, 120, 120, 2, 0, 39, 39, 92, 92, 1, 0, 36, 36, 6880, 0, 5, 1, 0, 0, 0, 0, 7, 1, 0, 0, 0, 0, 9, 1, 0, 0, 0, 0, 11, 1, 0, 0, 0, 0, 13, 1, 0, 0, 0, 0, 15, 1, 0, 0, 0, 0, 17, 1, 0, 0, 0, 0, 19, 1, 0, 0, 0, 0, 21, 1, 0, 0, 0, 0, 23, 1, 0, 0, 0, 0, 25, 1, 0, 0, 0, 0, 27, 1, 0, 0, 0, 0, 29, 1, 0, 0, 0, 0, 31, 1, 0, 0, 0, 0, 33, 1, 0, 0, 0, 0, 35, 1, 0, 0, 0, 0, 37, 1, 0, 0, 0, 0, 39, 1, 0, 0, 0, 0, 41, 1, 0, 0, 0, 0, 43, 1, 0, 0, 0, 0, 45, 1, 0, 0, 0, 0, 47, 1, 0, 0, 0, 0, 49, 1, 0, 0, 0, 0, 51, 1, 0, 0, 0, 0, 53, 1, 0, 0, 0, 0, 55, 1, 0, 0, 0, 0, 57, 1, 0, 0, 0, 0, 59, 1, 0, 0, 0, 0, 61, 1, 0, 0, 0, 0, 63, 1, 0, 0, 0, 0, 71, 1, 0, 0, 0, 0, 73, 1, 0, 0, 0, 0, 75, 1, 0, 0, 0, 0, 77, 1, 0, 0, 0, 0, 79, 1, 0, 0, 0, 0, 81, 1, 0, 0, 0, 0, 83, 1, 0, 0, 0, 0, 85, 1, 0, 0, 0, 0, 87, 1, 0, 0, 0, 0, 89, 1, 0, 0, 0, 0, 91, 1, 0, 0, 0, 0, 93, 1, 0, 0, 0, 0, 95, 1, 0, 0, 0, 0, 97, 1, 0, 0, 0, 0, 99, 1, 0, 0, 0, 0, 101, 1, 0, 0, 0, 0, 103, 1, 0, 0, 0, 0, 105, 1, 0, 0, 0, 0, 107, 1, 0, 0, 0, 0, 109, 1, 0, 0, 0, 0, 111, 1, 0, 0, 0, 0, 113, 1, 0, 0, 0, 0, 115, 1, 0, 0, 0, 0, 117, 1, 0, 0, 0, 0, 119, 1, 0, 0, 0, 0, 121, 1, 0, 0, 0, 0, 123, 1, 0, 0, 0, 0, 125, 1, 0, 0, 0, 0, 127, 1, 0, 0, 0, 0, 129, 1, 0, 0, 0, 0, 131, 1, 0, 0, 0, 0, 133, 1, 0, 0, 0, 0, 135, 1, 0, 0, 0, 0, 137, 1, 0, 0, 0, 0, 139, 1, 0, 0, 0, 0, 141, 1, 0, 0, 0, 0, 143, 1, 0, 0, 0, 0, 145, 1, 0, 0, 0, 0, 147, 1, 0, 0, 0, 0, 149, 1, 0, 0, 0, 0, 151, 1, 0, 0, 0, 0, 153, 1, 0, 0, 0, 0, 155, 1, 0, 0, 0, 0, 157, 1, 0, 0, 0, 0, 159, 1, 0, 0, 0, 0, 161, 1, 0, 0, 0, 0, 163, 1, 0, 0, 0, 0, 165, 1, 0, 0, 0, 0, 167, 1, 0, 0, 0, 0, 169, 1, 0, 0, 0, 0, 171, 1, 0, 0, 0, 0, 173, 1, 0, 0, 0, 0, 175, 1, 0, 0, 0, 0, 177, 1, 0, 0, 0, 0, 179, 1, 0, 0, 0, 0, 181, 1, 0, 0, 0, 0, 183, 1, 0, 0, 0, 0, 185, 1, 0, 0, 0, 0, 187, 1, 0, 0, 0, 0, 189, 1, 0, 0, 0, 0, 191, 1, 0, 0, 0, 0, 193, 1, 0, 0, 0, 0, 195, 1, 0, 0, 0, 0, 197, 1, 0, 0, 0, 0, 199, 1, 0, 0, 0, 0, 201, 1, 0, 0, 0, 0, 203, 1, 0, 0, 0, 0, 205, 1, 0, 0, 0, 0, 207, 1, 0, 0, 0, 0, 209, 1, 0, 0, 0, 0, 211, 1, 0, 0, 0, 0, 213, 1, 0, 0, 0, 0, 215, 1, 0, 0, 0, 0, 217, 1, 0, 0, 0, 0, 219, 1, 0, 0, 0, 0, 221, 1, 0, 0, 0, 0, 223, 1, 0, 0, 0, 0, 225, 1, 0, 0, 0, 0, 227, 1, 0, 0, 0, 0, 229, 1, 0, 0, 0, 0, 231, 1, 0, 0, 0, 0, 233, 1, 0, 0, 0, 0, 235, 1, 0, 0, 0, 0, 237, 1, 0, 0, 0, 0, 239, 1, 0, 0, 0, 0, 241, 1, 0, 0, 0, 0, 243, 1, 0, 0, 0, 0, 245, 1, 0, 0, 0, 0, 247, 1, 0, 0, 0, 0, 249, 1, 0, 0, 0, 0, 251, 1, 0, 0, 0, 0, 253, 1, 0, 0, 0, 0, 255, 1, 0, 0, 0, 0, 257, 1, 0, 0, 0, 0, 259, 1, 0, 0, 0, 0, 261, 1, 0, 0, 0, 0, 263, 1, 0, 0, 0, 0, 265, 1, 0, 0, 0, 0, 267, 1, 0, 0, 0, 0, 269, 1, 0, 0, 0, 0, 271, 1, 0, 0, 0, 0, 273, 1, 0, 0, 0, 0, 275, 1, 0, 0, 0, 0, 277, 1, 0, 0, 0, 0, 279, 1, 0, 0, 0, 0, 281, 1, 0, 0, 0, 0, 283, 1, 0, 0, 0, 0, 285, 1, 0, 0, 0, 0, 287, 1, 0, 0, 0, 0, 289, 1, 0, 0, 0, 0, 291, 1, 0, 0, 0, 0, 293, 1, 0, 0, 0, 0, 295, 1, 0, 0, 0, 0, 297, 1, 0, 0, 0, 0, 299, 1, 0, 0, 0, 0, 301, 1, 0, 0, 0, 0, 303, 1, 0, 0, 0, 0, 305, 1, 0, 0, 0, 0, 307, 1, 0, 0, 0, 0, 309, 1, 0, 0, 0, 0, 311, 1, 0, 0, 0, 0, 313, 1, 0, 0, 0, 0, 315, 1, 0, 0, 0, 0, 317, 1, 0, 0, 0, 0, 319, 1, 0, 0, 0, 0, 321, 1, 0, 0, 0, 0, 323, 1, 0, 0, 0, 0, 325, 1, 0, 0, 0, 0, 327, 1, 0, 0, 0, 0, 329, 1, 0, 0, 0, 0, 331, 1, 0, 0, 0, 0, 333, 1, 0, 0, 0, 0, 335, 1, 0, 0, 0, 0, 337, 1, 0, 0, 0, 0, 339, 1, 0, 0, 0, 0, 341, 1, 0, 0, 0, 0, 343, 1, 0, 0, 0, 0, 345, 1, 0, 0, 0, 0, 347, 1, 0, 0, 0, 0, 349, 1, 0, 0, 0, 0, 351, 1, 0, 0, 0, 0, 353, 1, 0, 0, 0, 0, 355, 1, 0, 0, 0, 0, 357, 1, 0, 0, 0, 0, 359, 1, 0, 0, 0, 0, 361, 1, 0, 0, 0, 0, 363, 1, 0, 0, 0, 0, 365, 1, 0, 0, 0, 0, 367, 1, 0, 0, 0, 0, 369, 1, 0, 0, 0, 0, 371, 1, 0, 0, 0, 0, 373, 1, 0, 0, 0, 0, 375, 1, 0, 0, 0, 0, 377, 1, 0, 0, 0, 0, 379, 1, 0, 0, 0, 0, 381, 1, 0, 0, 0, 0, 383, 1, 0, 0, 0, 0, 385, 1, 0, 0, 0, 0, 387, 1, 0, 0, 0, 0, 389, 1, 0, 0, 0, 0, 391, 1, 0, 0, 0, 0, 393, 1, 0, 0, 0, 0, 395, 1, 0, 0, 0, 0, 397, 1, 0, 0, 0, 0, 399, 1, 0, 0, 0, 0, 401, 1, 0, 0, 0, 0, 403, 1, 0, 0, 0, 0, 405, 1, 0, 0, 0, 0, 407, 1, 0, 0, 0, 0, 409, 1, 0, 0, 0, 0, 411, 1, 0, 0, 0, 0, 413, 1, 0, 0, 0, 0, 415, 1, 0, 0, 0, 0, 417, 1, 0, 0, 0, 0, 419, 1, 0, 0, 0, 0, 421, 1, 0, 0, 0, 0, 423, 1, 0, 0, 0, 0, 425, 1, 0, 0, 0, 0, 427, 1, 0, 0, 0, 0, 429, 1, 0, 0, 0, 0, 431, 1, 0, 0, 0, 0, 433, 1, 0, 0, 0, 0, 435, 1, 0, 0, 0, 0, 437, 1, 0, 0, 0, 0, 439, 1, 0, 0, 0, 0, 441, 1, 0, 0, 0, 0, 443, 1, 0, 0, 0, 0, 445, 1, 0, 0, 0, 0, 447, 1, 0, 0, 0, 0, 449, 1, 0, 0, 0, 0, 451, 1, 0, 0, 0, 0, 453, 1, 0, 0, 0, 0, 455, 1, 0, 0, 0, 0, 457, 1, 0, 0, 0, 0, 459, 1, 0, 0, 0, 0, 461, 1, 0, 0, 0, 0, 463, 1, 0, 0, 0, 0, 465, 1, 0, 0, 0, 0, 467, 1, 0, 0, 0, 0, 469, 1, 0, 0, 0, 0, 471, 1, 0, 0, 0, 0, 473, 1, 0, 0, 0, 0, 475, 1, 0, 0, 0, 0, 477, 1, 0, 0, 0, 0, 479, 1, 0, 0, 0, 0, 481, 1, 0, 0, 0, 0, 483, 1, 0, 0, 0, 0, 485, 1, 0, 0, 0, 0, 487, 1, 0, 0, 0, 0, 489, 1, 0, 0, 0, 0, 491, 1, 0, 0, 0, 0, 493, 1, 0, 0, 0, 0, 495, 1, 0, 0, 0, 0, 497, 1, 0, 0, 0, 0, 499, 1, 0, 0, 0, 0, 501, 1, 0, 0, 0, 0, 503, 1, 0, 0, 0, 0, 505, 1, 0, 0, 0, 0, 507, 1, 0, 0, 0, 0, 509, 1, 0, 0, 0, 0, 511, 1, 0, 0, 0, 0, 513, 1, 0, 0, 0, 0, 515, 1, 0, 0, 0, 0, 517, 1, 0, 0, 0, 0, 519, 1, 0, 0, 0, 0, 521, 1, 0, 0, 0, 0, 523, 1, 0, 0, 0, 0, 525, 1, 0, 0, 0, 0, 527, 1, 0, 0, 0, 0, 529, 1, 0, 0, 0, 0, 531, 1, 0, 0, 0, 0, 533, 1, 0, 0, 0, 0, 535, 1, 0, 0, 0, 0, 537, 1, 0, 0, 0, 0, 539, 1, 0, 0, 0, 0, 541, 1, 0, 0, 0, 0, 543, 1, 0, 0, 0, 0, 545, 1, 0, 0, 0, 0, 547, 1, 0, 0, 0, 0, 549, 1, 0, 0, 0, 0, 551, 1, 0, 0, 0, 0, 553, 1, 0, 0, 0, 0, 555, 1, 0, 0, 0, 0, 557, 1, 0, 0, 0, 0, 559, 1, 0, 0, 0, 0, 561, 1, 0, 0, 0, 0, 563, 1, 0, 0, 0, 0, 565, 1, 0, 0, 0, 0, 567, 1, 0, 0, 0, 0, 569, 1, 0, 0, 0, 0, 571, 1, 0, 0, 0, 0, 573, 1, 0, 0, 0, 0, 575, 1, 0, 0, 0, 0, 577, 1, 0, 0, 0, 0, 579, 1, 0, 0, 0, 0, 581, 1, 0, 0, 0, 0, 583, 1, 0, 0, 0, 0, 585, 1, 0, 0, 0, 0, 587, 1, 0, 0, 0, 0, 589, 1, 0, 0, 0, 0, 591, 1, 0, 0, 0, 0, 593, 1, 0, 0, 0, 0, 595, 1, 0, 0, 0, 0, 597, 1, 0, 0, 0, 0, 599, 1, 0, 0, 0, 0, 601, 1, 0, 0, 0, 0, 603, 1, 0, 0, 0, 0, 605, 1, 0, 0, 0, 0, 607, 1, 0, 0, 0, 0, 609, 1, 0, 0, 0, 0, 611, 1, 0, 0, 0, 0, 613, 1, 0, 0, 0, 0, 615, 1, 0, 0, 0, 0, 617, 1, 0, 0, 0, 0, 619, 1, 0, 0, 0, 0, 621, 1, 0, 0, 0, 0, 623, 1, 0, 0, 0, 0, 625, 1, 0, 0, 0, 0, 627, 1, 0, 0, 0, 0, 629, 1, 0, 0, 0, 0, 631, 1, 0, 0, 0, 0, 633, 1, 0, 0, 0, 0, 635, 1, 0, 0, 0, 0, 637, 1, 0, 0, 0, 0, 639, 1, 0, 0, 0, 0, 641, 1, 0, 0, 0, 0, 643, 1, 0, 0, 0, 0, 645, 1, 0, 0, 0, 0, 647, 1, 0, 0, 0, 0, 649, 1, 0, 0, 0, 0, 651, 1, 0, 0, 0, 0, 653, 1, 0, 0, 0, 0, 655, 1, 0, 0, 0, 0, 657, 1, 0, 0, 0, 0, 659, 1, 0, 0, 0, 0, 661, 1, 0, 0, 0, 0, 663, 1, 0, 0, 0, 0, 665, 1, 0, 0, 0, 0, 667, 1, 0, 0, 0, 0, 669, 1, 0, 0, 0, 0, 671, 1, 0, 0, 0, 0, 673, 1, 0, 0, 0, 0, 675, 1, 0, 0, 0, 0, 677, 1, 0, 0, 0, 0, 679, 1, 0, 0, 0, 0, 681, 1, 0, 0, 0, 0, 683, 1, 0, 0, 0, 0, 685, 1, 0, 0, 0, 0, 687, 1, 0, 0, 0, 0, 689, 1, 0, 0, 0, 0, 691, 1, 0, 0, 0, 0, 693, 1, 0, 0, 0, 0, 695, 1, 0, 0, 0, 0, 697, 1, 0, 0, 0, 0, 699, 1, 0, 0, 0, 0, 701, 1, 0, 0, 0, 0, 703, 1, 0, 0, 0, 0, 705, 1, 0, 0, 0, 0, 707, 1, 0, 0, 0, 0, 709, 1, 0, 0, 0, 0, 711, 1, 0, 0, 0, 0, 713, 1, 0, 0, 0, 0, 715, 1, 0, 0, 0, 0, 717, 1, 0, 0, 0, 0, 719, 1, 0, 0, 0, 0, 721, 1, 0, 0, 0, 0, 723, 1, 0, 0, 0, 0, 725, 1, 0, 0, 0, 0, 727, 1, 0, 0, 0, 0, 729, 1, 0, 0, 0, 0, 731, 1, 0, 0, 0, 0, 733, 1, 0, 0, 0, 0, 735, 1, 0, 0, 0, 0, 737, 1, 0, 0, 0, 0, 739, 1, 0, 0, 0, 0, 741, 1, 0, 0, 0, 0, 743, 1, 0, 0, 0, 0, 745, 1, 0, 0, 0, 0, 747, 1, 0, 0, 0, 0, 749, 1, 0, 0, 0, 0, 751, 1, 0, 0, 0, 0, 753, 1, 0, 0, 0, 0, 755, 1, 0, 0, 0, 0, 757, 1, 0, 0, 0, 0, 759, 1, 0, 0, 0, 0, 761, 1, 0, 0, 0, 0, 763, 1, 0, 0, 0, 0, 765, 1, 0, 0, 0, 0, 767, 1, 0, 0, 0, 0, 769, 1, 0, 0, 0, 0, 771, 1, 0, 0, 0, 0, 773, 1, 0, 0, 0, 0, 775, 1, 0, 0, 0, 0, 777, 1, 0, 0, 0, 0, 779, 1, 0, 0, 0, 0, 781, 1, 0, 0, 0, 0, 783, 1, 0, 0, 0, 0, 785, 1, 0, 0, 0, 0, 787, 1, 0, 0, 0, 0, 789, 1, 0, 0, 0, 0, 791, 1, 0, 0, 0, 0, 793, 1, 0, 0, 0, 0, 795, 1, 0, 0, 0, 0, 797, 1, 0, 0, 0, 0, 799, 1, 0, 0, 0, 0, 801, 1, 0, 0, 0, 0, 803, 1, 0, 0, 0, 0, 805, 1, 0, 0, 0, 0, 807, 1, 0, 0, 0, 0, 809, 1, 0, 0, 0, 0, 811, 1, 0, 0, 0, 0, 813, 1, 0, 0, 0, 0, 815, 1, 0, 0, 0, 0, 817, 1, 0, 0, 0, 0, 819, 1, 0, 0, 0, 0, 821, 1, 0, 0, 0, 0, 823, 1, 0, 0, 0, 0, 825, 1, 0, 0, 0, 0, 827, 1, 0, 0, 0, 0, 829, 1, 0, 0, 0, 0, 831, 1, 0, 0, 0, 0, 833, 1, 0, 0, 0, 0, 835, 1, 0, 0, 0, 0, 837, 1, 0, 0, 0, 0, 839, 1, 0, 0, 0, 0, 841, 1, 0, 0, 0, 0, 843, 1, 0, 0, 0, 0, 845, 1, 0, 0, 0, 0, 847, 1, 0, 0, 0, 0, 849, 1, 0, 0, 0, 0, 851, 1, 0, 0, 0, 0, 853, 1, 0, 0, 0, 0, 855, 1, 0, 0, 0, 0, 857, 1, 0, 0, 0, 0, 859, 1, 0, 0, 0, 0, 861, 1, 0, 0, 0, 0, 863, 1, 0, 0, 0, 0, 865, 1, 0, 0, 0, 0, 867, 1, 0, 0, 0, 0, 869, 1, 0, 0, 0, 0, 871, 1, 0, 0, 0, 0, 873, 1, 0, 0, 0, 0, 875, 1, 0, 0, 0, 0, 877, 1, 0, 0, 0, 0, 879, 1, 0, 0, 0, 0, 881, 1, 0, 0, 0, 0, 883, 1, 0, 0, 0, 0, 885, 1, 0, 0, 0, 0, 887, 1, 0, 0, 0, 0, 889, 1, 0, 0, 0, 0, 891, 1, 0, 0, 0, 0, 893, 1, 0, 0, 0, 0, 895, 1, 0, 0, 0, 0, 897, 1, 0, 0, 0, 0, 899, 1, 0, 0, 0, 0, 901, 1, 0, 0, 0, 0, 903, 1, 0, 0, 0, 0, 905, 1, 0, 0, 0, 0, 907, 1, 0, 0, 0, 0, 909, 1, 0, 0, 0, 0, 911, 1, 0, 0, 0, 0, 913, 1, 0, 0, 0, 0, 915, 1, 0, 0, 0, 0, 917, 1, 0, 0, 0, 0, 919, 1, 0, 0, 0, 0, 921, 1, 0, 0, 0, 0, 923, 1, 0, 0, 0, 0, 925, 1, 0, 0, 0, 0, 927, 1, 0, 0, 0, 0, 929, 1, 0, 0, 0, 0, 931, 1, 0, 0, 0, 0, 933, 1, 0, 0, 0, 0, 935, 1, 0, 0, 0, 0, 937, 1, 0, 0, 0, 0, 939, 1, 0, 0, 0, 0, 941, 1, 0, 0, 0, 0, 943, 1, 0, 0, 0, 0, 945, 1, 0, 0, 0, 0, 947, 1, 0, 0, 0, 0, 949, 1, 0, 0, 0, 0, 951, 1, 0, 0, 0, 0, 953, 1, 0, 0, 0, 0, 955, 1, 0, 0, 0, 0, 957, 1, 0, 0, 0, 0, 959, 1, 0, 0, 0, 0, 961, 1, 0, 0, 0, 0, 963, 1, 0, 0, 0, 0, 965, 1, 0, 0, 0, 0, 967, 1, 0, 0, 0, 0, 969, 1, 0, 0, 0, 0, 971, 1, 0, 0, 0, 0, 973, 1, 0, 0, 0, 0, 975, 1, 0, 0, 0, 0, 977, 1, 0, 0, 0, 0, 979, 1, 0, 0, 0, 0, 981, 1, 0, 0, 0, 0, 983, 1, 0, 0, 0, 0, 985, 1, 0, 0, 0, 0, 987, 1, 0, 0, 0, 0, 989, 1, 0, 0, 0, 0, 991, 1, 0, 0, 0, 0, 993, 1, 0, 0, 0, 0, 995, 1, 0, 0, 0, 0, 997, 1, 0, 0, 0, 0, 999, 1, 0, 0, 0, 0, 1001, 1, 0, 0, 0, 0, 1003, 1, 0, 0, 0, 0, 1005, 1, 0, 0, 0, 0, 1007, 1, 0, 0, 0, 0, 1009, 1, 0, 0, 0, 0, 1011, 1, 0, 0, 0, 0, 1013, 1, 0, 0, 0, 0, 1015, 1, 0, 0, 0, 0, 1017, 1, 0, 0, 0, 0, 1019, 1, 0, 0, 0, 0, 1021, 1, 0, 0, 0, 0, 1023, 1, 0, 0, 0, 0, 1025, 1, 0, 0, 0, 0, 1027, 1, 0, 0, 0, 0, 1029, 1, 0, 0, 0, 0, 1031, 1, 0, 0, 0, 0, 1033, 1, 0, 0, 0, 0, 1035, 1, 0, 0, 0, 0, 1037, 1, 0, 0, 0, 0, 1039, 1, 0, 0, 0, 0, 1041, 1, 0, 0, 0, 0, 1043, 1, 0, 0, 0, 0, 1045, 1, 0, 0, 0, 0, 1047, 1, 0, 0, 0, 0, 1049, 1, 0, 0, 0, 0, 1051, 1, 0, 0, 0, 0, 1053, 1, 0, 0, 0, 0, 1055, 1, 0, 0, 0, 0, 1057, 1, 0, 0, 0, 0, 1059, 1, 0, 0, 0, 0, 1061, 1, 0, 0, 0, 0, 1063, 1, 0, 0, 0, 0, 1065, 1, 0, 0, 0, 0, 1067, 1, 0, 0, 0, 0, 1069, 1, 0, 0, 0, 0, 1071, 1, 0, 0, 0, 0, 1073, 1, 0, 0, 0, 0, 1075, 1, 0, 0, 0, 0, 1077, 1, 0, 0, 0, 0, 1079, 1, 0, 0, 0, 0, 1081, 1, 0, 0, 0, 0, 1083, 1, 0, 0, 0, 0, 1085, 1, 0, 0, 0, 0, 1087, 1, 0, 0, 0, 0, 1089, 1, 0, 0, 0, 0, 1091, 1, 0, 0, 0, 0, 1093, 1, 0, 0, 0, 0, 1095, 1, 0, 0, 0, 0, 1097, 1, 0, 0, 0, 0, 1099, 1, 0, 0, 0, 0, 1101, 1, 0, 0, 0, 0, 1103, 1, 0, 0, 0, 0, 1105, 1, 0, 0, 0, 0, 1107, 1, 0, 0, 0, 0, 1109, 1, 0, 0, 0, 0, 1111, 1, 0, 0, 0, 0, 1113, 1, 0, 0, 0, 0, 1115, 1, 0, 0, 0, 0, 1117, 1, 0, 0, 0, 0, 1119, 1, 0, 0, 0, 0, 1121, 1, 0, 0, 0, 0, 1123, 1, 0, 0, 0, 0, 1125, 1, 0, 0, 0, 0, 1127, 1, 0, 0, 0, 0, 1129, 1, 0, 0, 0, 0, 1131, 1, 0, 0, 0, 0, 1133, 1, 0, 0, 0, 0, 1135, 1, 0, 0, 0, 0, 1137, 1, 0, 0, 0, 0, 1139, 1, 0, 0, 0, 0, 1141, 1, 0, 0, 0, 0, 1143, 1, 0, 0, 0, 0, 1145, 1, 0, 0, 0, 0, 1147, 1, 0, 0, 0, 0, 1149, 1, 0, 0, 0, 0, 1151, 1, 0, 0, 0, 0, 1153, 1, 0, 0, 0, 0, 1155, 1, 0, 0, 0, 0, 1157, 1, 0, 0, 0, 0, 1159, 1, 0, 0, 0, 0, 1161, 1, 0, 0, 0, 0, 1163, 1, 0, 0, 0, 0, 1165, 1, 0, 0, 0, 0, 1167, 1, 0, 0, 0, 0, 1169, 1, 0, 0, 0, 0, 1171, 1, 0, 0, 0, 0, 1173, 1, 0, 0, 0, 0, 1175, 1, 0, 0, 0, 0, 1177, 1, 0, 0, 0, 0, 1179, 1, 0, 0, 0, 0, 1181, 1, 0, 0, 0, 0, 1183, 1, 0, 0, 0, 0, 1185, 1, 0, 0, 0, 0, 1187, 1, 0, 0, 0, 0, 1189, 1, 0, 0, 0, 0, 1191, 1, 0, 0, 0, 0, 1193, 1, 0, 0, 0, 0, 1195, 1, 0, 0, 0, 0, 1197, 1, 0, 0, 0, 0, 1199, 1, 0, 0, 0, 0, 1201, 1, 0, 0, 0, 0, 1203, 1, 0, 0, 0, 0, 1205, 1, 0, 0, 0, 0, 1207, 1, 0, 0, 0, 0, 1209, 1, 0, 0, 0, 0, 1211, 1, 0, 0, 0, 0, 1213, 1, 0, 0, 0, 0, 1215, 1, 0, 0, 0, 0, 1217, 1, 0, 0, 0, 0, 1219, 1, 0, 0, 0, 0, 1221, 1, 0, 0, 0, 0, 1223, 1, 0, 0, 0, 0, 1225, 1, 0, 0, 0, 0, 1227, 1, 0, 0, 0, 0, 1229, 1, 0, 0, 0, 0, 1231, 1, 0, 0, 0, 0, 1233, 1, 0, 0, 0, 0, 1235, 1, 0, 0, 0, 0, 1237, 1, 0, 0, 0, 0, 1239, 1, 0, 0, 0, 0, 1241, 1, 0, 0, 0, 0, 1243, 1, 0, 0, 0, 0, 1245, 1, 0, 0, 0, 0, 1247, 1, 0, 0, 0, 0, 1249, 1, 0, 0, 0, 0, 1251, 1, 0, 0, 0, 0, 1253, 1, 0, 0, 0, 0, 1255, 1, 0, 0, 0, 0, 1257, 1, 0, 0, 0, 0, 1259, 1, 0, 0, 0, 0, 1261, 1, 0, 0, 0, 0, 1263, 1, 0, 0, 0, 0, 1265, 1, 0, 0, 0, 0, 1267, 1, 0, 0, 0, 0, 1269, 1, 0, 0, 0, 0, 1271, 1, 0, 0, 0, 0, 1273, 1, 0, 0, 0, 0, 1275, 1, 0, 0, 0, 0, 1277, 1, 0, 0, 0, 0, 1279, 1, 0, 0, 0, 0, 1281, 1, 0, 0, 0, 0, 1283, 1, 0, 0, 0, 0, 1285, 1, 0, 0, 0, 0, 1287, 1, 0, 0, 0, 0, 1295, 1, 0, 0, 0, 0, 1297, 1, 0, 0, 0, 0, 1299, 1, 0, 0, 0, 0, 1301, 1, 0, 0, 0, 0, 1303, 1, 0, 0, 0, 0, 1305, 1, 0, 0, 0, 0, 1307, 1, 0, 0, 0, 0, 1309, 1, 0, 0, 0, 0, 1311, 1, 0, 0, 0, 0, 1313, 1, 0, 0, 0, 0, 1315, 1, 0, 0, 0, 0, 1317, 1, 0, 0, 0, 0, 1319, 1, 0, 0, 0, 0, 1321, 1, 0, 0, 0, 0, 1325, 1, 0, 0, 0, 0, 1327, 1, 0, 0, 0, 0, 1329, 1, 0, 0, 0, 0, 1331, 1, 0, 0, 0, 0, 1333, 1, 0, 0, 0, 0, 1335, 1, 0, 0, 0, 0, 1337, 1, 0, 0, 0, 0, 1339, 1, 0, 0, 0, 0, 1341, 1, 0, 0, 0, 0, 1343, 1, 0, 0, 0, 0, 1345, 1, 0, 0, 0, 0, 1349, 1, 0, 0, 0, 0, 1351, 1, 0, 0, 0, 0, 1353, 1, 0, 0, 0, 0, 1355, 1, 0, 0, 0, 0, 1357, 1, 0, 0, 0, 0, 1359, 1, 0, 0, 0, 0, 1361, 1, 0, 0, 0, 0, 1363, 1, 0, 0, 0, 0, 1365, 1, 0, 0, 0, 0, 1367, 1, 0, 0, 0, 1, 1369, 1, 0, 0, 0, 1, 1371, 1, 0, 0, 0, 1, 1375, 1, 0, 0, 0, 1, 1377, 1, 0, 0, 0, 2, 1381, 1, 0, 0, 0, 2, 1383, 1, 0, 0, 0, 2, 1385, 1, 0, 0, 0, 3, 1387, 1, 0, 0, 0, 3, 1389, 1, 0, 0, 0, 3, 1391, 1, 0, 0, 0, 3, 1393, 1, 0, 0, 0, 4, 1395, 1, 0, 0, 0, 4, 1397, 1, 0, 0, 0, 5, 1399, 1, 0, 0, 0, 7, 1401, 1, 0, 0, 0, 9, 1403, 1, 0, 0, 0, 11, 1405, 1, 0, 0, 0, 13, 1407, 1, 0, 0, 0, 15, 1409, 1, 0, 0, 0, 17, 1411, 1, 0, 0, 0, 19, 1413, 1, 0, 0, 0, 21, 1415, 1, 0, 0, 0, 23, 1417, 1, 0, 0, 0, 25, 1419, 1, 0, 0, 0, 27, 1421, 1, 0, 0, 0, 29, 1423, 1, 0, 0, 0, 31, 1425, 1, 0, 0, 0, 33, 1427, 1, 0, 0, 0, 35, 1429, 1, 0, 0, 0, 37, 1431, 1, 0, 0, 0, 39, 1433, 1, 0, 0, 0, 41, 1436, 1, 0, 0, 0, 43, 1439, 1, 0, 0, 0, 45, 1442, 1, 0, 0, 0, 47, 1445, 1, 0, 0, 0, 49, 1448, 1, 0, 0, 0, 51, 1451, 1, 0, 0, 0, 53, 1454, 1, 0, 0, 0, 55, 1457, 1, 0, 0, 0, 57, 1460, 1, 0, 0, 0, 59, 1462, 1, 0, 0, 0, 61, 1488, 1, 0, 0, 0, 63, 1499, 1, 0, 0, 0, 65, 1515, 1, 0, 0, 0, 67, 1517, 1, 0, 0, 0, 69, 1519, 1, 0, 0, 0, 71, 1521, 1, 0, 0, 0, 73, 1525, 1, 0, 0, 0, 75, 1533, 1, 0, 0, 0, 77, 1541, 1, 0, 0, 0, 79, 1545, 1, 0, 0, 0, 81, 1549, 1, 0, 0, 0, 83, 1555, 1, 0, 0, 0, 85, 1558, 1, 0, 0, 0, 87, 1562, 1, 0, 0, 0, 89, 1573, 1, 0, 0, 0, 91, 1578, 1, 0, 0, 0, 93, 1583, 1, 0, 0, 0, 95, 1588, 1, 0, 0, 0, 97, 1594, 1, 0, 0, 0, 99, 1602, 1, 0, 0, 0, 101, 1609, 1, 0, 0, 0, 103, 1620, 1, 0, 0, 0, 105, 1627, 1, 0, 0, 0, 107, 1643, 1, 0, 0, 0, 109, 1656, 1, 0, 0, 0, 111, 1669, 1, 0, 0, 0, 113, 1682, 1, 0, 0, 0, 115, 1700, 1, 0, 0, 0, 117, 1713, 1, 0, 0, 0, 119, 1721, 1, 0, 0, 0, 121, 1732, 1, 0, 0, 0, 123, 1737, 1, 0, 0, 0, 125, 1746, 1, 0, 0, 0, 127, 1749, 1, 0, 0, 0, 129, 1754, 1, 0, 0, 0, 131, 1761, 1, 0, 0, 0, 133, 1767, 1, 0, 0, 0, 135, 1773, 1, 0, 0, 0, 137, 1777, 1, 0, 0, 0, 139, 1785, 1, 0, 0, 0, 141, 1790, 1, 0, 0, 0, 143, 1796, 1, 0, 0, 0, 145, 1802, 1, 0, 0, 0, 147, 1809, 1, 0, 0, 0, 149, 1812, 1, 0, 0, 0, 151, 1822, 1, 0, 0, 0, 153, 1832, 1, 0, 0, 0, 155, 1837, 1, 0, 0, 0, 157, 1845, 1, 0, 0, 0, 159, 1853, 1, 0, 0, 0, 161, 1859, 1, 0, 0, 0, 163, 1869, 1, 0, 0, 0, 165, 1884, 1, 0, 0, 0, 167, 1888, 1, 0, 0, 0, 169, 1893, 1, 0, 0, 0, 171, 1900, 1, 0, 0, 0, 173, 1903, 1, 0, 0, 0, 175, 1908, 1, 0, 0, 0, 177, 1911, 1, 0, 0, 0, 179, 1917, 1, 0, 0, 0, 181, 1925, 1, 0, 0, 0, 183, 1933, 1, 0, 0, 0, 185, 1944, 1, 0, 0, 0, 187, 1954, 1, 0, 0, 0, 189, 1961, 1, 0, 0, 0, 191, 1974, 1, 0, 0, 0, 193, 1979, 1, 0, 0, 0, 195, 1989, 1, 0, 0, 0, 197, 1995, 1, 0, 0, 0, 199, 2000, 1, 0, 0, 0, 201, 2003, 1, 0, 0, 0, 203, 2009, 1, 0, 0, 0, 205, 2016, 1, 0, 0, 0, 207, 2025, 1, 0, 0, 0, 209, 2030, 1, 0, 0, 0, 211, 2036, 1, 0, 0, 0, 213, 2043, 1, 0, 0, 0, 215, 2048, 1, 0, 0, 0, 217, 2054, 1, 0, 0, 0, 219, 2063, 1, 0, 0, 0, 221, 2068, 1, 0, 0, 0, 223, 2074, 1, 0, 0, 0, 225, 2081, 1, 0, 0, 0, 227, 2086, 1, 0, 0, 0, 229, 2100, 1, 0, 0, 0, 231, 2107, 1, 0, 0, 0, 233, 2117, 1, 0, 0, 0, 235, 2130, 1, 0, 0, 0, 237, 2136, 1, 0, 0, 0, 239, 2151, 1, 0, 0, 0, 241, 2158, 1, 0, 0, 0, 243, 2163, 1, 0, 0, 0, 245, 2169, 1, 0, 0, 0, 247, 2175, 1, 0, 0, 0, 249, 2178, 1, 0, 0, 0, 251, 2185, 1, 0, 0, 0, 253, 2190, 1, 0, 0, 0, 255, 2195, 1, 0, 0, 0, 257, 2200, 1, 0, 0, 0, 259, 2208, 1, 0, 0, 0, 261, 2216, 1, 0, 0, 0, 263, 2222, 1, 0, 0, 0, 265, 2227, 1, 0, 0, 0, 267, 2236, 1, 0, 0, 0, 269, 2242, 1, 0, 0, 0, 271, 2250, 1, 0, 0, 0, 273, 2258, 1, 0, 0, 0, 275, 2264, 1, 0, 0, 0, 277, 2273, 1, 0, 0, 0, 279, 2280, 1, 0, 0, 0, 281, 2287, 1, 0, 0, 0, 283, 2291, 1, 0, 0, 0, 285, 2297, 1, 0, 0, 0, 287, 2303, 1, 0, 0, 0, 289, 2313, 1, 0, 0, 0, 291, 2318, 1, 0, 0, 0, 293, 2324, 1, 0, 0, 0, 295, 2331, 1, 0, 0, 0, 297, 2341, 1, 0, 0, 0, 299, 2352, 1, 0, 0, 0, 301, 2355, 1, 0, 0, 0, 303, 2365, 1, 0, 0, 0, 305, 2374, 1, 0, 0, 0, 307, 2381, 1, 0, 0, 0, 309, 2387, 1, 0, 0, 0, 311, 2390, 1, 0, 0, 0, 313, 2396, 1, 0, 0, 0, 315, 2403, 1, 0, 0, 0, 317, 2411, 1, 0, 0, 0, 319, 2420, 1, 0, 0, 0, 321, 2428, 1, 0, 0, 0, 323, 2434, 1, 0, 0, 0, 325, 2450, 1, 0, 0, 0, 327, 2461, 1, 0, 0, 0, 329, 2467, 1, 0, 0, 0, 331, 2473, 1, 0, 0, 0, 333, 2481, 1, 0, 0, 0, 335, 2489, 1, 0, 0, 0, 337, 2498, 1, 0, 0, 0, 339, 2505, 1, 0, 0, 0, 341, 2515, 1, 0, 0, 0, 343, 2529, 1, 0, 0, 0, 345, 2540, 1, 0, 0, 0, 347, 2552, 1, 0, 0, 0, 349, 2560, 1, 0, 0, 0, 351, 2569, 1, 0, 0, 0, 353, 2580, 1, 0, 0, 0, 355, 2585, 1, 0, 0, 0, 357, 2590, 1, 0, 0, 0, 359, 2594, 1, 0, 0, 0, 361, 2601, 1, 0, 0, 0, 363, 2607, 1, 0, 0, 0, 365, 2612, 1, 0, 0, 0, 367, 2621, 1, 0, 0, 0, 369, 2625, 1, 0, 0, 0, 371, 2636, 1, 0, 0, 0, 373, 2644, 1, 0, 0, 0, 375, 2653, 1, 0, 0, 0, 377, 2662, 1, 0, 0, 0, 379, 2670, 1, 0, 0, 0, 381, 2677, 1, 0, 0, 0, 383, 2687, 1, 0, 0, 0, 385, 2698, 1, 0, 0, 0, 387, 2709, 1, 0, 0, 0, 389, 2717, 1, 0, 0, 0, 391, 2725, 1, 0, 0, 0, 393, 2734, 1, 0, 0, 0, 395, 2741, 1, 0, 0, 0, 397, 2748, 1, 0, 0, 0, 399, 2753, 1, 0, 0, 0, 401, 2758, 1, 0, 0, 0, 403, 2765, 1, 0, 0, 0, 405, 2774, 1, 0, 0, 0, 407, 2784, 1, 0, 0, 0, 409, 2789, 1, 0, 0, 0, 411, 2796, 1, 0, 0, 0, 413, 2802, 1, 0, 0, 0, 415, 2810, 1, 0, 0, 0, 417, 2820, 1, 0, 0, 0, 419, 2830, 1, 0, 0, 0, 421, 2838, 1, 0, 0, 0, 423, 2846, 1, 0, 0, 0, 425, 2856, 1, 0, 0, 0, 427, 2865, 1, 0, 0, 0, 429, 2872, 1, 0, 0, 0, 431, 2878, 1, 0, 0, 0, 433, 2888, 1, 0, 0, 0, 435, 2894, 1, 0, 0, 0, 437, 2902, 1, 0, 0, 0, 439, 2911, 1, 0, 0, 0, 441, 2921, 1, 0, 0, 0, 443, 2928, 1, 0, 0, 0, 445, 2936, 1, 0, 0, 0, 447, 2944, 1, 0, 0, 0, 449, 2951, 1, 0, 0, 0, 451, 2956, 1, 0, 0, 0, 453, 2961, 1, 0, 0, 0, 455, 2970, 1, 0, 0, 0, 457, 2973, 1, 0, 0, 0, 459, 2983, 1, 0, 0, 0, 461, 2993, 1, 0, 0, 0, 463, 3002, 1, 0, 0, 0, 465, 3012, 1, 0, 0, 0, 467, 3022, 1, 0, 0, 0, 469, 3028, 1, 0, 0, 0, 471, 3036, 1, 0, 0, 0, 473, 3044, 1, 0, 0, 0, 475, 3053, 1, 0, 0, 0, 477, 3060, 1, 0, 0, 0, 479, 3072, 1, 0, 0, 0, 481, 3079, 1, 0, 0, 0, 483, 3087, 1, 0, 0, 0, 485, 3095, 1, 0, 0, 0, 487, 3105, 1, 0, 0, 0, 489, 3109, 1, 0, 0, 0, 491, 3115, 1, 0, 0, 0, 493, 3124, 1, 0, 0, 0, 495, 3130, 1, 0, 0, 0, 497, 3135, 1, 0, 0, 0, 499, 3145, 1, 0, 0, 0, 501, 3151, 1, 0, 0, 0, 503, 3158, 1, 0, 0, 0, 505, 3163, 1, 0, 0, 0, 507, 3169, 1, 0, 0, 0, 509, 3178, 1, 0, 0, 0, 511, 3183, 1, 0, 0, 0, 513, 3191, 1, 0, 0, 0, 515, 3197, 1, 0, 0, 0, 517, 3205, 1, 0, 0, 0, 519, 3218, 1, 0, 0, 0, 521, 3227, 1, 0, 0, 0, 523, 3233, 1, 0, 0, 0, 525, 3240, 1, 0, 0, 0, 527, 3249, 1, 0, 0, 0, 529, 3254, 1, 0, 0, 0, 531, 3260, 1, 0, 0, 0, 533, 3265, 1, 0, 0, 0, 535, 3270, 1, 0, 0, 0, 537, 3276, 1, 0, 0, 0, 539, 3281, 1, 0, 0, 0, 541, 3284, 1, 0, 0, 0, 543, 3292, 1, 0, 0, 0, 545, 3299, 1, 0, 0, 0, 547, 3306, 1, 0, 0, 0, 549, 3312, 1, 0, 0, 0, 551, 3319, 1, 0, 0, 0, 553, 3322, 1, 0, 0, 0, 555, 3326, 1, 0, 0, 0, 557, 3331, 1, 0, 0, 0, 559, 3340, 1, 0, 0, 0, 561, 3347, 1, 0, 0, 0, 563, 3355, 1, 0, 0, 0, 565, 3361, 1, 0, 0, 0, 567, 3367, 1, 0, 0, 0, 569, 3374, 1, 0, 0, 0, 571, 3382, 1, 0, 0, 0, 573, 3392, 1, 0, 0, 0, 575, 3400, 1, 0, 0, 0, 577, 3409, 1, 0, 0, 0, 579, 3415, 1, 0, 0, 0, 581, 3425, 1, 0, 0, 0, 583, 3433, 1, 0, 0, 0, 585, 3442, 1, 0, 0, 0, 587, 3451, 1, 0, 0, 0, 589, 3457, 1, 0, 0, 0, 591, 3468, 1, 0, 0, 0, 593, 3479, 1, 0, 0, 0, 595, 3489, 1, 0, 0, 0, 597, 3497, 1, 0, 0, 0, 599, 3503, 1, 0, 0, 0, 601, 3509, 1, 0, 0, 0, 603, 3514, 1, 0, 0, 0, 605, 3523, 1, 0, 0, 0, 607, 3531, 1, 0, 0, 0, 609, 3541, 1, 0, 0, 0, 611, 3545, 1, 0, 0, 0, 613, 3553, 1, 0, 0, 0, 615, 3561, 1, 0, 0, 0, 617, 3570, 1, 0, 0, 0, 619, 3578, 1, 0, 0, 0, 621, 3585, 1, 0, 0, 0, 623, 3596, 1, 0, 0, 0, 625, 3604, 1, 0, 0, 0, 627, 3612, 1, 0, 0, 0, 629, 3618, 1, 0, 0, 0, 631, 3626, 1, 0, 0, 0, 633, 3635, 1, 0, 0, 0, 635, 3643, 1, 0, 0, 0, 637, 3650, 1, 0, 0, 0, 639, 3655, 1, 0, 0, 0, 641, 3664, 1, 0, 0, 0, 643, 3669, 1, 0, 0, 0, 645, 3674, 1, 0, 0, 0, 647, 3684, 1, 0, 0, 0, 649, 3691, 1, 0, 0, 0, 651, 3698, 1, 0, 0, 0, 653, 3705, 1, 0, 0, 0, 655, 3712, 1, 0, 0, 0, 657, 3721, 1, 0, 0, 0, 659, 3730, 1, 0, 0, 0, 661, 3740, 1, 0, 0, 0, 663, 3753, 1, 0, 0, 0, 665, 3760, 1, 0, 0, 0, 667, 3768, 1, 0, 0, 0, 669, 3772, 1, 0, 0, 0, 671, 3778, 1, 0, 0, 0, 673, 3783, 1, 0, 0, 0, 675, 3790, 1, 0, 0, 0, 677, 3799, 1, 0, 0, 0, 679, 3806, 1, 0, 0, 0, 681, 3817, 1, 0, 0, 0, 683, 3823, 1, 0, 0, 0, 685, 3833, 1, 0, 0, 0, 687, 3844, 1, 0, 0, 0, 689, 3850, 1, 0, 0, 0, 691, 3857, 1, 0, 0, 0, 693, 3865, 1, 0, 0, 0, 695, 3872, 1, 0, 0, 0, 697, 3878, 1, 0, 0, 0, 699, 3884, 1, 0, 0, 0, 701, 3891, 1, 0, 0, 0, 703, 3898, 1, 0, 0, 0, 705, 3909, 1, 0, 0, 0, 707, 3914, 1, 0, 0, 0, 709, 3923, 1, 0, 0, 0, 711, 3933, 1, 0, 0, 0, 713, 3938, 1, 0, 0, 0, 715, 3950, 1, 0, 0, 0, 717, 3958, 1, 0, 0, 0, 719, 3967, 1, 0, 0, 0, 721, 3975, 1, 0, 0, 0, 723, 3980, 1, 0, 0, 0, 725, 3986, 1, 0, 0, 0, 727, 3996, 1, 0, 0, 0, 729, 4008, 1, 0, 0, 0, 731, 4020, 1, 0, 0, 0, 733, 4028, 1, 0, 0, 0, 735, 4037, 1, 0, 0, 0, 737, 4046, 1, 0, 0, 0, 739, 4052, 1, 0, 0, 0, 741, 4059, 1, 0, 0, 0, 743, 4066, 1, 0, 0, 0, 745, 4072, 1, 0, 0, 0, 747, 4081, 1, 0, 0, 0, 749, 4091, 1, 0, 0, 0, 751, 4099, 1, 0, 0, 0, 753, 4107, 1, 0, 0, 0, 755, 4112, 1, 0, 0, 0, 757, 4121, 1, 0, 0, 0, 759, 4132, 1, 0, 0, 0, 761, 4140, 1, 0, 0, 0, 763, 4145, 1, 0, 0, 0, 765, 4153, 1, 0, 0, 0, 767, 4159, 1, 0, 0, 0, 769, 4163, 1, 0, 0, 0, 771, 4168, 1, 0, 0, 0, 773, 4172, 1, 0, 0, 0, 775, 4177, 1, 0, 0, 0, 777, 4185, 1, 0, 0, 0, 779, 4192, 1, 0, 0, 0, 781, 4196, 1, 0, 0, 0, 783, 4204, 1, 0, 0, 0, 785, 4209, 1, 0, 0, 0, 787, 4219, 1, 0, 0, 0, 789, 4228, 1, 0, 0, 0, 791, 4232, 1, 0, 0, 0, 793, 4240, 1, 0, 0, 0, 795, 4247, 1, 0, 0, 0, 797, 4255, 1, 0, 0, 0, 799, 4261, 1, 0, 0, 0, 801, 4270, 1, 0, 0, 0, 803, 4276, 1, 0, 0, 0, 805, 4280, 1, 0, 0, 0, 807, 4288, 1, 0, 0, 0, 809, 4297, 1, 0, 0, 0, 811, 4303, 1, 0, 0, 0, 813, 4312, 1, 0, 0, 0, 815, 4318, 1, 0, 0, 0, 817, 4323, 1, 0, 0, 0, 819, 4330, 1, 0, 0, 0, 821, 4338, 1, 0, 0, 0, 823, 4346, 1, 0, 0, 0, 825, 4355, 1, 0, 0, 0, 827, 4365, 1, 0, 0, 0, 829, 4370, 1, 0, 0, 0, 831, 4374, 1, 0, 0, 0, 833, 4380, 1, 0, 0, 0, 835, 4389, 1, 0, 0, 0, 837, 4399, 1, 0, 0, 0, 839, 4404, 1, 0, 0, 0, 841, 4414, 1, 0, 0, 0, 843, 4420, 1, 0, 0, 0, 845, 4425, 1, 0, 0, 0, 847, 4432, 1, 0, 0, 0, 849, 4440, 1, 0, 0, 0, 851, 4454, 1, 0, 0, 0, 853, 4465, 1, 0, 0, 0, 855, 4472, 1, 0, 0, 0, 857, 4491, 1, 0, 0, 0, 859, 4519, 1, 0, 0, 0, 861, 4546, 1, 0, 0, 0, 863, 4552, 1, 0, 0, 0, 865, 4565, 1, 0, 0, 0, 867, 4575, 1, 0, 0, 0, 869, 4586, 1, 0, 0, 0, 871, 4596, 1, 0, 0, 0, 873, 4606, 1, 0, 0, 0, 875, 4615, 1, 0, 0, 0, 877, 4621, 1, 0, 0, 0, 879, 4629, 1, 0, 0, 0, 881, 4642, 1, 0, 0, 0, 883, 4647, 1, 0, 0, 0, 885, 4655, 1, 0, 0, 0, 887, 4662, 1, 0, 0, 0, 889, 4669, 1, 0, 0, 0, 891, 4680, 1, 0, 0, 0, 893, 4690, 1, 0, 0, 0, 895, 4697, 1, 0, 0, 0, 897, 4704, 1, 0, 0, 0, 899, 4712, 1, 0, 0, 0, 901, 4720, 1, 0, 0, 0, 903, 4730, 1, 0, 0, 0, 905, 4737, 1, 0, 0, 0, 907, 4744, 1, 0, 0, 0, 909, 4751, 1, 0, 0, 0, 911, 4763, 1, 0, 0, 0, 913, 4767, 1, 0, 0, 0, 915, 4771, 1, 0, 0, 0, 917, 4777, 1, 0, 0, 0, 919, 4790, 1, 0, 0, 0, 921, 4802, 1, 0, 0, 0, 923, 4806, 1, 0, 0, 0, 925, 4810, 1, 0, 0, 0, 927, 4819, 1, 0, 0, 0, 929, 4827, 1, 0, 0, 0, 931, 4838, 1, 0, 0, 0, 933, 4844, 1, 0, 0, 0, 935, 4852, 1, 0, 0, 0, 937, 4861, 1, 0, 0, 0, 939, 4865, 1, 0, 0, 0, 941, 4873, 1, 0, 0, 0, 943, 4884, 1, 0, 0, 0, 945, 4893, 1, 0, 0, 0, 947, 4898, 1, 0, 0, 0, 949, 4905, 1, 0, 0, 0, 951, 4910, 1, 0, 0, 0, 953, 4917, 1, 0, 0, 0, 955, 4922, 1, 0, 0, 0, 957, 4931, 1, 0, 0, 0, 959, 4936, 1, 0, 0, 0, 961, 4948, 1, 0, 0, 0, 963, 4959, 1, 0, 0, 0, 965, 4968, 1, 0, 0, 0, 967, 4976, 1, 0, 0, 0, 969, 4990, 1, 0, 0, 0, 971, 4998, 1, 0, 0, 0, 973, 5009, 1, 0, 0, 0, 975, 5016, 1, 0, 0, 0, 977, 5023, 1, 0, 0, 0, 979, 5030, 1, 0, 0, 0, 981, 5037, 1, 0, 0, 0, 983, 5041, 1, 0, 0, 0, 985, 5045, 1, 0, 0, 0, 987, 5050, 1, 0, 0, 0, 989, 5055, 1, 0, 0, 0, 991, 5063, 1, 0, 0, 0, 993, 5069, 1, 0, 0, 0, 995, 5079, 1, 0, 0, 0, 997, 5084, 1, 0, 0, 0, 999, 5104, 1, 0, 0, 0, 1001, 5122, 1, 0, 0, 0, 1003, 5128, 1, 0, 0, 0, 1005, 5141, 1, 0, 0, 0, 1007, 5152, 1, 0, 0, 0, 1009, 5158, 1, 0, 0, 0, 1011, 5167, 1, 0, 0, 0, 1013, 5175, 1, 0, 0, 0, 1015, 5179, 1, 0, 0, 0, 1017, 5191, 1, 0, 0, 0, 1019, 5199, 1, 0, 0, 0, 1021, 5205, 1, 0, 0, 0, 1023, 5211, 1, 0, 0, 0, 1025, 5219, 1, 0, 0, 0, 1027, 5227, 1, 0, 0, 0, 1029, 5233, 1, 0, 0, 0, 1031, 5238, 1, 0, 0, 0, 1033, 5245, 1, 0, 0, 0, 1035, 5251, 1, 0, 0, 0, 1037, 5257, 1, 0, 0, 0, 1039, 5266, 1, 0, 0, 0, 1041, 5272, 1, 0, 0, 0, 1043, 5276, 1, 0, 0, 0, 1045, 5281, 1, 0, 0, 0, 1047, 5288, 1, 0, 0, 0, 1049, 5296, 1, 0, 0, 0, 1051, 5306, 1, 0, 0, 0, 1053, 5313, 1, 0, 0, 0, 1055, 5318, 1, 0, 0, 0, 1057, 5323, 1, 0, 0, 0, 1059, 5327, 1, 0, 0, 0, 1061, 5332, 1, 0, 0, 0, 1063, 5337, 1, 0, 0, 0, 1065, 5345, 1, 0, 0, 0, 1067, 5353, 1, 0, 0, 0, 1069, 5357, 1, 0, 0, 0, 1071, 5361, 1, 0, 0, 0, 1073, 5371, 1, 0, 0, 0, 1075, 5377, 1, 0, 0, 0, 1077, 5381, 1, 0, 0, 0, 1079, 5385, 1, 0, 0, 0, 1081, 5388, 1, 0, 0, 0, 1083, 5394, 1, 0, 0, 0, 1085, 5404, 1, 0, 0, 0, 1087, 5408, 1, 0, 0, 0, 1089, 5411, 1, 0, 0, 0, 1091, 5417, 1, 0, 0, 0, 1093, 5425, 1, 0, 0, 0, 1095, 5431, 1, 0, 0, 0, 1097, 5437, 1, 0, 0, 0, 1099, 5442, 1, 0, 0, 0, 1101, 5447, 1, 0, 0, 0, 1103, 5458, 1, 0, 0, 0, 1105, 5464, 1, 0, 0, 0, 1107, 5477, 1, 0, 0, 0, 1109, 5484, 1, 0, 0, 0, 1111, 5492, 1, 0, 0, 0, 1113, 5497, 1, 0, 0, 0, 1115, 5503, 1, 0, 0, 0, 1117, 5508, 1, 0, 0, 0, 1119, 5514, 1, 0, 0, 0, 1121, 5519, 1, 0, 0, 0, 1123, 5525, 1, 0, 0, 0, 1125, 5531, 1, 0, 0, 0, 1127, 5538, 1, 0, 0, 0, 1129, 5542, 1, 0, 0, 0, 1131, 5547, 1, 0, 0, 0, 1133, 5551, 1, 0, 0, 0, 1135, 5556, 1, 0, 0, 0, 1137, 5560, 1, 0, 0, 0, 1139, 5565, 1, 0, 0, 0, 1141, 5569, 1, 0, 0, 0, 1143, 5574, 1, 0, 0, 0, 1145, 5579, 1, 0, 0, 0, 1147, 5584, 1, 0, 0, 0, 1149, 5589, 1, 0, 0, 0, 1151, 5595, 1, 0, 0, 0, 1153, 5601, 1, 0, 0, 0, 1155, 5607, 1, 0, 0, 0, 1157, 5618, 1, 0, 0, 0, 1159, 5630, 1, 0, 0, 0, 1161, 5647, 1, 0, 0, 0, 1163, 5653, 1, 0, 0, 0, 1165, 5666, 1, 0, 0, 0, 1167, 5672, 1, 0, 0, 0, 1169, 5678, 1, 0, 0, 0, 1171, 5684, 1, 0, 0, 0, 1173, 5688, 1, 0, 0, 0, 1175, 5695, 1, 0, 0, 0, 1177, 5705, 1, 0, 0, 0, 1179, 5712, 1, 0, 0, 0, 1181, 5720, 1, 0, 0, 0, 1183, 5727, 1, 0, 0, 0, 1185, 5732, 1, 0, 0, 0, 1187, 5738, 1, 0, 0, 0, 1189, 5742, 1, 0, 0, 0, 1191, 5754, 1, 0, 0, 0, 1193, 5773, 1, 0, 0, 0, 1195, 5785, 1, 0, 0, 0, 1197, 5799, 1, 0, 0, 0, 1199, 5814, 1, 0, 0, 0, 1201, 5827, 1, 0, 0, 0, 1203, 5840, 1, 0, 0, 0, 1205, 5852, 1, 0, 0, 0, 1207, 5865, 1, 0, 0, 0, 1209, 5880, 1, 0, 0, 0, 1211, 5895, 1, 0, 0, 0, 1213, 5917, 1, 0, 0, 0, 1215, 5939, 1, 0, 0, 0, 1217, 5953, 1, 0, 0, 0, 1219, 5960, 1, 0, 0, 0, 1221, 5965, 1, 0, 0, 0, 1223, 5971, 1, 0, 0, 0, 1225, 5982, 1, 0, 0, 0, 1227, 5994, 1, 0, 0, 0, 1229, 6010, 1, 0, 0, 0, 1231, 6026, 1, 0, 0, 0, 1233, 6033, 1, 0, 0, 0, 1235, 6040, 1, 0, 0, 0, 1237, 6049, 1, 0, 0, 0, 1239, 6056, 1, 0, 0, 0, 1241, 6066, 1, 0, 0, 0, 1243, 6073, 1, 0, 0, 0, 1245, 6077, 1, 0, 0, 0, 1247, 6093, 1, 0, 0, 0, 1249, 6102, 1, 0, 0, 0, 1251, 6112, 1, 0, 0, 0, 1253, 6123, 1, 0, 0, 0, 1255, 6132, 1, 0, 0, 0, 1257, 6145, 1, 0, 0, 0, 1259, 6159, 1, 0, 0, 0, 1261, 6176, 1, 0, 0, 0, 1263, 6186, 1, 0, 0, 0, 1265, 6200, 1, 0, 0, 0, 1267, 6210, 1, 0, 0, 0, 1269, 6225, 1, 0, 0, 0, 1271, 6242, 1, 0, 0, 0, 1273, 6246, 1, 0, 0, 0, 1275, 6266, 1, 0, 0, 0, 1277, 6276, 1, 0, 0, 0, 1279, 6298, 1, 0, 0, 0, 1281, 6311, 1, 0, 0, 0, 1283, 6319, 1, 0, 0, 0, 1285, 6327, 1, 0, 0, 0, 1287, 6337, 1, 0, 0, 0, 1289, 6350, 1, 0, 0, 0, 1291, 6354, 1, 0, 0, 0, 1293, 6358, 1, 0, 0, 0, 1295, 6360, 1, 0, 0, 0, 1297, 6363, 1, 0, 0, 0, 1299, 6372, 1, 0, 0, 0, 1301, 6375, 1, 0, 0, 0, 1303, 6384, 1, 0, 0, 0, 1305, 6388, 1, 0, 0, 0, 1307, 6392, 1, 0, 0, 0, 1309, 6396, 1, 0, 0, 0, 1311, 6400, 1, 0, 0, 0, 1313, 6403, 1, 0, 0, 0, 1315, 6412, 1, 0, 0, 0, 1317, 6418, 1, 0, 0, 0, 1319, 6421, 1, 0, 0, 0, 1321, 6425, 1, 0, 0, 0, 1323, 6434, 1, 0, 0, 0, 1325, 6441, 1, 0, 0, 0, 1327, 6444, 1, 0, 0, 0, 1329, 6452, 1, 0, 0, 0, 1331, 6455, 1, 0, 0, 0, 1333, 6458, 1, 0, 0, 0, 1335, 6461, 1, 0, 0, 0, 1337, 6469, 1, 0, 0, 0, 1339, 6472, 1, 0, 0, 0, 1341, 6475, 1, 0, 0, 0, 1343, 6477, 1, 0, 0, 0, 1345, 6511, 1, 0, 0, 0, 1347, 6514, 1, 0, 0, 0, 1349, 6518, 1, 0, 0, 0, 1351, 6526, 1, 0, 0, 0, 1353, 6542, 1, 0, 0, 0, 1355, 6553, 1, 0, 0, 0, 1357, 6557, 1, 0, 0, 0, 1359, 6568, 1, 0, 0, 0, 1361, 6607, 1, 0, 0, 0, 1363, 6658, 1, 0, 0, 0, 1365, 6682, 1, 0, 0, 0, 1367, 6685, 1, 0, 0, 0, 1369, 6687, 1, 0, 0, 0, 1371, 6692, 1, 0, 0, 0, 1373, 6723, 1, 0, 0, 0, 1375, 6726, 1, 0, 0, 0, 1377, 6731, 1, 0, 0, 0, 1379, 6744, 1, 0, 0, 0, 1381, 6747, 1, 0, 0, 0, 1383, 6752, 1, 0, 0, 0, 1385, 6758, 1, 0, 0, 0, 1387, 6763, 1, 0, 0, 0, 1389, 6768, 1, 0, 0, 0, 1391, 6773, 1, 0, 0, 0, 1393, 6778, 1, 0, 0, 0, 1395, 6795, 1, 0, 0, 0, 1397, 6797, 1, 0, 0, 0, 1399, 1400, 5, 36, 0, 0, 1400, 6, 1, 0, 0, 0, 1401, 1402, 5, 40, 0, 0, 1402, 8, 1, 0, 0, 0, 1403, 1404, 5, 41, 0, 0, 1404, 10, 1, 0, 0, 0, 1405, 1406, 5, 91, 0, 0, 1406, 12, 1, 0, 0, 0, 1407, 1408, 5, 93, 0, 0, 1408, 14, 1, 0, 0, 0, 1409, 1410, 5, 44, 0, 0, 1410, 16, 1, 0, 0, 0, 1411, 1412, 5, 59, 0, 0, 1412, 18, 1, 0, 0, 0, 1413, 1414, 5, 58, 0, 0, 1414, 20, 1, 0, 0, 0, 1415, 1416, 5, 42, 0, 0, 1416, 22, 1, 0, 0, 0, 1417, 1418, 5, 61, 0, 0, 1418, 24, 1, 0, 0, 0, 1419, 1420, 5, 46, 0, 0, 1420, 26, 1, 0, 0, 0, 1421, 1422, 5, 43, 0, 0, 1422, 28, 1, 0, 0, 0, 1423, 1424, 5, 45, 0, 0, 1424, 30, 1, 0, 0, 0, 1425, 1426, 5, 47, 0, 0, 1426, 32, 1, 0, 0, 0, 1427, 1428, 5, 94, 0, 0, 1428, 34, 1, 0, 0, 0, 1429, 1430, 5, 60, 0, 0, 1430, 36, 1, 0, 0, 0, 1431, 1432, 5, 62, 0, 0, 1432, 38, 1, 0, 0, 0, 1433, 1434, 5, 60, 0, 0, 1434, 1435, 5, 60, 0, 0, 1435, 40, 1, 0, 0, 0, 1436, 1437, 5, 62, 0, 0, 1437, 1438, 5, 62, 0, 0, 1438, 42, 1, 0, 0, 0, 1439, 1440, 5, 58, 0, 0, 1440, 1441, 5, 61, 0, 0, 1441, 44, 1, 0, 0, 0, 1442, 1443, 5, 60, 0, 0, 1443, 1444, 5, 61, 0, 0, 1444, 46, 1, 0, 0, 0, 1445, 1446, 5, 61, 0, 0, 1446, 1447, 5, 62, 0, 0, 1447, 48, 1, 0, 0, 0, 1448, 1449, 5, 62, 0, 0, 1449, 1450, 5, 61, 0, 0, 1450, 50, 1, 0, 0, 0, 1451, 1452, 5, 46, 0, 0, 1452, 1453, 5, 46, 0, 0, 1453, 52, 1, 0, 0, 0, 1454, 1455, 5, 60, 0, 0, 1455, 1456, 5, 62, 0, 0, 1456, 54, 1, 0, 0, 0, 1457, 1458, 5, 58, 0, 0, 1458, 1459, 5, 58, 0, 0, 1459, 56, 1, 0, 0, 0, 1460, 1461, 5, 37, 0, 0, 1461, 58, 1, 0, 0, 0, 1462, 1464, 5, 36, 0, 0, 1463, 1465, 7, 0, 0, 0, 1464, 1463, 1, 0, 0, 0, 1465, 1466, 1, 0, 0, 0, 1466, 1464, 1, 0, 0, 0, 1466, 1467, 1, 0, 0, 0, 1467, 60, 1, 0, 0, 0, 1468, 1484, 3, 65, 30, 0, 1469, 1473, 5, 43, 0, 0, 1470, 1471, 5, 45, 0, 0, 1471, 1473, 4, 28, 0, 0, 1472, 1469, 1, 0, 0, 0, 1472, 1470, 1, 0, 0, 0, 1473, 1474, 1, 0, 0, 0, 1474, 1472, 1, 0, 0, 0, 1474, 1475, 1, 0, 0, 0, 1475, 1479, 1, 0, 0, 0, 1476, 1480, 3, 65, 30, 0, 1477, 1478, 5, 47, 0, 0, 1478, 1480, 4, 28, 1, 0, 1479, 1476, 1, 0, 0, 0, 1479, 1477, 1, 0, 0, 0, 1480, 1484, 1, 0, 0, 0, 1481, 1482, 5, 47, 0, 0, 1482, 1484, 4, 28, 2, 0, 1483, 1468, 1, 0, 0, 0, 1483, 1472, 1, 0, 0, 0, 1483, 1481, 1, 0, 0, 0, 1484, 1485, 1, 0, 0, 0, 1485, 1483, 1, 0, 0, 0, 1485, 1486, 1, 0, 0, 0, 1486, 1489, 1, 0, 0, 0, 1487, 1489, 7, 1, 0, 0, 1488, 1483, 1, 0, 0, 0, 1488, 1487, 1, 0, 0, 0, 1489, 1490, 1, 0, 0, 0, 1490, 1491, 6, 28, 0, 0, 1491, 62, 1, 0, 0, 0, 1492, 1498, 3, 67, 31, 0, 1493, 1494, 5, 45, 0, 0, 1494, 1498, 4, 29, 3, 0, 1495, 1496, 5, 47, 0, 0, 1496, 1498, 4, 29, 4, 0, 1497, 1492, 1, 0, 0, 0, 1497, 1493, 1, 0, 0, 0, 1497, 1495, 1, 0, 0, 0, 1498, 1501, 1, 0, 0, 0, 1499, 1497, 1, 0, 0, 0, 1499, 1500, 1, 0, 0, 0, 1500, 1502, 1, 0, 0, 0, 1501, 1499, 1, 0, 0, 0, 1502, 1504, 3, 69, 32, 0, 1503, 1505, 3, 61, 28, 0, 1504, 1503, 1, 0, 0, 0, 1504, 1505, 1, 0, 0, 0, 1505, 1509, 1, 0, 0, 0, 1506, 1510, 5, 43, 0, 0, 1507, 1508, 5, 45, 0, 0, 1508, 1510, 4, 29, 5, 0, 1509, 1506, 1, 0, 0, 0, 1509, 1507, 1, 0, 0, 0, 1510, 1511, 1, 0, 0, 0, 1511, 1509, 1, 0, 0, 0, 1511, 1512, 1, 0, 0, 0, 1512, 1513, 1, 0, 0, 0, 1513, 1514, 6, 29, 1, 0, 1514, 64, 1, 0, 0, 0, 1515, 1516, 7, 2, 0, 0, 1516, 66, 1, 0, 0, 0, 1517, 1518, 7, 3, 0, 0, 1518, 68, 1, 0, 0, 0, 1519, 1520, 7, 4, 0, 0, 1520, 70, 1, 0, 0, 0, 1521, 1522, 7, 5, 0, 0, 1522, 1523, 7, 6, 0, 0, 1523, 1524, 7, 6, 0, 0, 1524, 72, 1, 0, 0, 0, 1525, 1526, 7, 5, 0, 0, 1526, 1527, 7, 7, 0, 0, 1527, 1528, 7, 5, 0, 0, 1528, 1529, 7, 6, 0, 0, 1529, 1530, 7, 8, 0, 0, 1530, 1531, 7, 9, 0, 0, 1531, 1532, 7, 10, 0, 0, 1532, 74, 1, 0, 0, 0, 1533, 1534, 7, 5, 0, 0, 1534, 1535, 7, 7, 0, 0, 1535, 1536, 7, 5, 0, 0, 1536, 1537, 7, 6, 0, 0, 1537, 1538, 7, 8, 0, 0, 1538, 1539, 7, 11, 0, 0, 1539, 1540, 7, 10, 0, 0, 1540, 76, 1, 0, 0, 0, 1541, 1542, 7, 5, 0, 0, 1542, 1543, 7, 7, 0, 0, 1543, 1544, 7, 12, 0, 0, 1544, 78, 1, 0, 0, 0, 1545, 1546, 7, 5, 0, 0, 1546, 1547, 7, 7, 0, 0, 1547, 1548, 7, 8, 0, 0, 1548, 80, 1, 0, 0, 0, 1549, 1550, 7, 5, 0, 0, 1550, 1551, 7, 13, 0, 0, 1551, 1552, 7, 13, 0, 0, 1552, 1553, 7, 5, 0, 0, 1553, 1554, 7, 8, 0, 0, 1554, 82, 1, 0, 0, 0, 1555, 1556, 7, 5, 0, 0, 1556, 1557, 7, 9, 0, 0, 1557, 84, 1, 0, 0, 0, 1558, 1559, 7, 5, 0, 0, 1559, 1560, 7, 9, 0, 0, 1560, 1561, 7, 14, 0, 0, 1561, 86, 1, 0, 0, 0, 1562, 1563, 7, 5, 0, 0, 1563, 1564, 7, 9, 0, 0, 1564, 1565, 7, 8, 0, 0, 1565, 1566, 7, 15, 0, 0, 1566, 1567, 7, 15, 0, 0, 1567, 1568, 7, 10, 0, 0, 1568, 1569, 7, 16, 0, 0, 1569, 1570, 7, 13, 0, 0, 1570, 1571, 7, 17, 0, 0, 1571, 1572, 7, 14, 0, 0, 1572, 88, 1, 0, 0, 0, 1573, 1574, 7, 18, 0, 0, 1574, 1575, 7, 19, 0, 0, 1575, 1576, 7, 16, 0, 0, 1576, 1577, 7, 20, 0, 0, 1577, 90, 1, 0, 0, 0, 1578, 1579, 7, 14, 0, 0, 1579, 1580, 7, 5, 0, 0, 1580, 1581, 7, 9, 0, 0, 1581, 1582, 7, 10, 0, 0, 1582, 92, 1, 0, 0, 0, 1583, 1584, 7, 14, 0, 0, 1584, 1585, 7, 5, 0, 0, 1585, 1586, 7, 9, 0, 0, 1586, 1587, 7, 16, 0, 0, 1587, 94, 1, 0, 0, 0, 1588, 1589, 7, 14, 0, 0, 1589, 1590, 7, 20, 0, 0, 1590, 1591, 7, 10, 0, 0, 1591, 1592, 7, 14, 0, 0, 1592, 1593, 7, 21, 0, 0, 1593, 96, 1, 0, 0, 0, 1594, 1595, 7, 14, 0, 0, 1595, 1596, 7, 19, 0, 0, 1596, 1597, 7, 6, 0, 0, 1597, 1598, 7, 6, 0, 0, 1598, 1599, 7, 5, 0, 0, 1599, 1600, 7, 16, 0, 0, 1600, 1601, 7, 10, 0, 0, 1601, 98, 1, 0, 0, 0, 1602, 1603, 7, 14, 0, 0, 1603, 1604, 7, 19, 0, 0, 1604, 1605, 7, 6, 0, 0, 1605, 1606, 7, 22, 0, 0, 1606, 1607, 7, 15, 0, 0, 1607, 1608, 7, 7, 0, 0, 1608, 100, 1, 0, 0, 0, 1609, 1610, 7, 14, 0, 0, 1610, 1611, 7, 19, 0, 0, 1611, 1612, 7, 7, 0, 0, 1612, 1613, 7, 9, 0, 0, 1613, 1614, 7, 16, 0, 0, 1614, 1615, 7, 13, 0, 0, 1615, 1616, 7, 5, 0, 0, 1616, 1617, 7, 17, 0, 0, 1617, 1618, 7, 7, 0, 0, 1618, 1619, 7, 16, 0, 0, 1619, 102, 1, 0, 0, 0, 1620, 1621, 7, 14, 0, 0, 1621, 1622, 7, 13, 0, 0, 1622, 1623, 7, 10, 0, 0, 1623, 1624, 7, 5, 0, 0, 1624, 1625, 7, 16, 0, 0, 1625, 1626, 7, 10, 0, 0, 1626, 104, 1, 0, 0, 0, 1627, 1628, 7, 14, 0, 0, 1628, 1629, 7, 22, 0, 0, 1629, 1630, 7, 13, 0, 0, 1630, 1631, 7, 13, 0, 0, 1631, 1632, 7, 10, 0, 0, 1632, 1633, 7, 7, 0, 0, 1633, 1634, 7, 16, 0, 0, 1634, 1635, 5, 95, 0, 0, 1635, 1636, 7, 14, 0, 0, 1636, 1637, 7, 5, 0, 0, 1637, 1638, 7, 16, 0, 0, 1638, 1639, 7, 5, 0, 0, 1639, 1640, 7, 6, 0, 0, 1640, 1641, 7, 19, 0, 0, 1641, 1642, 7, 23, 0, 0, 1642, 106, 1, 0, 0, 0, 1643, 1644, 7, 14, 0, 0, 1644, 1645, 7, 22, 0, 0, 1645, 1646, 7, 13, 0, 0, 1646, 1647, 7, 13, 0, 0, 1647, 1648, 7, 10, 0, 0, 1648, 1649, 7, 7, 0, 0, 1649, 1650, 7, 16, 0, 0, 1650, 1651, 5, 95, 0, 0, 1651, 1652, 7, 12, 0, 0, 1652, 1653, 7, 5, 0, 0, 1653, 1654, 7, 16, 0, 0, 1654, 1655, 7, 10, 0, 0, 1655, 108, 1, 0, 0, 0, 1656, 1657, 7, 14, 0, 0, 1657, 1658, 7, 22, 0, 0, 1658, 1659, 7, 13, 0, 0, 1659, 1660, 7, 13, 0, 0, 1660, 1661, 7, 10, 0, 0, 1661, 1662, 7, 7, 0, 0, 1662, 1663, 7, 16, 0, 0, 1663, 1664, 5, 95, 0, 0, 1664, 1665, 7, 13, 0, 0, 1665, 1666, 7, 19, 0, 0, 1666, 1667, 7, 6, 0, 0, 1667, 1668, 7, 10, 0, 0, 1668, 110, 1, 0, 0, 0, 1669, 1670, 7, 14, 0, 0, 1670, 1671, 7, 22, 0, 0, 1671, 1672, 7, 13, 0, 0, 1672, 1673, 7, 13, 0, 0, 1673, 1674, 7, 10, 0, 0, 1674, 1675, 7, 7, 0, 0, 1675, 1676, 7, 16, 0, 0, 1676, 1677, 5, 95, 0, 0, 1677, 1678, 7, 16, 0, 0, 1678, 1679, 7, 17, 0, 0, 1679, 1680, 7, 15, 0, 0, 1680, 1681, 7, 10, 0, 0, 1681, 112, 1, 0, 0, 0, 1682, 1683, 7, 14, 0, 0, 1683, 1684, 7, 22, 0, 0, 1684, 1685, 7, 13, 0, 0, 1685, 1686, 7, 13, 0, 0, 1686, 1687, 7, 10, 0, 0, 1687, 1688, 7, 7, 0, 0, 1688, 1689, 7, 16, 0, 0, 1689, 1690, 5, 95, 0, 0, 1690, 1691, 7, 16, 0, 0, 1691, 1692, 7, 17, 0, 0, 1692, 1693, 7, 15, 0, 0, 1693, 1694, 7, 10, 0, 0, 1694, 1695, 7, 9, 0, 0, 1695, 1696, 7, 16, 0, 0, 1696, 1697, 7, 5, 0, 0, 1697, 1698, 7, 15, 0, 0, 1698, 1699, 7, 24, 0, 0, 1699, 114, 1, 0, 0, 0, 1700, 1701, 7, 14, 0, 0, 1701, 1702, 7, 22, 0, 0, 1702, 1703, 7, 13, 0, 0, 1703, 1704, 7, 13, 0, 0, 1704, 1705, 7, 10, 0, 0, 1705, 1706, 7, 7, 0, 0, 1706, 1707, 7, 16, 0, 0, 1707, 1708, 5, 95, 0, 0, 1708, 1709, 7, 22, 0, 0, 1709, 1710, 7, 9, 0, 0, 1710, 1711, 7, 10, 0, 0, 1711, 1712, 7, 13, 0, 0, 1712, 116, 1, 0, 0, 0, 1713, 1714, 7, 12, 0, 0, 1714, 1715, 7, 10, 0, 0, 1715, 1716, 7, 25, 0, 0, 1716, 1717, 7, 5, 0, 0, 1717, 1718, 7, 22, 0, 0, 1718, 1719, 7, 6, 0, 0, 1719, 1720, 7, 16, 0, 0, 1720, 118, 1, 0, 0, 0, 1721, 1722, 7, 12, 0, 0, 1722, 1723, 7, 10, 0, 0, 1723, 1724, 7, 25, 0, 0, 1724, 1725, 7, 10, 0, 0, 1725, 1726, 7, 13, 0, 0, 1726, 1727, 7, 13, 0, 0, 1727, 1728, 7, 5, 0, 0, 1728, 1729, 7, 18, 0, 0, 1729, 1730, 7, 6, 0, 0, 1730, 1731, 7, 10, 0, 0, 1731, 120, 1, 0, 0, 0, 1732, 1733, 7, 12, 0, 0, 1733, 1734, 7, 10, 0, 0, 1734, 1735, 7, 9, 0, 0, 1735, 1736, 7, 14, 0, 0, 1736, 122, 1, 0, 0, 0, 1737, 1738, 7, 12, 0, 0, 1738, 1739, 7, 17, 0, 0, 1739, 1740, 7, 9, 0, 0, 1740, 1741, 7, 16, 0, 0, 1741, 1742, 7, 17, 0, 0, 1742, 1743, 7, 7, 0, 0, 1743, 1744, 7, 14, 0, 0, 1744, 1745, 7, 16, 0, 0, 1745, 124, 1, 0, 0, 0, 1746, 1747, 7, 12, 0, 0, 1747, 1748, 7, 19, 0, 0, 1748, 126, 1, 0, 0, 0, 1749, 1750, 7, 10, 0, 0, 1750, 1751, 7, 6, 0, 0, 1751, 1752, 7, 9, 0, 0, 1752, 1753, 7, 10, 0, 0, 1753, 128, 1, 0, 0, 0, 1754, 1755, 7, 10, 0, 0, 1755, 1756, 7, 26, 0, 0, 1756, 1757, 7, 14, 0, 0, 1757, 1758, 7, 10, 0, 0, 1758, 1759, 7, 24, 0, 0, 1759, 1760, 7, 16, 0, 0, 1760, 130, 1, 0, 0, 0, 1761, 1762, 7, 25, 0, 0, 1762, 1763, 7, 5, 0, 0, 1763, 1764, 7, 6, 0, 0, 1764, 1765, 7, 9, 0, 0, 1765, 1766, 7, 10, 0, 0, 1766, 132, 1, 0, 0, 0, 1767, 1768, 7, 25, 0, 0, 1768, 1769, 7, 10, 0, 0, 1769, 1770, 7, 16, 0, 0, 1770, 1771, 7, 14, 0, 0, 1771, 1772, 7, 20, 0, 0, 1772, 134, 1, 0, 0, 0, 1773, 1774, 7, 25, 0, 0, 1774, 1775, 7, 19, 0, 0, 1775, 1776, 7, 13, 0, 0, 1776, 136, 1, 0, 0, 0, 1777, 1778, 7, 25, 0, 0, 1778, 1779, 7, 19, 0, 0, 1779, 1780, 7, 13, 0, 0, 1780, 1781, 7, 10, 0, 0, 1781, 1782, 7, 17, 0, 0, 1782, 1783, 7, 23, 0, 0, 1783, 1784, 7, 7, 0, 0, 1784, 138, 1, 0, 0, 0, 1785, 1786, 7, 25, 0, 0, 1786, 1787, 7, 13, 0, 0, 1787, 1788, 7, 19, 0, 0, 1788, 1789, 7, 15, 0, 0, 1789, 140, 1, 0, 0, 0, 1790, 1791, 7, 23, 0, 0, 1791, 1792, 7, 13, 0, 0, 1792, 1793, 7, 5, 0, 0, 1793, 1794, 7, 7, 0, 0, 1794, 1795, 7, 16, 0, 0, 1795, 142, 1, 0, 0, 0, 1796, 1797, 7, 23, 0, 0, 1797, 1798, 7, 13, 0, 0, 1798, 1799, 7, 19, 0, 0, 1799, 1800, 7, 22, 0, 0, 1800, 1801, 7, 24, 0, 0, 1801, 144, 1, 0, 0, 0, 1802, 1803, 7, 20, 0, 0, 1803, 1804, 7, 5, 0, 0, 1804, 1805, 7, 27, 0, 0, 1805, 1806, 7, 17, 0, 0, 1806, 1807, 7, 7, 0, 0, 1807, 1808, 7, 23, 0, 0, 1808, 146, 1, 0, 0, 0, 1809, 1810, 7, 17, 0, 0, 1810, 1811, 7, 7, 0, 0, 1811, 148, 1, 0, 0, 0, 1812, 1813, 7, 17, 0, 0, 1813, 1814, 7, 7, 0, 0, 1814, 1815, 7, 17, 0, 0, 1815, 1816, 7, 16, 0, 0, 1816, 1817, 7, 17, 0, 0, 1817, 1818, 7, 5, 0, 0, 1818, 1819, 7, 6, 0, 0, 1819, 1820, 7, 6, 0, 0, 1820, 1821, 7, 8, 0, 0, 1821, 150, 1, 0, 0, 0, 1822, 1823, 7, 17, 0, 0, 1823, 1824, 7, 7, 0, 0, 1824, 1825, 7, 16, 0, 0, 1825, 1826, 7, 10, 0, 0, 1826, 1827, 7, 13, 0, 0, 1827, 1828, 7, 9, 0, 0, 1828, 1829, 7, 10, 0, 0, 1829, 1830, 7, 14, 0, 0, 1830, 1831, 7, 16, 0, 0, 1831, 152, 1, 0, 0, 0, 1832, 1833, 7, 17, 0, 0, 1833, 1834, 7, 7, 0, 0, 1834, 1835, 7, 16, 0, 0, 1835, 1836, 7, 19, 0, 0, 1836, 154, 1, 0, 0, 0, 1837, 1838, 7, 6, 0, 0, 1838, 1839, 7, 5, 0, 0, 1839, 1840, 7, 16, 0, 0, 1840, 1841, 7, 10, 0, 0, 1841, 1842, 7, 13, 0, 0, 1842, 1843, 7, 5, 0, 0, 1843, 1844, 7, 6, 0, 0, 1844, 156, 1, 0, 0, 0, 1845, 1846, 7, 6, 0, 0, 1846, 1847, 7, 10, 0, 0, 1847, 1848, 7, 5, 0, 0, 1848, 1849, 7, 12, 0, 0, 1849, 1850, 7, 17, 0, 0, 1850, 1851, 7, 7, 0, 0, 1851, 1852, 7, 23, 0, 0, 1852, 158, 1, 0, 0, 0, 1853, 1854, 7, 6, 0, 0, 1854, 1855, 7, 17, 0, 0, 1855, 1856, 7, 15, 0, 0, 1856, 1857, 7, 17, 0, 0, 1857, 1858, 7, 16, 0, 0, 1858, 160, 1, 0, 0, 0, 1859, 1860, 7, 6, 0, 0, 1860, 1861, 7, 19, 0, 0, 1861, 1862, 7, 14, 0, 0, 1862, 1863, 7, 5, 0, 0, 1863, 1864, 7, 6, 0, 0, 1864, 1865, 7, 16, 0, 0, 1865, 1866, 7, 17, 0, 0, 1866, 1867, 7, 15, 0, 0, 1867, 1868, 7, 10, 0, 0, 1868, 162, 1, 0, 0, 0, 1869, 1870, 7, 6, 0, 0, 1870, 1871, 7, 19, 0, 0, 1871, 1872, 7, 14, 0, 0, 1872, 1873, 7, 5, 0, 0, 1873, 1874, 7, 6, 0, 0, 1874, 1875, 7, 16, 0, 0, 1875, 1876, 7, 17, 0, 0, 1876, 1877, 7, 15, 0, 0, 1877, 1878, 7, 10, 0, 0, 1878, 1879, 7, 9, 0, 0, 1879, 1880, 7, 16, 0, 0, 1880, 1881, 7, 5, 0, 0, 1881, 1882, 7, 15, 0, 0, 1882, 1883, 7, 24, 0, 0, 1883, 164, 1, 0, 0, 0, 1884, 1885, 7, 7, 0, 0, 1885, 1886, 7, 19, 0, 0, 1886, 1887, 7, 16, 0, 0, 1887, 166, 1, 0, 0, 0, 1888, 1889, 7, 7, 0, 0, 1889, 1890, 7, 22, 0, 0, 1890, 1891, 7, 6, 0, 0, 1891, 1892, 7, 6, 0, 0, 1892, 168, 1, 0, 0, 0, 1893, 1894, 7, 19, 0, 0, 1894, 1895, 7, 25, 0, 0, 1895, 1896, 7, 25, 0, 0, 1896, 1897, 7, 9, 0, 0, 1897, 1898, 7, 10, 0, 0, 1898, 1899, 7, 16, 0, 0, 1899, 170, 1, 0, 0, 0, 1900, 1901, 7, 19, 0, 0, 1901, 1902, 7, 7, 0, 0, 1902, 172, 1, 0, 0, 0, 1903, 1904, 7, 19, 0, 0, 1904, 1905, 7, 7, 0, 0, 1905, 1906, 7, 6, 0, 0, 1906, 1907, 7, 8, 0, 0, 1907, 174, 1, 0, 0, 0, 1908, 1909, 7, 19, 0, 0, 1909, 1910, 7, 13, 0, 0, 1910, 176, 1, 0, 0, 0, 1911, 1912, 7, 19, 0, 0, 1912, 1913, 7, 13, 0, 0, 1913, 1914, 7, 12, 0, 0, 1914, 1915, 7, 10, 0, 0, 1915, 1916, 7, 13, 0, 0, 1916, 178, 1, 0, 0, 0, 1917, 1918, 7, 24, 0, 0, 1918, 1919, 7, 6, 0, 0, 1919, 1920, 7, 5, 0, 0, 1920, 1921, 7, 14, 0, 0, 1921, 1922, 7, 17, 0, 0, 1922, 1923, 7, 7, 0, 0, 1923, 1924, 7, 23, 0, 0, 1924, 180, 1, 0, 0, 0, 1925, 1926, 7, 24, 0, 0, 1926, 1927, 7, 13, 0, 0, 1927, 1928, 7, 17, 0, 0, 1928, 1929, 7, 15, 0, 0, 1929, 1930, 7, 5, 0, 0, 1930, 1931, 7, 13, 0, 0, 1931, 1932, 7, 8, 0, 0, 1932, 182, 1, 0, 0, 0, 1933, 1934, 7, 13, 0, 0, 1934, 1935, 7, 10, 0, 0, 1935, 1936, 7, 25, 0, 0, 1936, 1937, 7, 10, 0, 0, 1937, 1938, 7, 13, 0, 0, 1938, 1939, 7, 10, 0, 0, 1939, 1940, 7, 7, 0, 0, 1940, 1941, 7, 14, 0, 0, 1941, 1942, 7, 10, 0, 0, 1942, 1943, 7, 9, 0, 0, 1943, 184, 1, 0, 0, 0, 1944, 1945, 7, 13, 0, 0, 1945, 1946, 7, 10, 0, 0, 1946, 1947, 7, 16, 0, 0, 1947, 1948, 7, 22, 0, 0, 1948, 1949, 7, 13, 0, 0, 1949, 1950, 7, 7, 0, 0, 1950, 1951, 7, 17, 0, 0, 1951, 1952, 7, 7, 0, 0, 1952, 1953, 7, 23, 0, 0, 1953, 186, 1, 0, 0, 0, 1954, 1955, 7, 9, 0, 0, 1955, 1956, 7, 10, 0, 0, 1956, 1957, 7, 6, 0, 0, 1957, 1958, 7, 10, 0, 0, 1958, 1959, 7, 14, 0, 0, 1959, 1960, 7, 16, 0, 0, 1960, 188, 1, 0, 0, 0, 1961, 1962, 7, 9, 0, 0, 1962, 1963, 7, 10, 0, 0, 1963, 1964, 7, 9, 0, 0, 1964, 1965, 7, 9, 0, 0, 1965, 1966, 7, 17, 0, 0, 1966, 1967, 7, 19, 0, 0, 1967, 1968, 7, 7, 0, 0, 1968, 1969, 5, 95, 0, 0, 1969, 1970, 7, 22, 0, 0, 1970, 1971, 7, 9, 0, 0, 1971, 1972, 7, 10, 0, 0, 1972, 1973, 7, 13, 0, 0, 1973, 190, 1, 0, 0, 0, 1974, 1975, 7, 9, 0, 0, 1975, 1976, 7, 19, 0, 0, 1976, 1977, 7, 15, 0, 0, 1977, 1978, 7, 10, 0, 0, 1978, 192, 1, 0, 0, 0, 1979, 1980, 7, 9, 0, 0, 1980, 1981, 7, 8, 0, 0, 1981, 1982, 7, 15, 0, 0, 1982, 1983, 7, 15, 0, 0, 1983, 1984, 7, 10, 0, 0, 1984, 1985, 7, 16, 0, 0, 1985, 1986, 7, 13, 0, 0, 1986, 1987, 7, 17, 0, 0, 1987, 1988, 7, 14, 0, 0, 1988, 194, 1, 0, 0, 0, 1989, 1990, 7, 16, 0, 0, 1990, 1991, 7, 5, 0, 0, 1991, 1992, 7, 18, 0, 0, 1992, 1993, 7, 6, 0, 0, 1993, 1994, 7, 10, 0, 0, 1994, 196, 1, 0, 0, 0, 1995, 1996, 7, 16, 0, 0, 1996, 1997, 7, 20, 0, 0, 1997, 1998, 7, 10, 0, 0, 1998, 1999, 7, 7, 0, 0, 1999, 198, 1, 0, 0, 0, 2000, 2001, 7, 16, 0, 0, 2001, 2002, 7, 19, 0, 0, 2002, 200, 1, 0, 0, 0, 2003, 2004, 7, 16, 0, 0, 2004, 2005, 7, 19, 0, 0, 2005, 2006, 7, 24, 0, 0, 2006, 2007, 7, 17, 0, 0, 2007, 2008, 7, 14, 0, 0, 2008, 202, 1, 0, 0, 0, 2009, 2010, 7, 9, 0, 0, 2010, 2011, 7, 16, 0, 0, 2011, 2012, 7, 13, 0, 0, 2012, 2013, 7, 10, 0, 0, 2013, 2014, 7, 5, 0, 0, 2014, 2015, 7, 15, 0, 0, 2015, 204, 1, 0, 0, 0, 2016, 2017, 7, 16, 0, 0, 2017, 2018, 7, 13, 0, 0, 2018, 2019, 7, 5, 0, 0, 2019, 2020, 7, 17, 0, 0, 2020, 2021, 7, 6, 0, 0, 2021, 2022, 7, 17, 0, 0, 2022, 2023, 7, 7, 0, 0, 2023, 2024, 7, 23, 0, 0, 2024, 206, 1, 0, 0, 0, 2025, 2026, 7, 16, 0, 0, 2026, 2027, 7, 13, 0, 0, 2027, 2028, 7, 22, 0, 0, 2028, 2029, 7, 10, 0, 0, 2029, 208, 1, 0, 0, 0, 2030, 2031, 7, 22, 0, 0, 2031, 2032, 7, 7, 0, 0, 2032, 2033, 7, 17, 0, 0, 2033, 2034, 7, 19, 0, 0, 2034, 2035, 7, 7, 0, 0, 2035, 210, 1, 0, 0, 0, 2036, 2037, 7, 22, 0, 0, 2037, 2038, 7, 7, 0, 0, 2038, 2039, 7, 17, 0, 0, 2039, 2040, 7, 28, 0, 0, 2040, 2041, 7, 22, 0, 0, 2041, 2042, 7, 10, 0, 0, 2042, 212, 1, 0, 0, 0, 2043, 2044, 7, 22, 0, 0, 2044, 2045, 7, 9, 0, 0, 2045, 2046, 7, 10, 0, 0, 2046, 2047, 7, 13, 0, 0, 2047, 214, 1, 0, 0, 0, 2048, 2049, 7, 22, 0, 0, 2049, 2050, 7, 9, 0, 0, 2050, 2051, 7, 17, 0, 0, 2051, 2052, 7, 7, 0, 0, 2052, 2053, 7, 23, 0, 0, 2053, 216, 1, 0, 0, 0, 2054, 2055, 7, 27, 0, 0, 2055, 2056, 7, 5, 0, 0, 2056, 2057, 7, 13, 0, 0, 2057, 2058, 7, 17, 0, 0, 2058, 2059, 7, 5, 0, 0, 2059, 2060, 7, 12, 0, 0, 2060, 2061, 7, 17, 0, 0, 2061, 2062, 7, 14, 0, 0, 2062, 218, 1, 0, 0, 0, 2063, 2064, 7, 29, 0, 0, 2064, 2065, 7, 20, 0, 0, 2065, 2066, 7, 10, 0, 0, 2066, 2067, 7, 7, 0, 0, 2067, 220, 1, 0, 0, 0, 2068, 2069, 7, 29, 0, 0, 2069, 2070, 7, 20, 0, 0, 2070, 2071, 7, 10, 0, 0, 2071, 2072, 7, 13, 0, 0, 2072, 2073, 7, 10, 0, 0, 2073, 222, 1, 0, 0, 0, 2074, 2075, 7, 29, 0, 0, 2075, 2076, 7, 17, 0, 0, 2076, 2077, 7, 7, 0, 0, 2077, 2078, 7, 12, 0, 0, 2078, 2079, 7, 19, 0, 0, 2079, 2080, 7, 29, 0, 0, 2080, 224, 1, 0, 0, 0, 2081, 2082, 7, 29, 0, 0, 2082, 2083, 7, 17, 0, 0, 2083, 2084, 7, 16, 0, 0, 2084, 2085, 7, 20, 0, 0, 2085, 226, 1, 0, 0, 0, 2086, 2087, 7, 5, 0, 0, 2087, 2088, 7, 22, 0, 0, 2088, 2089, 7, 16, 0, 0, 2089, 2090, 7, 20, 0, 0, 2090, 2091, 7, 19, 0, 0, 2091, 2092, 7, 13, 0, 0, 2092, 2093, 7, 17, 0, 0, 2093, 2094, 7, 11, 0, 0, 2094, 2095, 7, 5, 0, 0, 2095, 2096, 7, 16, 0, 0, 2096, 2097, 7, 17, 0, 0, 2097, 2098, 7, 19, 0, 0, 2098, 2099, 7, 7, 0, 0, 2099, 228, 1, 0, 0, 0, 2100, 2101, 7, 18, 0, 0, 2101, 2102, 7, 17, 0, 0, 2102, 2103, 7, 7, 0, 0, 2103, 2104, 7, 5, 0, 0, 2104, 2105, 7, 13, 0, 0, 2105, 2106, 7, 8, 0, 0, 2106, 230, 1, 0, 0, 0, 2107, 2108, 7, 14, 0, 0, 2108, 2109, 7, 19, 0, 0, 2109, 2110, 7, 6, 0, 0, 2110, 2111, 7, 6, 0, 0, 2111, 2112, 7, 5, 0, 0, 2112, 2113, 7, 16, 0, 0, 2113, 2114, 7, 17, 0, 0, 2114, 2115, 7, 19, 0, 0, 2115, 2116, 7, 7, 0, 0, 2116, 232, 1, 0, 0, 0, 2117, 2118, 7, 14, 0, 0, 2118, 2119, 7, 19, 0, 0, 2119, 2120, 7, 7, 0, 0, 2120, 2121, 7, 14, 0, 0, 2121, 2122, 7, 22, 0, 0, 2122, 2123, 7, 13, 0, 0, 2123, 2124, 7, 13, 0, 0, 2124, 2125, 7, 10, 0, 0, 2125, 2126, 7, 7, 0, 0, 2126, 2127, 7, 16, 0, 0, 2127, 2128, 7, 6, 0, 0, 2128, 2129, 7, 8, 0, 0, 2129, 234, 1, 0, 0, 0, 2130, 2131, 7, 14, 0, 0, 2131, 2132, 7, 13, 0, 0, 2132, 2133, 7, 19, 0, 0, 2133, 2134, 7, 9, 0, 0, 2134, 2135, 7, 9, 0, 0, 2135, 236, 1, 0, 0, 0, 2136, 2137, 7, 14, 0, 0, 2137, 2138, 7, 22, 0, 0, 2138, 2139, 7, 13, 0, 0, 2139, 2140, 7, 13, 0, 0, 2140, 2141, 7, 10, 0, 0, 2141, 2142, 7, 7, 0, 0, 2142, 2143, 7, 16, 0, 0, 2143, 2144, 5, 95, 0, 0, 2144, 2145, 7, 9, 0, 0, 2145, 2146, 7, 14, 0, 0, 2146, 2147, 7, 20, 0, 0, 2147, 2148, 7, 10, 0, 0, 2148, 2149, 7, 15, 0, 0, 2149, 2150, 7, 5, 0, 0, 2150, 238, 1, 0, 0, 0, 2151, 2152, 7, 25, 0, 0, 2152, 2153, 7, 13, 0, 0, 2153, 2154, 7, 10, 0, 0, 2154, 2155, 7, 10, 0, 0, 2155, 2156, 7, 11, 0, 0, 2156, 2157, 7, 10, 0, 0, 2157, 240, 1, 0, 0, 0, 2158, 2159, 7, 25, 0, 0, 2159, 2160, 7, 22, 0, 0, 2160, 2161, 7, 6, 0, 0, 2161, 2162, 7, 6, 0, 0, 2162, 242, 1, 0, 0, 0, 2163, 2164, 7, 17, 0, 0, 2164, 2165, 7, 6, 0, 0, 2165, 2166, 7, 17, 0, 0, 2166, 2167, 7, 21, 0, 0, 2167, 2168, 7, 10, 0, 0, 2168, 244, 1, 0, 0, 0, 2169, 2170, 7, 17, 0, 0, 2170, 2171, 7, 7, 0, 0, 2171, 2172, 7, 7, 0, 0, 2172, 2173, 7, 10, 0, 0, 2173, 2174, 7, 13, 0, 0, 2174, 246, 1, 0, 0, 0, 2175, 2176, 7, 17, 0, 0, 2176, 2177, 7, 9, 0, 0, 2177, 248, 1, 0, 0, 0, 2178, 2179, 7, 17, 0, 0, 2179, 2180, 7, 9, 0, 0, 2180, 2181, 7, 7, 0, 0, 2181, 2182, 7, 22, 0, 0, 2182, 2183, 7, 6, 0, 0, 2183, 2184, 7, 6, 0, 0, 2184, 250, 1, 0, 0, 0, 2185, 2186, 7, 30, 0, 0, 2186, 2187, 7, 19, 0, 0, 2187, 2188, 7, 17, 0, 0, 2188, 2189, 7, 7, 0, 0, 2189, 252, 1, 0, 0, 0, 2190, 2191, 7, 6, 0, 0, 2191, 2192, 7, 10, 0, 0, 2192, 2193, 7, 25, 0, 0, 2193, 2194, 7, 16, 0, 0, 2194, 254, 1, 0, 0, 0, 2195, 2196, 7, 6, 0, 0, 2196, 2197, 7, 17, 0, 0, 2197, 2198, 7, 21, 0, 0, 2198, 2199, 7, 10, 0, 0, 2199, 256, 1, 0, 0, 0, 2200, 2201, 7, 7, 0, 0, 2201, 2202, 7, 5, 0, 0, 2202, 2203, 7, 16, 0, 0, 2203, 2204, 7, 22, 0, 0, 2204, 2205, 7, 13, 0, 0, 2205, 2206, 7, 5, 0, 0, 2206, 2207, 7, 6, 0, 0, 2207, 258, 1, 0, 0, 0, 2208, 2209, 7, 7, 0, 0, 2209, 2210, 7, 19, 0, 0, 2210, 2211, 7, 16, 0, 0, 2211, 2212, 7, 7, 0, 0, 2212, 2213, 7, 22, 0, 0, 2213, 2214, 7, 6, 0, 0, 2214, 2215, 7, 6, 0, 0, 2215, 260, 1, 0, 0, 0, 2216, 2217, 7, 19, 0, 0, 2217, 2218, 7, 22, 0, 0, 2218, 2219, 7, 16, 0, 0, 2219, 2220, 7, 10, 0, 0, 2220, 2221, 7, 13, 0, 0, 2221, 262, 1, 0, 0, 0, 2222, 2223, 7, 19, 0, 0, 2223, 2224, 7, 27, 0, 0, 2224, 2225, 7, 10, 0, 0, 2225, 2226, 7, 13, 0, 0, 2226, 264, 1, 0, 0, 0, 2227, 2228, 7, 19, 0, 0, 2228, 2229, 7, 27, 0, 0, 2229, 2230, 7, 10, 0, 0, 2230, 2231, 7, 13, 0, 0, 2231, 2232, 7, 6, 0, 0, 2232, 2233, 7, 5, 0, 0, 2233, 2234, 7, 24, 0, 0, 2234, 2235, 7, 9, 0, 0, 2235, 266, 1, 0, 0, 0, 2236, 2237, 7, 13, 0, 0, 2237, 2238, 7, 17, 0, 0, 2238, 2239, 7, 23, 0, 0, 2239, 2240, 7, 20, 0, 0, 2240, 2241, 7, 16, 0, 0, 2241, 268, 1, 0, 0, 0, 2242, 2243, 7, 9, 0, 0, 2243, 2244, 7, 17, 0, 0, 2244, 2245, 7, 15, 0, 0, 2245, 2246, 7, 17, 0, 0, 2246, 2247, 7, 6, 0, 0, 2247, 2248, 7, 5, 0, 0, 2248, 2249, 7, 13, 0, 0, 2249, 270, 1, 0, 0, 0, 2250, 2251, 7, 27, 0, 0, 2251, 2252, 7, 10, 0, 0, 2252, 2253, 7, 13, 0, 0, 2253, 2254, 7, 18, 0, 0, 2254, 2255, 7, 19, 0, 0, 2255, 2256, 7, 9, 0, 0, 2256, 2257, 7, 10, 0, 0, 2257, 272, 1, 0, 0, 0, 2258, 2259, 7, 5, 0, 0, 2259, 2260, 7, 18, 0, 0, 2260, 2261, 7, 19, 0, 0, 2261, 2262, 7, 13, 0, 0, 2262, 2263, 7, 16, 0, 0, 2263, 274, 1, 0, 0, 0, 2264, 2265, 7, 5, 0, 0, 2265, 2266, 7, 18, 0, 0, 2266, 2267, 7, 9, 0, 0, 2267, 2268, 7, 19, 0, 0, 2268, 2269, 7, 6, 0, 0, 2269, 2270, 7, 22, 0, 0, 2270, 2271, 7, 16, 0, 0, 2271, 2272, 7, 10, 0, 0, 2272, 276, 1, 0, 0, 0, 2273, 2274, 7, 5, 0, 0, 2274, 2275, 7, 14, 0, 0, 2275, 2276, 7, 14, 0, 0, 2276, 2277, 7, 10, 0, 0, 2277, 2278, 7, 9, 0, 0, 2278, 2279, 7, 9, 0, 0, 2279, 278, 1, 0, 0, 0, 2280, 2281, 7, 5, 0, 0, 2281, 2282, 7, 14, 0, 0, 2282, 2283, 7, 16, 0, 0, 2283, 2284, 7, 17, 0, 0, 2284, 2285, 7, 19, 0, 0, 2285, 2286, 7, 7, 0, 0, 2286, 280, 1, 0, 0, 0, 2287, 2288, 7, 5, 0, 0, 2288, 2289, 7, 12, 0, 0, 2289, 2290, 7, 12, 0, 0, 2290, 282, 1, 0, 0, 0, 2291, 2292, 7, 5, 0, 0, 2292, 2293, 7, 12, 0, 0, 2293, 2294, 7, 15, 0, 0, 2294, 2295, 7, 17, 0, 0, 2295, 2296, 7, 7, 0, 0, 2296, 284, 1, 0, 0, 0, 2297, 2298, 7, 5, 0, 0, 2298, 2299, 7, 25, 0, 0, 2299, 2300, 7, 16, 0, 0, 2300, 2301, 7, 10, 0, 0, 2301, 2302, 7, 13, 0, 0, 2302, 286, 1, 0, 0, 0, 2303, 2304, 7, 5, 0, 0, 2304, 2305, 7, 23, 0, 0, 2305, 2306, 7, 23, 0, 0, 2306, 2307, 7, 13, 0, 0, 2307, 2308, 7, 10, 0, 0, 2308, 2309, 7, 23, 0, 0, 2309, 2310, 7, 5, 0, 0, 2310, 2311, 7, 16, 0, 0, 2311, 2312, 7, 10, 0, 0, 2312, 288, 1, 0, 0, 0, 2313, 2314, 7, 5, 0, 0, 2314, 2315, 7, 6, 0, 0, 2315, 2316, 7, 9, 0, 0, 2316, 2317, 7, 19, 0, 0, 2317, 290, 1, 0, 0, 0, 2318, 2319, 7, 5, 0, 0, 2319, 2320, 7, 6, 0, 0, 2320, 2321, 7, 16, 0, 0, 2321, 2322, 7, 10, 0, 0, 2322, 2323, 7, 13, 0, 0, 2323, 292, 1, 0, 0, 0, 2324, 2325, 7, 5, 0, 0, 2325, 2326, 7, 6, 0, 0, 2326, 2327, 7, 29, 0, 0, 2327, 2328, 7, 5, 0, 0, 2328, 2329, 7, 8, 0, 0, 2329, 2330, 7, 9, 0, 0, 2330, 294, 1, 0, 0, 0, 2331, 2332, 7, 5, 0, 0, 2332, 2333, 7, 9, 0, 0, 2333, 2334, 7, 9, 0, 0, 2334, 2335, 7, 10, 0, 0, 2335, 2336, 7, 13, 0, 0, 2336, 2337, 7, 16, 0, 0, 2337, 2338, 7, 17, 0, 0, 2338, 2339, 7, 19, 0, 0, 2339, 2340, 7, 7, 0, 0, 2340, 296, 1, 0, 0, 0, 2341, 2342, 7, 5, 0, 0, 2342, 2343, 7, 9, 0, 0, 2343, 2344, 7, 9, 0, 0, 2344, 2345, 7, 17, 0, 0, 2345, 2346, 7, 23, 0, 0, 2346, 2347, 7, 7, 0, 0, 2347, 2348, 7, 15, 0, 0, 2348, 2349, 7, 10, 0, 0, 2349, 2350, 7, 7, 0, 0, 2350, 2351, 7, 16, 0, 0, 2351, 298, 1, 0, 0, 0, 2352, 2353, 7, 5, 0, 0, 2353, 2354, 7, 16, 0, 0, 2354, 300, 1, 0, 0, 0, 2355, 2356, 7, 5, 0, 0, 2356, 2357, 7, 16, 0, 0, 2357, 2358, 7, 16, 0, 0, 2358, 2359, 7, 13, 0, 0, 2359, 2360, 7, 17, 0, 0, 2360, 2361, 7, 18, 0, 0, 2361, 2362, 7, 22, 0, 0, 2362, 2363, 7, 16, 0, 0, 2363, 2364, 7, 10, 0, 0, 2364, 302, 1, 0, 0, 0, 2365, 2366, 7, 18, 0, 0, 2366, 2367, 7, 5, 0, 0, 2367, 2368, 7, 14, 0, 0, 2368, 2369, 7, 21, 0, 0, 2369, 2370, 7, 29, 0, 0, 2370, 2371, 7, 5, 0, 0, 2371, 2372, 7, 13, 0, 0, 2372, 2373, 7, 12, 0, 0, 2373, 304, 1, 0, 0, 0, 2374, 2375, 7, 18, 0, 0, 2375, 2376, 7, 10, 0, 0, 2376, 2377, 7, 25, 0, 0, 2377, 2378, 7, 19, 0, 0, 2378, 2379, 7, 13, 0, 0, 2379, 2380, 7, 10, 0, 0, 2380, 306, 1, 0, 0, 0, 2381, 2382, 7, 18, 0, 0, 2382, 2383, 7, 10, 0, 0, 2383, 2384, 7, 23, 0, 0, 2384, 2385, 7, 17, 0, 0, 2385, 2386, 7, 7, 0, 0, 2386, 308, 1, 0, 0, 0, 2387, 2388, 7, 18, 0, 0, 2388, 2389, 7, 8, 0, 0, 2389, 310, 1, 0, 0, 0, 2390, 2391, 7, 14, 0, 0, 2391, 2392, 7, 5, 0, 0, 2392, 2393, 7, 14, 0, 0, 2393, 2394, 7, 20, 0, 0, 2394, 2395, 7, 10, 0, 0, 2395, 312, 1, 0, 0, 0, 2396, 2397, 7, 14, 0, 0, 2397, 2398, 7, 5, 0, 0, 2398, 2399, 7, 6, 0, 0, 2399, 2400, 7, 6, 0, 0, 2400, 2401, 7, 10, 0, 0, 2401, 2402, 7, 12, 0, 0, 2402, 314, 1, 0, 0, 0, 2403, 2404, 7, 14, 0, 0, 2404, 2405, 7, 5, 0, 0, 2405, 2406, 7, 9, 0, 0, 2406, 2407, 7, 14, 0, 0, 2407, 2408, 7, 5, 0, 0, 2408, 2409, 7, 12, 0, 0, 2409, 2410, 7, 10, 0, 0, 2410, 316, 1, 0, 0, 0, 2411, 2412, 7, 14, 0, 0, 2412, 2413, 7, 5, 0, 0, 2413, 2414, 7, 9, 0, 0, 2414, 2415, 7, 14, 0, 0, 2415, 2416, 7, 5, 0, 0, 2416, 2417, 7, 12, 0, 0, 2417, 2418, 7, 10, 0, 0, 2418, 2419, 7, 12, 0, 0, 2419, 318, 1, 0, 0, 0, 2420, 2421, 7, 14, 0, 0, 2421, 2422, 7, 5, 0, 0, 2422, 2423, 7, 16, 0, 0, 2423, 2424, 7, 5, 0, 0, 2424, 2425, 7, 6, 0, 0, 2425, 2426, 7, 19, 0, 0, 2426, 2427, 7, 23, 0, 0, 2427, 320, 1, 0, 0, 0, 2428, 2429, 7, 14, 0, 0, 2429, 2430, 7, 20, 0, 0, 2430, 2431, 7, 5, 0, 0, 2431, 2432, 7, 17, 0, 0, 2432, 2433, 7, 7, 0, 0, 2433, 322, 1, 0, 0, 0, 2434, 2435, 7, 14, 0, 0, 2435, 2436, 7, 20, 0, 0, 2436, 2437, 7, 5, 0, 0, 2437, 2438, 7, 13, 0, 0, 2438, 2439, 7, 5, 0, 0, 2439, 2440, 7, 14, 0, 0, 2440, 2441, 7, 16, 0, 0, 2441, 2442, 7, 10, 0, 0, 2442, 2443, 7, 13, 0, 0, 2443, 2444, 7, 17, 0, 0, 2444, 2445, 7, 9, 0, 0, 2445, 2446, 7, 16, 0, 0, 2446, 2447, 7, 17, 0, 0, 2447, 2448, 7, 14, 0, 0, 2448, 2449, 7, 9, 0, 0, 2449, 324, 1, 0, 0, 0, 2450, 2451, 7, 14, 0, 0, 2451, 2452, 7, 20, 0, 0, 2452, 2453, 7, 10, 0, 0, 2453, 2454, 7, 14, 0, 0, 2454, 2455, 7, 21, 0, 0, 2455, 2456, 7, 24, 0, 0, 2456, 2457, 7, 19, 0, 0, 2457, 2458, 7, 17, 0, 0, 2458, 2459, 7, 7, 0, 0, 2459, 2460, 7, 16, 0, 0, 2460, 326, 1, 0, 0, 0, 2461, 2462, 7, 14, 0, 0, 2462, 2463, 7, 6, 0, 0, 2463, 2464, 7, 5, 0, 0, 2464, 2465, 7, 9, 0, 0, 2465, 2466, 7, 9, 0, 0, 2466, 328, 1, 0, 0, 0, 2467, 2468, 7, 14, 0, 0, 2468, 2469, 7, 6, 0, 0, 2469, 2470, 7, 19, 0, 0, 2470, 2471, 7, 9, 0, 0, 2471, 2472, 7, 10, 0, 0, 2472, 330, 1, 0, 0, 0, 2473, 2474, 7, 14, 0, 0, 2474, 2475, 7, 6, 0, 0, 2475, 2476, 7, 22, 0, 0, 2476, 2477, 7, 9, 0, 0, 2477, 2478, 7, 16, 0, 0, 2478, 2479, 7, 10, 0, 0, 2479, 2480, 7, 13, 0, 0, 2480, 332, 1, 0, 0, 0, 2481, 2482, 7, 14, 0, 0, 2482, 2483, 7, 19, 0, 0, 2483, 2484, 7, 15, 0, 0, 2484, 2485, 7, 15, 0, 0, 2485, 2486, 7, 10, 0, 0, 2486, 2487, 7, 7, 0, 0, 2487, 2488, 7, 16, 0, 0, 2488, 334, 1, 0, 0, 0, 2489, 2490, 7, 14, 0, 0, 2490, 2491, 7, 19, 0, 0, 2491, 2492, 7, 15, 0, 0, 2492, 2493, 7, 15, 0, 0, 2493, 2494, 7, 10, 0, 0, 2494, 2495, 7, 7, 0, 0, 2495, 2496, 7, 16, 0, 0, 2496, 2497, 7, 9, 0, 0, 2497, 336, 1, 0, 0, 0, 2498, 2499, 7, 14, 0, 0, 2499, 2500, 7, 19, 0, 0, 2500, 2501, 7, 15, 0, 0, 2501, 2502, 7, 15, 0, 0, 2502, 2503, 7, 17, 0, 0, 2503, 2504, 7, 16, 0, 0, 2504, 338, 1, 0, 0, 0, 2505, 2506, 7, 14, 0, 0, 2506, 2507, 7, 19, 0, 0, 2507, 2508, 7, 15, 0, 0, 2508, 2509, 7, 15, 0, 0, 2509, 2510, 7, 17, 0, 0, 2510, 2511, 7, 16, 0, 0, 2511, 2512, 7, 16, 0, 0, 2512, 2513, 7, 10, 0, 0, 2513, 2514, 7, 12, 0, 0, 2514, 340, 1, 0, 0, 0, 2515, 2516, 7, 14, 0, 0, 2516, 2517, 7, 19, 0, 0, 2517, 2518, 7, 7, 0, 0, 2518, 2519, 7, 25, 0, 0, 2519, 2520, 7, 17, 0, 0, 2520, 2521, 7, 23, 0, 0, 2521, 2522, 7, 22, 0, 0, 2522, 2523, 7, 13, 0, 0, 2523, 2524, 7, 5, 0, 0, 2524, 2525, 7, 16, 0, 0, 2525, 2526, 7, 17, 0, 0, 2526, 2527, 7, 19, 0, 0, 2527, 2528, 7, 7, 0, 0, 2528, 342, 1, 0, 0, 0, 2529, 2530, 7, 14, 0, 0, 2530, 2531, 7, 19, 0, 0, 2531, 2532, 7, 7, 0, 0, 2532, 2533, 7, 7, 0, 0, 2533, 2534, 7, 10, 0, 0, 2534, 2535, 7, 14, 0, 0, 2535, 2536, 7, 16, 0, 0, 2536, 2537, 7, 17, 0, 0, 2537, 2538, 7, 19, 0, 0, 2538, 2539, 7, 7, 0, 0, 2539, 344, 1, 0, 0, 0, 2540, 2541, 7, 14, 0, 0, 2541, 2542, 7, 19, 0, 0, 2542, 2543, 7, 7, 0, 0, 2543, 2544, 7, 9, 0, 0, 2544, 2545, 7, 16, 0, 0, 2545, 2546, 7, 13, 0, 0, 2546, 2547, 7, 5, 0, 0, 2547, 2548, 7, 17, 0, 0, 2548, 2549, 7, 7, 0, 0, 2549, 2550, 7, 16, 0, 0, 2550, 2551, 7, 9, 0, 0, 2551, 346, 1, 0, 0, 0, 2552, 2553, 7, 14, 0, 0, 2553, 2554, 7, 19, 0, 0, 2554, 2555, 7, 7, 0, 0, 2555, 2556, 7, 16, 0, 0, 2556, 2557, 7, 10, 0, 0, 2557, 2558, 7, 7, 0, 0, 2558, 2559, 7, 16, 0, 0, 2559, 348, 1, 0, 0, 0, 2560, 2561, 7, 14, 0, 0, 2561, 2562, 7, 19, 0, 0, 2562, 2563, 7, 7, 0, 0, 2563, 2564, 7, 16, 0, 0, 2564, 2565, 7, 17, 0, 0, 2565, 2566, 7, 7, 0, 0, 2566, 2567, 7, 22, 0, 0, 2567, 2568, 7, 10, 0, 0, 2568, 350, 1, 0, 0, 0, 2569, 2570, 7, 14, 0, 0, 2570, 2571, 7, 19, 0, 0, 2571, 2572, 7, 7, 0, 0, 2572, 2573, 7, 27, 0, 0, 2573, 2574, 7, 10, 0, 0, 2574, 2575, 7, 13, 0, 0, 2575, 2576, 7, 9, 0, 0, 2576, 2577, 7, 17, 0, 0, 2577, 2578, 7, 19, 0, 0, 2578, 2579, 7, 7, 0, 0, 2579, 352, 1, 0, 0, 0, 2580, 2581, 7, 14, 0, 0, 2581, 2582, 7, 19, 0, 0, 2582, 2583, 7, 24, 0, 0, 2583, 2584, 7, 8, 0, 0, 2584, 354, 1, 0, 0, 0, 2585, 2586, 7, 14, 0, 0, 2586, 2587, 7, 19, 0, 0, 2587, 2588, 7, 9, 0, 0, 2588, 2589, 7, 16, 0, 0, 2589, 356, 1, 0, 0, 0, 2590, 2591, 7, 14, 0, 0, 2591, 2592, 7, 9, 0, 0, 2592, 2593, 7, 27, 0, 0, 2593, 358, 1, 0, 0, 0, 2594, 2595, 7, 14, 0, 0, 2595, 2596, 7, 22, 0, 0, 2596, 2597, 7, 13, 0, 0, 2597, 2598, 7, 9, 0, 0, 2598, 2599, 7, 19, 0, 0, 2599, 2600, 7, 13, 0, 0, 2600, 360, 1, 0, 0, 0, 2601, 2602, 7, 14, 0, 0, 2602, 2603, 7, 8, 0, 0, 2603, 2604, 7, 14, 0, 0, 2604, 2605, 7, 6, 0, 0, 2605, 2606, 7, 10, 0, 0, 2606, 362, 1, 0, 0, 0, 2607, 2608, 7, 12, 0, 0, 2608, 2609, 7, 5, 0, 0, 2609, 2610, 7, 16, 0, 0, 2610, 2611, 7, 5, 0, 0, 2611, 364, 1, 0, 0, 0, 2612, 2613, 7, 12, 0, 0, 2613, 2614, 7, 5, 0, 0, 2614, 2615, 7, 16, 0, 0, 2615, 2616, 7, 5, 0, 0, 2616, 2617, 7, 18, 0, 0, 2617, 2618, 7, 5, 0, 0, 2618, 2619, 7, 9, 0, 0, 2619, 2620, 7, 10, 0, 0, 2620, 366, 1, 0, 0, 0, 2621, 2622, 7, 12, 0, 0, 2622, 2623, 7, 5, 0, 0, 2623, 2624, 7, 8, 0, 0, 2624, 368, 1, 0, 0, 0, 2625, 2626, 7, 12, 0, 0, 2626, 2627, 7, 10, 0, 0, 2627, 2628, 7, 5, 0, 0, 2628, 2629, 7, 6, 0, 0, 2629, 2630, 7, 6, 0, 0, 2630, 2631, 7, 19, 0, 0, 2631, 2632, 7, 14, 0, 0, 2632, 2633, 7, 5, 0, 0, 2633, 2634, 7, 16, 0, 0, 2634, 2635, 7, 10, 0, 0, 2635, 370, 1, 0, 0, 0, 2636, 2637, 7, 12, 0, 0, 2637, 2638, 7, 10, 0, 0, 2638, 2639, 7, 14, 0, 0, 2639, 2640, 7, 6, 0, 0, 2640, 2641, 7, 5, 0, 0, 2641, 2642, 7, 13, 0, 0, 2642, 2643, 7, 10, 0, 0, 2643, 372, 1, 0, 0, 0, 2644, 2645, 7, 12, 0, 0, 2645, 2646, 7, 10, 0, 0, 2646, 2647, 7, 25, 0, 0, 2647, 2648, 7, 5, 0, 0, 2648, 2649, 7, 22, 0, 0, 2649, 2650, 7, 6, 0, 0, 2650, 2651, 7, 16, 0, 0, 2651, 2652, 7, 9, 0, 0, 2652, 374, 1, 0, 0, 0, 2653, 2654, 7, 12, 0, 0, 2654, 2655, 7, 10, 0, 0, 2655, 2656, 7, 25, 0, 0, 2656, 2657, 7, 10, 0, 0, 2657, 2658, 7, 13, 0, 0, 2658, 2659, 7, 13, 0, 0, 2659, 2660, 7, 10, 0, 0, 2660, 2661, 7, 12, 0, 0, 2661, 376, 1, 0, 0, 0, 2662, 2663, 7, 12, 0, 0, 2663, 2664, 7, 10, 0, 0, 2664, 2665, 7, 25, 0, 0, 2665, 2666, 7, 17, 0, 0, 2666, 2667, 7, 7, 0, 0, 2667, 2668, 7, 10, 0, 0, 2668, 2669, 7, 13, 0, 0, 2669, 378, 1, 0, 0, 0, 2670, 2671, 7, 12, 0, 0, 2671, 2672, 7, 10, 0, 0, 2672, 2673, 7, 6, 0, 0, 2673, 2674, 7, 10, 0, 0, 2674, 2675, 7, 16, 0, 0, 2675, 2676, 7, 10, 0, 0, 2676, 380, 1, 0, 0, 0, 2677, 2678, 7, 12, 0, 0, 2678, 2679, 7, 10, 0, 0, 2679, 2680, 7, 6, 0, 0, 2680, 2681, 7, 17, 0, 0, 2681, 2682, 7, 15, 0, 0, 2682, 2683, 7, 17, 0, 0, 2683, 2684, 7, 16, 0, 0, 2684, 2685, 7, 10, 0, 0, 2685, 2686, 7, 13, 0, 0, 2686, 382, 1, 0, 0, 0, 2687, 2688, 7, 12, 0, 0, 2688, 2689, 7, 10, 0, 0, 2689, 2690, 7, 6, 0, 0, 2690, 2691, 7, 17, 0, 0, 2691, 2692, 7, 15, 0, 0, 2692, 2693, 7, 17, 0, 0, 2693, 2694, 7, 16, 0, 0, 2694, 2695, 7, 10, 0, 0, 2695, 2696, 7, 13, 0, 0, 2696, 2697, 7, 9, 0, 0, 2697, 384, 1, 0, 0, 0, 2698, 2699, 7, 12, 0, 0, 2699, 2700, 7, 17, 0, 0, 2700, 2701, 7, 14, 0, 0, 2701, 2702, 7, 16, 0, 0, 2702, 2703, 7, 17, 0, 0, 2703, 2704, 7, 19, 0, 0, 2704, 2705, 7, 7, 0, 0, 2705, 2706, 7, 5, 0, 0, 2706, 2707, 7, 13, 0, 0, 2707, 2708, 7, 8, 0, 0, 2708, 386, 1, 0, 0, 0, 2709, 2710, 7, 12, 0, 0, 2710, 2711, 7, 17, 0, 0, 2711, 2712, 7, 9, 0, 0, 2712, 2713, 7, 5, 0, 0, 2713, 2714, 7, 18, 0, 0, 2714, 2715, 7, 6, 0, 0, 2715, 2716, 7, 10, 0, 0, 2716, 388, 1, 0, 0, 0, 2717, 2718, 7, 12, 0, 0, 2718, 2719, 7, 17, 0, 0, 2719, 2720, 7, 9, 0, 0, 2720, 2721, 7, 14, 0, 0, 2721, 2722, 7, 5, 0, 0, 2722, 2723, 7, 13, 0, 0, 2723, 2724, 7, 12, 0, 0, 2724, 390, 1, 0, 0, 0, 2725, 2726, 7, 12, 0, 0, 2726, 2727, 7, 19, 0, 0, 2727, 2728, 7, 14, 0, 0, 2728, 2729, 7, 22, 0, 0, 2729, 2730, 7, 15, 0, 0, 2730, 2731, 7, 10, 0, 0, 2731, 2732, 7, 7, 0, 0, 2732, 2733, 7, 16, 0, 0, 2733, 392, 1, 0, 0, 0, 2734, 2735, 7, 12, 0, 0, 2735, 2736, 7, 19, 0, 0, 2736, 2737, 7, 15, 0, 0, 2737, 2738, 7, 5, 0, 0, 2738, 2739, 7, 17, 0, 0, 2739, 2740, 7, 7, 0, 0, 2740, 394, 1, 0, 0, 0, 2741, 2742, 7, 12, 0, 0, 2742, 2743, 7, 19, 0, 0, 2743, 2744, 7, 22, 0, 0, 2744, 2745, 7, 18, 0, 0, 2745, 2746, 7, 6, 0, 0, 2746, 2747, 7, 10, 0, 0, 2747, 396, 1, 0, 0, 0, 2748, 2749, 7, 12, 0, 0, 2749, 2750, 7, 13, 0, 0, 2750, 2751, 7, 19, 0, 0, 2751, 2752, 7, 24, 0, 0, 2752, 398, 1, 0, 0, 0, 2753, 2754, 7, 10, 0, 0, 2754, 2755, 7, 5, 0, 0, 2755, 2756, 7, 14, 0, 0, 2756, 2757, 7, 20, 0, 0, 2757, 400, 1, 0, 0, 0, 2758, 2759, 7, 10, 0, 0, 2759, 2760, 7, 7, 0, 0, 2760, 2761, 7, 5, 0, 0, 2761, 2762, 7, 18, 0, 0, 2762, 2763, 7, 6, 0, 0, 2763, 2764, 7, 10, 0, 0, 2764, 402, 1, 0, 0, 0, 2765, 2766, 7, 10, 0, 0, 2766, 2767, 7, 7, 0, 0, 2767, 2768, 7, 14, 0, 0, 2768, 2769, 7, 19, 0, 0, 2769, 2770, 7, 12, 0, 0, 2770, 2771, 7, 17, 0, 0, 2771, 2772, 7, 7, 0, 0, 2772, 2773, 7, 23, 0, 0, 2773, 404, 1, 0, 0, 0, 2774, 2775, 7, 10, 0, 0, 2775, 2776, 7, 7, 0, 0, 2776, 2777, 7, 14, 0, 0, 2777, 2778, 7, 13, 0, 0, 2778, 2779, 7, 8, 0, 0, 2779, 2780, 7, 24, 0, 0, 2780, 2781, 7, 16, 0, 0, 2781, 2782, 7, 10, 0, 0, 2782, 2783, 7, 12, 0, 0, 2783, 406, 1, 0, 0, 0, 2784, 2785, 7, 10, 0, 0, 2785, 2786, 7, 7, 0, 0, 2786, 2787, 7, 22, 0, 0, 2787, 2788, 7, 15, 0, 0, 2788, 408, 1, 0, 0, 0, 2789, 2790, 7, 10, 0, 0, 2790, 2791, 7, 9, 0, 0, 2791, 2792, 7, 14, 0, 0, 2792, 2793, 7, 5, 0, 0, 2793, 2794, 7, 24, 0, 0, 2794, 2795, 7, 10, 0, 0, 2795, 410, 1, 0, 0, 0, 2796, 2797, 7, 10, 0, 0, 2797, 2798, 7, 27, 0, 0, 2798, 2799, 7, 10, 0, 0, 2799, 2800, 7, 7, 0, 0, 2800, 2801, 7, 16, 0, 0, 2801, 412, 1, 0, 0, 0, 2802, 2803, 7, 10, 0, 0, 2803, 2804, 7, 26, 0, 0, 2804, 2805, 7, 14, 0, 0, 2805, 2806, 7, 6, 0, 0, 2806, 2807, 7, 22, 0, 0, 2807, 2808, 7, 12, 0, 0, 2808, 2809, 7, 10, 0, 0, 2809, 414, 1, 0, 0, 0, 2810, 2811, 7, 10, 0, 0, 2811, 2812, 7, 26, 0, 0, 2812, 2813, 7, 14, 0, 0, 2813, 2814, 7, 6, 0, 0, 2814, 2815, 7, 22, 0, 0, 2815, 2816, 7, 12, 0, 0, 2816, 2817, 7, 17, 0, 0, 2817, 2818, 7, 7, 0, 0, 2818, 2819, 7, 23, 0, 0, 2819, 416, 1, 0, 0, 0, 2820, 2821, 7, 10, 0, 0, 2821, 2822, 7, 26, 0, 0, 2822, 2823, 7, 14, 0, 0, 2823, 2824, 7, 6, 0, 0, 2824, 2825, 7, 22, 0, 0, 2825, 2826, 7, 9, 0, 0, 2826, 2827, 7, 17, 0, 0, 2827, 2828, 7, 27, 0, 0, 2828, 2829, 7, 10, 0, 0, 2829, 418, 1, 0, 0, 0, 2830, 2831, 7, 10, 0, 0, 2831, 2832, 7, 26, 0, 0, 2832, 2833, 7, 10, 0, 0, 2833, 2834, 7, 14, 0, 0, 2834, 2835, 7, 22, 0, 0, 2835, 2836, 7, 16, 0, 0, 2836, 2837, 7, 10, 0, 0, 2837, 420, 1, 0, 0, 0, 2838, 2839, 7, 10, 0, 0, 2839, 2840, 7, 26, 0, 0, 2840, 2841, 7, 24, 0, 0, 2841, 2842, 7, 6, 0, 0, 2842, 2843, 7, 5, 0, 0, 2843, 2844, 7, 17, 0, 0, 2844, 2845, 7, 7, 0, 0, 2845, 422, 1, 0, 0, 0, 2846, 2847, 7, 10, 0, 0, 2847, 2848, 7, 26, 0, 0, 2848, 2849, 7, 16, 0, 0, 2849, 2850, 7, 10, 0, 0, 2850, 2851, 7, 7, 0, 0, 2851, 2852, 7, 9, 0, 0, 2852, 2853, 7, 17, 0, 0, 2853, 2854, 7, 19, 0, 0, 2854, 2855, 7, 7, 0, 0, 2855, 424, 1, 0, 0, 0, 2856, 2857, 7, 10, 0, 0, 2857, 2858, 7, 26, 0, 0, 2858, 2859, 7, 16, 0, 0, 2859, 2860, 7, 10, 0, 0, 2860, 2861, 7, 13, 0, 0, 2861, 2862, 7, 7, 0, 0, 2862, 2863, 7, 5, 0, 0, 2863, 2864, 7, 6, 0, 0, 2864, 426, 1, 0, 0, 0, 2865, 2866, 7, 25, 0, 0, 2866, 2867, 7, 5, 0, 0, 2867, 2868, 7, 15, 0, 0, 2868, 2869, 7, 17, 0, 0, 2869, 2870, 7, 6, 0, 0, 2870, 2871, 7, 8, 0, 0, 2871, 428, 1, 0, 0, 0, 2872, 2873, 7, 25, 0, 0, 2873, 2874, 7, 17, 0, 0, 2874, 2875, 7, 13, 0, 0, 2875, 2876, 7, 9, 0, 0, 2876, 2877, 7, 16, 0, 0, 2877, 430, 1, 0, 0, 0, 2878, 2879, 7, 25, 0, 0, 2879, 2880, 7, 19, 0, 0, 2880, 2881, 7, 6, 0, 0, 2881, 2882, 7, 6, 0, 0, 2882, 2883, 7, 19, 0, 0, 2883, 2884, 7, 29, 0, 0, 2884, 2885, 7, 17, 0, 0, 2885, 2886, 7, 7, 0, 0, 2886, 2887, 7, 23, 0, 0, 2887, 432, 1, 0, 0, 0, 2888, 2889, 7, 25, 0, 0, 2889, 2890, 7, 19, 0, 0, 2890, 2891, 7, 13, 0, 0, 2891, 2892, 7, 14, 0, 0, 2892, 2893, 7, 10, 0, 0, 2893, 434, 1, 0, 0, 0, 2894, 2895, 7, 25, 0, 0, 2895, 2896, 7, 19, 0, 0, 2896, 2897, 7, 13, 0, 0, 2897, 2898, 7, 29, 0, 0, 2898, 2899, 7, 5, 0, 0, 2899, 2900, 7, 13, 0, 0, 2900, 2901, 7, 12, 0, 0, 2901, 436, 1, 0, 0, 0, 2902, 2903, 7, 25, 0, 0, 2903, 2904, 7, 22, 0, 0, 2904, 2905, 7, 7, 0, 0, 2905, 2906, 7, 14, 0, 0, 2906, 2907, 7, 16, 0, 0, 2907, 2908, 7, 17, 0, 0, 2908, 2909, 7, 19, 0, 0, 2909, 2910, 7, 7, 0, 0, 2910, 438, 1, 0, 0, 0, 2911, 2912, 7, 25, 0, 0, 2912, 2913, 7, 22, 0, 0, 2913, 2914, 7, 7, 0, 0, 2914, 2915, 7, 14, 0, 0, 2915, 2916, 7, 16, 0, 0, 2916, 2917, 7, 17, 0, 0, 2917, 2918, 7, 19, 0, 0, 2918, 2919, 7, 7, 0, 0, 2919, 2920, 7, 9, 0, 0, 2920, 440, 1, 0, 0, 0, 2921, 2922, 7, 23, 0, 0, 2922, 2923, 7, 6, 0, 0, 2923, 2924, 7, 19, 0, 0, 2924, 2925, 7, 18, 0, 0, 2925, 2926, 7, 5, 0, 0, 2926, 2927, 7, 6, 0, 0, 2927, 442, 1, 0, 0, 0, 2928, 2929, 7, 23, 0, 0, 2929, 2930, 7, 13, 0, 0, 2930, 2931, 7, 5, 0, 0, 2931, 2932, 7, 7, 0, 0, 2932, 2933, 7, 16, 0, 0, 2933, 2934, 7, 10, 0, 0, 2934, 2935, 7, 12, 0, 0, 2935, 444, 1, 0, 0, 0, 2936, 2937, 7, 20, 0, 0, 2937, 2938, 7, 5, 0, 0, 2938, 2939, 7, 7, 0, 0, 2939, 2940, 7, 12, 0, 0, 2940, 2941, 7, 6, 0, 0, 2941, 2942, 7, 10, 0, 0, 2942, 2943, 7, 13, 0, 0, 2943, 446, 1, 0, 0, 0, 2944, 2945, 7, 20, 0, 0, 2945, 2946, 7, 10, 0, 0, 2946, 2947, 7, 5, 0, 0, 2947, 2948, 7, 12, 0, 0, 2948, 2949, 7, 10, 0, 0, 2949, 2950, 7, 13, 0, 0, 2950, 448, 1, 0, 0, 0, 2951, 2952, 7, 20, 0, 0, 2952, 2953, 7, 19, 0, 0, 2953, 2954, 7, 6, 0, 0, 2954, 2955, 7, 12, 0, 0, 2955, 450, 1, 0, 0, 0, 2956, 2957, 7, 20, 0, 0, 2957, 2958, 7, 19, 0, 0, 2958, 2959, 7, 22, 0, 0, 2959, 2960, 7, 13, 0, 0, 2960, 452, 1, 0, 0, 0, 2961, 2962, 7, 17, 0, 0, 2962, 2963, 7, 12, 0, 0, 2963, 2964, 7, 10, 0, 0, 2964, 2965, 7, 7, 0, 0, 2965, 2966, 7, 16, 0, 0, 2966, 2967, 7, 17, 0, 0, 2967, 2968, 7, 16, 0, 0, 2968, 2969, 7, 8, 0, 0, 2969, 454, 1, 0, 0, 0, 2970, 2971, 7, 17, 0, 0, 2971, 2972, 7, 25, 0, 0, 2972, 456, 1, 0, 0, 0, 2973, 2974, 7, 17, 0, 0, 2974, 2975, 7, 15, 0, 0, 2975, 2976, 7, 15, 0, 0, 2976, 2977, 7, 10, 0, 0, 2977, 2978, 7, 12, 0, 0, 2978, 2979, 7, 17, 0, 0, 2979, 2980, 7, 5, 0, 0, 2980, 2981, 7, 16, 0, 0, 2981, 2982, 7, 10, 0, 0, 2982, 458, 1, 0, 0, 0, 2983, 2984, 7, 17, 0, 0, 2984, 2985, 7, 15, 0, 0, 2985, 2986, 7, 15, 0, 0, 2986, 2987, 7, 22, 0, 0, 2987, 2988, 7, 16, 0, 0, 2988, 2989, 7, 5, 0, 0, 2989, 2990, 7, 18, 0, 0, 2990, 2991, 7, 6, 0, 0, 2991, 2992, 7, 10, 0, 0, 2992, 460, 1, 0, 0, 0, 2993, 2994, 7, 17, 0, 0, 2994, 2995, 7, 15, 0, 0, 2995, 2996, 7, 24, 0, 0, 2996, 2997, 7, 6, 0, 0, 2997, 2998, 7, 17, 0, 0, 2998, 2999, 7, 14, 0, 0, 2999, 3000, 7, 17, 0, 0, 3000, 3001, 7, 16, 0, 0, 3001, 462, 1, 0, 0, 0, 3002, 3003, 7, 17, 0, 0, 3003, 3004, 7, 7, 0, 0, 3004, 3005, 7, 14, 0, 0, 3005, 3006, 7, 6, 0, 0, 3006, 3007, 7, 22, 0, 0, 3007, 3008, 7, 12, 0, 0, 3008, 3009, 7, 17, 0, 0, 3009, 3010, 7, 7, 0, 0, 3010, 3011, 7, 23, 0, 0, 3011, 464, 1, 0, 0, 0, 3012, 3013, 7, 17, 0, 0, 3013, 3014, 7, 7, 0, 0, 3014, 3015, 7, 14, 0, 0, 3015, 3016, 7, 13, 0, 0, 3016, 3017, 7, 10, 0, 0, 3017, 3018, 7, 15, 0, 0, 3018, 3019, 7, 10, 0, 0, 3019, 3020, 7, 7, 0, 0, 3020, 3021, 7, 16, 0, 0, 3021, 466, 1, 0, 0, 0, 3022, 3023, 7, 17, 0, 0, 3023, 3024, 7, 7, 0, 0, 3024, 3025, 7, 12, 0, 0, 3025, 3026, 7, 10, 0, 0, 3026, 3027, 7, 26, 0, 0, 3027, 468, 1, 0, 0, 0, 3028, 3029, 7, 17, 0, 0, 3029, 3030, 7, 7, 0, 0, 3030, 3031, 7, 12, 0, 0, 3031, 3032, 7, 10, 0, 0, 3032, 3033, 7, 26, 0, 0, 3033, 3034, 7, 10, 0, 0, 3034, 3035, 7, 9, 0, 0, 3035, 470, 1, 0, 0, 0, 3036, 3037, 7, 17, 0, 0, 3037, 3038, 7, 7, 0, 0, 3038, 3039, 7, 20, 0, 0, 3039, 3040, 7, 10, 0, 0, 3040, 3041, 7, 13, 0, 0, 3041, 3042, 7, 17, 0, 0, 3042, 3043, 7, 16, 0, 0, 3043, 472, 1, 0, 0, 0, 3044, 3045, 7, 17, 0, 0, 3045, 3046, 7, 7, 0, 0, 3046, 3047, 7, 20, 0, 0, 3047, 3048, 7, 10, 0, 0, 3048, 3049, 7, 13, 0, 0, 3049, 3050, 7, 17, 0, 0, 3050, 3051, 7, 16, 0, 0, 3051, 3052, 7, 9, 0, 0, 3052, 474, 1, 0, 0, 0, 3053, 3054, 7, 17, 0, 0, 3054, 3055, 7, 7, 0, 0, 3055, 3056, 7, 6, 0, 0, 3056, 3057, 7, 17, 0, 0, 3057, 3058, 7, 7, 0, 0, 3058, 3059, 7, 10, 0, 0, 3059, 476, 1, 0, 0, 0, 3060, 3061, 7, 17, 0, 0, 3061, 3062, 7, 7, 0, 0, 3062, 3063, 7, 9, 0, 0, 3063, 3064, 7, 10, 0, 0, 3064, 3065, 7, 7, 0, 0, 3065, 3066, 7, 9, 0, 0, 3066, 3067, 7, 17, 0, 0, 3067, 3068, 7, 16, 0, 0, 3068, 3069, 7, 17, 0, 0, 3069, 3070, 7, 27, 0, 0, 3070, 3071, 7, 10, 0, 0, 3071, 478, 1, 0, 0, 0, 3072, 3073, 7, 17, 0, 0, 3073, 3074, 7, 7, 0, 0, 3074, 3075, 7, 9, 0, 0, 3075, 3076, 7, 10, 0, 0, 3076, 3077, 7, 13, 0, 0, 3077, 3078, 7, 16, 0, 0, 3078, 480, 1, 0, 0, 0, 3079, 3080, 7, 17, 0, 0, 3080, 3081, 7, 7, 0, 0, 3081, 3082, 7, 9, 0, 0, 3082, 3083, 7, 16, 0, 0, 3083, 3084, 7, 10, 0, 0, 3084, 3085, 7, 5, 0, 0, 3085, 3086, 7, 12, 0, 0, 3086, 482, 1, 0, 0, 0, 3087, 3088, 7, 17, 0, 0, 3088, 3089, 7, 7, 0, 0, 3089, 3090, 7, 27, 0, 0, 3090, 3091, 7, 19, 0, 0, 3091, 3092, 7, 21, 0, 0, 3092, 3093, 7, 10, 0, 0, 3093, 3094, 7, 13, 0, 0, 3094, 484, 1, 0, 0, 0, 3095, 3096, 7, 17, 0, 0, 3096, 3097, 7, 9, 0, 0, 3097, 3098, 7, 19, 0, 0, 3098, 3099, 7, 6, 0, 0, 3099, 3100, 7, 5, 0, 0, 3100, 3101, 7, 16, 0, 0, 3101, 3102, 7, 17, 0, 0, 3102, 3103, 7, 19, 0, 0, 3103, 3104, 7, 7, 0, 0, 3104, 486, 1, 0, 0, 0, 3105, 3106, 7, 21, 0, 0, 3106, 3107, 7, 10, 0, 0, 3107, 3108, 7, 8, 0, 0, 3108, 488, 1, 0, 0, 0, 3109, 3110, 7, 6, 0, 0, 3110, 3111, 7, 5, 0, 0, 3111, 3112, 7, 18, 0, 0, 3112, 3113, 7, 10, 0, 0, 3113, 3114, 7, 6, 0, 0, 3114, 490, 1, 0, 0, 0, 3115, 3116, 7, 6, 0, 0, 3116, 3117, 7, 5, 0, 0, 3117, 3118, 7, 7, 0, 0, 3118, 3119, 7, 23, 0, 0, 3119, 3120, 7, 22, 0, 0, 3120, 3121, 7, 5, 0, 0, 3121, 3122, 7, 23, 0, 0, 3122, 3123, 7, 10, 0, 0, 3123, 492, 1, 0, 0, 0, 3124, 3125, 7, 6, 0, 0, 3125, 3126, 7, 5, 0, 0, 3126, 3127, 7, 13, 0, 0, 3127, 3128, 7, 23, 0, 0, 3128, 3129, 7, 10, 0, 0, 3129, 494, 1, 0, 0, 0, 3130, 3131, 7, 6, 0, 0, 3131, 3132, 7, 5, 0, 0, 3132, 3133, 7, 9, 0, 0, 3133, 3134, 7, 16, 0, 0, 3134, 496, 1, 0, 0, 0, 3135, 3136, 7, 6, 0, 0, 3136, 3137, 7, 10, 0, 0, 3137, 3138, 7, 5, 0, 0, 3138, 3139, 7, 21, 0, 0, 3139, 3140, 7, 24, 0, 0, 3140, 3141, 7, 13, 0, 0, 3141, 3142, 7, 19, 0, 0, 3142, 3143, 7, 19, 0, 0, 3143, 3144, 7, 25, 0, 0, 3144, 498, 1, 0, 0, 0, 3145, 3146, 7, 6, 0, 0, 3146, 3147, 7, 10, 0, 0, 3147, 3148, 7, 27, 0, 0, 3148, 3149, 7, 10, 0, 0, 3149, 3150, 7, 6, 0, 0, 3150, 500, 1, 0, 0, 0, 3151, 3152, 7, 6, 0, 0, 3152, 3153, 7, 17, 0, 0, 3153, 3154, 7, 9, 0, 0, 3154, 3155, 7, 16, 0, 0, 3155, 3156, 7, 10, 0, 0, 3156, 3157, 7, 7, 0, 0, 3157, 502, 1, 0, 0, 0, 3158, 3159, 7, 6, 0, 0, 3159, 3160, 7, 19, 0, 0, 3160, 3161, 7, 5, 0, 0, 3161, 3162, 7, 12, 0, 0, 3162, 504, 1, 0, 0, 0, 3163, 3164, 7, 6, 0, 0, 3164, 3165, 7, 19, 0, 0, 3165, 3166, 7, 14, 0, 0, 3166, 3167, 7, 5, 0, 0, 3167, 3168, 7, 6, 0, 0, 3168, 506, 1, 0, 0, 0, 3169, 3170, 7, 6, 0, 0, 3170, 3171, 7, 19, 0, 0, 3171, 3172, 7, 14, 0, 0, 3172, 3173, 7, 5, 0, 0, 3173, 3174, 7, 16, 0, 0, 3174, 3175, 7, 17, 0, 0, 3175, 3176, 7, 19, 0, 0, 3176, 3177, 7, 7, 0, 0, 3177, 508, 1, 0, 0, 0, 3178, 3179, 7, 6, 0, 0, 3179, 3180, 7, 19, 0, 0, 3180, 3181, 7, 14, 0, 0, 3181, 3182, 7, 21, 0, 0, 3182, 510, 1, 0, 0, 0, 3183, 3184, 7, 15, 0, 0, 3184, 3185, 7, 5, 0, 0, 3185, 3186, 7, 24, 0, 0, 3186, 3187, 7, 24, 0, 0, 3187, 3188, 7, 17, 0, 0, 3188, 3189, 7, 7, 0, 0, 3189, 3190, 7, 23, 0, 0, 3190, 512, 1, 0, 0, 0, 3191, 3192, 7, 15, 0, 0, 3192, 3193, 7, 5, 0, 0, 3193, 3194, 7, 16, 0, 0, 3194, 3195, 7, 14, 0, 0, 3195, 3196, 7, 20, 0, 0, 3196, 514, 1, 0, 0, 0, 3197, 3198, 7, 15, 0, 0, 3198, 3199, 7, 5, 0, 0, 3199, 3200, 7, 16, 0, 0, 3200, 3201, 7, 14, 0, 0, 3201, 3202, 7, 20, 0, 0, 3202, 3203, 7, 10, 0, 0, 3203, 3204, 7, 12, 0, 0, 3204, 516, 1, 0, 0, 0, 3205, 3206, 7, 15, 0, 0, 3206, 3207, 7, 5, 0, 0, 3207, 3208, 7, 16, 0, 0, 3208, 3209, 7, 10, 0, 0, 3209, 3210, 7, 13, 0, 0, 3210, 3211, 7, 17, 0, 0, 3211, 3212, 7, 5, 0, 0, 3212, 3213, 7, 6, 0, 0, 3213, 3214, 7, 17, 0, 0, 3214, 3215, 7, 11, 0, 0, 3215, 3216, 7, 10, 0, 0, 3216, 3217, 7, 12, 0, 0, 3217, 518, 1, 0, 0, 0, 3218, 3219, 7, 15, 0, 0, 3219, 3220, 7, 5, 0, 0, 3220, 3221, 7, 26, 0, 0, 3221, 3222, 7, 27, 0, 0, 3222, 3223, 7, 5, 0, 0, 3223, 3224, 7, 6, 0, 0, 3224, 3225, 7, 22, 0, 0, 3225, 3226, 7, 10, 0, 0, 3226, 520, 1, 0, 0, 0, 3227, 3228, 7, 15, 0, 0, 3228, 3229, 7, 10, 0, 0, 3229, 3230, 7, 13, 0, 0, 3230, 3231, 7, 23, 0, 0, 3231, 3232, 7, 10, 0, 0, 3232, 522, 1, 0, 0, 0, 3233, 3234, 7, 15, 0, 0, 3234, 3235, 7, 17, 0, 0, 3235, 3236, 7, 7, 0, 0, 3236, 3237, 7, 22, 0, 0, 3237, 3238, 7, 16, 0, 0, 3238, 3239, 7, 10, 0, 0, 3239, 524, 1, 0, 0, 0, 3240, 3241, 7, 15, 0, 0, 3241, 3242, 7, 17, 0, 0, 3242, 3243, 7, 7, 0, 0, 3243, 3244, 7, 27, 0, 0, 3244, 3245, 7, 5, 0, 0, 3245, 3246, 7, 6, 0, 0, 3246, 3247, 7, 22, 0, 0, 3247, 3248, 7, 10, 0, 0, 3248, 526, 1, 0, 0, 0, 3249, 3250, 7, 15, 0, 0, 3250, 3251, 7, 19, 0, 0, 3251, 3252, 7, 12, 0, 0, 3252, 3253, 7, 10, 0, 0, 3253, 528, 1, 0, 0, 0, 3254, 3255, 7, 15, 0, 0, 3255, 3256, 7, 19, 0, 0, 3256, 3257, 7, 7, 0, 0, 3257, 3258, 7, 16, 0, 0, 3258, 3259, 7, 20, 0, 0, 3259, 530, 1, 0, 0, 0, 3260, 3261, 7, 15, 0, 0, 3261, 3262, 7, 19, 0, 0, 3262, 3263, 7, 27, 0, 0, 3263, 3264, 7, 10, 0, 0, 3264, 532, 1, 0, 0, 0, 3265, 3266, 7, 7, 0, 0, 3266, 3267, 7, 5, 0, 0, 3267, 3268, 7, 15, 0, 0, 3268, 3269, 7, 10, 0, 0, 3269, 534, 1, 0, 0, 0, 3270, 3271, 7, 7, 0, 0, 3271, 3272, 7, 5, 0, 0, 3272, 3273, 7, 15, 0, 0, 3273, 3274, 7, 10, 0, 0, 3274, 3275, 7, 9, 0, 0, 3275, 536, 1, 0, 0, 0, 3276, 3277, 7, 7, 0, 0, 3277, 3278, 7, 10, 0, 0, 3278, 3279, 7, 26, 0, 0, 3279, 3280, 7, 16, 0, 0, 3280, 538, 1, 0, 0, 0, 3281, 3282, 7, 7, 0, 0, 3282, 3283, 7, 19, 0, 0, 3283, 540, 1, 0, 0, 0, 3284, 3285, 7, 7, 0, 0, 3285, 3286, 7, 19, 0, 0, 3286, 3287, 7, 16, 0, 0, 3287, 3288, 7, 20, 0, 0, 3288, 3289, 7, 17, 0, 0, 3289, 3290, 7, 7, 0, 0, 3290, 3291, 7, 23, 0, 0, 3291, 542, 1, 0, 0, 0, 3292, 3293, 7, 7, 0, 0, 3293, 3294, 7, 19, 0, 0, 3294, 3295, 7, 16, 0, 0, 3295, 3296, 7, 17, 0, 0, 3296, 3297, 7, 25, 0, 0, 3297, 3298, 7, 8, 0, 0, 3298, 544, 1, 0, 0, 0, 3299, 3300, 7, 7, 0, 0, 3300, 3301, 7, 19, 0, 0, 3301, 3302, 7, 29, 0, 0, 3302, 3303, 7, 5, 0, 0, 3303, 3304, 7, 17, 0, 0, 3304, 3305, 7, 16, 0, 0, 3305, 546, 1, 0, 0, 0, 3306, 3307, 7, 7, 0, 0, 3307, 3308, 7, 22, 0, 0, 3308, 3309, 7, 6, 0, 0, 3309, 3310, 7, 6, 0, 0, 3310, 3311, 7, 9, 0, 0, 3311, 548, 1, 0, 0, 0, 3312, 3313, 7, 19, 0, 0, 3313, 3314, 7, 18, 0, 0, 3314, 3315, 7, 30, 0, 0, 3315, 3316, 7, 10, 0, 0, 3316, 3317, 7, 14, 0, 0, 3317, 3318, 7, 16, 0, 0, 3318, 550, 1, 0, 0, 0, 3319, 3320, 7, 19, 0, 0, 3320, 3321, 7, 25, 0, 0, 3321, 552, 1, 0, 0, 0, 3322, 3323, 7, 19, 0, 0, 3323, 3324, 7, 25, 0, 0, 3324, 3325, 7, 25, 0, 0, 3325, 554, 1, 0, 0, 0, 3326, 3327, 7, 19, 0, 0, 3327, 3328, 7, 17, 0, 0, 3328, 3329, 7, 12, 0, 0, 3329, 3330, 7, 9, 0, 0, 3330, 556, 1, 0, 0, 0, 3331, 3332, 7, 19, 0, 0, 3332, 3333, 7, 24, 0, 0, 3333, 3334, 7, 10, 0, 0, 3334, 3335, 7, 13, 0, 0, 3335, 3336, 7, 5, 0, 0, 3336, 3337, 7, 16, 0, 0, 3337, 3338, 7, 19, 0, 0, 3338, 3339, 7, 13, 0, 0, 3339, 558, 1, 0, 0, 0, 3340, 3341, 7, 19, 0, 0, 3341, 3342, 7, 24, 0, 0, 3342, 3343, 7, 16, 0, 0, 3343, 3344, 7, 17, 0, 0, 3344, 3345, 7, 19, 0, 0, 3345, 3346, 7, 7, 0, 0, 3346, 560, 1, 0, 0, 0, 3347, 3348, 7, 19, 0, 0, 3348, 3349, 7, 24, 0, 0, 3349, 3350, 7, 16, 0, 0, 3350, 3351, 7, 17, 0, 0, 3351, 3352, 7, 19, 0, 0, 3352, 3353, 7, 7, 0, 0, 3353, 3354, 7, 9, 0, 0, 3354, 562, 1, 0, 0, 0, 3355, 3356, 7, 19, 0, 0, 3356, 3357, 7, 29, 0, 0, 3357, 3358, 7, 7, 0, 0, 3358, 3359, 7, 10, 0, 0, 3359, 3360, 7, 12, 0, 0, 3360, 564, 1, 0, 0, 0, 3361, 3362, 7, 19, 0, 0, 3362, 3363, 7, 29, 0, 0, 3363, 3364, 7, 7, 0, 0, 3364, 3365, 7, 10, 0, 0, 3365, 3366, 7, 13, 0, 0, 3366, 566, 1, 0, 0, 0, 3367, 3368, 7, 24, 0, 0, 3368, 3369, 7, 5, 0, 0, 3369, 3370, 7, 13, 0, 0, 3370, 3371, 7, 9, 0, 0, 3371, 3372, 7, 10, 0, 0, 3372, 3373, 7, 13, 0, 0, 3373, 568, 1, 0, 0, 0, 3374, 3375, 7, 24, 0, 0, 3375, 3376, 7, 5, 0, 0, 3376, 3377, 7, 13, 0, 0, 3377, 3378, 7, 16, 0, 0, 3378, 3379, 7, 17, 0, 0, 3379, 3380, 7, 5, 0, 0, 3380, 3381, 7, 6, 0, 0, 3381, 570, 1, 0, 0, 0, 3382, 3383, 7, 24, 0, 0, 3383, 3384, 7, 5, 0, 0, 3384, 3385, 7, 13, 0, 0, 3385, 3386, 7, 16, 0, 0, 3386, 3387, 7, 17, 0, 0, 3387, 3388, 7, 16, 0, 0, 3388, 3389, 7, 17, 0, 0, 3389, 3390, 7, 19, 0, 0, 3390, 3391, 7, 7, 0, 0, 3391, 572, 1, 0, 0, 0, 3392, 3393, 7, 24, 0, 0, 3393, 3394, 7, 5, 0, 0, 3394, 3395, 7, 9, 0, 0, 3395, 3396, 7, 9, 0, 0, 3396, 3397, 7, 17, 0, 0, 3397, 3398, 7, 7, 0, 0, 3398, 3399, 7, 23, 0, 0, 3399, 574, 1, 0, 0, 0, 3400, 3401, 7, 24, 0, 0, 3401, 3402, 7, 5, 0, 0, 3402, 3403, 7, 9, 0, 0, 3403, 3404, 7, 9, 0, 0, 3404, 3405, 7, 29, 0, 0, 3405, 3406, 7, 19, 0, 0, 3406, 3407, 7, 13, 0, 0, 3407, 3408, 7, 12, 0, 0, 3408, 576, 1, 0, 0, 0, 3409, 3410, 7, 24, 0, 0, 3410, 3411, 7, 6, 0, 0, 3411, 3412, 7, 5, 0, 0, 3412, 3413, 7, 7, 0, 0, 3413, 3414, 7, 9, 0, 0, 3414, 578, 1, 0, 0, 0, 3415, 3416, 7, 24, 0, 0, 3416, 3417, 7, 13, 0, 0, 3417, 3418, 7, 10, 0, 0, 3418, 3419, 7, 14, 0, 0, 3419, 3420, 7, 10, 0, 0, 3420, 3421, 7, 12, 0, 0, 3421, 3422, 7, 17, 0, 0, 3422, 3423, 7, 7, 0, 0, 3423, 3424, 7, 23, 0, 0, 3424, 580, 1, 0, 0, 0, 3425, 3426, 7, 24, 0, 0, 3426, 3427, 7, 13, 0, 0, 3427, 3428, 7, 10, 0, 0, 3428, 3429, 7, 24, 0, 0, 3429, 3430, 7, 5, 0, 0, 3430, 3431, 7, 13, 0, 0, 3431, 3432, 7, 10, 0, 0, 3432, 582, 1, 0, 0, 0, 3433, 3434, 7, 24, 0, 0, 3434, 3435, 7, 13, 0, 0, 3435, 3436, 7, 10, 0, 0, 3436, 3437, 7, 24, 0, 0, 3437, 3438, 7, 5, 0, 0, 3438, 3439, 7, 13, 0, 0, 3439, 3440, 7, 10, 0, 0, 3440, 3441, 7, 12, 0, 0, 3441, 584, 1, 0, 0, 0, 3442, 3443, 7, 24, 0, 0, 3443, 3444, 7, 13, 0, 0, 3444, 3445, 7, 10, 0, 0, 3445, 3446, 7, 9, 0, 0, 3446, 3447, 7, 10, 0, 0, 3447, 3448, 7, 13, 0, 0, 3448, 3449, 7, 27, 0, 0, 3449, 3450, 7, 10, 0, 0, 3450, 586, 1, 0, 0, 0, 3451, 3452, 7, 24, 0, 0, 3452, 3453, 7, 13, 0, 0, 3453, 3454, 7, 17, 0, 0, 3454, 3455, 7, 19, 0, 0, 3455, 3456, 7, 13, 0, 0, 3456, 588, 1, 0, 0, 0, 3457, 3458, 7, 24, 0, 0, 3458, 3459, 7, 13, 0, 0, 3459, 3460, 7, 17, 0, 0, 3460, 3461, 7, 27, 0, 0, 3461, 3462, 7, 17, 0, 0, 3462, 3463, 7, 6, 0, 0, 3463, 3464, 7, 10, 0, 0, 3464, 3465, 7, 23, 0, 0, 3465, 3466, 7, 10, 0, 0, 3466, 3467, 7, 9, 0, 0, 3467, 590, 1, 0, 0, 0, 3468, 3469, 7, 24, 0, 0, 3469, 3470, 7, 13, 0, 0, 3470, 3471, 7, 19, 0, 0, 3471, 3472, 7, 14, 0, 0, 3472, 3473, 7, 10, 0, 0, 3473, 3474, 7, 12, 0, 0, 3474, 3475, 7, 22, 0, 0, 3475, 3476, 7, 13, 0, 0, 3476, 3477, 7, 5, 0, 0, 3477, 3478, 7, 6, 0, 0, 3478, 592, 1, 0, 0, 0, 3479, 3480, 7, 24, 0, 0, 3480, 3481, 7, 13, 0, 0, 3481, 3482, 7, 19, 0, 0, 3482, 3483, 7, 14, 0, 0, 3483, 3484, 7, 10, 0, 0, 3484, 3485, 7, 12, 0, 0, 3485, 3486, 7, 22, 0, 0, 3486, 3487, 7, 13, 0, 0, 3487, 3488, 7, 10, 0, 0, 3488, 594, 1, 0, 0, 0, 3489, 3490, 7, 24, 0, 0, 3490, 3491, 7, 13, 0, 0, 3491, 3492, 7, 19, 0, 0, 3492, 3493, 7, 23, 0, 0, 3493, 3494, 7, 13, 0, 0, 3494, 3495, 7, 5, 0, 0, 3495, 3496, 7, 15, 0, 0, 3496, 596, 1, 0, 0, 0, 3497, 3498, 7, 28, 0, 0, 3498, 3499, 7, 22, 0, 0, 3499, 3500, 7, 19, 0, 0, 3500, 3501, 7, 16, 0, 0, 3501, 3502, 7, 10, 0, 0, 3502, 598, 1, 0, 0, 0, 3503, 3504, 7, 13, 0, 0, 3504, 3505, 7, 5, 0, 0, 3505, 3506, 7, 7, 0, 0, 3506, 3507, 7, 23, 0, 0, 3507, 3508, 7, 10, 0, 0, 3508, 600, 1, 0, 0, 0, 3509, 3510, 7, 13, 0, 0, 3510, 3511, 7, 10, 0, 0, 3511, 3512, 7, 5, 0, 0, 3512, 3513, 7, 12, 0, 0, 3513, 602, 1, 0, 0, 0, 3514, 3515, 7, 13, 0, 0, 3515, 3516, 7, 10, 0, 0, 3516, 3517, 7, 5, 0, 0, 3517, 3518, 7, 9, 0, 0, 3518, 3519, 7, 9, 0, 0, 3519, 3520, 7, 17, 0, 0, 3520, 3521, 7, 23, 0, 0, 3521, 3522, 7, 7, 0, 0, 3522, 604, 1, 0, 0, 0, 3523, 3524, 7, 13, 0, 0, 3524, 3525, 7, 10, 0, 0, 3525, 3526, 7, 14, 0, 0, 3526, 3527, 7, 20, 0, 0, 3527, 3528, 7, 10, 0, 0, 3528, 3529, 7, 14, 0, 0, 3529, 3530, 7, 21, 0, 0, 3530, 606, 1, 0, 0, 0, 3531, 3532, 7, 13, 0, 0, 3532, 3533, 7, 10, 0, 0, 3533, 3534, 7, 14, 0, 0, 3534, 3535, 7, 22, 0, 0, 3535, 3536, 7, 13, 0, 0, 3536, 3537, 7, 9, 0, 0, 3537, 3538, 7, 17, 0, 0, 3538, 3539, 7, 27, 0, 0, 3539, 3540, 7, 10, 0, 0, 3540, 608, 1, 0, 0, 0, 3541, 3542, 7, 13, 0, 0, 3542, 3543, 7, 10, 0, 0, 3543, 3544, 7, 25, 0, 0, 3544, 610, 1, 0, 0, 0, 3545, 3546, 7, 13, 0, 0, 3546, 3547, 7, 10, 0, 0, 3547, 3548, 7, 25, 0, 0, 3548, 3549, 7, 13, 0, 0, 3549, 3550, 7, 10, 0, 0, 3550, 3551, 7, 9, 0, 0, 3551, 3552, 7, 20, 0, 0, 3552, 612, 1, 0, 0, 0, 3553, 3554, 7, 13, 0, 0, 3554, 3555, 7, 10, 0, 0, 3555, 3556, 7, 17, 0, 0, 3556, 3557, 7, 7, 0, 0, 3557, 3558, 7, 12, 0, 0, 3558, 3559, 7, 10, 0, 0, 3559, 3560, 7, 26, 0, 0, 3560, 614, 1, 0, 0, 0, 3561, 3562, 7, 13, 0, 0, 3562, 3563, 7, 10, 0, 0, 3563, 3564, 7, 6, 0, 0, 3564, 3565, 7, 5, 0, 0, 3565, 3566, 7, 16, 0, 0, 3566, 3567, 7, 17, 0, 0, 3567, 3568, 7, 27, 0, 0, 3568, 3569, 7, 10, 0, 0, 3569, 616, 1, 0, 0, 0, 3570, 3571, 7, 13, 0, 0, 3571, 3572, 7, 10, 0, 0, 3572, 3573, 7, 6, 0, 0, 3573, 3574, 7, 10, 0, 0, 3574, 3575, 7, 5, 0, 0, 3575, 3576, 7, 9, 0, 0, 3576, 3577, 7, 10, 0, 0, 3577, 618, 1, 0, 0, 0, 3578, 3579, 7, 13, 0, 0, 3579, 3580, 7, 10, 0, 0, 3580, 3581, 7, 7, 0, 0, 3581, 3582, 7, 5, 0, 0, 3582, 3583, 7, 15, 0, 0, 3583, 3584, 7, 10, 0, 0, 3584, 620, 1, 0, 0, 0, 3585, 3586, 7, 13, 0, 0, 3586, 3587, 7, 10, 0, 0, 3587, 3588, 7, 24, 0, 0, 3588, 3589, 7, 10, 0, 0, 3589, 3590, 7, 5, 0, 0, 3590, 3591, 7, 16, 0, 0, 3591, 3592, 7, 5, 0, 0, 3592, 3593, 7, 18, 0, 0, 3593, 3594, 7, 6, 0, 0, 3594, 3595, 7, 10, 0, 0, 3595, 622, 1, 0, 0, 0, 3596, 3597, 7, 13, 0, 0, 3597, 3598, 7, 10, 0, 0, 3598, 3599, 7, 24, 0, 0, 3599, 3600, 7, 6, 0, 0, 3600, 3601, 7, 5, 0, 0, 3601, 3602, 7, 14, 0, 0, 3602, 3603, 7, 10, 0, 0, 3603, 624, 1, 0, 0, 0, 3604, 3605, 7, 13, 0, 0, 3605, 3606, 7, 10, 0, 0, 3606, 3607, 7, 24, 0, 0, 3607, 3608, 7, 6, 0, 0, 3608, 3609, 7, 17, 0, 0, 3609, 3610, 7, 14, 0, 0, 3610, 3611, 7, 5, 0, 0, 3611, 626, 1, 0, 0, 0, 3612, 3613, 7, 13, 0, 0, 3613, 3614, 7, 10, 0, 0, 3614, 3615, 7, 9, 0, 0, 3615, 3616, 7, 10, 0, 0, 3616, 3617, 7, 16, 0, 0, 3617, 628, 1, 0, 0, 0, 3618, 3619, 7, 13, 0, 0, 3619, 3620, 7, 10, 0, 0, 3620, 3621, 7, 9, 0, 0, 3621, 3622, 7, 16, 0, 0, 3622, 3623, 7, 5, 0, 0, 3623, 3624, 7, 13, 0, 0, 3624, 3625, 7, 16, 0, 0, 3625, 630, 1, 0, 0, 0, 3626, 3627, 7, 13, 0, 0, 3627, 3628, 7, 10, 0, 0, 3628, 3629, 7, 9, 0, 0, 3629, 3630, 7, 16, 0, 0, 3630, 3631, 7, 13, 0, 0, 3631, 3632, 7, 17, 0, 0, 3632, 3633, 7, 14, 0, 0, 3633, 3634, 7, 16, 0, 0, 3634, 632, 1, 0, 0, 0, 3635, 3636, 7, 13, 0, 0, 3636, 3637, 7, 10, 0, 0, 3637, 3638, 7, 16, 0, 0, 3638, 3639, 7, 22, 0, 0, 3639, 3640, 7, 13, 0, 0, 3640, 3641, 7, 7, 0, 0, 3641, 3642, 7, 9, 0, 0, 3642, 634, 1, 0, 0, 0, 3643, 3644, 7, 13, 0, 0, 3644, 3645, 7, 10, 0, 0, 3645, 3646, 7, 27, 0, 0, 3646, 3647, 7, 19, 0, 0, 3647, 3648, 7, 21, 0, 0, 3648, 3649, 7, 10, 0, 0, 3649, 636, 1, 0, 0, 0, 3650, 3651, 7, 13, 0, 0, 3651, 3652, 7, 19, 0, 0, 3652, 3653, 7, 6, 0, 0, 3653, 3654, 7, 10, 0, 0, 3654, 638, 1, 0, 0, 0, 3655, 3656, 7, 13, 0, 0, 3656, 3657, 7, 19, 0, 0, 3657, 3658, 7, 6, 0, 0, 3658, 3659, 7, 6, 0, 0, 3659, 3660, 7, 18, 0, 0, 3660, 3661, 7, 5, 0, 0, 3661, 3662, 7, 14, 0, 0, 3662, 3663, 7, 21, 0, 0, 3663, 640, 1, 0, 0, 0, 3664, 3665, 7, 13, 0, 0, 3665, 3666, 7, 19, 0, 0, 3666, 3667, 7, 29, 0, 0, 3667, 3668, 7, 9, 0, 0, 3668, 642, 1, 0, 0, 0, 3669, 3670, 7, 13, 0, 0, 3670, 3671, 7, 22, 0, 0, 3671, 3672, 7, 6, 0, 0, 3672, 3673, 7, 10, 0, 0, 3673, 644, 1, 0, 0, 0, 3674, 3675, 7, 9, 0, 0, 3675, 3676, 7, 5, 0, 0, 3676, 3677, 7, 27, 0, 0, 3677, 3678, 7, 10, 0, 0, 3678, 3679, 7, 24, 0, 0, 3679, 3680, 7, 19, 0, 0, 3680, 3681, 7, 17, 0, 0, 3681, 3682, 7, 7, 0, 0, 3682, 3683, 7, 16, 0, 0, 3683, 646, 1, 0, 0, 0, 3684, 3685, 7, 9, 0, 0, 3685, 3686, 7, 14, 0, 0, 3686, 3687, 7, 20, 0, 0, 3687, 3688, 7, 10, 0, 0, 3688, 3689, 7, 15, 0, 0, 3689, 3690, 7, 5, 0, 0, 3690, 648, 1, 0, 0, 0, 3691, 3692, 7, 9, 0, 0, 3692, 3693, 7, 14, 0, 0, 3693, 3694, 7, 13, 0, 0, 3694, 3695, 7, 19, 0, 0, 3695, 3696, 7, 6, 0, 0, 3696, 3697, 7, 6, 0, 0, 3697, 650, 1, 0, 0, 0, 3698, 3699, 7, 9, 0, 0, 3699, 3700, 7, 10, 0, 0, 3700, 3701, 7, 5, 0, 0, 3701, 3702, 7, 13, 0, 0, 3702, 3703, 7, 14, 0, 0, 3703, 3704, 7, 20, 0, 0, 3704, 652, 1, 0, 0, 0, 3705, 3706, 7, 9, 0, 0, 3706, 3707, 7, 10, 0, 0, 3707, 3708, 7, 14, 0, 0, 3708, 3709, 7, 19, 0, 0, 3709, 3710, 7, 7, 0, 0, 3710, 3711, 7, 12, 0, 0, 3711, 654, 1, 0, 0, 0, 3712, 3713, 7, 9, 0, 0, 3713, 3714, 7, 10, 0, 0, 3714, 3715, 7, 14, 0, 0, 3715, 3716, 7, 22, 0, 0, 3716, 3717, 7, 13, 0, 0, 3717, 3718, 7, 17, 0, 0, 3718, 3719, 7, 16, 0, 0, 3719, 3720, 7, 8, 0, 0, 3720, 656, 1, 0, 0, 0, 3721, 3722, 7, 9, 0, 0, 3722, 3723, 7, 10, 0, 0, 3723, 3724, 7, 28, 0, 0, 3724, 3725, 7, 22, 0, 0, 3725, 3726, 7, 10, 0, 0, 3726, 3727, 7, 7, 0, 0, 3727, 3728, 7, 14, 0, 0, 3728, 3729, 7, 10, 0, 0, 3729, 658, 1, 0, 0, 0, 3730, 3731, 7, 9, 0, 0, 3731, 3732, 7, 10, 0, 0, 3732, 3733, 7, 28, 0, 0, 3733, 3734, 7, 22, 0, 0, 3734, 3735, 7, 10, 0, 0, 3735, 3736, 7, 7, 0, 0, 3736, 3737, 7, 14, 0, 0, 3737, 3738, 7, 10, 0, 0, 3738, 3739, 7, 9, 0, 0, 3739, 660, 1, 0, 0, 0, 3740, 3741, 7, 9, 0, 0, 3741, 3742, 7, 10, 0, 0, 3742, 3743, 7, 13, 0, 0, 3743, 3744, 7, 17, 0, 0, 3744, 3745, 7, 5, 0, 0, 3745, 3746, 7, 6, 0, 0, 3746, 3747, 7, 17, 0, 0, 3747, 3748, 7, 11, 0, 0, 3748, 3749, 7, 5, 0, 0, 3749, 3750, 7, 18, 0, 0, 3750, 3751, 7, 6, 0, 0, 3751, 3752, 7, 10, 0, 0, 3752, 662, 1, 0, 0, 0, 3753, 3754, 7, 9, 0, 0, 3754, 3755, 7, 10, 0, 0, 3755, 3756, 7, 13, 0, 0, 3756, 3757, 7, 27, 0, 0, 3757, 3758, 7, 10, 0, 0, 3758, 3759, 7, 13, 0, 0, 3759, 664, 1, 0, 0, 0, 3760, 3761, 7, 9, 0, 0, 3761, 3762, 7, 10, 0, 0, 3762, 3763, 7, 9, 0, 0, 3763, 3764, 7, 9, 0, 0, 3764, 3765, 7, 17, 0, 0, 3765, 3766, 7, 19, 0, 0, 3766, 3767, 7, 7, 0, 0, 3767, 666, 1, 0, 0, 0, 3768, 3769, 7, 9, 0, 0, 3769, 3770, 7, 10, 0, 0, 3770, 3771, 7, 16, 0, 0, 3771, 668, 1, 0, 0, 0, 3772, 3773, 7, 9, 0, 0, 3773, 3774, 7, 20, 0, 0, 3774, 3775, 7, 5, 0, 0, 3775, 3776, 7, 13, 0, 0, 3776, 3777, 7, 10, 0, 0, 3777, 670, 1, 0, 0, 0, 3778, 3779, 7, 9, 0, 0, 3779, 3780, 7, 20, 0, 0, 3780, 3781, 7, 19, 0, 0, 3781, 3782, 7, 29, 0, 0, 3782, 672, 1, 0, 0, 0, 3783, 3784, 7, 9, 0, 0, 3784, 3785, 7, 17, 0, 0, 3785, 3786, 7, 15, 0, 0, 3786, 3787, 7, 24, 0, 0, 3787, 3788, 7, 6, 0, 0, 3788, 3789, 7, 10, 0, 0, 3789, 674, 1, 0, 0, 0, 3790, 3791, 7, 9, 0, 0, 3791, 3792, 7, 7, 0, 0, 3792, 3793, 7, 5, 0, 0, 3793, 3794, 7, 24, 0, 0, 3794, 3795, 7, 9, 0, 0, 3795, 3796, 7, 20, 0, 0, 3796, 3797, 7, 19, 0, 0, 3797, 3798, 7, 16, 0, 0, 3798, 676, 1, 0, 0, 0, 3799, 3800, 7, 9, 0, 0, 3800, 3801, 7, 16, 0, 0, 3801, 3802, 7, 5, 0, 0, 3802, 3803, 7, 18, 0, 0, 3803, 3804, 7, 6, 0, 0, 3804, 3805, 7, 10, 0, 0, 3805, 678, 1, 0, 0, 0, 3806, 3807, 7, 9, 0, 0, 3807, 3808, 7, 16, 0, 0, 3808, 3809, 7, 5, 0, 0, 3809, 3810, 7, 7, 0, 0, 3810, 3811, 7, 12, 0, 0, 3811, 3812, 7, 5, 0, 0, 3812, 3813, 7, 6, 0, 0, 3813, 3814, 7, 19, 0, 0, 3814, 3815, 7, 7, 0, 0, 3815, 3816, 7, 10, 0, 0, 3816, 680, 1, 0, 0, 0, 3817, 3818, 7, 9, 0, 0, 3818, 3819, 7, 16, 0, 0, 3819, 3820, 7, 5, 0, 0, 3820, 3821, 7, 13, 0, 0, 3821, 3822, 7, 16, 0, 0, 3822, 682, 1, 0, 0, 0, 3823, 3824, 7, 9, 0, 0, 3824, 3825, 7, 16, 0, 0, 3825, 3826, 7, 5, 0, 0, 3826, 3827, 7, 16, 0, 0, 3827, 3828, 7, 10, 0, 0, 3828, 3829, 7, 15, 0, 0, 3829, 3830, 7, 10, 0, 0, 3830, 3831, 7, 7, 0, 0, 3831, 3832, 7, 16, 0, 0, 3832, 684, 1, 0, 0, 0, 3833, 3834, 7, 9, 0, 0, 3834, 3835, 7, 16, 0, 0, 3835, 3836, 7, 5, 0, 0, 3836, 3837, 7, 16, 0, 0, 3837, 3838, 7, 17, 0, 0, 3838, 3839, 7, 9, 0, 0, 3839, 3840, 7, 16, 0, 0, 3840, 3841, 7, 17, 0, 0, 3841, 3842, 7, 14, 0, 0, 3842, 3843, 7, 9, 0, 0, 3843, 686, 1, 0, 0, 0, 3844, 3845, 7, 9, 0, 0, 3845, 3846, 7, 16, 0, 0, 3846, 3847, 7, 12, 0, 0, 3847, 3848, 7, 17, 0, 0, 3848, 3849, 7, 7, 0, 0, 3849, 688, 1, 0, 0, 0, 3850, 3851, 7, 9, 0, 0, 3851, 3852, 7, 16, 0, 0, 3852, 3853, 7, 12, 0, 0, 3853, 3854, 7, 19, 0, 0, 3854, 3855, 7, 22, 0, 0, 3855, 3856, 7, 16, 0, 0, 3856, 690, 1, 0, 0, 0, 3857, 3858, 7, 9, 0, 0, 3858, 3859, 7, 16, 0, 0, 3859, 3860, 7, 19, 0, 0, 3860, 3861, 7, 13, 0, 0, 3861, 3862, 7, 5, 0, 0, 3862, 3863, 7, 23, 0, 0, 3863, 3864, 7, 10, 0, 0, 3864, 692, 1, 0, 0, 0, 3865, 3866, 7, 9, 0, 0, 3866, 3867, 7, 16, 0, 0, 3867, 3868, 7, 13, 0, 0, 3868, 3869, 7, 17, 0, 0, 3869, 3870, 7, 14, 0, 0, 3870, 3871, 7, 16, 0, 0, 3871, 694, 1, 0, 0, 0, 3872, 3873, 7, 9, 0, 0, 3873, 3874, 7, 16, 0, 0, 3874, 3875, 7, 13, 0, 0, 3875, 3876, 7, 17, 0, 0, 3876, 3877, 7, 24, 0, 0, 3877, 696, 1, 0, 0, 0, 3878, 3879, 7, 9, 0, 0, 3879, 3880, 7, 8, 0, 0, 3880, 3881, 7, 9, 0, 0, 3881, 3882, 7, 17, 0, 0, 3882, 3883, 7, 12, 0, 0, 3883, 698, 1, 0, 0, 0, 3884, 3885, 7, 9, 0, 0, 3885, 3886, 7, 8, 0, 0, 3886, 3887, 7, 9, 0, 0, 3887, 3888, 7, 16, 0, 0, 3888, 3889, 7, 10, 0, 0, 3889, 3890, 7, 15, 0, 0, 3890, 700, 1, 0, 0, 0, 3891, 3892, 7, 16, 0, 0, 3892, 3893, 7, 5, 0, 0, 3893, 3894, 7, 18, 0, 0, 3894, 3895, 7, 6, 0, 0, 3895, 3896, 7, 10, 0, 0, 3896, 3897, 7, 9, 0, 0, 3897, 702, 1, 0, 0, 0, 3898, 3899, 7, 16, 0, 0, 3899, 3900, 7, 5, 0, 0, 3900, 3901, 7, 18, 0, 0, 3901, 3902, 7, 6, 0, 0, 3902, 3903, 7, 10, 0, 0, 3903, 3904, 7, 9, 0, 0, 3904, 3905, 7, 24, 0, 0, 3905, 3906, 7, 5, 0, 0, 3906, 3907, 7, 14, 0, 0, 3907, 3908, 7, 10, 0, 0, 3908, 704, 1, 0, 0, 0, 3909, 3910, 7, 16, 0, 0, 3910, 3911, 7, 10, 0, 0, 3911, 3912, 7, 15, 0, 0, 3912, 3913, 7, 24, 0, 0, 3913, 706, 1, 0, 0, 0, 3914, 3915, 7, 16, 0, 0, 3915, 3916, 7, 10, 0, 0, 3916, 3917, 7, 15, 0, 0, 3917, 3918, 7, 24, 0, 0, 3918, 3919, 7, 6, 0, 0, 3919, 3920, 7, 5, 0, 0, 3920, 3921, 7, 16, 0, 0, 3921, 3922, 7, 10, 0, 0, 3922, 708, 1, 0, 0, 0, 3923, 3924, 7, 16, 0, 0, 3924, 3925, 7, 10, 0, 0, 3925, 3926, 7, 15, 0, 0, 3926, 3927, 7, 24, 0, 0, 3927, 3928, 7, 19, 0, 0, 3928, 3929, 7, 13, 0, 0, 3929, 3930, 7, 5, 0, 0, 3930, 3931, 7, 13, 0, 0, 3931, 3932, 7, 8, 0, 0, 3932, 710, 1, 0, 0, 0, 3933, 3934, 7, 16, 0, 0, 3934, 3935, 7, 10, 0, 0, 3935, 3936, 7, 26, 0, 0, 3936, 3937, 7, 16, 0, 0, 3937, 712, 1, 0, 0, 0, 3938, 3939, 7, 16, 0, 0, 3939, 3940, 7, 13, 0, 0, 3940, 3941, 7, 5, 0, 0, 3941, 3942, 7, 7, 0, 0, 3942, 3943, 7, 9, 0, 0, 3943, 3944, 7, 5, 0, 0, 3944, 3945, 7, 14, 0, 0, 3945, 3946, 7, 16, 0, 0, 3946, 3947, 7, 17, 0, 0, 3947, 3948, 7, 19, 0, 0, 3948, 3949, 7, 7, 0, 0, 3949, 714, 1, 0, 0, 0, 3950, 3951, 7, 16, 0, 0, 3951, 3952, 7, 13, 0, 0, 3952, 3953, 7, 17, 0, 0, 3953, 3954, 7, 23, 0, 0, 3954, 3955, 7, 23, 0, 0, 3955, 3956, 7, 10, 0, 0, 3956, 3957, 7, 13, 0, 0, 3957, 716, 1, 0, 0, 0, 3958, 3959, 7, 16, 0, 0, 3959, 3960, 7, 13, 0, 0, 3960, 3961, 7, 22, 0, 0, 3961, 3962, 7, 7, 0, 0, 3962, 3963, 7, 14, 0, 0, 3963, 3964, 7, 5, 0, 0, 3964, 3965, 7, 16, 0, 0, 3965, 3966, 7, 10, 0, 0, 3966, 718, 1, 0, 0, 0, 3967, 3968, 7, 16, 0, 0, 3968, 3969, 7, 13, 0, 0, 3969, 3970, 7, 22, 0, 0, 3970, 3971, 7, 9, 0, 0, 3971, 3972, 7, 16, 0, 0, 3972, 3973, 7, 10, 0, 0, 3973, 3974, 7, 12, 0, 0, 3974, 720, 1, 0, 0, 0, 3975, 3976, 7, 16, 0, 0, 3976, 3977, 7, 8, 0, 0, 3977, 3978, 7, 24, 0, 0, 3978, 3979, 7, 10, 0, 0, 3979, 722, 1, 0, 0, 0, 3980, 3981, 7, 16, 0, 0, 3981, 3982, 7, 8, 0, 0, 3982, 3983, 7, 24, 0, 0, 3983, 3984, 7, 10, 0, 0, 3984, 3985, 7, 9, 0, 0, 3985, 724, 1, 0, 0, 0, 3986, 3987, 7, 22, 0, 0, 3987, 3988, 7, 7, 0, 0, 3988, 3989, 7, 18, 0, 0, 3989, 3990, 7, 19, 0, 0, 3990, 3991, 7, 22, 0, 0, 3991, 3992, 7, 7, 0, 0, 3992, 3993, 7, 12, 0, 0, 3993, 3994, 7, 10, 0, 0, 3994, 3995, 7, 12, 0, 0, 3995, 726, 1, 0, 0, 0, 3996, 3997, 7, 22, 0, 0, 3997, 3998, 7, 7, 0, 0, 3998, 3999, 7, 14, 0, 0, 3999, 4000, 7, 19, 0, 0, 4000, 4001, 7, 15, 0, 0, 4001, 4002, 7, 15, 0, 0, 4002, 4003, 7, 17, 0, 0, 4003, 4004, 7, 16, 0, 0, 4004, 4005, 7, 16, 0, 0, 4005, 4006, 7, 10, 0, 0, 4006, 4007, 7, 12, 0, 0, 4007, 728, 1, 0, 0, 0, 4008, 4009, 7, 22, 0, 0, 4009, 4010, 7, 7, 0, 0, 4010, 4011, 7, 10, 0, 0, 4011, 4012, 7, 7, 0, 0, 4012, 4013, 7, 14, 0, 0, 4013, 4014, 7, 13, 0, 0, 4014, 4015, 7, 8, 0, 0, 4015, 4016, 7, 24, 0, 0, 4016, 4017, 7, 16, 0, 0, 4017, 4018, 7, 10, 0, 0, 4018, 4019, 7, 12, 0, 0, 4019, 730, 1, 0, 0, 0, 4020, 4021, 7, 22, 0, 0, 4021, 4022, 7, 7, 0, 0, 4022, 4023, 7, 21, 0, 0, 4023, 4024, 7, 7, 0, 0, 4024, 4025, 7, 19, 0, 0, 4025, 4026, 7, 29, 0, 0, 4026, 4027, 7, 7, 0, 0, 4027, 732, 1, 0, 0, 0, 4028, 4029, 7, 22, 0, 0, 4029, 4030, 7, 7, 0, 0, 4030, 4031, 7, 6, 0, 0, 4031, 4032, 7, 17, 0, 0, 4032, 4033, 7, 9, 0, 0, 4033, 4034, 7, 16, 0, 0, 4034, 4035, 7, 10, 0, 0, 4035, 4036, 7, 7, 0, 0, 4036, 734, 1, 0, 0, 0, 4037, 4038, 7, 22, 0, 0, 4038, 4039, 7, 7, 0, 0, 4039, 4040, 7, 6, 0, 0, 4040, 4041, 7, 19, 0, 0, 4041, 4042, 7, 23, 0, 0, 4042, 4043, 7, 23, 0, 0, 4043, 4044, 7, 10, 0, 0, 4044, 4045, 7, 12, 0, 0, 4045, 736, 1, 0, 0, 0, 4046, 4047, 7, 22, 0, 0, 4047, 4048, 7, 7, 0, 0, 4048, 4049, 7, 16, 0, 0, 4049, 4050, 7, 17, 0, 0, 4050, 4051, 7, 6, 0, 0, 4051, 738, 1, 0, 0, 0, 4052, 4053, 7, 22, 0, 0, 4053, 4054, 7, 24, 0, 0, 4054, 4055, 7, 12, 0, 0, 4055, 4056, 7, 5, 0, 0, 4056, 4057, 7, 16, 0, 0, 4057, 4058, 7, 10, 0, 0, 4058, 740, 1, 0, 0, 0, 4059, 4060, 7, 27, 0, 0, 4060, 4061, 7, 5, 0, 0, 4061, 4062, 7, 14, 0, 0, 4062, 4063, 7, 22, 0, 0, 4063, 4064, 7, 22, 0, 0, 4064, 4065, 7, 15, 0, 0, 4065, 742, 1, 0, 0, 0, 4066, 4067, 7, 27, 0, 0, 4067, 4068, 7, 5, 0, 0, 4068, 4069, 7, 6, 0, 0, 4069, 4070, 7, 17, 0, 0, 4070, 4071, 7, 12, 0, 0, 4071, 744, 1, 0, 0, 0, 4072, 4073, 7, 27, 0, 0, 4073, 4074, 7, 5, 0, 0, 4074, 4075, 7, 6, 0, 0, 4075, 4076, 7, 17, 0, 0, 4076, 4077, 7, 12, 0, 0, 4077, 4078, 7, 5, 0, 0, 4078, 4079, 7, 16, 0, 0, 4079, 4080, 7, 10, 0, 0, 4080, 746, 1, 0, 0, 0, 4081, 4082, 7, 27, 0, 0, 4082, 4083, 7, 5, 0, 0, 4083, 4084, 7, 6, 0, 0, 4084, 4085, 7, 17, 0, 0, 4085, 4086, 7, 12, 0, 0, 4086, 4087, 7, 5, 0, 0, 4087, 4088, 7, 16, 0, 0, 4088, 4089, 7, 19, 0, 0, 4089, 4090, 7, 13, 0, 0, 4090, 748, 1, 0, 0, 0, 4091, 4092, 7, 27, 0, 0, 4092, 4093, 7, 5, 0, 0, 4093, 4094, 7, 13, 0, 0, 4094, 4095, 7, 8, 0, 0, 4095, 4096, 7, 17, 0, 0, 4096, 4097, 7, 7, 0, 0, 4097, 4098, 7, 23, 0, 0, 4098, 750, 1, 0, 0, 0, 4099, 4100, 7, 27, 0, 0, 4100, 4101, 7, 10, 0, 0, 4101, 4102, 7, 13, 0, 0, 4102, 4103, 7, 9, 0, 0, 4103, 4104, 7, 17, 0, 0, 4104, 4105, 7, 19, 0, 0, 4105, 4106, 7, 7, 0, 0, 4106, 752, 1, 0, 0, 0, 4107, 4108, 7, 27, 0, 0, 4108, 4109, 7, 17, 0, 0, 4109, 4110, 7, 10, 0, 0, 4110, 4111, 7, 29, 0, 0, 4111, 754, 1, 0, 0, 0, 4112, 4113, 7, 27, 0, 0, 4113, 4114, 7, 19, 0, 0, 4114, 4115, 7, 6, 0, 0, 4115, 4116, 7, 5, 0, 0, 4116, 4117, 7, 16, 0, 0, 4117, 4118, 7, 17, 0, 0, 4118, 4119, 7, 6, 0, 0, 4119, 4120, 7, 10, 0, 0, 4120, 756, 1, 0, 0, 0, 4121, 4122, 7, 29, 0, 0, 4122, 4123, 7, 20, 0, 0, 4123, 4124, 7, 17, 0, 0, 4124, 4125, 7, 16, 0, 0, 4125, 4126, 7, 10, 0, 0, 4126, 4127, 7, 9, 0, 0, 4127, 4128, 7, 24, 0, 0, 4128, 4129, 7, 5, 0, 0, 4129, 4130, 7, 14, 0, 0, 4130, 4131, 7, 10, 0, 0, 4131, 758, 1, 0, 0, 0, 4132, 4133, 7, 29, 0, 0, 4133, 4134, 7, 17, 0, 0, 4134, 4135, 7, 16, 0, 0, 4135, 4136, 7, 20, 0, 0, 4136, 4137, 7, 19, 0, 0, 4137, 4138, 7, 22, 0, 0, 4138, 4139, 7, 16, 0, 0, 4139, 760, 1, 0, 0, 0, 4140, 4141, 7, 29, 0, 0, 4141, 4142, 7, 19, 0, 0, 4142, 4143, 7, 13, 0, 0, 4143, 4144, 7, 21, 0, 0, 4144, 762, 1, 0, 0, 0, 4145, 4146, 7, 29, 0, 0, 4146, 4147, 7, 13, 0, 0, 4147, 4148, 7, 5, 0, 0, 4148, 4149, 7, 24, 0, 0, 4149, 4150, 7, 24, 0, 0, 4150, 4151, 7, 10, 0, 0, 4151, 4152, 7, 13, 0, 0, 4152, 764, 1, 0, 0, 0, 4153, 4154, 7, 29, 0, 0, 4154, 4155, 7, 13, 0, 0, 4155, 4156, 7, 17, 0, 0, 4156, 4157, 7, 16, 0, 0, 4157, 4158, 7, 10, 0, 0, 4158, 766, 1, 0, 0, 0, 4159, 4160, 7, 26, 0, 0, 4160, 4161, 7, 15, 0, 0, 4161, 4162, 7, 6, 0, 0, 4162, 768, 1, 0, 0, 0, 4163, 4164, 7, 8, 0, 0, 4164, 4165, 7, 10, 0, 0, 4165, 4166, 7, 5, 0, 0, 4166, 4167, 7, 13, 0, 0, 4167, 770, 1, 0, 0, 0, 4168, 4169, 7, 8, 0, 0, 4169, 4170, 7, 10, 0, 0, 4170, 4171, 7, 9, 0, 0, 4171, 772, 1, 0, 0, 0, 4172, 4173, 7, 11, 0, 0, 4173, 4174, 7, 19, 0, 0, 4174, 4175, 7, 7, 0, 0, 4175, 4176, 7, 10, 0, 0, 4176, 774, 1, 0, 0, 0, 4177, 4178, 7, 18, 0, 0, 4178, 4179, 7, 10, 0, 0, 4179, 4180, 7, 16, 0, 0, 4180, 4181, 7, 29, 0, 0, 4181, 4182, 7, 10, 0, 0, 4182, 4183, 7, 10, 0, 0, 4183, 4184, 7, 7, 0, 0, 4184, 776, 1, 0, 0, 0, 4185, 4186, 7, 18, 0, 0, 4186, 4187, 7, 17, 0, 0, 4187, 4188, 7, 23, 0, 0, 4188, 4189, 7, 17, 0, 0, 4189, 4190, 7, 7, 0, 0, 4190, 4191, 7, 16, 0, 0, 4191, 778, 1, 0, 0, 0, 4192, 4193, 7, 18, 0, 0, 4193, 4194, 7, 17, 0, 0, 4194, 4195, 7, 16, 0, 0, 4195, 780, 1, 0, 0, 0, 4196, 4197, 7, 18, 0, 0, 4197, 4198, 7, 19, 0, 0, 4198, 4199, 7, 19, 0, 0, 4199, 4200, 7, 6, 0, 0, 4200, 4201, 7, 10, 0, 0, 4201, 4202, 7, 5, 0, 0, 4202, 4203, 7, 7, 0, 0, 4203, 782, 1, 0, 0, 0, 4204, 4205, 7, 14, 0, 0, 4205, 4206, 7, 20, 0, 0, 4206, 4207, 7, 5, 0, 0, 4207, 4208, 7, 13, 0, 0, 4208, 784, 1, 0, 0, 0, 4209, 4210, 7, 14, 0, 0, 4210, 4211, 7, 20, 0, 0, 4211, 4212, 7, 5, 0, 0, 4212, 4213, 7, 13, 0, 0, 4213, 4214, 7, 5, 0, 0, 4214, 4215, 7, 14, 0, 0, 4215, 4216, 7, 16, 0, 0, 4216, 4217, 7, 10, 0, 0, 4217, 4218, 7, 13, 0, 0, 4218, 786, 1, 0, 0, 0, 4219, 4220, 7, 14, 0, 0, 4220, 4221, 7, 19, 0, 0, 4221, 4222, 7, 5, 0, 0, 4222, 4223, 7, 6, 0, 0, 4223, 4224, 7, 10, 0, 0, 4224, 4225, 7, 9, 0, 0, 4225, 4226, 7, 14, 0, 0, 4226, 4227, 7, 10, 0, 0, 4227, 788, 1, 0, 0, 0, 4228, 4229, 7, 12, 0, 0, 4229, 4230, 7, 10, 0, 0, 4230, 4231, 7, 14, 0, 0, 4231, 790, 1, 0, 0, 0, 4232, 4233, 7, 12, 0, 0, 4233, 4234, 7, 10, 0, 0, 4234, 4235, 7, 14, 0, 0, 4235, 4236, 7, 17, 0, 0, 4236, 4237, 7, 15, 0, 0, 4237, 4238, 7, 5, 0, 0, 4238, 4239, 7, 6, 0, 0, 4239, 792, 1, 0, 0, 0, 4240, 4241, 7, 10, 0, 0, 4241, 4242, 7, 26, 0, 0, 4242, 4243, 7, 17, 0, 0, 4243, 4244, 7, 9, 0, 0, 4244, 4245, 7, 16, 0, 0, 4245, 4246, 7, 9, 0, 0, 4246, 794, 1, 0, 0, 0, 4247, 4248, 7, 10, 0, 0, 4248, 4249, 7, 26, 0, 0, 4249, 4250, 7, 16, 0, 0, 4250, 4251, 7, 13, 0, 0, 4251, 4252, 7, 5, 0, 0, 4252, 4253, 7, 14, 0, 0, 4253, 4254, 7, 16, 0, 0, 4254, 796, 1, 0, 0, 0, 4255, 4256, 7, 25, 0, 0, 4256, 4257, 7, 6, 0, 0, 4257, 4258, 7, 19, 0, 0, 4258, 4259, 7, 5, 0, 0, 4259, 4260, 7, 16, 0, 0, 4260, 798, 1, 0, 0, 0, 4261, 4262, 7, 23, 0, 0, 4262, 4263, 7, 13, 0, 0, 4263, 4264, 7, 10, 0, 0, 4264, 4265, 7, 5, 0, 0, 4265, 4266, 7, 16, 0, 0, 4266, 4267, 7, 10, 0, 0, 4267, 4268, 7, 9, 0, 0, 4268, 4269, 7, 16, 0, 0, 4269, 800, 1, 0, 0, 0, 4270, 4271, 7, 17, 0, 0, 4271, 4272, 7, 7, 0, 0, 4272, 4273, 7, 19, 0, 0, 4273, 4274, 7, 22, 0, 0, 4274, 4275, 7, 16, 0, 0, 4275, 802, 1, 0, 0, 0, 4276, 4277, 7, 17, 0, 0, 4277, 4278, 7, 7, 0, 0, 4278, 4279, 7, 16, 0, 0, 4279, 804, 1, 0, 0, 0, 4280, 4281, 7, 17, 0, 0, 4281, 4282, 7, 7, 0, 0, 4282, 4283, 7, 16, 0, 0, 4283, 4284, 7, 10, 0, 0, 4284, 4285, 7, 23, 0, 0, 4285, 4286, 7, 10, 0, 0, 4286, 4287, 7, 13, 0, 0, 4287, 806, 1, 0, 0, 0, 4288, 4289, 7, 17, 0, 0, 4289, 4290, 7, 7, 0, 0, 4290, 4291, 7, 16, 0, 0, 4291, 4292, 7, 10, 0, 0, 4292, 4293, 7, 13, 0, 0, 4293, 4294, 7, 27, 0, 0, 4294, 4295, 7, 5, 0, 0, 4295, 4296, 7, 6, 0, 0, 4296, 808, 1, 0, 0, 0, 4297, 4298, 7, 6, 0, 0, 4298, 4299, 7, 10, 0, 0, 4299, 4300, 7, 5, 0, 0, 4300, 4301, 7, 9, 0, 0, 4301, 4302, 7, 16, 0, 0, 4302, 810, 1, 0, 0, 0, 4303, 4304, 7, 7, 0, 0, 4304, 4305, 7, 5, 0, 0, 4305, 4306, 7, 16, 0, 0, 4306, 4307, 7, 17, 0, 0, 4307, 4308, 7, 19, 0, 0, 4308, 4309, 7, 7, 0, 0, 4309, 4310, 7, 5, 0, 0, 4310, 4311, 7, 6, 0, 0, 4311, 812, 1, 0, 0, 0, 4312, 4313, 7, 7, 0, 0, 4313, 4314, 7, 14, 0, 0, 4314, 4315, 7, 20, 0, 0, 4315, 4316, 7, 5, 0, 0, 4316, 4317, 7, 13, 0, 0, 4317, 814, 1, 0, 0, 0, 4318, 4319, 7, 7, 0, 0, 4319, 4320, 7, 19, 0, 0, 4320, 4321, 7, 7, 0, 0, 4321, 4322, 7, 10, 0, 0, 4322, 816, 1, 0, 0, 0, 4323, 4324, 7, 7, 0, 0, 4324, 4325, 7, 22, 0, 0, 4325, 4326, 7, 6, 0, 0, 4326, 4327, 7, 6, 0, 0, 4327, 4328, 7, 17, 0, 0, 4328, 4329, 7, 25, 0, 0, 4329, 818, 1, 0, 0, 0, 4330, 4331, 7, 7, 0, 0, 4331, 4332, 7, 22, 0, 0, 4332, 4333, 7, 15, 0, 0, 4333, 4334, 7, 10, 0, 0, 4334, 4335, 7, 13, 0, 0, 4335, 4336, 7, 17, 0, 0, 4336, 4337, 7, 14, 0, 0, 4337, 820, 1, 0, 0, 0, 4338, 4339, 7, 19, 0, 0, 4339, 4340, 7, 27, 0, 0, 4340, 4341, 7, 10, 0, 0, 4341, 4342, 7, 13, 0, 0, 4342, 4343, 7, 6, 0, 0, 4343, 4344, 7, 5, 0, 0, 4344, 4345, 7, 8, 0, 0, 4345, 822, 1, 0, 0, 0, 4346, 4347, 7, 24, 0, 0, 4347, 4348, 7, 19, 0, 0, 4348, 4349, 7, 9, 0, 0, 4349, 4350, 7, 17, 0, 0, 4350, 4351, 7, 16, 0, 0, 4351, 4352, 7, 17, 0, 0, 4352, 4353, 7, 19, 0, 0, 4353, 4354, 7, 7, 0, 0, 4354, 824, 1, 0, 0, 0, 4355, 4356, 7, 24, 0, 0, 4356, 4357, 7, 13, 0, 0, 4357, 4358, 7, 10, 0, 0, 4358, 4359, 7, 14, 0, 0, 4359, 4360, 7, 17, 0, 0, 4360, 4361, 7, 9, 0, 0, 4361, 4362, 7, 17, 0, 0, 4362, 4363, 7, 19, 0, 0, 4363, 4364, 7, 7, 0, 0, 4364, 826, 1, 0, 0, 0, 4365, 4366, 7, 13, 0, 0, 4366, 4367, 7, 10, 0, 0, 4367, 4368, 7, 5, 0, 0, 4368, 4369, 7, 6, 0, 0, 4369, 828, 1, 0, 0, 0, 4370, 4371, 7, 13, 0, 0, 4371, 4372, 7, 19, 0, 0, 4372, 4373, 7, 29, 0, 0, 4373, 830, 1, 0, 0, 0, 4374, 4375, 7, 9, 0, 0, 4375, 4376, 7, 10, 0, 0, 4376, 4377, 7, 16, 0, 0, 4377, 4378, 7, 19, 0, 0, 4378, 4379, 7, 25, 0, 0, 4379, 832, 1, 0, 0, 0, 4380, 4381, 7, 9, 0, 0, 4381, 4382, 7, 15, 0, 0, 4382, 4383, 7, 5, 0, 0, 4383, 4384, 7, 6, 0, 0, 4384, 4385, 7, 6, 0, 0, 4385, 4386, 7, 17, 0, 0, 4386, 4387, 7, 7, 0, 0, 4387, 4388, 7, 16, 0, 0, 4388, 834, 1, 0, 0, 0, 4389, 4390, 7, 9, 0, 0, 4390, 4391, 7, 22, 0, 0, 4391, 4392, 7, 18, 0, 0, 4392, 4393, 7, 9, 0, 0, 4393, 4394, 7, 16, 0, 0, 4394, 4395, 7, 13, 0, 0, 4395, 4396, 7, 17, 0, 0, 4396, 4397, 7, 7, 0, 0, 4397, 4398, 7, 23, 0, 0, 4398, 836, 1, 0, 0, 0, 4399, 4400, 7, 16, 0, 0, 4400, 4401, 7, 17, 0, 0, 4401, 4402, 7, 15, 0, 0, 4402, 4403, 7, 10, 0, 0, 4403, 838, 1, 0, 0, 0, 4404, 4405, 7, 16, 0, 0, 4405, 4406, 7, 17, 0, 0, 4406, 4407, 7, 15, 0, 0, 4407, 4408, 7, 10, 0, 0, 4408, 4409, 7, 9, 0, 0, 4409, 4410, 7, 16, 0, 0, 4410, 4411, 7, 5, 0, 0, 4411, 4412, 7, 15, 0, 0, 4412, 4413, 7, 24, 0, 0, 4413, 840, 1, 0, 0, 0, 4414, 4415, 7, 16, 0, 0, 4415, 4416, 7, 13, 0, 0, 4416, 4417, 7, 10, 0, 0, 4417, 4418, 7, 5, 0, 0, 4418, 4419, 7, 16, 0, 0, 4419, 842, 1, 0, 0, 0, 4420, 4421, 7, 16, 0, 0, 4421, 4422, 7, 13, 0, 0, 4422, 4423, 7, 17, 0, 0, 4423, 4424, 7, 15, 0, 0, 4424, 844, 1, 0, 0, 0, 4425, 4426, 7, 27, 0, 0, 4426, 4427, 7, 5, 0, 0, 4427, 4428, 7, 6, 0, 0, 4428, 4429, 7, 22, 0, 0, 4429, 4430, 7, 10, 0, 0, 4430, 4431, 7, 9, 0, 0, 4431, 846, 1, 0, 0, 0, 4432, 4433, 7, 27, 0, 0, 4433, 4434, 7, 5, 0, 0, 4434, 4435, 7, 13, 0, 0, 4435, 4436, 7, 14, 0, 0, 4436, 4437, 7, 20, 0, 0, 4437, 4438, 7, 5, 0, 0, 4438, 4439, 7, 13, 0, 0, 4439, 848, 1, 0, 0, 0, 4440, 4441, 7, 26, 0, 0, 4441, 4442, 7, 15, 0, 0, 4442, 4443, 7, 6, 0, 0, 4443, 4444, 7, 5, 0, 0, 4444, 4445, 7, 16, 0, 0, 4445, 4446, 7, 16, 0, 0, 4446, 4447, 7, 13, 0, 0, 4447, 4448, 7, 17, 0, 0, 4448, 4449, 7, 18, 0, 0, 4449, 4450, 7, 22, 0, 0, 4450, 4451, 7, 16, 0, 0, 4451, 4452, 7, 10, 0, 0, 4452, 4453, 7, 9, 0, 0, 4453, 850, 1, 0, 0, 0, 4454, 4455, 7, 26, 0, 0, 4455, 4456, 7, 15, 0, 0, 4456, 4457, 7, 6, 0, 0, 4457, 4458, 7, 14, 0, 0, 4458, 4459, 7, 19, 0, 0, 4459, 4460, 7, 15, 0, 0, 4460, 4461, 7, 15, 0, 0, 4461, 4462, 7, 10, 0, 0, 4462, 4463, 7, 7, 0, 0, 4463, 4464, 7, 16, 0, 0, 4464, 852, 1, 0, 0, 0, 4465, 4466, 7, 26, 0, 0, 4466, 4467, 7, 15, 0, 0, 4467, 4468, 7, 6, 0, 0, 4468, 4469, 7, 5, 0, 0, 4469, 4470, 7, 23, 0, 0, 4470, 4471, 7, 23, 0, 0, 4471, 854, 1, 0, 0, 0, 4472, 4473, 7, 26, 0, 0, 4473, 4474, 7, 15, 0, 0, 4474, 4475, 7, 6, 0, 0, 4475, 4476, 5, 95, 0, 0, 4476, 4477, 7, 17, 0, 0, 4477, 4478, 7, 9, 0, 0, 4478, 4479, 5, 95, 0, 0, 4479, 4480, 7, 29, 0, 0, 4480, 4481, 7, 10, 0, 0, 4481, 4482, 7, 6, 0, 0, 4482, 4483, 7, 6, 0, 0, 4483, 4484, 5, 95, 0, 0, 4484, 4485, 7, 25, 0, 0, 4485, 4486, 7, 19, 0, 0, 4486, 4487, 7, 13, 0, 0, 4487, 4488, 7, 15, 0, 0, 4488, 4489, 7, 10, 0, 0, 4489, 4490, 7, 12, 0, 0, 4490, 856, 1, 0, 0, 0, 4491, 4492, 7, 26, 0, 0, 4492, 4493, 7, 15, 0, 0, 4493, 4494, 7, 6, 0, 0, 4494, 4495, 5, 95, 0, 0, 4495, 4496, 7, 17, 0, 0, 4496, 4497, 7, 9, 0, 0, 4497, 4498, 5, 95, 0, 0, 4498, 4499, 7, 29, 0, 0, 4499, 4500, 7, 10, 0, 0, 4500, 4501, 7, 6, 0, 0, 4501, 4502, 7, 6, 0, 0, 4502, 4503, 5, 95, 0, 0, 4503, 4504, 7, 25, 0, 0, 4504, 4505, 7, 19, 0, 0, 4505, 4506, 7, 13, 0, 0, 4506, 4507, 7, 15, 0, 0, 4507, 4508, 7, 10, 0, 0, 4508, 4509, 7, 12, 0, 0, 4509, 4510, 5, 95, 0, 0, 4510, 4511, 7, 12, 0, 0, 4511, 4512, 7, 19, 0, 0, 4512, 4513, 7, 14, 0, 0, 4513, 4514, 7, 22, 0, 0, 4514, 4515, 7, 15, 0, 0, 4515, 4516, 7, 10, 0, 0, 4516, 4517, 7, 7, 0, 0, 4517, 4518, 7, 16, 0, 0, 4518, 858, 1, 0, 0, 0, 4519, 4520, 7, 26, 0, 0, 4520, 4521, 7, 15, 0, 0, 4521, 4522, 7, 6, 0, 0, 4522, 4523, 5, 95, 0, 0, 4523, 4524, 7, 17, 0, 0, 4524, 4525, 7, 9, 0, 0, 4525, 4526, 5, 95, 0, 0, 4526, 4527, 7, 29, 0, 0, 4527, 4528, 7, 10, 0, 0, 4528, 4529, 7, 6, 0, 0, 4529, 4530, 7, 6, 0, 0, 4530, 4531, 5, 95, 0, 0, 4531, 4532, 7, 25, 0, 0, 4532, 4533, 7, 19, 0, 0, 4533, 4534, 7, 13, 0, 0, 4534, 4535, 7, 15, 0, 0, 4535, 4536, 7, 10, 0, 0, 4536, 4537, 7, 12, 0, 0, 4537, 4538, 5, 95, 0, 0, 4538, 4539, 7, 14, 0, 0, 4539, 4540, 7, 19, 0, 0, 4540, 4541, 7, 7, 0, 0, 4541, 4542, 7, 16, 0, 0, 4542, 4543, 7, 10, 0, 0, 4543, 4544, 7, 7, 0, 0, 4544, 4545, 7, 16, 0, 0, 4545, 860, 1, 0, 0, 0, 4546, 4547, 7, 26, 0, 0, 4547, 4548, 7, 24, 0, 0, 4548, 4549, 7, 5, 0, 0, 4549, 4550, 7, 16, 0, 0, 4550, 4551, 7, 20, 0, 0, 4551, 862, 1, 0, 0, 0, 4552, 4553, 7, 26, 0, 0, 4553, 4554, 7, 24, 0, 0, 4554, 4555, 7, 5, 0, 0, 4555, 4556, 7, 16, 0, 0, 4556, 4557, 7, 20, 0, 0, 4557, 4558, 5, 95, 0, 0, 4558, 4559, 7, 10, 0, 0, 4559, 4560, 7, 26, 0, 0, 4560, 4561, 7, 17, 0, 0, 4561, 4562, 7, 9, 0, 0, 4562, 4563, 7, 16, 0, 0, 4563, 4564, 7, 9, 0, 0, 4564, 864, 1, 0, 0, 0, 4565, 4566, 7, 26, 0, 0, 4566, 4567, 7, 15, 0, 0, 4567, 4568, 7, 6, 0, 0, 4568, 4569, 7, 14, 0, 0, 4569, 4570, 7, 19, 0, 0, 4570, 4571, 7, 7, 0, 0, 4571, 4572, 7, 14, 0, 0, 4572, 4573, 7, 5, 0, 0, 4573, 4574, 7, 16, 0, 0, 4574, 866, 1, 0, 0, 0, 4575, 4576, 7, 26, 0, 0, 4576, 4577, 7, 15, 0, 0, 4577, 4578, 7, 6, 0, 0, 4578, 4579, 7, 10, 0, 0, 4579, 4580, 7, 6, 0, 0, 4580, 4581, 7, 10, 0, 0, 4581, 4582, 7, 15, 0, 0, 4582, 4583, 7, 10, 0, 0, 4583, 4584, 7, 7, 0, 0, 4584, 4585, 7, 16, 0, 0, 4585, 868, 1, 0, 0, 0, 4586, 4587, 7, 26, 0, 0, 4587, 4588, 7, 15, 0, 0, 4588, 4589, 7, 6, 0, 0, 4589, 4590, 7, 10, 0, 0, 4590, 4591, 7, 26, 0, 0, 4591, 4592, 7, 17, 0, 0, 4592, 4593, 7, 9, 0, 0, 4593, 4594, 7, 16, 0, 0, 4594, 4595, 7, 9, 0, 0, 4595, 870, 1, 0, 0, 0, 4596, 4597, 7, 26, 0, 0, 4597, 4598, 7, 15, 0, 0, 4598, 4599, 7, 6, 0, 0, 4599, 4600, 7, 25, 0, 0, 4600, 4601, 7, 19, 0, 0, 4601, 4602, 7, 13, 0, 0, 4602, 4603, 7, 10, 0, 0, 4603, 4604, 7, 9, 0, 0, 4604, 4605, 7, 16, 0, 0, 4605, 872, 1, 0, 0, 0, 4606, 4607, 7, 26, 0, 0, 4607, 4608, 7, 15, 0, 0, 4608, 4609, 7, 6, 0, 0, 4609, 4610, 7, 24, 0, 0, 4610, 4611, 7, 5, 0, 0, 4611, 4612, 7, 13, 0, 0, 4612, 4613, 7, 9, 0, 0, 4613, 4614, 7, 10, 0, 0, 4614, 874, 1, 0, 0, 0, 4615, 4616, 7, 26, 0, 0, 4616, 4617, 7, 15, 0, 0, 4617, 4618, 7, 6, 0, 0, 4618, 4619, 7, 24, 0, 0, 4619, 4620, 7, 17, 0, 0, 4620, 876, 1, 0, 0, 0, 4621, 4622, 7, 26, 0, 0, 4622, 4623, 7, 15, 0, 0, 4623, 4624, 7, 6, 0, 0, 4624, 4625, 7, 13, 0, 0, 4625, 4626, 7, 19, 0, 0, 4626, 4627, 7, 19, 0, 0, 4627, 4628, 7, 16, 0, 0, 4628, 878, 1, 0, 0, 0, 4629, 4630, 7, 26, 0, 0, 4630, 4631, 7, 15, 0, 0, 4631, 4632, 7, 6, 0, 0, 4632, 4633, 7, 9, 0, 0, 4633, 4634, 7, 10, 0, 0, 4634, 4635, 7, 13, 0, 0, 4635, 4636, 7, 17, 0, 0, 4636, 4637, 7, 5, 0, 0, 4637, 4638, 7, 6, 0, 0, 4638, 4639, 7, 17, 0, 0, 4639, 4640, 7, 11, 0, 0, 4640, 4641, 7, 10, 0, 0, 4641, 880, 1, 0, 0, 0, 4642, 4643, 7, 14, 0, 0, 4643, 4644, 7, 5, 0, 0, 4644, 4645, 7, 6, 0, 0, 4645, 4646, 7, 6, 0, 0, 4646, 882, 1, 0, 0, 0, 4647, 4648, 7, 14, 0, 0, 4648, 4649, 7, 22, 0, 0, 4649, 4650, 7, 13, 0, 0, 4650, 4651, 7, 13, 0, 0, 4651, 4652, 7, 10, 0, 0, 4652, 4653, 7, 7, 0, 0, 4653, 4654, 7, 16, 0, 0, 4654, 884, 1, 0, 0, 0, 4655, 4656, 7, 5, 0, 0, 4656, 4657, 7, 16, 0, 0, 4657, 4658, 7, 16, 0, 0, 4658, 4659, 7, 5, 0, 0, 4659, 4660, 7, 14, 0, 0, 4660, 4661, 7, 20, 0, 0, 4661, 886, 1, 0, 0, 0, 4662, 4663, 7, 12, 0, 0, 4663, 4664, 7, 10, 0, 0, 4664, 4665, 7, 16, 0, 0, 4665, 4666, 7, 5, 0, 0, 4666, 4667, 7, 14, 0, 0, 4667, 4668, 7, 20, 0, 0, 4668, 888, 1, 0, 0, 0, 4669, 4670, 7, 10, 0, 0, 4670, 4671, 7, 26, 0, 0, 4671, 4672, 7, 24, 0, 0, 4672, 4673, 7, 13, 0, 0, 4673, 4674, 7, 10, 0, 0, 4674, 4675, 7, 9, 0, 0, 4675, 4676, 7, 9, 0, 0, 4676, 4677, 7, 17, 0, 0, 4677, 4678, 7, 19, 0, 0, 4678, 4679, 7, 7, 0, 0, 4679, 890, 1, 0, 0, 0, 4680, 4681, 7, 23, 0, 0, 4681, 4682, 7, 10, 0, 0, 4682, 4683, 7, 7, 0, 0, 4683, 4684, 7, 10, 0, 0, 4684, 4685, 7, 13, 0, 0, 4685, 4686, 7, 5, 0, 0, 4686, 4687, 7, 16, 0, 0, 4687, 4688, 7, 10, 0, 0, 4688, 4689, 7, 12, 0, 0, 4689, 892, 1, 0, 0, 0, 4690, 4691, 7, 6, 0, 0, 4691, 4692, 7, 19, 0, 0, 4692, 4693, 7, 23, 0, 0, 4693, 4694, 7, 23, 0, 0, 4694, 4695, 7, 10, 0, 0, 4695, 4696, 7, 12, 0, 0, 4696, 894, 1, 0, 0, 0, 4697, 4698, 7, 9, 0, 0, 4698, 4699, 7, 16, 0, 0, 4699, 4700, 7, 19, 0, 0, 4700, 4701, 7, 13, 0, 0, 4701, 4702, 7, 10, 0, 0, 4702, 4703, 7, 12, 0, 0, 4703, 896, 1, 0, 0, 0, 4704, 4705, 7, 17, 0, 0, 4705, 4706, 7, 7, 0, 0, 4706, 4707, 7, 14, 0, 0, 4707, 4708, 7, 6, 0, 0, 4708, 4709, 7, 22, 0, 0, 4709, 4710, 7, 12, 0, 0, 4710, 4711, 7, 10, 0, 0, 4711, 898, 1, 0, 0, 0, 4712, 4713, 7, 13, 0, 0, 4713, 4714, 7, 19, 0, 0, 4714, 4715, 7, 22, 0, 0, 4715, 4716, 7, 16, 0, 0, 4716, 4717, 7, 17, 0, 0, 4717, 4718, 7, 7, 0, 0, 4718, 4719, 7, 10, 0, 0, 4719, 900, 1, 0, 0, 0, 4720, 4721, 7, 16, 0, 0, 4721, 4722, 7, 13, 0, 0, 4722, 4723, 7, 5, 0, 0, 4723, 4724, 7, 7, 0, 0, 4724, 4725, 7, 9, 0, 0, 4725, 4726, 7, 25, 0, 0, 4726, 4727, 7, 19, 0, 0, 4727, 4728, 7, 13, 0, 0, 4728, 4729, 7, 15, 0, 0, 4729, 902, 1, 0, 0, 0, 4730, 4731, 7, 17, 0, 0, 4731, 4732, 7, 15, 0, 0, 4732, 4733, 7, 24, 0, 0, 4733, 4734, 7, 19, 0, 0, 4734, 4735, 7, 13, 0, 0, 4735, 4736, 7, 16, 0, 0, 4736, 904, 1, 0, 0, 0, 4737, 4738, 7, 24, 0, 0, 4738, 4739, 7, 19, 0, 0, 4739, 4740, 7, 6, 0, 0, 4740, 4741, 7, 17, 0, 0, 4741, 4742, 7, 14, 0, 0, 4742, 4743, 7, 8, 0, 0, 4743, 906, 1, 0, 0, 0, 4744, 4745, 7, 15, 0, 0, 4745, 4746, 7, 10, 0, 0, 4746, 4747, 7, 16, 0, 0, 4747, 4748, 7, 20, 0, 0, 4748, 4749, 7, 19, 0, 0, 4749, 4750, 7, 12, 0, 0, 4750, 908, 1, 0, 0, 0, 4751, 4752, 7, 13, 0, 0, 4752, 4753, 7, 10, 0, 0, 4753, 4754, 7, 25, 0, 0, 4754, 4755, 7, 10, 0, 0, 4755, 4756, 7, 13, 0, 0, 4756, 4757, 7, 10, 0, 0, 4757, 4758, 7, 7, 0, 0, 4758, 4759, 7, 14, 0, 0, 4759, 4760, 7, 17, 0, 0, 4760, 4761, 7, 7, 0, 0, 4761, 4762, 7, 23, 0, 0, 4762, 910, 1, 0, 0, 0, 4763, 4764, 7, 7, 0, 0, 4764, 4765, 7, 10, 0, 0, 4765, 4766, 7, 29, 0, 0, 4766, 912, 1, 0, 0, 0, 4767, 4768, 7, 19, 0, 0, 4768, 4769, 7, 6, 0, 0, 4769, 4770, 7, 12, 0, 0, 4770, 914, 1, 0, 0, 0, 4771, 4772, 7, 27, 0, 0, 4772, 4773, 7, 5, 0, 0, 4773, 4774, 7, 6, 0, 0, 4774, 4775, 7, 22, 0, 0, 4775, 4776, 7, 10, 0, 0, 4776, 916, 1, 0, 0, 0, 4777, 4778, 7, 9, 0, 0, 4778, 4779, 7, 22, 0, 0, 4779, 4780, 7, 18, 0, 0, 4780, 4781, 7, 9, 0, 0, 4781, 4782, 7, 14, 0, 0, 4782, 4783, 7, 13, 0, 0, 4783, 4784, 7, 17, 0, 0, 4784, 4785, 7, 24, 0, 0, 4785, 4786, 7, 16, 0, 0, 4786, 4787, 7, 17, 0, 0, 4787, 4788, 7, 19, 0, 0, 4788, 4789, 7, 7, 0, 0, 4789, 918, 1, 0, 0, 0, 4790, 4791, 7, 24, 0, 0, 4791, 4792, 7, 22, 0, 0, 4792, 4793, 7, 18, 0, 0, 4793, 4794, 7, 6, 0, 0, 4794, 4795, 7, 17, 0, 0, 4795, 4796, 7, 14, 0, 0, 4796, 4797, 7, 5, 0, 0, 4797, 4798, 7, 16, 0, 0, 4798, 4799, 7, 17, 0, 0, 4799, 4800, 7, 19, 0, 0, 4800, 4801, 7, 7, 0, 0, 4801, 920, 1, 0, 0, 0, 4802, 4803, 7, 19, 0, 0, 4803, 4804, 7, 22, 0, 0, 4804, 4805, 7, 16, 0, 0, 4805, 922, 1, 0, 0, 0, 4806, 4807, 7, 10, 0, 0, 4807, 4808, 7, 7, 0, 0, 4808, 4809, 7, 12, 0, 0, 4809, 924, 1, 0, 0, 0, 4810, 4811, 7, 13, 0, 0, 4811, 4812, 7, 19, 0, 0, 4812, 4813, 7, 22, 0, 0, 4813, 4814, 7, 16, 0, 0, 4814, 4815, 7, 17, 0, 0, 4815, 4816, 7, 7, 0, 0, 4816, 4817, 7, 10, 0, 0, 4817, 4818, 7, 9, 0, 0, 4818, 926, 1, 0, 0, 0, 4819, 4820, 7, 9, 0, 0, 4820, 4821, 7, 14, 0, 0, 4821, 4822, 7, 20, 0, 0, 4822, 4823, 7, 10, 0, 0, 4823, 4824, 7, 15, 0, 0, 4824, 4825, 7, 5, 0, 0, 4825, 4826, 7, 9, 0, 0, 4826, 928, 1, 0, 0, 0, 4827, 4828, 7, 24, 0, 0, 4828, 4829, 7, 13, 0, 0, 4829, 4830, 7, 19, 0, 0, 4830, 4831, 7, 14, 0, 0, 4831, 4832, 7, 10, 0, 0, 4832, 4833, 7, 12, 0, 0, 4833, 4834, 7, 22, 0, 0, 4834, 4835, 7, 13, 0, 0, 4835, 4836, 7, 10, 0, 0, 4836, 4837, 7, 9, 0, 0, 4837, 930, 1, 0, 0, 0, 4838, 4839, 7, 17, 0, 0, 4839, 4840, 7, 7, 0, 0, 4840, 4841, 7, 24, 0, 0, 4841, 4842, 7, 22, 0, 0, 4842, 4843, 7, 16, 0, 0, 4843, 932, 1, 0, 0, 0, 4844, 4845, 7, 9, 0, 0, 4845, 4846, 7, 22, 0, 0, 4846, 4847, 7, 24, 0, 0, 4847, 4848, 7, 24, 0, 0, 4848, 4849, 7, 19, 0, 0, 4849, 4850, 7, 13, 0, 0, 4850, 4851, 7, 16, 0, 0, 4851, 934, 1, 0, 0, 0, 4852, 4853, 7, 24, 0, 0, 4853, 4854, 7, 5, 0, 0, 4854, 4855, 7, 13, 0, 0, 4855, 4856, 7, 5, 0, 0, 4856, 4857, 7, 6, 0, 0, 4857, 4858, 7, 6, 0, 0, 4858, 4859, 7, 10, 0, 0, 4859, 4860, 7, 6, 0, 0, 4860, 936, 1, 0, 0, 0, 4861, 4862, 7, 9, 0, 0, 4862, 4863, 7, 28, 0, 0, 4863, 4864, 7, 6, 0, 0, 4864, 938, 1, 0, 0, 0, 4865, 4866, 7, 12, 0, 0, 4866, 4867, 7, 10, 0, 0, 4867, 4868, 7, 24, 0, 0, 4868, 4869, 7, 10, 0, 0, 4869, 4870, 7, 7, 0, 0, 4870, 4871, 7, 12, 0, 0, 4871, 4872, 7, 9, 0, 0, 4872, 940, 1, 0, 0, 0, 4873, 4874, 7, 19, 0, 0, 4874, 4875, 7, 27, 0, 0, 4875, 4876, 7, 10, 0, 0, 4876, 4877, 7, 13, 0, 0, 4877, 4878, 7, 13, 0, 0, 4878, 4879, 7, 17, 0, 0, 4879, 4880, 7, 12, 0, 0, 4880, 4881, 7, 17, 0, 0, 4881, 4882, 7, 7, 0, 0, 4882, 4883, 7, 23, 0, 0, 4883, 942, 1, 0, 0, 0, 4884, 4885, 7, 14, 0, 0, 4885, 4886, 7, 19, 0, 0, 4886, 4887, 7, 7, 0, 0, 4887, 4888, 7, 25, 0, 0, 4888, 4889, 7, 6, 0, 0, 4889, 4890, 7, 17, 0, 0, 4890, 4891, 7, 14, 0, 0, 4891, 4892, 7, 16, 0, 0, 4892, 944, 1, 0, 0, 0, 4893, 4894, 7, 9, 0, 0, 4894, 4895, 7, 21, 0, 0, 4895, 4896, 7, 17, 0, 0, 4896, 4897, 7, 24, 0, 0, 4897, 946, 1, 0, 0, 0, 4898, 4899, 7, 6, 0, 0, 4899, 4900, 7, 19, 0, 0, 4900, 4901, 7, 14, 0, 0, 4901, 4902, 7, 21, 0, 0, 4902, 4903, 7, 10, 0, 0, 4903, 4904, 7, 12, 0, 0, 4904, 948, 1, 0, 0, 0, 4905, 4906, 7, 16, 0, 0, 4906, 4907, 7, 17, 0, 0, 4907, 4908, 7, 10, 0, 0, 4908, 4909, 7, 9, 0, 0, 4909, 950, 1, 0, 0, 0, 4910, 4911, 7, 13, 0, 0, 4911, 4912, 7, 19, 0, 0, 4912, 4913, 7, 6, 0, 0, 4913, 4914, 7, 6, 0, 0, 4914, 4915, 7, 22, 0, 0, 4915, 4916, 7, 24, 0, 0, 4916, 952, 1, 0, 0, 0, 4917, 4918, 7, 14, 0, 0, 4918, 4919, 7, 22, 0, 0, 4919, 4920, 7, 18, 0, 0, 4920, 4921, 7, 10, 0, 0, 4921, 954, 1, 0, 0, 0, 4922, 4923, 7, 23, 0, 0, 4923, 4924, 7, 13, 0, 0, 4924, 4925, 7, 19, 0, 0, 4925, 4926, 7, 22, 0, 0, 4926, 4927, 7, 24, 0, 0, 4927, 4928, 7, 17, 0, 0, 4928, 4929, 7, 7, 0, 0, 4929, 4930, 7, 23, 0, 0, 4930, 956, 1, 0, 0, 0, 4931, 4932, 7, 9, 0, 0, 4932, 4933, 7, 10, 0, 0, 4933, 4934, 7, 16, 0, 0, 4934, 4935, 7, 9, 0, 0, 4935, 958, 1, 0, 0, 0, 4936, 4937, 7, 16, 0, 0, 4937, 4938, 7, 5, 0, 0, 4938, 4939, 7, 18, 0, 0, 4939, 4940, 7, 6, 0, 0, 4940, 4941, 7, 10, 0, 0, 4941, 4942, 7, 9, 0, 0, 4942, 4943, 7, 5, 0, 0, 4943, 4944, 7, 15, 0, 0, 4944, 4945, 7, 24, 0, 0, 4945, 4946, 7, 6, 0, 0, 4946, 4947, 7, 10, 0, 0, 4947, 960, 1, 0, 0, 0, 4948, 4949, 7, 19, 0, 0, 4949, 4950, 7, 13, 0, 0, 4950, 4951, 7, 12, 0, 0, 4951, 4952, 7, 17, 0, 0, 4952, 4953, 7, 7, 0, 0, 4953, 4954, 7, 5, 0, 0, 4954, 4955, 7, 6, 0, 0, 4955, 4956, 7, 17, 0, 0, 4956, 4957, 7, 16, 0, 0, 4957, 4958, 7, 8, 0, 0, 4958, 962, 1, 0, 0, 0, 4959, 4960, 7, 26, 0, 0, 4960, 4961, 7, 15, 0, 0, 4961, 4962, 7, 6, 0, 0, 4962, 4963, 7, 16, 0, 0, 4963, 4964, 7, 5, 0, 0, 4964, 4965, 7, 18, 0, 0, 4965, 4966, 7, 6, 0, 0, 4966, 4967, 7, 10, 0, 0, 4967, 964, 1, 0, 0, 0, 4968, 4969, 7, 14, 0, 0, 4969, 4970, 7, 19, 0, 0, 4970, 4971, 7, 6, 0, 0, 4971, 4972, 7, 22, 0, 0, 4972, 4973, 7, 15, 0, 0, 4973, 4974, 7, 7, 0, 0, 4974, 4975, 7, 9, 0, 0, 4975, 966, 1, 0, 0, 0, 4976, 4977, 7, 26, 0, 0, 4977, 4978, 7, 15, 0, 0, 4978, 4979, 7, 6, 0, 0, 4979, 4980, 7, 7, 0, 0, 4980, 4981, 7, 5, 0, 0, 4981, 4982, 7, 15, 0, 0, 4982, 4983, 7, 10, 0, 0, 4983, 4984, 7, 9, 0, 0, 4984, 4985, 7, 24, 0, 0, 4985, 4986, 7, 5, 0, 0, 4986, 4987, 7, 14, 0, 0, 4987, 4988, 7, 10, 0, 0, 4988, 4989, 7, 9, 0, 0, 4989, 968, 1, 0, 0, 0, 4990, 4991, 7, 13, 0, 0, 4991, 4992, 7, 19, 0, 0, 4992, 4993, 7, 29, 0, 0, 4993, 4994, 7, 16, 0, 0, 4994, 4995, 7, 8, 0, 0, 4995, 4996, 7, 24, 0, 0, 4996, 4997, 7, 10, 0, 0, 4997, 970, 1, 0, 0, 0, 4998, 4999, 7, 7, 0, 0, 4999, 5000, 7, 19, 0, 0, 5000, 5001, 7, 13, 0, 0, 5001, 5002, 7, 15, 0, 0, 5002, 5003, 7, 5, 0, 0, 5003, 5004, 7, 6, 0, 0, 5004, 5005, 7, 17, 0, 0, 5005, 5006, 7, 11, 0, 0, 5006, 5007, 7, 10, 0, 0, 5007, 5008, 7, 12, 0, 0, 5008, 972, 1, 0, 0, 0, 5009, 5010, 7, 29, 0, 0, 5010, 5011, 7, 17, 0, 0, 5011, 5012, 7, 16, 0, 0, 5012, 5013, 7, 20, 0, 0, 5013, 5014, 7, 17, 0, 0, 5014, 5015, 7, 7, 0, 0, 5015, 974, 1, 0, 0, 0, 5016, 5017, 7, 25, 0, 0, 5017, 5018, 7, 17, 0, 0, 5018, 5019, 7, 6, 0, 0, 5019, 5020, 7, 16, 0, 0, 5020, 5021, 7, 10, 0, 0, 5021, 5022, 7, 13, 0, 0, 5022, 976, 1, 0, 0, 0, 5023, 5024, 7, 23, 0, 0, 5024, 5025, 7, 13, 0, 0, 5025, 5026, 7, 19, 0, 0, 5026, 5027, 7, 22, 0, 0, 5027, 5028, 7, 24, 0, 0, 5028, 5029, 7, 9, 0, 0, 5029, 978, 1, 0, 0, 0, 5030, 5031, 7, 19, 0, 0, 5031, 5032, 7, 16, 0, 0, 5032, 5033, 7, 20, 0, 0, 5033, 5034, 7, 10, 0, 0, 5034, 5035, 7, 13, 0, 0, 5035, 5036, 7, 9, 0, 0, 5036, 980, 1, 0, 0, 0, 5037, 5038, 7, 7, 0, 0, 5038, 5039, 7, 25, 0, 0, 5039, 5040, 7, 14, 0, 0, 5040, 982, 1, 0, 0, 0, 5041, 5042, 7, 7, 0, 0, 5042, 5043, 7, 25, 0, 0, 5043, 5044, 7, 12, 0, 0, 5044, 984, 1, 0, 0, 0, 5045, 5046, 7, 7, 0, 0, 5046, 5047, 7, 25, 0, 0, 5047, 5048, 7, 21, 0, 0, 5048, 5049, 7, 14, 0, 0, 5049, 986, 1, 0, 0, 0, 5050, 5051, 7, 7, 0, 0, 5051, 5052, 7, 25, 0, 0, 5052, 5053, 7, 21, 0, 0, 5053, 5054, 7, 12, 0, 0, 5054, 988, 1, 0, 0, 0, 5055, 5056, 7, 22, 0, 0, 5056, 5057, 7, 10, 0, 0, 5057, 5058, 7, 9, 0, 0, 5058, 5059, 7, 14, 0, 0, 5059, 5060, 7, 5, 0, 0, 5060, 5061, 7, 24, 0, 0, 5061, 5062, 7, 10, 0, 0, 5062, 990, 1, 0, 0, 0, 5063, 5064, 7, 27, 0, 0, 5064, 5065, 7, 17, 0, 0, 5065, 5066, 7, 10, 0, 0, 5066, 5067, 7, 29, 0, 0, 5067, 5068, 7, 9, 0, 0, 5068, 992, 1, 0, 0, 0, 5069, 5070, 7, 7, 0, 0, 5070, 5071, 7, 19, 0, 0, 5071, 5072, 7, 13, 0, 0, 5072, 5073, 7, 15, 0, 0, 5073, 5074, 7, 5, 0, 0, 5074, 5075, 7, 6, 0, 0, 5075, 5076, 7, 17, 0, 0, 5076, 5077, 7, 11, 0, 0, 5077, 5078, 7, 10, 0, 0, 5078, 994, 1, 0, 0, 0, 5079, 5080, 7, 12, 0, 0, 5080, 5081, 7, 22, 0, 0, 5081, 5082, 7, 15, 0, 0, 5082, 5083, 7, 24, 0, 0, 5083, 996, 1, 0, 0, 0, 5084, 5085, 7, 24, 0, 0, 5085, 5086, 7, 13, 0, 0, 5086, 5087, 7, 17, 0, 0, 5087, 5088, 7, 7, 0, 0, 5088, 5089, 7, 16, 0, 0, 5089, 5090, 5, 95, 0, 0, 5090, 5091, 7, 9, 0, 0, 5091, 5092, 7, 16, 0, 0, 5092, 5093, 7, 13, 0, 0, 5093, 5094, 7, 17, 0, 0, 5094, 5095, 7, 14, 0, 0, 5095, 5096, 7, 16, 0, 0, 5096, 5097, 5, 95, 0, 0, 5097, 5098, 7, 24, 0, 0, 5098, 5099, 7, 5, 0, 0, 5099, 5100, 7, 13, 0, 0, 5100, 5101, 7, 5, 0, 0, 5101, 5102, 7, 15, 0, 0, 5102, 5103, 7, 9, 0, 0, 5103, 998, 1, 0, 0, 0, 5104, 5105, 7, 27, 0, 0, 5105, 5106, 7, 5, 0, 0, 5106, 5107, 7, 13, 0, 0, 5107, 5108, 7, 17, 0, 0, 5108, 5109, 7, 5, 0, 0, 5109, 5110, 7, 18, 0, 0, 5110, 5111, 7, 6, 0, 0, 5111, 5112, 7, 10, 0, 0, 5112, 5113, 5, 95, 0, 0, 5113, 5114, 7, 14, 0, 0, 5114, 5115, 7, 19, 0, 0, 5115, 5116, 7, 7, 0, 0, 5116, 5117, 7, 25, 0, 0, 5117, 5118, 7, 6, 0, 0, 5118, 5119, 7, 17, 0, 0, 5119, 5120, 7, 14, 0, 0, 5120, 5121, 7, 16, 0, 0, 5121, 1000, 1, 0, 0, 0, 5122, 5123, 7, 10, 0, 0, 5123, 5124, 7, 13, 0, 0, 5124, 5125, 7, 13, 0, 0, 5125, 5126, 7, 19, 0, 0, 5126, 5127, 7, 13, 0, 0, 5127, 1002, 1, 0, 0, 0, 5128, 5129, 7, 22, 0, 0, 5129, 5130, 7, 9, 0, 0, 5130, 5131, 7, 10, 0, 0, 5131, 5132, 5, 95, 0, 0, 5132, 5133, 7, 27, 0, 0, 5133, 5134, 7, 5, 0, 0, 5134, 5135, 7, 13, 0, 0, 5135, 5136, 7, 17, 0, 0, 5136, 5137, 7, 5, 0, 0, 5137, 5138, 7, 18, 0, 0, 5138, 5139, 7, 6, 0, 0, 5139, 5140, 7, 10, 0, 0, 5140, 1004, 1, 0, 0, 0, 5141, 5142, 7, 22, 0, 0, 5142, 5143, 7, 9, 0, 0, 5143, 5144, 7, 10, 0, 0, 5144, 5145, 5, 95, 0, 0, 5145, 5146, 7, 14, 0, 0, 5146, 5147, 7, 19, 0, 0, 5147, 5148, 7, 6, 0, 0, 5148, 5149, 7, 22, 0, 0, 5149, 5150, 7, 15, 0, 0, 5150, 5151, 7, 7, 0, 0, 5151, 1006, 1, 0, 0, 0, 5152, 5153, 7, 5, 0, 0, 5153, 5154, 7, 6, 0, 0, 5154, 5155, 7, 17, 0, 0, 5155, 5156, 7, 5, 0, 0, 5156, 5157, 7, 9, 0, 0, 5157, 1008, 1, 0, 0, 0, 5158, 5159, 7, 14, 0, 0, 5159, 5160, 7, 19, 0, 0, 5160, 5161, 7, 7, 0, 0, 5161, 5162, 7, 9, 0, 0, 5162, 5163, 7, 16, 0, 0, 5163, 5164, 7, 5, 0, 0, 5164, 5165, 7, 7, 0, 0, 5165, 5166, 7, 16, 0, 0, 5166, 1010, 1, 0, 0, 0, 5167, 5168, 7, 24, 0, 0, 5168, 5169, 7, 10, 0, 0, 5169, 5170, 7, 13, 0, 0, 5170, 5171, 7, 25, 0, 0, 5171, 5172, 7, 19, 0, 0, 5172, 5173, 7, 13, 0, 0, 5173, 5174, 7, 15, 0, 0, 5174, 1012, 1, 0, 0, 0, 5175, 5176, 7, 23, 0, 0, 5176, 5177, 7, 10, 0, 0, 5177, 5178, 7, 16, 0, 0, 5178, 1014, 1, 0, 0, 0, 5179, 5180, 7, 12, 0, 0, 5180, 5181, 7, 17, 0, 0, 5181, 5182, 7, 5, 0, 0, 5182, 5183, 7, 23, 0, 0, 5183, 5184, 7, 7, 0, 0, 5184, 5185, 7, 19, 0, 0, 5185, 5186, 7, 9, 0, 0, 5186, 5187, 7, 16, 0, 0, 5187, 5188, 7, 17, 0, 0, 5188, 5189, 7, 14, 0, 0, 5189, 5190, 7, 9, 0, 0, 5190, 1016, 1, 0, 0, 0, 5191, 5192, 7, 9, 0, 0, 5192, 5193, 7, 16, 0, 0, 5193, 5194, 7, 5, 0, 0, 5194, 5195, 7, 14, 0, 0, 5195, 5196, 7, 21, 0, 0, 5196, 5197, 7, 10, 0, 0, 5197, 5198, 7, 12, 0, 0, 5198, 1018, 1, 0, 0, 0, 5199, 5200, 7, 10, 0, 0, 5200, 5201, 7, 6, 0, 0, 5201, 5202, 7, 9, 0, 0, 5202, 5203, 7, 17, 0, 0, 5203, 5204, 7, 25, 0, 0, 5204, 1020, 1, 0, 0, 0, 5205, 5206, 7, 29, 0, 0, 5206, 5207, 7, 20, 0, 0, 5207, 5208, 7, 17, 0, 0, 5208, 5209, 7, 6, 0, 0, 5209, 5210, 7, 10, 0, 0, 5210, 1022, 1, 0, 0, 0, 5211, 5212, 7, 13, 0, 0, 5212, 5213, 7, 10, 0, 0, 5213, 5214, 7, 27, 0, 0, 5214, 5215, 7, 10, 0, 0, 5215, 5216, 7, 13, 0, 0, 5216, 5217, 7, 9, 0, 0, 5217, 5218, 7, 10, 0, 0, 5218, 1024, 1, 0, 0, 0, 5219, 5220, 7, 25, 0, 0, 5220, 5221, 7, 19, 0, 0, 5221, 5222, 7, 13, 0, 0, 5222, 5223, 7, 10, 0, 0, 5223, 5224, 7, 5, 0, 0, 5224, 5225, 7, 14, 0, 0, 5225, 5226, 7, 20, 0, 0, 5226, 1026, 1, 0, 0, 0, 5227, 5228, 7, 9, 0, 0, 5228, 5229, 7, 6, 0, 0, 5229, 5230, 7, 17, 0, 0, 5230, 5231, 7, 14, 0, 0, 5231, 5232, 7, 10, 0, 0, 5232, 1028, 1, 0, 0, 0, 5233, 5234, 7, 10, 0, 0, 5234, 5235, 7, 26, 0, 0, 5235, 5236, 7, 17, 0, 0, 5236, 5237, 7, 16, 0, 0, 5237, 1030, 1, 0, 0, 0, 5238, 5239, 7, 13, 0, 0, 5239, 5240, 7, 10, 0, 0, 5240, 5241, 7, 16, 0, 0, 5241, 5242, 7, 22, 0, 0, 5242, 5243, 7, 13, 0, 0, 5243, 5244, 7, 7, 0, 0, 5244, 1032, 1, 0, 0, 0, 5245, 5246, 7, 28, 0, 0, 5246, 5247, 7, 22, 0, 0, 5247, 5248, 7, 10, 0, 0, 5248, 5249, 7, 13, 0, 0, 5249, 5250, 7, 8, 0, 0, 5250, 1034, 1, 0, 0, 0, 5251, 5252, 7, 13, 0, 0, 5252, 5253, 7, 5, 0, 0, 5253, 5254, 7, 17, 0, 0, 5254, 5255, 7, 9, 0, 0, 5255, 5256, 7, 10, 0, 0, 5256, 1036, 1, 0, 0, 0, 5257, 5258, 7, 9, 0, 0, 5258, 5259, 7, 28, 0, 0, 5259, 5260, 7, 6, 0, 0, 5260, 5261, 7, 9, 0, 0, 5261, 5262, 7, 16, 0, 0, 5262, 5263, 7, 5, 0, 0, 5263, 5264, 7, 16, 0, 0, 5264, 5265, 7, 10, 0, 0, 5265, 1038, 1, 0, 0, 0, 5266, 5267, 7, 12, 0, 0, 5267, 5268, 7, 10, 0, 0, 5268, 5269, 7, 18, 0, 0, 5269, 5270, 7, 22, 0, 0, 5270, 5271, 7, 23, 0, 0, 5271, 1040, 1, 0, 0, 0, 5272, 5273, 7, 6, 0, 0, 5273, 5274, 7, 19, 0, 0, 5274, 5275, 7, 23, 0, 0, 5275, 1042, 1, 0, 0, 0, 5276, 5277, 7, 17, 0, 0, 5277, 5278, 7, 7, 0, 0, 5278, 5279, 7, 25, 0, 0, 5279, 5280, 7, 19, 0, 0, 5280, 1044, 1, 0, 0, 0, 5281, 5282, 7, 7, 0, 0, 5282, 5283, 7, 19, 0, 0, 5283, 5284, 7, 16, 0, 0, 5284, 5285, 7, 17, 0, 0, 5285, 5286, 7, 14, 0, 0, 5286, 5287, 7, 10, 0, 0, 5287, 1046, 1, 0, 0, 0, 5288, 5289, 7, 29, 0, 0, 5289, 5290, 7, 5, 0, 0, 5290, 5291, 7, 13, 0, 0, 5291, 5292, 7, 7, 0, 0, 5292, 5293, 7, 17, 0, 0, 5293, 5294, 7, 7, 0, 0, 5294, 5295, 7, 23, 0, 0, 5295, 1048, 1, 0, 0, 0, 5296, 5297, 7, 10, 0, 0, 5297, 5298, 7, 26, 0, 0, 5298, 5299, 7, 14, 0, 0, 5299, 5300, 7, 10, 0, 0, 5300, 5301, 7, 24, 0, 0, 5301, 5302, 7, 16, 0, 0, 5302, 5303, 7, 17, 0, 0, 5303, 5304, 7, 19, 0, 0, 5304, 5305, 7, 7, 0, 0, 5305, 1050, 1, 0, 0, 0, 5306, 5307, 7, 5, 0, 0, 5307, 5308, 7, 9, 0, 0, 5308, 5309, 7, 9, 0, 0, 5309, 5310, 7, 10, 0, 0, 5310, 5311, 7, 13, 0, 0, 5311, 5312, 7, 16, 0, 0, 5312, 1052, 1, 0, 0, 0, 5313, 5314, 7, 6, 0, 0, 5314, 5315, 7, 19, 0, 0, 5315, 5316, 7, 19, 0, 0, 5316, 5317, 7, 24, 0, 0, 5317, 1054, 1, 0, 0, 0, 5318, 5319, 7, 19, 0, 0, 5319, 5320, 7, 24, 0, 0, 5320, 5321, 7, 10, 0, 0, 5321, 5322, 7, 7, 0, 0, 5322, 1056, 1, 0, 0, 0, 5323, 5324, 7, 5, 0, 0, 5324, 5325, 7, 18, 0, 0, 5325, 5326, 7, 9, 0, 0, 5326, 1058, 1, 0, 0, 0, 5327, 5328, 7, 14, 0, 0, 5328, 5329, 7, 18, 0, 0, 5329, 5330, 7, 13, 0, 0, 5330, 5331, 7, 16, 0, 0, 5331, 1060, 1, 0, 0, 0, 5332, 5333, 7, 14, 0, 0, 5333, 5334, 7, 10, 0, 0, 5334, 5335, 7, 17, 0, 0, 5335, 5336, 7, 6, 0, 0, 5336, 1062, 1, 0, 0, 0, 5337, 5338, 7, 14, 0, 0, 5338, 5339, 7, 10, 0, 0, 5339, 5340, 7, 17, 0, 0, 5340, 5341, 7, 6, 0, 0, 5341, 5342, 7, 17, 0, 0, 5342, 5343, 7, 7, 0, 0, 5343, 5344, 7, 23, 0, 0, 5344, 1064, 1, 0, 0, 0, 5345, 5346, 7, 12, 0, 0, 5346, 5347, 7, 10, 0, 0, 5347, 5348, 7, 23, 0, 0, 5348, 5349, 7, 13, 0, 0, 5349, 5350, 7, 10, 0, 0, 5350, 5351, 7, 10, 0, 0, 5351, 5352, 7, 9, 0, 0, 5352, 1066, 1, 0, 0, 0, 5353, 5354, 7, 12, 0, 0, 5354, 5355, 7, 17, 0, 0, 5355, 5356, 7, 27, 0, 0, 5356, 1068, 1, 0, 0, 0, 5357, 5358, 7, 10, 0, 0, 5358, 5359, 7, 26, 0, 0, 5359, 5360, 7, 24, 0, 0, 5360, 1070, 1, 0, 0, 0, 5361, 5362, 7, 25, 0, 0, 5362, 5363, 7, 5, 0, 0, 5363, 5364, 7, 14, 0, 0, 5364, 5365, 7, 16, 0, 0, 5365, 5366, 7, 19, 0, 0, 5366, 5367, 7, 13, 0, 0, 5367, 5368, 7, 17, 0, 0, 5368, 5369, 7, 5, 0, 0, 5369, 5370, 7, 6, 0, 0, 5370, 1072, 1, 0, 0, 0, 5371, 5372, 7, 25, 0, 0, 5372, 5373, 7, 6, 0, 0, 5373, 5374, 7, 19, 0, 0, 5374, 5375, 7, 19, 0, 0, 5375, 5376, 7, 13, 0, 0, 5376, 1074, 1, 0, 0, 0, 5377, 5378, 7, 23, 0, 0, 5378, 5379, 7, 14, 0, 0, 5379, 5380, 7, 12, 0, 0, 5380, 1076, 1, 0, 0, 0, 5381, 5382, 7, 6, 0, 0, 5382, 5383, 7, 14, 0, 0, 5383, 5384, 7, 15, 0, 0, 5384, 1078, 1, 0, 0, 0, 5385, 5386, 7, 6, 0, 0, 5386, 5387, 7, 7, 0, 0, 5387, 1080, 1, 0, 0, 0, 5388, 5389, 7, 6, 0, 0, 5389, 5390, 7, 19, 0, 0, 5390, 5391, 7, 23, 0, 0, 5391, 5392, 5, 49, 0, 0, 5392, 5393, 5, 48, 0, 0, 5393, 1082, 1, 0, 0, 0, 5394, 5395, 7, 15, 0, 0, 5395, 5396, 7, 17, 0, 0, 5396, 5397, 7, 7, 0, 0, 5397, 5398, 5, 95, 0, 0, 5398, 5399, 7, 9, 0, 0, 5399, 5400, 7, 14, 0, 0, 5400, 5401, 7, 5, 0, 0, 5401, 5402, 7, 6, 0, 0, 5402, 5403, 7, 10, 0, 0, 5403, 1084, 1, 0, 0, 0, 5404, 5405, 7, 15, 0, 0, 5405, 5406, 7, 19, 0, 0, 5406, 5407, 7, 12, 0, 0, 5407, 1086, 1, 0, 0, 0, 5408, 5409, 7, 24, 0, 0, 5409, 5410, 7, 17, 0, 0, 5410, 1088, 1, 0, 0, 0, 5411, 5412, 7, 24, 0, 0, 5412, 5413, 7, 19, 0, 0, 5413, 5414, 7, 29, 0, 0, 5414, 5415, 7, 10, 0, 0, 5415, 5416, 7, 13, 0, 0, 5416, 1090, 1, 0, 0, 0, 5417, 5418, 7, 13, 0, 0, 5418, 5419, 7, 5, 0, 0, 5419, 5420, 7, 12, 0, 0, 5420, 5421, 7, 17, 0, 0, 5421, 5422, 7, 5, 0, 0, 5422, 5423, 7, 7, 0, 0, 5423, 5424, 7, 9, 0, 0, 5424, 1092, 1, 0, 0, 0, 5425, 5426, 7, 13, 0, 0, 5426, 5427, 7, 19, 0, 0, 5427, 5428, 7, 22, 0, 0, 5428, 5429, 7, 7, 0, 0, 5429, 5430, 7, 12, 0, 0, 5430, 1094, 1, 0, 0, 0, 5431, 5432, 7, 9, 0, 0, 5432, 5433, 7, 14, 0, 0, 5433, 5434, 7, 5, 0, 0, 5434, 5435, 7, 6, 0, 0, 5435, 5436, 7, 10, 0, 0, 5436, 1096, 1, 0, 0, 0, 5437, 5438, 7, 9, 0, 0, 5438, 5439, 7, 17, 0, 0, 5439, 5440, 7, 23, 0, 0, 5440, 5441, 7, 7, 0, 0, 5441, 1098, 1, 0, 0, 0, 5442, 5443, 7, 9, 0, 0, 5443, 5444, 7, 28, 0, 0, 5444, 5445, 7, 13, 0, 0, 5445, 5446, 7, 16, 0, 0, 5446, 1100, 1, 0, 0, 0, 5447, 5448, 7, 16, 0, 0, 5448, 5449, 7, 13, 0, 0, 5449, 5450, 7, 17, 0, 0, 5450, 5451, 7, 15, 0, 0, 5451, 5452, 5, 95, 0, 0, 5452, 5453, 7, 9, 0, 0, 5453, 5454, 7, 14, 0, 0, 5454, 5455, 7, 5, 0, 0, 5455, 5456, 7, 6, 0, 0, 5456, 5457, 7, 10, 0, 0, 5457, 1102, 1, 0, 0, 0, 5458, 5459, 7, 16, 0, 0, 5459, 5460, 7, 13, 0, 0, 5460, 5461, 7, 22, 0, 0, 5461, 5462, 7, 7, 0, 0, 5462, 5463, 7, 14, 0, 0, 5463, 1104, 1, 0, 0, 0, 5464, 5465, 7, 29, 0, 0, 5465, 5466, 7, 17, 0, 0, 5466, 5467, 7, 12, 0, 0, 5467, 5468, 7, 16, 0, 0, 5468, 5469, 7, 20, 0, 0, 5469, 5470, 5, 95, 0, 0, 5470, 5471, 7, 18, 0, 0, 5471, 5472, 7, 22, 0, 0, 5472, 5473, 7, 14, 0, 0, 5473, 5474, 7, 21, 0, 0, 5474, 5475, 7, 10, 0, 0, 5475, 5476, 7, 16, 0, 0, 5476, 1106, 1, 0, 0, 0, 5477, 5478, 7, 13, 0, 0, 5478, 5479, 7, 5, 0, 0, 5479, 5480, 7, 7, 0, 0, 5480, 5481, 7, 12, 0, 0, 5481, 5482, 7, 19, 0, 0, 5482, 5483, 7, 15, 0, 0, 5483, 1108, 1, 0, 0, 0, 5484, 5485, 7, 9, 0, 0, 5485, 5486, 7, 10, 0, 0, 5486, 5487, 7, 16, 0, 0, 5487, 5488, 7, 9, 0, 0, 5488, 5489, 7, 10, 0, 0, 5489, 5490, 7, 10, 0, 0, 5490, 5491, 7, 12, 0, 0, 5491, 1110, 1, 0, 0, 0, 5492, 5493, 7, 5, 0, 0, 5493, 5494, 7, 14, 0, 0, 5494, 5495, 7, 19, 0, 0, 5495, 5496, 7, 9, 0, 0, 5496, 1112, 1, 0, 0, 0, 5497, 5498, 7, 5, 0, 0, 5498, 5499, 7, 14, 0, 0, 5499, 5500, 7, 19, 0, 0, 5500, 5501, 7, 9, 0, 0, 5501, 5502, 7, 12, 0, 0, 5502, 1114, 1, 0, 0, 0, 5503, 5504, 7, 5, 0, 0, 5504, 5505, 7, 9, 0, 0, 5505, 5506, 7, 17, 0, 0, 5506, 5507, 7, 7, 0, 0, 5507, 1116, 1, 0, 0, 0, 5508, 5509, 7, 5, 0, 0, 5509, 5510, 7, 9, 0, 0, 5510, 5511, 7, 17, 0, 0, 5511, 5512, 7, 7, 0, 0, 5512, 5513, 7, 12, 0, 0, 5513, 1118, 1, 0, 0, 0, 5514, 5515, 7, 5, 0, 0, 5515, 5516, 7, 16, 0, 0, 5516, 5517, 7, 5, 0, 0, 5517, 5518, 7, 7, 0, 0, 5518, 1120, 1, 0, 0, 0, 5519, 5520, 7, 5, 0, 0, 5520, 5521, 7, 16, 0, 0, 5521, 5522, 7, 5, 0, 0, 5522, 5523, 7, 7, 0, 0, 5523, 5524, 7, 12, 0, 0, 5524, 1122, 1, 0, 0, 0, 5525, 5526, 7, 5, 0, 0, 5526, 5527, 7, 16, 0, 0, 5527, 5528, 7, 5, 0, 0, 5528, 5529, 7, 7, 0, 0, 5529, 5530, 5, 50, 0, 0, 5530, 1124, 1, 0, 0, 0, 5531, 5532, 7, 5, 0, 0, 5532, 5533, 7, 16, 0, 0, 5533, 5534, 7, 5, 0, 0, 5534, 5535, 7, 7, 0, 0, 5535, 5536, 5, 50, 0, 0, 5536, 5537, 7, 12, 0, 0, 5537, 1126, 1, 0, 0, 0, 5538, 5539, 7, 14, 0, 0, 5539, 5540, 7, 19, 0, 0, 5540, 5541, 7, 9, 0, 0, 5541, 1128, 1, 0, 0, 0, 5542, 5543, 7, 14, 0, 0, 5543, 5544, 7, 19, 0, 0, 5544, 5545, 7, 9, 0, 0, 5545, 5546, 7, 12, 0, 0, 5546, 1130, 1, 0, 0, 0, 5547, 5548, 7, 14, 0, 0, 5548, 5549, 7, 19, 0, 0, 5549, 5550, 7, 16, 0, 0, 5550, 1132, 1, 0, 0, 0, 5551, 5552, 7, 14, 0, 0, 5552, 5553, 7, 19, 0, 0, 5553, 5554, 7, 16, 0, 0, 5554, 5555, 7, 12, 0, 0, 5555, 1134, 1, 0, 0, 0, 5556, 5557, 7, 9, 0, 0, 5557, 5558, 7, 17, 0, 0, 5558, 5559, 7, 7, 0, 0, 5559, 1136, 1, 0, 0, 0, 5560, 5561, 7, 9, 0, 0, 5561, 5562, 7, 17, 0, 0, 5562, 5563, 7, 7, 0, 0, 5563, 5564, 7, 12, 0, 0, 5564, 1138, 1, 0, 0, 0, 5565, 5566, 7, 16, 0, 0, 5566, 5567, 7, 5, 0, 0, 5567, 5568, 7, 7, 0, 0, 5568, 1140, 1, 0, 0, 0, 5569, 5570, 7, 16, 0, 0, 5570, 5571, 7, 5, 0, 0, 5571, 5572, 7, 7, 0, 0, 5572, 5573, 7, 12, 0, 0, 5573, 1142, 1, 0, 0, 0, 5574, 5575, 7, 9, 0, 0, 5575, 5576, 7, 17, 0, 0, 5576, 5577, 7, 7, 0, 0, 5577, 5578, 7, 20, 0, 0, 5578, 1144, 1, 0, 0, 0, 5579, 5580, 7, 14, 0, 0, 5580, 5581, 7, 19, 0, 0, 5581, 5582, 7, 9, 0, 0, 5582, 5583, 7, 20, 0, 0, 5583, 1146, 1, 0, 0, 0, 5584, 5585, 7, 16, 0, 0, 5585, 5586, 7, 5, 0, 0, 5586, 5587, 7, 7, 0, 0, 5587, 5588, 7, 20, 0, 0, 5588, 1148, 1, 0, 0, 0, 5589, 5590, 7, 5, 0, 0, 5590, 5591, 7, 9, 0, 0, 5591, 5592, 7, 17, 0, 0, 5592, 5593, 7, 7, 0, 0, 5593, 5594, 7, 20, 0, 0, 5594, 1150, 1, 0, 0, 0, 5595, 5596, 7, 5, 0, 0, 5596, 5597, 7, 14, 0, 0, 5597, 5598, 7, 19, 0, 0, 5598, 5599, 7, 9, 0, 0, 5599, 5600, 7, 20, 0, 0, 5600, 1152, 1, 0, 0, 0, 5601, 5602, 7, 5, 0, 0, 5602, 5603, 7, 16, 0, 0, 5603, 5604, 7, 5, 0, 0, 5604, 5605, 7, 7, 0, 0, 5605, 5606, 7, 20, 0, 0, 5606, 1154, 1, 0, 0, 0, 5607, 5608, 7, 18, 0, 0, 5608, 5609, 7, 17, 0, 0, 5609, 5610, 7, 16, 0, 0, 5610, 5611, 5, 95, 0, 0, 5611, 5612, 7, 6, 0, 0, 5612, 5613, 7, 10, 0, 0, 5613, 5614, 7, 7, 0, 0, 5614, 5615, 7, 23, 0, 0, 5615, 5616, 7, 16, 0, 0, 5616, 5617, 7, 20, 0, 0, 5617, 1156, 1, 0, 0, 0, 5618, 5619, 7, 14, 0, 0, 5619, 5620, 7, 20, 0, 0, 5620, 5621, 7, 5, 0, 0, 5621, 5622, 7, 13, 0, 0, 5622, 5623, 5, 95, 0, 0, 5623, 5624, 7, 6, 0, 0, 5624, 5625, 7, 10, 0, 0, 5625, 5626, 7, 7, 0, 0, 5626, 5627, 7, 23, 0, 0, 5627, 5628, 7, 16, 0, 0, 5628, 5629, 7, 20, 0, 0, 5629, 1158, 1, 0, 0, 0, 5630, 5631, 7, 14, 0, 0, 5631, 5632, 7, 20, 0, 0, 5632, 5633, 7, 5, 0, 0, 5633, 5634, 7, 13, 0, 0, 5634, 5635, 7, 5, 0, 0, 5635, 5636, 7, 14, 0, 0, 5636, 5637, 7, 16, 0, 0, 5637, 5638, 7, 10, 0, 0, 5638, 5639, 7, 13, 0, 0, 5639, 5640, 5, 95, 0, 0, 5640, 5641, 7, 6, 0, 0, 5641, 5642, 7, 10, 0, 0, 5642, 5643, 7, 7, 0, 0, 5643, 5644, 7, 23, 0, 0, 5644, 5645, 7, 16, 0, 0, 5645, 5646, 7, 20, 0, 0, 5646, 1160, 1, 0, 0, 0, 5647, 5648, 7, 6, 0, 0, 5648, 5649, 7, 19, 0, 0, 5649, 5650, 7, 29, 0, 0, 5650, 5651, 7, 10, 0, 0, 5651, 5652, 7, 13, 0, 0, 5652, 1162, 1, 0, 0, 0, 5653, 5654, 7, 19, 0, 0, 5654, 5655, 7, 14, 0, 0, 5655, 5656, 7, 16, 0, 0, 5656, 5657, 7, 10, 0, 0, 5657, 5658, 7, 16, 0, 0, 5658, 5659, 5, 95, 0, 0, 5659, 5660, 7, 6, 0, 0, 5660, 5661, 7, 10, 0, 0, 5661, 5662, 7, 7, 0, 0, 5662, 5663, 7, 23, 0, 0, 5663, 5664, 7, 16, 0, 0, 5664, 5665, 7, 20, 0, 0, 5665, 1164, 1, 0, 0, 0, 5666, 5667, 7, 22, 0, 0, 5667, 5668, 7, 24, 0, 0, 5668, 5669, 7, 24, 0, 0, 5669, 5670, 7, 10, 0, 0, 5670, 5671, 7, 13, 0, 0, 5671, 1166, 1, 0, 0, 0, 5672, 5673, 7, 5, 0, 0, 5673, 5674, 7, 9, 0, 0, 5674, 5675, 7, 14, 0, 0, 5675, 5676, 7, 17, 0, 0, 5676, 5677, 7, 17, 0, 0, 5677, 1168, 1, 0, 0, 0, 5678, 5679, 7, 18, 0, 0, 5679, 5680, 7, 16, 0, 0, 5680, 5681, 7, 13, 0, 0, 5681, 5682, 7, 17, 0, 0, 5682, 5683, 7, 15, 0, 0, 5683, 1170, 1, 0, 0, 0, 5684, 5685, 7, 14, 0, 0, 5685, 5686, 7, 20, 0, 0, 5686, 5687, 7, 13, 0, 0, 5687, 1172, 1, 0, 0, 0, 5688, 5689, 7, 14, 0, 0, 5689, 5690, 7, 19, 0, 0, 5690, 5691, 7, 7, 0, 0, 5691, 5692, 7, 14, 0, 0, 5692, 5693, 7, 5, 0, 0, 5693, 5694, 7, 16, 0, 0, 5694, 1174, 1, 0, 0, 0, 5695, 5696, 7, 14, 0, 0, 5696, 5697, 7, 19, 0, 0, 5697, 5698, 7, 7, 0, 0, 5698, 5699, 7, 14, 0, 0, 5699, 5700, 7, 5, 0, 0, 5700, 5701, 7, 16, 0, 0, 5701, 5702, 5, 95, 0, 0, 5702, 5703, 7, 29, 0, 0, 5703, 5704, 7, 9, 0, 0, 5704, 1176, 1, 0, 0, 0, 5705, 5706, 7, 25, 0, 0, 5706, 5707, 7, 19, 0, 0, 5707, 5708, 7, 13, 0, 0, 5708, 5709, 7, 15, 0, 0, 5709, 5710, 7, 5, 0, 0, 5710, 5711, 7, 16, 0, 0, 5711, 1178, 1, 0, 0, 0, 5712, 5713, 7, 17, 0, 0, 5713, 5714, 7, 7, 0, 0, 5714, 5715, 7, 17, 0, 0, 5715, 5716, 7, 16, 0, 0, 5716, 5717, 7, 14, 0, 0, 5717, 5718, 7, 5, 0, 0, 5718, 5719, 7, 24, 0, 0, 5719, 1180, 1, 0, 0, 0, 5720, 5721, 7, 6, 0, 0, 5721, 5722, 7, 10, 0, 0, 5722, 5723, 7, 7, 0, 0, 5723, 5724, 7, 23, 0, 0, 5724, 5725, 7, 16, 0, 0, 5725, 5726, 7, 20, 0, 0, 5726, 1182, 1, 0, 0, 0, 5727, 5728, 7, 6, 0, 0, 5728, 5729, 7, 24, 0, 0, 5729, 5730, 7, 5, 0, 0, 5730, 5731, 7, 12, 0, 0, 5731, 1184, 1, 0, 0, 0, 5732, 5733, 7, 6, 0, 0, 5733, 5734, 7, 16, 0, 0, 5734, 5735, 7, 13, 0, 0, 5735, 5736, 7, 17, 0, 0, 5736, 5737, 7, 15, 0, 0, 5737, 1186, 1, 0, 0, 0, 5738, 5739, 7, 15, 0, 0, 5739, 5740, 7, 12, 0, 0, 5740, 5741, 5, 53, 0, 0, 5741, 1188, 1, 0, 0, 0, 5742, 5743, 7, 24, 0, 0, 5743, 5744, 7, 5, 0, 0, 5744, 5745, 7, 13, 0, 0, 5745, 5746, 7, 9, 0, 0, 5746, 5747, 7, 10, 0, 0, 5747, 5748, 5, 95, 0, 0, 5748, 5749, 7, 17, 0, 0, 5749, 5750, 7, 12, 0, 0, 5750, 5751, 7, 10, 0, 0, 5751, 5752, 7, 7, 0, 0, 5752, 5753, 7, 16, 0, 0, 5753, 1190, 1, 0, 0, 0, 5754, 5755, 7, 24, 0, 0, 5755, 5756, 7, 23, 0, 0, 5756, 5757, 5, 95, 0, 0, 5757, 5758, 7, 14, 0, 0, 5758, 5759, 7, 6, 0, 0, 5759, 5760, 7, 17, 0, 0, 5760, 5761, 7, 10, 0, 0, 5761, 5762, 7, 7, 0, 0, 5762, 5763, 7, 16, 0, 0, 5763, 5764, 5, 95, 0, 0, 5764, 5765, 7, 10, 0, 0, 5765, 5766, 7, 7, 0, 0, 5766, 5767, 7, 14, 0, 0, 5767, 5768, 7, 19, 0, 0, 5768, 5769, 7, 12, 0, 0, 5769, 5770, 7, 17, 0, 0, 5770, 5771, 7, 7, 0, 0, 5771, 5772, 7, 23, 0, 0, 5772, 1192, 1, 0, 0, 0, 5773, 5774, 7, 28, 0, 0, 5774, 5775, 7, 22, 0, 0, 5775, 5776, 7, 19, 0, 0, 5776, 5777, 7, 16, 0, 0, 5777, 5778, 7, 10, 0, 0, 5778, 5779, 5, 95, 0, 0, 5779, 5780, 7, 17, 0, 0, 5780, 5781, 7, 12, 0, 0, 5781, 5782, 7, 10, 0, 0, 5782, 5783, 7, 7, 0, 0, 5783, 5784, 7, 16, 0, 0, 5784, 1194, 1, 0, 0, 0, 5785, 5786, 7, 28, 0, 0, 5786, 5787, 7, 22, 0, 0, 5787, 5788, 7, 19, 0, 0, 5788, 5789, 7, 16, 0, 0, 5789, 5790, 7, 10, 0, 0, 5790, 5791, 5, 95, 0, 0, 5791, 5792, 7, 6, 0, 0, 5792, 5793, 7, 17, 0, 0, 5793, 5794, 7, 16, 0, 0, 5794, 5795, 7, 10, 0, 0, 5795, 5796, 7, 13, 0, 0, 5796, 5797, 7, 5, 0, 0, 5797, 5798, 7, 6, 0, 0, 5798, 1196, 1, 0, 0, 0, 5799, 5800, 7, 28, 0, 0, 5800, 5801, 7, 22, 0, 0, 5801, 5802, 7, 19, 0, 0, 5802, 5803, 7, 16, 0, 0, 5803, 5804, 7, 10, 0, 0, 5804, 5805, 5, 95, 0, 0, 5805, 5806, 7, 7, 0, 0, 5806, 5807, 7, 22, 0, 0, 5807, 5808, 7, 6, 0, 0, 5808, 5809, 7, 6, 0, 0, 5809, 5810, 7, 5, 0, 0, 5810, 5811, 7, 18, 0, 0, 5811, 5812, 7, 6, 0, 0, 5812, 5813, 7, 10, 0, 0, 5813, 1198, 1, 0, 0, 0, 5814, 5815, 7, 13, 0, 0, 5815, 5816, 7, 10, 0, 0, 5816, 5817, 7, 23, 0, 0, 5817, 5818, 7, 10, 0, 0, 5818, 5819, 7, 26, 0, 0, 5819, 5820, 7, 24, 0, 0, 5820, 5821, 5, 95, 0, 0, 5821, 5822, 7, 14, 0, 0, 5822, 5823, 7, 19, 0, 0, 5823, 5824, 7, 22, 0, 0, 5824, 5825, 7, 7, 0, 0, 5825, 5826, 7, 16, 0, 0, 5826, 1200, 1, 0, 0, 0, 5827, 5828, 7, 13, 0, 0, 5828, 5829, 7, 10, 0, 0, 5829, 5830, 7, 23, 0, 0, 5830, 5831, 7, 10, 0, 0, 5831, 5832, 7, 26, 0, 0, 5832, 5833, 7, 24, 0, 0, 5833, 5834, 5, 95, 0, 0, 5834, 5835, 7, 17, 0, 0, 5835, 5836, 7, 7, 0, 0, 5836, 5837, 7, 9, 0, 0, 5837, 5838, 7, 16, 0, 0, 5838, 5839, 7, 13, 0, 0, 5839, 1202, 1, 0, 0, 0, 5840, 5841, 7, 13, 0, 0, 5841, 5842, 7, 10, 0, 0, 5842, 5843, 7, 23, 0, 0, 5843, 5844, 7, 10, 0, 0, 5844, 5845, 7, 26, 0, 0, 5845, 5846, 7, 24, 0, 0, 5846, 5847, 5, 95, 0, 0, 5847, 5848, 7, 6, 0, 0, 5848, 5849, 7, 17, 0, 0, 5849, 5850, 7, 21, 0, 0, 5850, 5851, 7, 10, 0, 0, 5851, 1204, 1, 0, 0, 0, 5852, 5853, 7, 13, 0, 0, 5853, 5854, 7, 10, 0, 0, 5854, 5855, 7, 23, 0, 0, 5855, 5856, 7, 10, 0, 0, 5856, 5857, 7, 26, 0, 0, 5857, 5858, 7, 24, 0, 0, 5858, 5859, 5, 95, 0, 0, 5859, 5860, 7, 15, 0, 0, 5860, 5861, 7, 5, 0, 0, 5861, 5862, 7, 16, 0, 0, 5862, 5863, 7, 14, 0, 0, 5863, 5864, 7, 20, 0, 0, 5864, 1206, 1, 0, 0, 0, 5865, 5866, 7, 13, 0, 0, 5866, 5867, 7, 10, 0, 0, 5867, 5868, 7, 23, 0, 0, 5868, 5869, 7, 10, 0, 0, 5869, 5870, 7, 26, 0, 0, 5870, 5871, 7, 24, 0, 0, 5871, 5872, 5, 95, 0, 0, 5872, 5873, 7, 15, 0, 0, 5873, 5874, 7, 5, 0, 0, 5874, 5875, 7, 16, 0, 0, 5875, 5876, 7, 14, 0, 0, 5876, 5877, 7, 20, 0, 0, 5877, 5878, 7, 10, 0, 0, 5878, 5879, 7, 9, 0, 0, 5879, 1208, 1, 0, 0, 0, 5880, 5881, 7, 13, 0, 0, 5881, 5882, 7, 10, 0, 0, 5882, 5883, 7, 23, 0, 0, 5883, 5884, 7, 10, 0, 0, 5884, 5885, 7, 26, 0, 0, 5885, 5886, 7, 24, 0, 0, 5886, 5887, 5, 95, 0, 0, 5887, 5888, 7, 13, 0, 0, 5888, 5889, 7, 10, 0, 0, 5889, 5890, 7, 24, 0, 0, 5890, 5891, 7, 6, 0, 0, 5891, 5892, 7, 5, 0, 0, 5892, 5893, 7, 14, 0, 0, 5893, 5894, 7, 10, 0, 0, 5894, 1210, 1, 0, 0, 0, 5895, 5896, 7, 13, 0, 0, 5896, 5897, 7, 10, 0, 0, 5897, 5898, 7, 23, 0, 0, 5898, 5899, 7, 10, 0, 0, 5899, 5900, 7, 26, 0, 0, 5900, 5901, 7, 24, 0, 0, 5901, 5902, 5, 95, 0, 0, 5902, 5903, 7, 9, 0, 0, 5903, 5904, 7, 24, 0, 0, 5904, 5905, 7, 6, 0, 0, 5905, 5906, 7, 17, 0, 0, 5906, 5907, 7, 16, 0, 0, 5907, 5908, 5, 95, 0, 0, 5908, 5909, 7, 16, 0, 0, 5909, 5910, 7, 19, 0, 0, 5910, 5911, 5, 95, 0, 0, 5911, 5912, 7, 5, 0, 0, 5912, 5913, 7, 13, 0, 0, 5913, 5914, 7, 13, 0, 0, 5914, 5915, 7, 5, 0, 0, 5915, 5916, 7, 8, 0, 0, 5916, 1212, 1, 0, 0, 0, 5917, 5918, 7, 13, 0, 0, 5918, 5919, 7, 10, 0, 0, 5919, 5920, 7, 23, 0, 0, 5920, 5921, 7, 10, 0, 0, 5921, 5922, 7, 26, 0, 0, 5922, 5923, 7, 24, 0, 0, 5923, 5924, 5, 95, 0, 0, 5924, 5925, 7, 9, 0, 0, 5925, 5926, 7, 24, 0, 0, 5926, 5927, 7, 6, 0, 0, 5927, 5928, 7, 17, 0, 0, 5928, 5929, 7, 16, 0, 0, 5929, 5930, 5, 95, 0, 0, 5930, 5931, 7, 16, 0, 0, 5931, 5932, 7, 19, 0, 0, 5932, 5933, 5, 95, 0, 0, 5933, 5934, 7, 16, 0, 0, 5934, 5935, 7, 5, 0, 0, 5935, 5936, 7, 18, 0, 0, 5936, 5937, 7, 6, 0, 0, 5937, 5938, 7, 10, 0, 0, 5938, 1214, 1, 0, 0, 0, 5939, 5940, 7, 13, 0, 0, 5940, 5941, 7, 10, 0, 0, 5941, 5942, 7, 23, 0, 0, 5942, 5943, 7, 10, 0, 0, 5943, 5944, 7, 26, 0, 0, 5944, 5945, 7, 24, 0, 0, 5945, 5946, 5, 95, 0, 0, 5946, 5947, 7, 9, 0, 0, 5947, 5948, 7, 22, 0, 0, 5948, 5949, 7, 18, 0, 0, 5949, 5950, 7, 9, 0, 0, 5950, 5951, 7, 16, 0, 0, 5951, 5952, 7, 13, 0, 0, 5952, 1216, 1, 0, 0, 0, 5953, 5954, 7, 13, 0, 0, 5954, 5955, 7, 10, 0, 0, 5955, 5956, 7, 24, 0, 0, 5956, 5957, 7, 10, 0, 0, 5957, 5958, 7, 5, 0, 0, 5958, 5959, 7, 16, 0, 0, 5959, 1218, 1, 0, 0, 0, 5960, 5961, 7, 13, 0, 0, 5961, 5962, 7, 24, 0, 0, 5962, 5963, 7, 5, 0, 0, 5963, 5964, 7, 12, 0, 0, 5964, 1220, 1, 0, 0, 0, 5965, 5966, 7, 13, 0, 0, 5966, 5967, 7, 16, 0, 0, 5967, 5968, 7, 13, 0, 0, 5968, 5969, 7, 17, 0, 0, 5969, 5970, 7, 15, 0, 0, 5970, 1222, 1, 0, 0, 0, 5971, 5972, 7, 9, 0, 0, 5972, 5973, 7, 24, 0, 0, 5973, 5974, 7, 6, 0, 0, 5974, 5975, 7, 17, 0, 0, 5975, 5976, 7, 16, 0, 0, 5976, 5977, 5, 95, 0, 0, 5977, 5978, 7, 24, 0, 0, 5978, 5979, 7, 5, 0, 0, 5979, 5980, 7, 13, 0, 0, 5980, 5981, 7, 16, 0, 0, 5981, 1224, 1, 0, 0, 0, 5982, 5983, 7, 9, 0, 0, 5983, 5984, 7, 16, 0, 0, 5984, 5985, 7, 5, 0, 0, 5985, 5986, 7, 13, 0, 0, 5986, 5987, 7, 16, 0, 0, 5987, 5988, 7, 9, 0, 0, 5988, 5989, 5, 95, 0, 0, 5989, 5990, 7, 29, 0, 0, 5990, 5991, 7, 17, 0, 0, 5991, 5992, 7, 16, 0, 0, 5992, 5993, 7, 20, 0, 0, 5993, 1226, 1, 0, 0, 0, 5994, 5995, 7, 9, 0, 0, 5995, 5996, 7, 16, 0, 0, 5996, 5997, 7, 13, 0, 0, 5997, 5998, 7, 17, 0, 0, 5998, 5999, 7, 7, 0, 0, 5999, 6000, 7, 23, 0, 0, 6000, 6001, 5, 95, 0, 0, 6001, 6002, 7, 16, 0, 0, 6002, 6003, 7, 19, 0, 0, 6003, 6004, 5, 95, 0, 0, 6004, 6005, 7, 5, 0, 0, 6005, 6006, 7, 13, 0, 0, 6006, 6007, 7, 13, 0, 0, 6007, 6008, 7, 5, 0, 0, 6008, 6009, 7, 8, 0, 0, 6009, 1228, 1, 0, 0, 0, 6010, 6011, 7, 9, 0, 0, 6011, 6012, 7, 16, 0, 0, 6012, 6013, 7, 13, 0, 0, 6013, 6014, 7, 17, 0, 0, 6014, 6015, 7, 7, 0, 0, 6015, 6016, 7, 23, 0, 0, 6016, 6017, 5, 95, 0, 0, 6017, 6018, 7, 16, 0, 0, 6018, 6019, 7, 19, 0, 0, 6019, 6020, 5, 95, 0, 0, 6020, 6021, 7, 16, 0, 0, 6021, 6022, 7, 5, 0, 0, 6022, 6023, 7, 18, 0, 0, 6023, 6024, 7, 6, 0, 0, 6024, 6025, 7, 10, 0, 0, 6025, 1230, 1, 0, 0, 0, 6026, 6027, 7, 9, 0, 0, 6027, 6028, 7, 16, 0, 0, 6028, 6029, 7, 13, 0, 0, 6029, 6030, 7, 24, 0, 0, 6030, 6031, 7, 19, 0, 0, 6031, 6032, 7, 9, 0, 0, 6032, 1232, 1, 0, 0, 0, 6033, 6034, 7, 9, 0, 0, 6034, 6035, 7, 22, 0, 0, 6035, 6036, 7, 18, 0, 0, 6036, 6037, 7, 9, 0, 0, 6037, 6038, 7, 16, 0, 0, 6038, 6039, 7, 13, 0, 0, 6039, 1234, 1, 0, 0, 0, 6040, 6041, 7, 16, 0, 0, 6041, 6042, 7, 19, 0, 0, 6042, 6043, 5, 95, 0, 0, 6043, 6044, 7, 5, 0, 0, 6044, 6045, 7, 9, 0, 0, 6045, 6046, 7, 14, 0, 0, 6046, 6047, 7, 17, 0, 0, 6047, 6048, 7, 17, 0, 0, 6048, 1236, 1, 0, 0, 0, 6049, 6050, 7, 16, 0, 0, 6050, 6051, 7, 19, 0, 0, 6051, 6052, 5, 95, 0, 0, 6052, 6053, 7, 20, 0, 0, 6053, 6054, 7, 10, 0, 0, 6054, 6055, 7, 26, 0, 0, 6055, 1238, 1, 0, 0, 0, 6056, 6057, 7, 16, 0, 0, 6057, 6058, 7, 13, 0, 0, 6058, 6059, 7, 5, 0, 0, 6059, 6060, 7, 7, 0, 0, 6060, 6061, 7, 9, 0, 0, 6061, 6062, 7, 6, 0, 0, 6062, 6063, 7, 5, 0, 0, 6063, 6064, 7, 16, 0, 0, 6064, 6065, 7, 10, 0, 0, 6065, 1240, 1, 0, 0, 0, 6066, 6067, 7, 22, 0, 0, 6067, 6068, 7, 7, 0, 0, 6068, 6069, 7, 17, 0, 0, 6069, 6070, 7, 9, 0, 0, 6070, 6071, 7, 16, 0, 0, 6071, 6072, 7, 13, 0, 0, 6072, 1242, 1, 0, 0, 0, 6073, 6074, 7, 5, 0, 0, 6074, 6075, 7, 23, 0, 0, 6075, 6076, 7, 10, 0, 0, 6076, 1244, 1, 0, 0, 0, 6077, 6078, 7, 14, 0, 0, 6078, 6079, 7, 6, 0, 0, 6079, 6080, 7, 19, 0, 0, 6080, 6081, 7, 14, 0, 0, 6081, 6082, 7, 21, 0, 0, 6082, 6083, 5, 95, 0, 0, 6083, 6084, 7, 16, 0, 0, 6084, 6085, 7, 17, 0, 0, 6085, 6086, 7, 15, 0, 0, 6086, 6087, 7, 10, 0, 0, 6087, 6088, 7, 9, 0, 0, 6088, 6089, 7, 16, 0, 0, 6089, 6090, 7, 5, 0, 0, 6090, 6091, 7, 15, 0, 0, 6091, 6092, 7, 24, 0, 0, 6092, 1246, 1, 0, 0, 0, 6093, 6094, 7, 12, 0, 0, 6094, 6095, 7, 5, 0, 0, 6095, 6096, 7, 16, 0, 0, 6096, 6097, 7, 10, 0, 0, 6097, 6098, 5, 95, 0, 0, 6098, 6099, 7, 18, 0, 0, 6099, 6100, 7, 17, 0, 0, 6100, 6101, 7, 7, 0, 0, 6101, 1248, 1, 0, 0, 0, 6102, 6103, 7, 12, 0, 0, 6103, 6104, 7, 5, 0, 0, 6104, 6105, 7, 16, 0, 0, 6105, 6106, 7, 10, 0, 0, 6106, 6107, 5, 95, 0, 0, 6107, 6108, 7, 24, 0, 0, 6108, 6109, 7, 5, 0, 0, 6109, 6110, 7, 13, 0, 0, 6110, 6111, 7, 16, 0, 0, 6111, 1250, 1, 0, 0, 0, 6112, 6113, 7, 12, 0, 0, 6113, 6114, 7, 5, 0, 0, 6114, 6115, 7, 16, 0, 0, 6115, 6116, 7, 10, 0, 0, 6116, 6117, 5, 95, 0, 0, 6117, 6118, 7, 16, 0, 0, 6118, 6119, 7, 13, 0, 0, 6119, 6120, 7, 22, 0, 0, 6120, 6121, 7, 7, 0, 0, 6121, 6122, 7, 14, 0, 0, 6122, 1252, 1, 0, 0, 0, 6123, 6124, 7, 17, 0, 0, 6124, 6125, 7, 9, 0, 0, 6125, 6126, 7, 25, 0, 0, 6126, 6127, 7, 17, 0, 0, 6127, 6128, 7, 7, 0, 0, 6128, 6129, 7, 17, 0, 0, 6129, 6130, 7, 16, 0, 0, 6130, 6131, 7, 10, 0, 0, 6131, 1254, 1, 0, 0, 0, 6132, 6133, 7, 30, 0, 0, 6133, 6134, 7, 22, 0, 0, 6134, 6135, 7, 9, 0, 0, 6135, 6136, 7, 16, 0, 0, 6136, 6137, 7, 17, 0, 0, 6137, 6138, 7, 25, 0, 0, 6138, 6139, 7, 8, 0, 0, 6139, 6140, 5, 95, 0, 0, 6140, 6141, 7, 12, 0, 0, 6141, 6142, 7, 5, 0, 0, 6142, 6143, 7, 8, 0, 0, 6143, 6144, 7, 9, 0, 0, 6144, 1256, 1, 0, 0, 0, 6145, 6146, 7, 30, 0, 0, 6146, 6147, 7, 22, 0, 0, 6147, 6148, 7, 9, 0, 0, 6148, 6149, 7, 16, 0, 0, 6149, 6150, 7, 17, 0, 0, 6150, 6151, 7, 25, 0, 0, 6151, 6152, 7, 8, 0, 0, 6152, 6153, 5, 95, 0, 0, 6153, 6154, 7, 20, 0, 0, 6154, 6155, 7, 19, 0, 0, 6155, 6156, 7, 22, 0, 0, 6156, 6157, 7, 13, 0, 0, 6157, 6158, 7, 9, 0, 0, 6158, 1258, 1, 0, 0, 0, 6159, 6160, 7, 30, 0, 0, 6160, 6161, 7, 22, 0, 0, 6161, 6162, 7, 9, 0, 0, 6162, 6163, 7, 16, 0, 0, 6163, 6164, 7, 17, 0, 0, 6164, 6165, 7, 25, 0, 0, 6165, 6166, 7, 8, 0, 0, 6166, 6167, 5, 95, 0, 0, 6167, 6168, 7, 17, 0, 0, 6168, 6169, 7, 7, 0, 0, 6169, 6170, 7, 16, 0, 0, 6170, 6171, 7, 10, 0, 0, 6171, 6172, 7, 13, 0, 0, 6172, 6173, 7, 27, 0, 0, 6173, 6174, 7, 5, 0, 0, 6174, 6175, 7, 6, 0, 0, 6175, 1260, 1, 0, 0, 0, 6176, 6177, 7, 15, 0, 0, 6177, 6178, 7, 5, 0, 0, 6178, 6179, 7, 21, 0, 0, 6179, 6180, 7, 10, 0, 0, 6180, 6181, 5, 95, 0, 0, 6181, 6182, 7, 12, 0, 0, 6182, 6183, 7, 5, 0, 0, 6183, 6184, 7, 16, 0, 0, 6184, 6185, 7, 10, 0, 0, 6185, 1262, 1, 0, 0, 0, 6186, 6187, 7, 15, 0, 0, 6187, 6188, 7, 5, 0, 0, 6188, 6189, 7, 21, 0, 0, 6189, 6190, 7, 10, 0, 0, 6190, 6191, 5, 95, 0, 0, 6191, 6192, 7, 17, 0, 0, 6192, 6193, 7, 7, 0, 0, 6193, 6194, 7, 16, 0, 0, 6194, 6195, 7, 10, 0, 0, 6195, 6196, 7, 13, 0, 0, 6196, 6197, 7, 27, 0, 0, 6197, 6198, 7, 5, 0, 0, 6198, 6199, 7, 6, 0, 0, 6199, 1264, 1, 0, 0, 0, 6200, 6201, 7, 15, 0, 0, 6201, 6202, 7, 5, 0, 0, 6202, 6203, 7, 21, 0, 0, 6203, 6204, 7, 10, 0, 0, 6204, 6205, 5, 95, 0, 0, 6205, 6206, 7, 16, 0, 0, 6206, 6207, 7, 17, 0, 0, 6207, 6208, 7, 15, 0, 0, 6208, 6209, 7, 10, 0, 0, 6209, 1266, 1, 0, 0, 0, 6210, 6211, 7, 15, 0, 0, 6211, 6212, 7, 5, 0, 0, 6212, 6213, 7, 21, 0, 0, 6213, 6214, 7, 10, 0, 0, 6214, 6215, 5, 95, 0, 0, 6215, 6216, 7, 16, 0, 0, 6216, 6217, 7, 17, 0, 0, 6217, 6218, 7, 15, 0, 0, 6218, 6219, 7, 10, 0, 0, 6219, 6220, 7, 9, 0, 0, 6220, 6221, 7, 16, 0, 0, 6221, 6222, 7, 5, 0, 0, 6222, 6223, 7, 15, 0, 0, 6223, 6224, 7, 24, 0, 0, 6224, 1268, 1, 0, 0, 0, 6225, 6226, 7, 15, 0, 0, 6226, 6227, 7, 5, 0, 0, 6227, 6228, 7, 21, 0, 0, 6228, 6229, 7, 10, 0, 0, 6229, 6230, 5, 95, 0, 0, 6230, 6231, 7, 16, 0, 0, 6231, 6232, 7, 17, 0, 0, 6232, 6233, 7, 15, 0, 0, 6233, 6234, 7, 10, 0, 0, 6234, 6235, 7, 9, 0, 0, 6235, 6236, 7, 16, 0, 0, 6236, 6237, 7, 5, 0, 0, 6237, 6238, 7, 15, 0, 0, 6238, 6239, 7, 24, 0, 0, 6239, 6240, 7, 16, 0, 0, 6240, 6241, 7, 11, 0, 0, 6241, 1270, 1, 0, 0, 0, 6242, 6243, 7, 7, 0, 0, 6243, 6244, 7, 19, 0, 0, 6244, 6245, 7, 29, 0, 0, 6245, 1272, 1, 0, 0, 0, 6246, 6247, 7, 9, 0, 0, 6247, 6248, 7, 16, 0, 0, 6248, 6249, 7, 5, 0, 0, 6249, 6250, 7, 16, 0, 0, 6250, 6251, 7, 10, 0, 0, 6251, 6252, 7, 15, 0, 0, 6252, 6253, 7, 10, 0, 0, 6253, 6254, 7, 7, 0, 0, 6254, 6255, 7, 16, 0, 0, 6255, 6256, 5, 95, 0, 0, 6256, 6257, 7, 16, 0, 0, 6257, 6258, 7, 17, 0, 0, 6258, 6259, 7, 15, 0, 0, 6259, 6260, 7, 10, 0, 0, 6260, 6261, 7, 9, 0, 0, 6261, 6262, 7, 16, 0, 0, 6262, 6263, 7, 5, 0, 0, 6263, 6264, 7, 15, 0, 0, 6264, 6265, 7, 24, 0, 0, 6265, 1274, 1, 0, 0, 0, 6266, 6267, 7, 16, 0, 0, 6267, 6268, 7, 17, 0, 0, 6268, 6269, 7, 15, 0, 0, 6269, 6270, 7, 10, 0, 0, 6270, 6271, 7, 19, 0, 0, 6271, 6272, 7, 25, 0, 0, 6272, 6273, 7, 12, 0, 0, 6273, 6274, 7, 5, 0, 0, 6274, 6275, 7, 8, 0, 0, 6275, 1276, 1, 0, 0, 0, 6276, 6277, 7, 16, 0, 0, 6277, 6278, 7, 13, 0, 0, 6278, 6279, 7, 5, 0, 0, 6279, 6280, 7, 7, 0, 0, 6280, 6281, 7, 9, 0, 0, 6281, 6282, 7, 5, 0, 0, 6282, 6283, 7, 14, 0, 0, 6283, 6284, 7, 16, 0, 0, 6284, 6285, 7, 17, 0, 0, 6285, 6286, 7, 19, 0, 0, 6286, 6287, 7, 7, 0, 0, 6287, 6288, 5, 95, 0, 0, 6288, 6289, 7, 16, 0, 0, 6289, 6290, 7, 17, 0, 0, 6290, 6291, 7, 15, 0, 0, 6291, 6292, 7, 10, 0, 0, 6292, 6293, 7, 9, 0, 0, 6293, 6294, 7, 16, 0, 0, 6294, 6295, 7, 5, 0, 0, 6295, 6296, 7, 15, 0, 0, 6296, 6297, 7, 24, 0, 0, 6297, 1278, 1, 0, 0, 0, 6298, 6299, 7, 16, 0, 0, 6299, 6300, 7, 19, 0, 0, 6300, 6301, 5, 95, 0, 0, 6301, 6302, 7, 16, 0, 0, 6302, 6303, 7, 17, 0, 0, 6303, 6304, 7, 15, 0, 0, 6304, 6305, 7, 10, 0, 0, 6305, 6306, 7, 9, 0, 0, 6306, 6307, 7, 16, 0, 0, 6307, 6308, 7, 5, 0, 0, 6308, 6309, 7, 15, 0, 0, 6309, 6310, 7, 24, 0, 0, 6310, 1280, 1, 0, 0, 0, 6311, 6312, 7, 16, 0, 0, 6312, 6313, 7, 19, 0, 0, 6313, 6314, 5, 95, 0, 0, 6314, 6315, 7, 14, 0, 0, 6315, 6316, 7, 20, 0, 0, 6316, 6317, 7, 5, 0, 0, 6317, 6318, 7, 13, 0, 0, 6318, 1282, 1, 0, 0, 0, 6319, 6320, 7, 16, 0, 0, 6320, 6321, 7, 19, 0, 0, 6321, 6322, 5, 95, 0, 0, 6322, 6323, 7, 12, 0, 0, 6323, 6324, 7, 5, 0, 0, 6324, 6325, 7, 16, 0, 0, 6325, 6326, 7, 10, 0, 0, 6326, 1284, 1, 0, 0, 0, 6327, 6328, 7, 16, 0, 0, 6328, 6329, 7, 19, 0, 0, 6329, 6330, 5, 95, 0, 0, 6330, 6331, 7, 7, 0, 0, 6331, 6332, 7, 22, 0, 0, 6332, 6333, 7, 15, 0, 0, 6333, 6334, 7, 18, 0, 0, 6334, 6335, 7, 10, 0, 0, 6335, 6336, 7, 13, 0, 0, 6336, 1286, 1, 0, 0, 0, 6337, 6341, 3, 1289, 642, 0, 6338, 6340, 3, 1291, 643, 0, 6339, 6338, 1, 0, 0, 0, 6340, 6343, 1, 0, 0, 0, 6341, 6339, 1, 0, 0, 0, 6341, 6342, 1, 0, 0, 0, 6342, 1288, 1, 0, 0, 0, 6343, 6341, 1, 0, 0, 0, 6344, 6351, 7, 31, 0, 0, 6345, 6346, 7, 32, 0, 0, 6346, 6351, 4, 642, 6, 0, 6347, 6348, 7, 33, 0, 0, 6348, 6349, 7, 34, 0, 0, 6349, 6351, 4, 642, 7, 0, 6350, 6344, 1, 0, 0, 0, 6350, 6345, 1, 0, 0, 0, 6350, 6347, 1, 0, 0, 0, 6351, 1290, 1, 0, 0, 0, 6352, 6355, 3, 1293, 644, 0, 6353, 6355, 5, 36, 0, 0, 6354, 6352, 1, 0, 0, 0, 6354, 6353, 1, 0, 0, 0, 6355, 1292, 1, 0, 0, 0, 6356, 6359, 3, 1289, 642, 0, 6357, 6359, 7, 0, 0, 0, 6358, 6356, 1, 0, 0, 0, 6358, 6357, 1, 0, 0, 0, 6359, 1294, 1, 0, 0, 0, 6360, 6361, 3, 1297, 646, 0, 6361, 6362, 5, 34, 0, 0, 6362, 1296, 1, 0, 0, 0, 6363, 6369, 5, 34, 0, 0, 6364, 6365, 5, 34, 0, 0, 6365, 6368, 5, 34, 0, 0, 6366, 6368, 8, 35, 0, 0, 6367, 6364, 1, 0, 0, 0, 6367, 6366, 1, 0, 0, 0, 6368, 6371, 1, 0, 0, 0, 6369, 6367, 1, 0, 0, 0, 6369, 6370, 1, 0, 0, 0, 6370, 1298, 1, 0, 0, 0, 6371, 6369, 1, 0, 0, 0, 6372, 6373, 3, 1301, 648, 0, 6373, 6374, 5, 34, 0, 0, 6374, 1300, 1, 0, 0, 0, 6375, 6381, 5, 34, 0, 0, 6376, 6377, 5, 34, 0, 0, 6377, 6380, 5, 34, 0, 0, 6378, 6380, 8, 36, 0, 0, 6379, 6376, 1, 0, 0, 0, 6379, 6378, 1, 0, 0, 0, 6380, 6383, 1, 0, 0, 0, 6381, 6379, 1, 0, 0, 0, 6381, 6382, 1, 0, 0, 0, 6382, 1302, 1, 0, 0, 0, 6383, 6381, 1, 0, 0, 0, 6384, 6385, 7, 22, 0, 0, 6385, 6386, 5, 38, 0, 0, 6386, 6387, 3, 1295, 645, 0, 6387, 1304, 1, 0, 0, 0, 6388, 6389, 7, 22, 0, 0, 6389, 6390, 5, 38, 0, 0, 6390, 6391, 3, 1297, 646, 0, 6391, 1306, 1, 0, 0, 0, 6392, 6393, 7, 22, 0, 0, 6393, 6394, 5, 38, 0, 0, 6394, 6395, 3, 1299, 647, 0, 6395, 1308, 1, 0, 0, 0, 6396, 6397, 7, 22, 0, 0, 6397, 6398, 5, 38, 0, 0, 6398, 6399, 3, 1301, 648, 0, 6399, 1310, 1, 0, 0, 0, 6400, 6401, 3, 1313, 654, 0, 6401, 6402, 5, 39, 0, 0, 6402, 1312, 1, 0, 0, 0, 6403, 6409, 5, 39, 0, 0, 6404, 6405, 5, 39, 0, 0, 6405, 6408, 5, 39, 0, 0, 6406, 6408, 8, 37, 0, 0, 6407, 6404, 1, 0, 0, 0, 6407, 6406, 1, 0, 0, 0, 6408, 6411, 1, 0, 0, 0, 6409, 6407, 1, 0, 0, 0, 6409, 6410, 1, 0, 0, 0, 6410, 1314, 1, 0, 0, 0, 6411, 6409, 1, 0, 0, 0, 6412, 6413, 7, 10, 0, 0, 6413, 6414, 5, 39, 0, 0, 6414, 6415, 1, 0, 0, 0, 6415, 6416, 6, 655, 2, 0, 6416, 6417, 6, 655, 3, 0, 6417, 1316, 1, 0, 0, 0, 6418, 6419, 3, 1319, 657, 0, 6419, 6420, 5, 39, 0, 0, 6420, 1318, 1, 0, 0, 0, 6421, 6422, 7, 22, 0, 0, 6422, 6423, 5, 38, 0, 0, 6423, 6424, 3, 1313, 654, 0, 6424, 1320, 1, 0, 0, 0, 6425, 6427, 5, 36, 0, 0, 6426, 6428, 3, 1323, 659, 0, 6427, 6426, 1, 0, 0, 0, 6427, 6428, 1, 0, 0, 0, 6428, 6429, 1, 0, 0, 0, 6429, 6430, 5, 36, 0, 0, 6430, 6431, 6, 658, 4, 0, 6431, 6432, 1, 0, 0, 0, 6432, 6433, 6, 658, 5, 0, 6433, 1322, 1, 0, 0, 0, 6434, 6438, 3, 1289, 642, 0, 6435, 6437, 3, 1293, 644, 0, 6436, 6435, 1, 0, 0, 0, 6437, 6440, 1, 0, 0, 0, 6438, 6436, 1, 0, 0, 0, 6438, 6439, 1, 0, 0, 0, 6439, 1324, 1, 0, 0, 0, 6440, 6438, 1, 0, 0, 0, 6441, 6442, 3, 1327, 661, 0, 6442, 6443, 5, 39, 0, 0, 6443, 1326, 1, 0, 0, 0, 6444, 6445, 7, 18, 0, 0, 6445, 6449, 5, 39, 0, 0, 6446, 6448, 7, 38, 0, 0, 6447, 6446, 1, 0, 0, 0, 6448, 6451, 1, 0, 0, 0, 6449, 6447, 1, 0, 0, 0, 6449, 6450, 1, 0, 0, 0, 6450, 1328, 1, 0, 0, 0, 6451, 6449, 1, 0, 0, 0, 6452, 6453, 3, 1331, 663, 0, 6453, 6454, 5, 39, 0, 0, 6454, 1330, 1, 0, 0, 0, 6455, 6456, 7, 18, 0, 0, 6456, 6457, 3, 1313, 654, 0, 6457, 1332, 1, 0, 0, 0, 6458, 6459, 3, 1335, 665, 0, 6459, 6460, 5, 39, 0, 0, 6460, 1334, 1, 0, 0, 0, 6461, 6462, 7, 26, 0, 0, 6462, 6466, 5, 39, 0, 0, 6463, 6465, 7, 39, 0, 0, 6464, 6463, 1, 0, 0, 0, 6465, 6468, 1, 0, 0, 0, 6466, 6464, 1, 0, 0, 0, 6466, 6467, 1, 0, 0, 0, 6467, 1336, 1, 0, 0, 0, 6468, 6466, 1, 0, 0, 0, 6469, 6470, 3, 1339, 667, 0, 6470, 6471, 5, 39, 0, 0, 6471, 1338, 1, 0, 0, 0, 6472, 6473, 7, 26, 0, 0, 6473, 6474, 3, 1313, 654, 0, 6474, 1340, 1, 0, 0, 0, 6475, 6476, 3, 1347, 671, 0, 6476, 1342, 1, 0, 0, 0, 6477, 6478, 3, 1347, 671, 0, 6478, 6479, 5, 46, 0, 0, 6479, 6480, 5, 46, 0, 0, 6480, 6481, 1, 0, 0, 0, 6481, 6482, 6, 669, 6, 0, 6482, 1344, 1, 0, 0, 0, 6483, 6484, 3, 1347, 671, 0, 6484, 6486, 5, 46, 0, 0, 6485, 6487, 3, 1347, 671, 0, 6486, 6485, 1, 0, 0, 0, 6486, 6487, 1, 0, 0, 0, 6487, 6493, 1, 0, 0, 0, 6488, 6490, 7, 10, 0, 0, 6489, 6491, 7, 1, 0, 0, 6490, 6489, 1, 0, 0, 0, 6490, 6491, 1, 0, 0, 0, 6491, 6492, 1, 0, 0, 0, 6492, 6494, 3, 1347, 671, 0, 6493, 6488, 1, 0, 0, 0, 6493, 6494, 1, 0, 0, 0, 6494, 6512, 1, 0, 0, 0, 6495, 6496, 5, 46, 0, 0, 6496, 6502, 3, 1347, 671, 0, 6497, 6499, 7, 10, 0, 0, 6498, 6500, 7, 1, 0, 0, 6499, 6498, 1, 0, 0, 0, 6499, 6500, 1, 0, 0, 0, 6500, 6501, 1, 0, 0, 0, 6501, 6503, 3, 1347, 671, 0, 6502, 6497, 1, 0, 0, 0, 6502, 6503, 1, 0, 0, 0, 6503, 6512, 1, 0, 0, 0, 6504, 6505, 3, 1347, 671, 0, 6505, 6507, 7, 10, 0, 0, 6506, 6508, 7, 1, 0, 0, 6507, 6506, 1, 0, 0, 0, 6507, 6508, 1, 0, 0, 0, 6508, 6509, 1, 0, 0, 0, 6509, 6510, 3, 1347, 671, 0, 6510, 6512, 1, 0, 0, 0, 6511, 6483, 1, 0, 0, 0, 6511, 6495, 1, 0, 0, 0, 6511, 6504, 1, 0, 0, 0, 6512, 1346, 1, 0, 0, 0, 6513, 6515, 7, 0, 0, 0, 6514, 6513, 1, 0, 0, 0, 6515, 6516, 1, 0, 0, 0, 6516, 6514, 1, 0, 0, 0, 6516, 6517, 1, 0, 0, 0, 6517, 1348, 1, 0, 0, 0, 6518, 6519, 5, 58, 0, 0, 6519, 6523, 7, 40, 0, 0, 6520, 6522, 7, 41, 0, 0, 6521, 6520, 1, 0, 0, 0, 6522, 6525, 1, 0, 0, 0, 6523, 6521, 1, 0, 0, 0, 6523, 6524, 1, 0, 0, 0, 6524, 1350, 1, 0, 0, 0, 6525, 6523, 1, 0, 0, 0, 6526, 6527, 5, 58, 0, 0, 6527, 6528, 5, 34, 0, 0, 6528, 6536, 1, 0, 0, 0, 6529, 6530, 5, 92, 0, 0, 6530, 6535, 9, 0, 0, 0, 6531, 6532, 5, 34, 0, 0, 6532, 6535, 5, 34, 0, 0, 6533, 6535, 8, 42, 0, 0, 6534, 6529, 1, 0, 0, 0, 6534, 6531, 1, 0, 0, 0, 6534, 6533, 1, 0, 0, 0, 6535, 6538, 1, 0, 0, 0, 6536, 6534, 1, 0, 0, 0, 6536, 6537, 1, 0, 0, 0, 6537, 6539, 1, 0, 0, 0, 6538, 6536, 1, 0, 0, 0, 6539, 6540, 5, 34, 0, 0, 6540, 1352, 1, 0, 0, 0, 6541, 6543, 7, 43, 0, 0, 6542, 6541, 1, 0, 0, 0, 6543, 6544, 1, 0, 0, 0, 6544, 6542, 1, 0, 0, 0, 6544, 6545, 1, 0, 0, 0, 6545, 6546, 1, 0, 0, 0, 6546, 6547, 6, 674, 7, 0, 6547, 1354, 1, 0, 0, 0, 6548, 6550, 5, 13, 0, 0, 6549, 6551, 5, 10, 0, 0, 6550, 6549, 1, 0, 0, 0, 6550, 6551, 1, 0, 0, 0, 6551, 6554, 1, 0, 0, 0, 6552, 6554, 5, 10, 0, 0, 6553, 6548, 1, 0, 0, 0, 6553, 6552, 1, 0, 0, 0, 6554, 6555, 1, 0, 0, 0, 6555, 6556, 6, 675, 7, 0, 6556, 1356, 1, 0, 0, 0, 6557, 6558, 5, 45, 0, 0, 6558, 6559, 5, 45, 0, 0, 6559, 6563, 1, 0, 0, 0, 6560, 6562, 8, 44, 0, 0, 6561, 6560, 1, 0, 0, 0, 6562, 6565, 1, 0, 0, 0, 6563, 6561, 1, 0, 0, 0, 6563, 6564, 1, 0, 0, 0, 6564, 6566, 1, 0, 0, 0, 6565, 6563, 1, 0, 0, 0, 6566, 6567, 6, 676, 7, 0, 6567, 1358, 1, 0, 0, 0, 6568, 6569, 5, 47, 0, 0, 6569, 6570, 5, 42, 0, 0, 6570, 6593, 1, 0, 0, 0, 6571, 6573, 5, 47, 0, 0, 6572, 6571, 1, 0, 0, 0, 6573, 6576, 1, 0, 0, 0, 6574, 6572, 1, 0, 0, 0, 6574, 6575, 1, 0, 0, 0, 6575, 6577, 1, 0, 0, 0, 6576, 6574, 1, 0, 0, 0, 6577, 6592, 3, 1359, 677, 0, 6578, 6592, 8, 45, 0, 0, 6579, 6581, 5, 47, 0, 0, 6580, 6579, 1, 0, 0, 0, 6581, 6582, 1, 0, 0, 0, 6582, 6580, 1, 0, 0, 0, 6582, 6583, 1, 0, 0, 0, 6583, 6584, 1, 0, 0, 0, 6584, 6592, 8, 45, 0, 0, 6585, 6587, 5, 42, 0, 0, 6586, 6585, 1, 0, 0, 0, 6587, 6588, 1, 0, 0, 0, 6588, 6586, 1, 0, 0, 0, 6588, 6589, 1, 0, 0, 0, 6589, 6590, 1, 0, 0, 0, 6590, 6592, 8, 45, 0, 0, 6591, 6574, 1, 0, 0, 0, 6591, 6578, 1, 0, 0, 0, 6591, 6580, 1, 0, 0, 0, 6591, 6586, 1, 0, 0, 0, 6592, 6595, 1, 0, 0, 0, 6593, 6591, 1, 0, 0, 0, 6593, 6594, 1, 0, 0, 0, 6594, 6599, 1, 0, 0, 0, 6595, 6593, 1, 0, 0, 0, 6596, 6598, 5, 42, 0, 0, 6597, 6596, 1, 0, 0, 0, 6598, 6601, 1, 0, 0, 0, 6599, 6597, 1, 0, 0, 0, 6599, 6600, 1, 0, 0, 0, 6600, 6602, 1, 0, 0, 0, 6601, 6599, 1, 0, 0, 0, 6602, 6603, 5, 42, 0, 0, 6603, 6604, 5, 47, 0, 0, 6604, 6605, 1, 0, 0, 0, 6605, 6606, 6, 677, 7, 0, 6606, 1360, 1, 0, 0, 0, 6607, 6608, 5, 47, 0, 0, 6608, 6609, 5, 42, 0, 0, 6609, 6634, 1, 0, 0, 0, 6610, 6612, 5, 47, 0, 0, 6611, 6610, 1, 0, 0, 0, 6612, 6615, 1, 0, 0, 0, 6613, 6611, 1, 0, 0, 0, 6613, 6614, 1, 0, 0, 0, 6614, 6616, 1, 0, 0, 0, 6615, 6613, 1, 0, 0, 0, 6616, 6633, 3, 1359, 677, 0, 6617, 6633, 8, 45, 0, 0, 6618, 6620, 5, 47, 0, 0, 6619, 6618, 1, 0, 0, 0, 6620, 6621, 1, 0, 0, 0, 6621, 6619, 1, 0, 0, 0, 6621, 6622, 1, 0, 0, 0, 6622, 6623, 1, 0, 0, 0, 6623, 6631, 8, 45, 0, 0, 6624, 6626, 5, 42, 0, 0, 6625, 6624, 1, 0, 0, 0, 6626, 6627, 1, 0, 0, 0, 6627, 6625, 1, 0, 0, 0, 6627, 6628, 1, 0, 0, 0, 6628, 6629, 1, 0, 0, 0, 6629, 6631, 8, 45, 0, 0, 6630, 6619, 1, 0, 0, 0, 6630, 6625, 1, 0, 0, 0, 6631, 6633, 1, 0, 0, 0, 6632, 6613, 1, 0, 0, 0, 6632, 6617, 1, 0, 0, 0, 6632, 6630, 1, 0, 0, 0, 6633, 6636, 1, 0, 0, 0, 6634, 6632, 1, 0, 0, 0, 6634, 6635, 1, 0, 0, 0, 6635, 6654, 1, 0, 0, 0, 6636, 6634, 1, 0, 0, 0, 6637, 6639, 5, 47, 0, 0, 6638, 6637, 1, 0, 0, 0, 6639, 6640, 1, 0, 0, 0, 6640, 6638, 1, 0, 0, 0, 6640, 6641, 1, 0, 0, 0, 6641, 6655, 1, 0, 0, 0, 6642, 6644, 5, 42, 0, 0, 6643, 6642, 1, 0, 0, 0, 6644, 6645, 1, 0, 0, 0, 6645, 6643, 1, 0, 0, 0, 6645, 6646, 1, 0, 0, 0, 6646, 6655, 1, 0, 0, 0, 6647, 6649, 5, 47, 0, 0, 6648, 6647, 1, 0, 0, 0, 6649, 6652, 1, 0, 0, 0, 6650, 6648, 1, 0, 0, 0, 6650, 6651, 1, 0, 0, 0, 6651, 6653, 1, 0, 0, 0, 6652, 6650, 1, 0, 0, 0, 6653, 6655, 3, 1361, 678, 0, 6654, 6638, 1, 0, 0, 0, 6654, 6643, 1, 0, 0, 0, 6654, 6650, 1, 0, 0, 0, 6654, 6655, 1, 0, 0, 0, 6655, 6656, 1, 0, 0, 0, 6656, 6657, 6, 678, 8, 0, 6657, 1362, 1, 0, 0, 0, 6658, 6670, 5, 92, 0, 0, 6659, 6669, 8, 46, 0, 0, 6660, 6664, 5, 34, 0, 0, 6661, 6663, 8, 47, 0, 0, 6662, 6661, 1, 0, 0, 0, 6663, 6666, 1, 0, 0, 0, 6664, 6662, 1, 0, 0, 0, 6664, 6665, 1, 0, 0, 0, 6665, 6667, 1, 0, 0, 0, 6666, 6664, 1, 0, 0, 0, 6667, 6669, 5, 34, 0, 0, 6668, 6659, 1, 0, 0, 0, 6668, 6660, 1, 0, 0, 0, 6669, 6672, 1, 0, 0, 0, 6670, 6668, 1, 0, 0, 0, 6670, 6671, 1, 0, 0, 0, 6671, 6680, 1, 0, 0, 0, 6672, 6670, 1, 0, 0, 0, 6673, 6677, 5, 34, 0, 0, 6674, 6676, 8, 47, 0, 0, 6675, 6674, 1, 0, 0, 0, 6676, 6679, 1, 0, 0, 0, 6677, 6675, 1, 0, 0, 0, 6677, 6678, 1, 0, 0, 0, 6678, 6681, 1, 0, 0, 0, 6679, 6677, 1, 0, 0, 0, 6680, 6673, 1, 0, 0, 0, 6680, 6681, 1, 0, 0, 0, 6681, 1364, 1, 0, 0, 0, 6682, 6683, 5, 92, 0, 0, 6683, 6684, 5, 92, 0, 0, 6684, 1366, 1, 0, 0, 0, 6685, 6686, 9, 0, 0, 0, 6686, 1368, 1, 0, 0, 0, 6687, 6688, 3, 1373, 684, 0, 6688, 6689, 5, 39, 0, 0, 6689, 6690, 1, 0, 0, 0, 6690, 6691, 6, 682, 9, 0, 6691, 1370, 1, 0, 0, 0, 6692, 6694, 3, 1373, 684, 0, 6693, 6695, 5, 92, 0, 0, 6694, 6693, 1, 0, 0, 0, 6694, 6695, 1, 0, 0, 0, 6695, 6696, 1, 0, 0, 0, 6696, 6697, 5, 0, 0, 1, 6697, 1372, 1, 0, 0, 0, 6698, 6699, 5, 39, 0, 0, 6699, 6722, 5, 39, 0, 0, 6700, 6718, 5, 92, 0, 0, 6701, 6702, 5, 120, 0, 0, 6702, 6719, 7, 39, 0, 0, 6703, 6704, 5, 117, 0, 0, 6704, 6705, 7, 39, 0, 0, 6705, 6706, 7, 39, 0, 0, 6706, 6707, 7, 39, 0, 0, 6707, 6719, 7, 39, 0, 0, 6708, 6709, 5, 85, 0, 0, 6709, 6710, 7, 39, 0, 0, 6710, 6711, 7, 39, 0, 0, 6711, 6712, 7, 39, 0, 0, 6712, 6713, 7, 39, 0, 0, 6713, 6714, 7, 39, 0, 0, 6714, 6715, 7, 39, 0, 0, 6715, 6716, 7, 39, 0, 0, 6716, 6719, 7, 39, 0, 0, 6717, 6719, 8, 48, 0, 0, 6718, 6701, 1, 0, 0, 0, 6718, 6703, 1, 0, 0, 0, 6718, 6708, 1, 0, 0, 0, 6718, 6717, 1, 0, 0, 0, 6719, 6722, 1, 0, 0, 0, 6720, 6722, 8, 49, 0, 0, 6721, 6698, 1, 0, 0, 0, 6721, 6700, 1, 0, 0, 0, 6721, 6720, 1, 0, 0, 0, 6722, 6725, 1, 0, 0, 0, 6723, 6721, 1, 0, 0, 0, 6723, 6724, 1, 0, 0, 0, 6724, 1374, 1, 0, 0, 0, 6725, 6723, 1, 0, 0, 0, 6726, 6727, 3, 1379, 687, 0, 6727, 6728, 5, 39, 0, 0, 6728, 6729, 1, 0, 0, 0, 6729, 6730, 6, 685, 9, 0, 6730, 1376, 1, 0, 0, 0, 6731, 6733, 3, 1379, 687, 0, 6732, 6734, 5, 92, 0, 0, 6733, 6732, 1, 0, 0, 0, 6733, 6734, 1, 0, 0, 0, 6734, 6735, 1, 0, 0, 0, 6735, 6736, 5, 0, 0, 1, 6736, 1378, 1, 0, 0, 0, 6737, 6738, 5, 39, 0, 0, 6738, 6743, 5, 39, 0, 0, 6739, 6740, 5, 92, 0, 0, 6740, 6743, 9, 0, 0, 0, 6741, 6743, 8, 49, 0, 0, 6742, 6737, 1, 0, 0, 0, 6742, 6739, 1, 0, 0, 0, 6742, 6741, 1, 0, 0, 0, 6743, 6746, 1, 0, 0, 0, 6744, 6742, 1, 0, 0, 0, 6744, 6745, 1, 0, 0, 0, 6745, 1380, 1, 0, 0, 0, 6746, 6744, 1, 0, 0, 0, 6747, 6748, 3, 1353, 674, 0, 6748, 6749, 1, 0, 0, 0, 6749, 6750, 6, 688, 10, 0, 6750, 6751, 6, 688, 7, 0, 6751, 1382, 1, 0, 0, 0, 6752, 6753, 3, 1355, 675, 0, 6753, 6754, 1, 0, 0, 0, 6754, 6755, 6, 689, 11, 0, 6755, 6756, 6, 689, 7, 0, 6756, 6757, 6, 689, 12, 0, 6757, 1384, 1, 0, 0, 0, 6758, 6759, 6, 690, 13, 0, 6759, 6760, 1, 0, 0, 0, 6760, 6761, 6, 690, 14, 0, 6761, 6762, 6, 690, 15, 0, 6762, 1386, 1, 0, 0, 0, 6763, 6764, 3, 1353, 674, 0, 6764, 6765, 1, 0, 0, 0, 6765, 6766, 6, 691, 10, 0, 6766, 6767, 6, 691, 7, 0, 6767, 1388, 1, 0, 0, 0, 6768, 6769, 3, 1355, 675, 0, 6769, 6770, 1, 0, 0, 0, 6770, 6771, 6, 692, 11, 0, 6771, 6772, 6, 692, 7, 0, 6772, 1390, 1, 0, 0, 0, 6773, 6774, 5, 39, 0, 0, 6774, 6775, 1, 0, 0, 0, 6775, 6776, 6, 693, 2, 0, 6776, 6777, 6, 693, 16, 0, 6777, 1392, 1, 0, 0, 0, 6778, 6779, 6, 694, 17, 0, 6779, 6780, 1, 0, 0, 0, 6780, 6781, 6, 694, 14, 0, 6781, 6782, 6, 694, 15, 0, 6782, 1394, 1, 0, 0, 0, 6783, 6785, 8, 50, 0, 0, 6784, 6783, 1, 0, 0, 0, 6785, 6786, 1, 0, 0, 0, 6786, 6784, 1, 0, 0, 0, 6786, 6787, 1, 0, 0, 0, 6787, 6796, 1, 0, 0, 0, 6788, 6792, 5, 36, 0, 0, 6789, 6791, 8, 50, 0, 0, 6790, 6789, 1, 0, 0, 0, 6791, 6794, 1, 0, 0, 0, 6792, 6790, 1, 0, 0, 0, 6792, 6793, 1, 0, 0, 0, 6793, 6796, 1, 0, 0, 0, 6794, 6792, 1, 0, 0, 0, 6795, 6784, 1, 0, 0, 0, 6795, 6788, 1, 0, 0, 0, 6796, 1396, 1, 0, 0, 0, 6797, 6799, 5, 36, 0, 0, 6798, 6800, 3, 1323, 659, 0, 6799, 6798, 1, 0, 0, 0, 6799, 6800, 1, 0, 0, 0, 6800, 6801, 1, 0, 0, 0, 6801, 6802, 5, 36, 0, 0, 6802, 6803, 1, 0, 0, 0, 6803, 6804, 4, 696, 8, 0, 6804, 6805, 6, 696, 18, 0, 6805, 6806, 1, 0, 0, 0, 6806, 6807, 6, 696, 15, 0, 6807, 1398, 1, 0, 0, 0, 78, 0, 1, 2, 3, 4, 1466, 1472, 1474, 1479, 1483, 1485, 1488, 1497, 1499, 1504, 1509, 1511, 6341, 6350, 6354, 6358, 6367, 6369, 6379, 6381, 6407, 6409, 6427, 6438, 6449, 6466, 6486, 6490, 6493, 6499, 6502, 6507, 6511, 6516, 6523, 6534, 6536, 6544, 6550, 6553, 6563, 6574, 6582, 6588, 6591, 6593, 6599, 6613, 6621, 6627, 6630, 6632, 6634, 6640, 6645, 6650, 6654, 6664, 6668, 6670, 6677, 6680, 6694, 6718, 6721, 6723, 6733, 6742, 6744, 6786, 6792, 6795, 6799, 19, 1, 28, 0, 7, 29, 0, 3, 0, 0, 5, 1, 0, 1, 658, 1, 5, 4, 0, 1, 669, 2, 0, 1, 0, 1, 678, 3, 2, 2, 0, 7, 665, 0, 7, 666, 0, 2, 3, 0, 1, 690, 4, 6, 0, 0, 4, 0, 0, 2, 1, 0, 1, 694, 5, 1, 696, 6] \ No newline at end of file diff --git a/incubator/binding-pgsql/gen/PostgreSqlLexer.java b/incubator/binding-pgsql/gen/PostgreSqlLexer.java deleted file mode 100644 index c22b0570b7..0000000000 --- a/incubator/binding-pgsql/gen/PostgreSqlLexer.java +++ /dev/null @@ -1,5257 +0,0 @@ -// Generated from /Users/akramyakubov/workspace/aklivity/zilla/incubator/binding-pgsql/src/main/antlr4/io/aklivity/zilla/runtime/binding/pgsql/parser/PostgreSqlLexer.g4 by ANTLR 4.13.1 - - -import org.antlr.v4.runtime.Lexer; -import org.antlr.v4.runtime.CharStream; -import org.antlr.v4.runtime.Token; -import org.antlr.v4.runtime.TokenStream; -import org.antlr.v4.runtime.*; -import org.antlr.v4.runtime.atn.*; -import org.antlr.v4.runtime.dfa.DFA; -import org.antlr.v4.runtime.misc.*; - -@SuppressWarnings({"all", "warnings", "unchecked", "unused", "cast", "CheckReturnValue", "this-escape"}) -public class PostgreSqlLexer extends PostgreSqlLexerBase { - static { RuntimeMetaData.checkVersion("4.13.1", RuntimeMetaData.VERSION); } - - protected static final DFA[] _decisionToDFA; - protected static final PredictionContextCache _sharedContextCache = - new PredictionContextCache(); - public static final int - Dollar=1, OPEN_PAREN=2, CLOSE_PAREN=3, OPEN_BRACKET=4, CLOSE_BRACKET=5, - COMMA=6, SEMI=7, COLON=8, STAR=9, EQUAL=10, DOT=11, PLUS=12, MINUS=13, - SLASH=14, CARET=15, LT=16, GT=17, LESS_LESS=18, GREATER_GREATER=19, COLON_EQUALS=20, - LESS_EQUALS=21, EQUALS_GREATER=22, GREATER_EQUALS=23, DOT_DOT=24, NOT_EQUALS=25, - TYPECAST=26, PERCENT=27, PARAM=28, Operator=29, ALL=30, ANALYSE=31, ANALYZE=32, - AND=33, ANY=34, ARRAY=35, AS=36, ASC=37, ASYMMETRIC=38, BOTH=39, CASE=40, - CAST=41, CHECK=42, COLLATE=43, COLUMN=44, CONSTRAINT=45, CREATE=46, CURRENT_CATALOG=47, - CURRENT_DATE=48, CURRENT_ROLE=49, CURRENT_TIME=50, CURRENT_TIMESTAMP=51, - CURRENT_USER=52, DEFAULT=53, DEFERRABLE=54, DESC=55, DISTINCT=56, DO=57, - ELSE=58, EXCEPT=59, FALSE_P=60, FETCH=61, FOR=62, FOREIGN=63, FROM=64, - GRANT=65, GROUP_P=66, HAVING=67, IN_P=68, INITIALLY=69, INTERSECT=70, - INTO=71, LATERAL_P=72, LEADING=73, LIMIT=74, LOCALTIME=75, LOCALTIMESTAMP=76, - NOT=77, NULL_P=78, OFFSET=79, ON=80, ONLY=81, OR=82, ORDER=83, PLACING=84, - PRIMARY=85, REFERENCES=86, RETURNING=87, SELECT=88, SESSION_USER=89, SOME=90, - SYMMETRIC=91, TABLE=92, THEN=93, TO=94, TOPIC=95, STREAM=96, TRAILING=97, - TRUE_P=98, UNION=99, UNIQUE=100, USER=101, USING=102, VARIADIC=103, WHEN=104, - WHERE=105, WINDOW=106, WITH=107, AUTHORIZATION=108, BINARY=109, COLLATION=110, - CONCURRENTLY=111, CROSS=112, CURRENT_SCHEMA=113, FREEZE=114, FULL=115, - ILIKE=116, INNER_P=117, IS=118, ISNULL=119, JOIN=120, LEFT=121, LIKE=122, - NATURAL=123, NOTNULL=124, OUTER_P=125, OVER=126, OVERLAPS=127, RIGHT=128, - SIMILAR=129, VERBOSE=130, ABORT_P=131, ABSOLUTE_P=132, ACCESS=133, ACTION=134, - ADD_P=135, ADMIN=136, AFTER=137, AGGREGATE=138, ALSO=139, ALTER=140, ALWAYS=141, - ASSERTION=142, ASSIGNMENT=143, AT=144, ATTRIBUTE=145, BACKWARD=146, BEFORE=147, - BEGIN_P=148, BY=149, CACHE=150, CALLED=151, CASCADE=152, CASCADED=153, - CATALOG=154, CHAIN=155, CHARACTERISTICS=156, CHECKPOINT=157, CLASS=158, - CLOSE=159, CLUSTER=160, COMMENT=161, COMMENTS=162, COMMIT=163, COMMITTED=164, - CONFIGURATION=165, CONNECTION=166, CONSTRAINTS=167, CONTENT_P=168, CONTINUE_P=169, - CONVERSION_P=170, COPY=171, COST=172, CSV=173, CURSOR=174, CYCLE=175, - DATA_P=176, DATABASE=177, DAY_P=178, DEALLOCATE=179, DECLARE=180, DEFAULTS=181, - DEFERRED=182, DEFINER=183, DELETE_P=184, DELIMITER=185, DELIMITERS=186, - DICTIONARY=187, DISABLE_P=188, DISCARD=189, DOCUMENT_P=190, DOMAIN_P=191, - DOUBLE_P=192, DROP=193, EACH=194, ENABLE_P=195, ENCODING=196, ENCRYPTED=197, - ENUM_P=198, ESCAPE=199, EVENT=200, EXCLUDE=201, EXCLUDING=202, EXCLUSIVE=203, - EXECUTE=204, EXPLAIN=205, EXTENSION=206, EXTERNAL=207, FAMILY=208, FIRST_P=209, - FOLLOWING=210, FORCE=211, FORWARD=212, FUNCTION=213, FUNCTIONS=214, GLOBAL=215, - GRANTED=216, HANDLER=217, HEADER_P=218, HOLD=219, HOUR_P=220, IDENTITY_P=221, - IF_P=222, IMMEDIATE=223, IMMUTABLE=224, IMPLICIT_P=225, INCLUDING=226, - INCREMENT=227, INDEX=228, INDEXES=229, INHERIT=230, INHERITS=231, INLINE_P=232, - INSENSITIVE=233, INSERT=234, INSTEAD=235, INVOKER=236, ISOLATION=237, - KEY=238, LABEL=239, LANGUAGE=240, LARGE_P=241, LAST_P=242, LEAKPROOF=243, - LEVEL=244, LISTEN=245, LOAD=246, LOCAL=247, LOCATION=248, LOCK_P=249, - MAPPING=250, MATCH=251, MATCHED=252, MATERIALIZED=253, MAXVALUE=254, MERGE=255, - MINUTE_P=256, MINVALUE=257, MODE=258, MONTH_P=259, MOVE=260, NAME_P=261, - NAMES=262, NEXT=263, NO=264, NOTHING=265, NOTIFY=266, NOWAIT=267, NULLS_P=268, - OBJECT_P=269, OF=270, OFF=271, OIDS=272, OPERATOR=273, OPTION=274, OPTIONS=275, - OWNED=276, OWNER=277, PARSER=278, PARTIAL=279, PARTITION=280, PASSING=281, - PASSWORD=282, PLANS=283, PRECEDING=284, PREPARE=285, PREPARED=286, PRESERVE=287, - PRIOR=288, PRIVILEGES=289, PROCEDURAL=290, PROCEDURE=291, PROGRAM=292, - QUOTE=293, RANGE=294, READ=295, REASSIGN=296, RECHECK=297, RECURSIVE=298, - REF=299, REFRESH=300, REINDEX=301, RELATIVE_P=302, RELEASE=303, RENAME=304, - REPEATABLE=305, REPLACE=306, REPLICA=307, RESET=308, RESTART=309, RESTRICT=310, - RETURNS=311, REVOKE=312, ROLE=313, ROLLBACK=314, ROWS=315, RULE=316, SAVEPOINT=317, - SCHEMA=318, SCROLL=319, SEARCH=320, SECOND_P=321, SECURITY=322, SEQUENCE=323, - SEQUENCES=324, SERIALIZABLE=325, SERVER=326, SESSION=327, SET=328, SHARE=329, - SHOW=330, SIMPLE=331, SNAPSHOT=332, STABLE=333, STANDALONE_P=334, START=335, - STATEMENT=336, STATISTICS=337, STDIN=338, STDOUT=339, STORAGE=340, STRICT_P=341, - STRIP_P=342, SYSID=343, SYSTEM_P=344, TABLES=345, TABLESPACE=346, TEMP=347, - TEMPLATE=348, TEMPORARY=349, TEXT_P=350, TRANSACTION=351, TRIGGER=352, - TRUNCATE=353, TRUSTED=354, TYPE_P=355, TYPES_P=356, UNBOUNDED=357, UNCOMMITTED=358, - UNENCRYPTED=359, UNKNOWN=360, UNLISTEN=361, UNLOGGED=362, UNTIL=363, UPDATE=364, - VACUUM=365, VALID=366, VALIDATE=367, VALIDATOR=368, VARYING=369, VERSION_P=370, - VIEW=371, VOLATILE=372, WHITESPACE_P=373, WITHOUT=374, WORK=375, WRAPPER=376, - WRITE=377, XML_P=378, YEAR_P=379, YES_P=380, ZONE=381, BETWEEN=382, BIGINT=383, - BIT=384, BOOLEAN_P=385, CHAR_P=386, CHARACTER=387, COALESCE=388, DEC=389, - DECIMAL_P=390, EXISTS=391, EXTRACT=392, FLOAT_P=393, GREATEST=394, INOUT=395, - INT_P=396, INTEGER=397, INTERVAL=398, LEAST=399, NATIONAL=400, NCHAR=401, - NONE=402, NULLIF=403, NUMERIC=404, OVERLAY=405, POSITION=406, PRECISION=407, - REAL=408, ROW=409, SETOF=410, SMALLINT=411, SUBSTRING=412, TIME=413, TIMESTAMP=414, - TREAT=415, TRIM=416, VALUES=417, VARCHAR=418, XMLATTRIBUTES=419, XMLCOMMENT=420, - XMLAGG=421, XML_IS_WELL_FORMED=422, XML_IS_WELL_FORMED_DOCUMENT=423, XML_IS_WELL_FORMED_CONTENT=424, - XPATH=425, XPATH_EXISTS=426, XMLCONCAT=427, XMLELEMENT=428, XMLEXISTS=429, - XMLFOREST=430, XMLPARSE=431, XMLPI=432, XMLROOT=433, XMLSERIALIZE=434, - CALL=435, CURRENT_P=436, ATTACH=437, DETACH=438, EXPRESSION=439, GENERATED=440, - LOGGED=441, STORED=442, INCLUDE=443, ROUTINE=444, TRANSFORM=445, IMPORT_P=446, - POLICY=447, METHOD=448, REFERENCING=449, NEW=450, OLD=451, VALUE_P=452, - SUBSCRIPTION=453, PUBLICATION=454, OUT_P=455, END_P=456, ROUTINES=457, - SCHEMAS=458, PROCEDURES=459, INPUT_P=460, SUPPORT=461, PARALLEL=462, SQL_P=463, - DEPENDS=464, OVERRIDING=465, CONFLICT=466, SKIP_P=467, LOCKED=468, TIES=469, - ROLLUP=470, CUBE=471, GROUPING=472, SETS=473, TABLESAMPLE=474, ORDINALITY=475, - XMLTABLE=476, COLUMNS=477, XMLNAMESPACES=478, ROWTYPE=479, NORMALIZED=480, - WITHIN=481, FILTER=482, GROUPS=483, OTHERS=484, NFC=485, NFD=486, NFKC=487, - NFKD=488, UESCAPE=489, VIEWS=490, NORMALIZE=491, DUMP=492, PRINT_STRICT_PARAMS=493, - VARIABLE_CONFLICT=494, ERROR=495, USE_VARIABLE=496, USE_COLUMN=497, ALIAS=498, - CONSTANT=499, PERFORM=500, GET=501, DIAGNOSTICS=502, STACKED=503, ELSIF=504, - WHILE=505, REVERSE=506, FOREACH=507, SLICE=508, EXIT=509, RETURN=510, - QUERY=511, RAISE=512, SQLSTATE=513, DEBUG=514, LOG=515, INFO=516, NOTICE=517, - WARNING=518, EXCEPTION=519, ASSERT=520, LOOP=521, OPEN=522, ABS=523, CBRT=524, - CEIL=525, CEILING=526, DEGREES=527, DIV=528, EXP=529, FACTORIAL=530, FLOOR=531, - GCD=532, LCM=533, LN=534, LOG10=535, MIN_SCALE=536, MOD=537, PI=538, POWER=539, - RADIANS=540, ROUND=541, SCALE=542, SIGN=543, SQRT=544, TRIM_SCALE=545, - TRUNC=546, WIDTH_BUCKET=547, RANDOM=548, SETSEED=549, ACOS=550, ACOSD=551, - ASIN=552, ASIND=553, ATAN=554, ATAND=555, ATAN2=556, ATAN2D=557, COS=558, - COSD=559, COT=560, COTD=561, SIN=562, SIND=563, TAN=564, TAND=565, SINH=566, - COSH=567, TANH=568, ASINH=569, ACOSH=570, ATANH=571, BIT_LENGTH=572, CHAR_LENGTH=573, - CHARACTER_LENGTH=574, LOWER=575, OCTET_LENGTH=576, UPPER=577, ASCII=578, - BTRIM=579, CHR=580, CONCAT=581, CONCAT_WS=582, FORMAT=583, INITCAP=584, - LENGTH=585, LPAD=586, LTRIM=587, MD5=588, PARSE_IDENT=589, PG_CLIENT_ENCODING=590, - QUOTE_IDENT=591, QUOTE_LITERAL=592, QUOTE_NULLABLE=593, REGEXP_COUNT=594, - REGEXP_INSTR=595, REGEXP_LIKE=596, REGEXP_MATCH=597, REGEXP_MATCHES=598, - REGEXP_REPLACE=599, REGEXP_SPLIT_TO_ARRAY=600, REGEXP_SPLIT_TO_TABLE=601, - REGEXP_SUBSTR=602, REPEAT=603, RPAD=604, RTRIM=605, SPLIT_PART=606, STARTS_WITH=607, - STRING_TO_ARRAY=608, STRING_TO_TABLE=609, STRPOS=610, SUBSTR=611, TO_ASCII=612, - TO_HEX=613, TRANSLATE=614, UNISTR=615, AGE=616, CLOCK_TIMESTAMP=617, DATE_BIN=618, - DATE_PART=619, DATE_TRUNC=620, ISFINITE=621, JUSTIFY_DAYS=622, JUSTIFY_HOURS=623, - JUSTIFY_INTERVAL=624, MAKE_DATE=625, MAKE_INTERVAL=626, MAKE_TIME=627, - MAKE_TIMESTAMP=628, MAKE_TIMESTAMPTZ=629, NOW=630, STATEMENT_TIMESTAMP=631, - TIMEOFDAY=632, TRANSACTION_TIMESTAMP=633, TO_TIMESTAMP=634, TO_CHAR=635, - TO_DATE=636, TO_NUMBER=637, Identifier=638, QuotedIdentifier=639, UnterminatedQuotedIdentifier=640, - InvalidQuotedIdentifier=641, InvalidUnterminatedQuotedIdentifier=642, - UnicodeQuotedIdentifier=643, UnterminatedUnicodeQuotedIdentifier=644, - InvalidUnicodeQuotedIdentifier=645, InvalidUnterminatedUnicodeQuotedIdentifier=646, - StringConstant=647, UnterminatedStringConstant=648, UnicodeEscapeStringConstant=649, - UnterminatedUnicodeEscapeStringConstant=650, BeginDollarStringConstant=651, - BinaryStringConstant=652, UnterminatedBinaryStringConstant=653, InvalidBinaryStringConstant=654, - InvalidUnterminatedBinaryStringConstant=655, HexadecimalStringConstant=656, - UnterminatedHexadecimalStringConstant=657, InvalidHexadecimalStringConstant=658, - InvalidUnterminatedHexadecimalStringConstant=659, Integral=660, NumericFail=661, - Numeric=662, PLSQLVARIABLENAME=663, PLSQLIDENTIFIER=664, Whitespace=665, - Newline=666, LineComment=667, BlockComment=668, UnterminatedBlockComment=669, - MetaCommand=670, EndMetaCommand=671, ErrorCharacter=672, EscapeStringConstant=673, - UnterminatedEscapeStringConstant=674, InvalidEscapeStringConstant=675, - InvalidUnterminatedEscapeStringConstant=676, AfterEscapeStringConstantMode_NotContinued=677, - AfterEscapeStringConstantWithNewlineMode_NotContinued=678, DollarText=679, - EndDollarStringConstant=680, AfterEscapeStringConstantWithNewlineMode_Continued=681; - public static final int - EscapeStringConstantMode=1, AfterEscapeStringConstantMode=2, AfterEscapeStringConstantWithNewlineMode=3, - DollarQuotedStringMode=4; - public static String[] channelNames = { - "DEFAULT_TOKEN_CHANNEL", "HIDDEN" - }; - - public static String[] modeNames = { - "DEFAULT_MODE", "EscapeStringConstantMode", "AfterEscapeStringConstantMode", - "AfterEscapeStringConstantWithNewlineMode", "DollarQuotedStringMode" - }; - - private static String[] makeRuleNames() { - return new String[] { - "Dollar", "OPEN_PAREN", "CLOSE_PAREN", "OPEN_BRACKET", "CLOSE_BRACKET", - "COMMA", "SEMI", "COLON", "STAR", "EQUAL", "DOT", "PLUS", "MINUS", "SLASH", - "CARET", "LT", "GT", "LESS_LESS", "GREATER_GREATER", "COLON_EQUALS", - "LESS_EQUALS", "EQUALS_GREATER", "GREATER_EQUALS", "DOT_DOT", "NOT_EQUALS", - "TYPECAST", "PERCENT", "PARAM", "Operator", "OperatorEndingWithPlusMinus", - "OperatorCharacter", "OperatorCharacterNotAllowPlusMinusAtEnd", "OperatorCharacterAllowPlusMinusAtEnd", - "ALL", "ANALYSE", "ANALYZE", "AND", "ANY", "ARRAY", "AS", "ASC", "ASYMMETRIC", - "BOTH", "CASE", "CAST", "CHECK", "COLLATE", "COLUMN", "CONSTRAINT", "CREATE", - "CURRENT_CATALOG", "CURRENT_DATE", "CURRENT_ROLE", "CURRENT_TIME", "CURRENT_TIMESTAMP", - "CURRENT_USER", "DEFAULT", "DEFERRABLE", "DESC", "DISTINCT", "DO", "ELSE", - "EXCEPT", "FALSE_P", "FETCH", "FOR", "FOREIGN", "FROM", "GRANT", "GROUP_P", - "HAVING", "IN_P", "INITIALLY", "INTERSECT", "INTO", "LATERAL_P", "LEADING", - "LIMIT", "LOCALTIME", "LOCALTIMESTAMP", "NOT", "NULL_P", "OFFSET", "ON", - "ONLY", "OR", "ORDER", "PLACING", "PRIMARY", "REFERENCES", "RETURNING", - "SELECT", "SESSION_USER", "SOME", "SYMMETRIC", "TABLE", "THEN", "TO", - "TOPIC", "STREAM", "TRAILING", "TRUE_P", "UNION", "UNIQUE", "USER", "USING", - "VARIADIC", "WHEN", "WHERE", "WINDOW", "WITH", "AUTHORIZATION", "BINARY", - "COLLATION", "CONCURRENTLY", "CROSS", "CURRENT_SCHEMA", "FREEZE", "FULL", - "ILIKE", "INNER_P", "IS", "ISNULL", "JOIN", "LEFT", "LIKE", "NATURAL", - "NOTNULL", "OUTER_P", "OVER", "OVERLAPS", "RIGHT", "SIMILAR", "VERBOSE", - "ABORT_P", "ABSOLUTE_P", "ACCESS", "ACTION", "ADD_P", "ADMIN", "AFTER", - "AGGREGATE", "ALSO", "ALTER", "ALWAYS", "ASSERTION", "ASSIGNMENT", "AT", - "ATTRIBUTE", "BACKWARD", "BEFORE", "BEGIN_P", "BY", "CACHE", "CALLED", - "CASCADE", "CASCADED", "CATALOG", "CHAIN", "CHARACTERISTICS", "CHECKPOINT", - "CLASS", "CLOSE", "CLUSTER", "COMMENT", "COMMENTS", "COMMIT", "COMMITTED", - "CONFIGURATION", "CONNECTION", "CONSTRAINTS", "CONTENT_P", "CONTINUE_P", - "CONVERSION_P", "COPY", "COST", "CSV", "CURSOR", "CYCLE", "DATA_P", "DATABASE", - "DAY_P", "DEALLOCATE", "DECLARE", "DEFAULTS", "DEFERRED", "DEFINER", - "DELETE_P", "DELIMITER", "DELIMITERS", "DICTIONARY", "DISABLE_P", "DISCARD", - "DOCUMENT_P", "DOMAIN_P", "DOUBLE_P", "DROP", "EACH", "ENABLE_P", "ENCODING", - "ENCRYPTED", "ENUM_P", "ESCAPE", "EVENT", "EXCLUDE", "EXCLUDING", "EXCLUSIVE", - "EXECUTE", "EXPLAIN", "EXTENSION", "EXTERNAL", "FAMILY", "FIRST_P", "FOLLOWING", - "FORCE", "FORWARD", "FUNCTION", "FUNCTIONS", "GLOBAL", "GRANTED", "HANDLER", - "HEADER_P", "HOLD", "HOUR_P", "IDENTITY_P", "IF_P", "IMMEDIATE", "IMMUTABLE", - "IMPLICIT_P", "INCLUDING", "INCREMENT", "INDEX", "INDEXES", "INHERIT", - "INHERITS", "INLINE_P", "INSENSITIVE", "INSERT", "INSTEAD", "INVOKER", - "ISOLATION", "KEY", "LABEL", "LANGUAGE", "LARGE_P", "LAST_P", "LEAKPROOF", - "LEVEL", "LISTEN", "LOAD", "LOCAL", "LOCATION", "LOCK_P", "MAPPING", - "MATCH", "MATCHED", "MATERIALIZED", "MAXVALUE", "MERGE", "MINUTE_P", - "MINVALUE", "MODE", "MONTH_P", "MOVE", "NAME_P", "NAMES", "NEXT", "NO", - "NOTHING", "NOTIFY", "NOWAIT", "NULLS_P", "OBJECT_P", "OF", "OFF", "OIDS", - "OPERATOR", "OPTION", "OPTIONS", "OWNED", "OWNER", "PARSER", "PARTIAL", - "PARTITION", "PASSING", "PASSWORD", "PLANS", "PRECEDING", "PREPARE", - "PREPARED", "PRESERVE", "PRIOR", "PRIVILEGES", "PROCEDURAL", "PROCEDURE", - "PROGRAM", "QUOTE", "RANGE", "READ", "REASSIGN", "RECHECK", "RECURSIVE", - "REF", "REFRESH", "REINDEX", "RELATIVE_P", "RELEASE", "RENAME", "REPEATABLE", - "REPLACE", "REPLICA", "RESET", "RESTART", "RESTRICT", "RETURNS", "REVOKE", - "ROLE", "ROLLBACK", "ROWS", "RULE", "SAVEPOINT", "SCHEMA", "SCROLL", - "SEARCH", "SECOND_P", "SECURITY", "SEQUENCE", "SEQUENCES", "SERIALIZABLE", - "SERVER", "SESSION", "SET", "SHARE", "SHOW", "SIMPLE", "SNAPSHOT", "STABLE", - "STANDALONE_P", "START", "STATEMENT", "STATISTICS", "STDIN", "STDOUT", - "STORAGE", "STRICT_P", "STRIP_P", "SYSID", "SYSTEM_P", "TABLES", "TABLESPACE", - "TEMP", "TEMPLATE", "TEMPORARY", "TEXT_P", "TRANSACTION", "TRIGGER", - "TRUNCATE", "TRUSTED", "TYPE_P", "TYPES_P", "UNBOUNDED", "UNCOMMITTED", - "UNENCRYPTED", "UNKNOWN", "UNLISTEN", "UNLOGGED", "UNTIL", "UPDATE", - "VACUUM", "VALID", "VALIDATE", "VALIDATOR", "VARYING", "VERSION_P", "VIEW", - "VOLATILE", "WHITESPACE_P", "WITHOUT", "WORK", "WRAPPER", "WRITE", "XML_P", - "YEAR_P", "YES_P", "ZONE", "BETWEEN", "BIGINT", "BIT", "BOOLEAN_P", "CHAR_P", - "CHARACTER", "COALESCE", "DEC", "DECIMAL_P", "EXISTS", "EXTRACT", "FLOAT_P", - "GREATEST", "INOUT", "INT_P", "INTEGER", "INTERVAL", "LEAST", "NATIONAL", - "NCHAR", "NONE", "NULLIF", "NUMERIC", "OVERLAY", "POSITION", "PRECISION", - "REAL", "ROW", "SETOF", "SMALLINT", "SUBSTRING", "TIME", "TIMESTAMP", - "TREAT", "TRIM", "VALUES", "VARCHAR", "XMLATTRIBUTES", "XMLCOMMENT", - "XMLAGG", "XML_IS_WELL_FORMED", "XML_IS_WELL_FORMED_DOCUMENT", "XML_IS_WELL_FORMED_CONTENT", - "XPATH", "XPATH_EXISTS", "XMLCONCAT", "XMLELEMENT", "XMLEXISTS", "XMLFOREST", - "XMLPARSE", "XMLPI", "XMLROOT", "XMLSERIALIZE", "CALL", "CURRENT_P", - "ATTACH", "DETACH", "EXPRESSION", "GENERATED", "LOGGED", "STORED", "INCLUDE", - "ROUTINE", "TRANSFORM", "IMPORT_P", "POLICY", "METHOD", "REFERENCING", - "NEW", "OLD", "VALUE_P", "SUBSCRIPTION", "PUBLICATION", "OUT_P", "END_P", - "ROUTINES", "SCHEMAS", "PROCEDURES", "INPUT_P", "SUPPORT", "PARALLEL", - "SQL_P", "DEPENDS", "OVERRIDING", "CONFLICT", "SKIP_P", "LOCKED", "TIES", - "ROLLUP", "CUBE", "GROUPING", "SETS", "TABLESAMPLE", "ORDINALITY", "XMLTABLE", - "COLUMNS", "XMLNAMESPACES", "ROWTYPE", "NORMALIZED", "WITHIN", "FILTER", - "GROUPS", "OTHERS", "NFC", "NFD", "NFKC", "NFKD", "UESCAPE", "VIEWS", - "NORMALIZE", "DUMP", "PRINT_STRICT_PARAMS", "VARIABLE_CONFLICT", "ERROR", - "USE_VARIABLE", "USE_COLUMN", "ALIAS", "CONSTANT", "PERFORM", "GET", - "DIAGNOSTICS", "STACKED", "ELSIF", "WHILE", "REVERSE", "FOREACH", "SLICE", - "EXIT", "RETURN", "QUERY", "RAISE", "SQLSTATE", "DEBUG", "LOG", "INFO", - "NOTICE", "WARNING", "EXCEPTION", "ASSERT", "LOOP", "OPEN", "ABS", "CBRT", - "CEIL", "CEILING", "DEGREES", "DIV", "EXP", "FACTORIAL", "FLOOR", "GCD", - "LCM", "LN", "LOG10", "MIN_SCALE", "MOD", "PI", "POWER", "RADIANS", "ROUND", - "SCALE", "SIGN", "SQRT", "TRIM_SCALE", "TRUNC", "WIDTH_BUCKET", "RANDOM", - "SETSEED", "ACOS", "ACOSD", "ASIN", "ASIND", "ATAN", "ATAND", "ATAN2", - "ATAN2D", "COS", "COSD", "COT", "COTD", "SIN", "SIND", "TAN", "TAND", - "SINH", "COSH", "TANH", "ASINH", "ACOSH", "ATANH", "BIT_LENGTH", "CHAR_LENGTH", - "CHARACTER_LENGTH", "LOWER", "OCTET_LENGTH", "UPPER", "ASCII", "BTRIM", - "CHR", "CONCAT", "CONCAT_WS", "FORMAT", "INITCAP", "LENGTH", "LPAD", - "LTRIM", "MD5", "PARSE_IDENT", "PG_CLIENT_ENCODING", "QUOTE_IDENT", "QUOTE_LITERAL", - "QUOTE_NULLABLE", "REGEXP_COUNT", "REGEXP_INSTR", "REGEXP_LIKE", "REGEXP_MATCH", - "REGEXP_MATCHES", "REGEXP_REPLACE", "REGEXP_SPLIT_TO_ARRAY", "REGEXP_SPLIT_TO_TABLE", - "REGEXP_SUBSTR", "REPEAT", "RPAD", "RTRIM", "SPLIT_PART", "STARTS_WITH", - "STRING_TO_ARRAY", "STRING_TO_TABLE", "STRPOS", "SUBSTR", "TO_ASCII", - "TO_HEX", "TRANSLATE", "UNISTR", "AGE", "CLOCK_TIMESTAMP", "DATE_BIN", - "DATE_PART", "DATE_TRUNC", "ISFINITE", "JUSTIFY_DAYS", "JUSTIFY_HOURS", - "JUSTIFY_INTERVAL", "MAKE_DATE", "MAKE_INTERVAL", "MAKE_TIME", "MAKE_TIMESTAMP", - "MAKE_TIMESTAMPTZ", "NOW", "STATEMENT_TIMESTAMP", "TIMEOFDAY", "TRANSACTION_TIMESTAMP", - "TO_TIMESTAMP", "TO_CHAR", "TO_DATE", "TO_NUMBER", "Identifier", "IdentifierStartChar", - "IdentifierChar", "StrictIdentifierChar", "QuotedIdentifier", "UnterminatedQuotedIdentifier", - "InvalidQuotedIdentifier", "InvalidUnterminatedQuotedIdentifier", "UnicodeQuotedIdentifier", - "UnterminatedUnicodeQuotedIdentifier", "InvalidUnicodeQuotedIdentifier", - "InvalidUnterminatedUnicodeQuotedIdentifier", "StringConstant", "UnterminatedStringConstant", - "BeginEscapeStringConstant", "UnicodeEscapeStringConstant", "UnterminatedUnicodeEscapeStringConstant", - "BeginDollarStringConstant", "Tag", "BinaryStringConstant", "UnterminatedBinaryStringConstant", - "InvalidBinaryStringConstant", "InvalidUnterminatedBinaryStringConstant", - "HexadecimalStringConstant", "UnterminatedHexadecimalStringConstant", - "InvalidHexadecimalStringConstant", "InvalidUnterminatedHexadecimalStringConstant", - "Integral", "NumericFail", "Numeric", "Digits", "PLSQLVARIABLENAME", - "PLSQLIDENTIFIER", "Whitespace", "Newline", "LineComment", "BlockComment", - "UnterminatedBlockComment", "MetaCommand", "EndMetaCommand", "ErrorCharacter", - "EscapeStringConstant", "UnterminatedEscapeStringConstant", "EscapeStringText", - "InvalidEscapeStringConstant", "InvalidUnterminatedEscapeStringConstant", - "InvalidEscapeStringText", "AfterEscapeStringConstantMode_Whitespace", - "AfterEscapeStringConstantMode_Newline", "AfterEscapeStringConstantMode_NotContinued", - "AfterEscapeStringConstantWithNewlineMode_Whitespace", "AfterEscapeStringConstantWithNewlineMode_Newline", - "AfterEscapeStringConstantWithNewlineMode_Continued", "AfterEscapeStringConstantWithNewlineMode_NotContinued", - "DollarText", "EndDollarStringConstant" - }; - } - public static final String[] ruleNames = makeRuleNames(); - - private static String[] makeLiteralNames() { - return new String[] { - null, "'$'", "'('", "')'", "'['", "']'", "','", "';'", "':'", "'*'", - "'='", "'.'", "'+'", "'-'", "'/'", "'^'", "'<'", "'>'", "'<<'", "'>>'", - "':='", "'<='", "'=>'", "'>='", "'..'", "'<>'", "'::'", "'%'", null, - null, "'ALL'", "'ANALYSE'", "'ANALYZE'", "'AND'", "'ANY'", "'ARRAY'", - "'AS'", "'ASC'", "'ASYMMETRIC'", "'BOTH'", "'CASE'", "'CAST'", "'CHECK'", - "'COLLATE'", "'COLUMN'", "'CONSTRAINT'", "'CREATE'", "'CURRENT_CATALOG'", - "'CURRENT_DATE'", "'CURRENT_ROLE'", "'CURRENT_TIME'", "'CURRENT_TIMESTAMP'", - "'CURRENT_USER'", "'DEFAULT'", "'DEFERRABLE'", "'DESC'", "'DISTINCT'", - "'DO'", "'ELSE'", "'EXCEPT'", "'FALSE'", "'FETCH'", "'FOR'", "'FOREIGN'", - "'FROM'", "'GRANT'", "'GROUP'", "'HAVING'", "'IN'", "'INITIALLY'", "'INTERSECT'", - "'INTO'", "'LATERAL'", "'LEADING'", "'LIMIT'", "'LOCALTIME'", "'LOCALTIMESTAMP'", - "'NOT'", "'NULL'", "'OFFSET'", "'ON'", "'ONLY'", "'OR'", "'ORDER'", "'PLACING'", - "'PRIMARY'", "'REFERENCES'", "'RETURNING'", "'SELECT'", "'SESSION_USER'", - "'SOME'", "'SYMMETRIC'", "'TABLE'", "'THEN'", "'TO'", "'TOPIC'", "'STREAM'", - "'TRAILING'", "'TRUE'", "'UNION'", "'UNIQUE'", "'USER'", "'USING'", "'VARIADIC'", - "'WHEN'", "'WHERE'", "'WINDOW'", "'WITH'", "'AUTHORIZATION'", "'BINARY'", - "'COLLATION'", "'CONCURRENTLY'", "'CROSS'", "'CURRENT_SCHEMA'", "'FREEZE'", - "'FULL'", "'ILIKE'", "'INNER'", "'IS'", "'ISNULL'", "'JOIN'", "'LEFT'", - "'LIKE'", "'NATURAL'", "'NOTNULL'", "'OUTER'", "'OVER'", "'OVERLAPS'", - "'RIGHT'", "'SIMILAR'", "'VERBOSE'", "'ABORT'", "'ABSOLUTE'", "'ACCESS'", - "'ACTION'", "'ADD'", "'ADMIN'", "'AFTER'", "'AGGREGATE'", "'ALSO'", "'ALTER'", - "'ALWAYS'", "'ASSERTION'", "'ASSIGNMENT'", "'AT'", "'ATTRIBUTE'", "'BACKWARD'", - "'BEFORE'", "'BEGIN'", "'BY'", "'CACHE'", "'CALLED'", "'CASCADE'", "'CASCADED'", - "'CATALOG'", "'CHAIN'", "'CHARACTERISTICS'", "'CHECKPOINT'", "'CLASS'", - "'CLOSE'", "'CLUSTER'", "'COMMENT'", "'COMMENTS'", "'COMMIT'", "'COMMITTED'", - "'CONFIGURATION'", "'CONNECTION'", "'CONSTRAINTS'", "'CONTENT'", "'CONTINUE'", - "'CONVERSION'", "'COPY'", "'COST'", "'CSV'", "'CURSOR'", "'CYCLE'", "'DATA'", - "'DATABASE'", "'DAY'", "'DEALLOCATE'", "'DECLARE'", "'DEFAULTS'", "'DEFERRED'", - "'DEFINER'", "'DELETE'", "'DELIMITER'", "'DELIMITERS'", "'DICTIONARY'", - "'DISABLE'", "'DISCARD'", "'DOCUMENT'", "'DOMAIN'", "'DOUBLE'", "'DROP'", - "'EACH'", "'ENABLE'", "'ENCODING'", "'ENCRYPTED'", "'ENUM'", "'ESCAPE'", - "'EVENT'", "'EXCLUDE'", "'EXCLUDING'", "'EXCLUSIVE'", "'EXECUTE'", "'EXPLAIN'", - "'EXTENSION'", "'EXTERNAL'", "'FAMILY'", "'FIRST'", "'FOLLOWING'", "'FORCE'", - "'FORWARD'", "'FUNCTION'", "'FUNCTIONS'", "'GLOBAL'", "'GRANTED'", "'HANDLER'", - "'HEADER'", "'HOLD'", "'HOUR'", "'IDENTITY'", "'IF'", "'IMMEDIATE'", - "'IMMUTABLE'", "'IMPLICIT'", "'INCLUDING'", "'INCREMENT'", "'INDEX'", - "'INDEXES'", "'INHERIT'", "'INHERITS'", "'INLINE'", "'INSENSITIVE'", - "'INSERT'", "'INSTEAD'", "'INVOKER'", "'ISOLATION'", "'KEY'", "'LABEL'", - "'LANGUAGE'", "'LARGE'", "'LAST'", "'LEAKPROOF'", "'LEVEL'", "'LISTEN'", - "'LOAD'", "'LOCAL'", "'LOCATION'", "'LOCK'", "'MAPPING'", "'MATCH'", - "'MATCHED'", "'MATERIALIZED'", "'MAXVALUE'", "'MERGE'", "'MINUTE'", "'MINVALUE'", - "'MODE'", "'MONTH'", "'MOVE'", "'NAME'", "'NAMES'", "'NEXT'", "'NO'", - "'NOTHING'", "'NOTIFY'", "'NOWAIT'", "'NULLS'", "'OBJECT'", "'OF'", "'OFF'", - "'OIDS'", "'OPERATOR'", "'OPTION'", "'OPTIONS'", "'OWNED'", "'OWNER'", - "'PARSER'", "'PARTIAL'", "'PARTITION'", "'PASSING'", "'PASSWORD'", "'PLANS'", - "'PRECEDING'", "'PREPARE'", "'PREPARED'", "'PRESERVE'", "'PRIOR'", "'PRIVILEGES'", - "'PROCEDURAL'", "'PROCEDURE'", "'PROGRAM'", "'QUOTE'", "'RANGE'", "'READ'", - "'REASSIGN'", "'RECHECK'", "'RECURSIVE'", "'REF'", "'REFRESH'", "'REINDEX'", - "'RELATIVE'", "'RELEASE'", "'RENAME'", "'REPEATABLE'", "'REPLACE'", "'REPLICA'", - "'RESET'", "'RESTART'", "'RESTRICT'", "'RETURNS'", "'REVOKE'", "'ROLE'", - "'ROLLBACK'", "'ROWS'", "'RULE'", "'SAVEPOINT'", "'SCHEMA'", "'SCROLL'", - "'SEARCH'", "'SECOND'", "'SECURITY'", "'SEQUENCE'", "'SEQUENCES'", "'SERIALIZABLE'", - "'SERVER'", "'SESSION'", "'SET'", "'SHARE'", "'SHOW'", "'SIMPLE'", "'SNAPSHOT'", - "'STABLE'", "'STANDALONE'", "'START'", "'STATEMENT'", "'STATISTICS'", - "'STDIN'", "'STDOUT'", "'STORAGE'", "'STRICT'", "'STRIP'", "'SYSID'", - "'SYSTEM'", "'TABLES'", "'TABLESPACE'", "'TEMP'", "'TEMPLATE'", "'TEMPORARY'", - "'TEXT'", "'TRANSACTION'", "'TRIGGER'", "'TRUNCATE'", "'TRUSTED'", "'TYPE'", - "'TYPES'", "'UNBOUNDED'", "'UNCOMMITTED'", "'UNENCRYPTED'", "'UNKNOWN'", - "'UNLISTEN'", "'UNLOGGED'", "'UNTIL'", "'UPDATE'", "'VACUUM'", "'VALID'", - "'VALIDATE'", "'VALIDATOR'", "'VARYING'", "'VERSION'", "'VIEW'", "'VOLATILE'", - "'WHITESPACE'", "'WITHOUT'", "'WORK'", "'WRAPPER'", "'WRITE'", "'XML'", - "'YEAR'", "'YES'", "'ZONE'", "'BETWEEN'", "'BIGINT'", "'BIT'", "'BOOLEAN'", - "'CHAR'", "'CHARACTER'", "'COALESCE'", "'DEC'", "'DECIMAL'", "'EXISTS'", - "'EXTRACT'", "'FLOAT'", "'GREATEST'", "'INOUT'", "'INT'", "'INTEGER'", - "'INTERVAL'", "'LEAST'", "'NATIONAL'", "'NCHAR'", "'NONE'", "'NULLIF'", - "'NUMERIC'", "'OVERLAY'", "'POSITION'", "'PRECISION'", "'REAL'", "'ROW'", - "'SETOF'", "'SMALLINT'", "'SUBSTRING'", "'TIME'", "'TIMESTAMP'", "'TREAT'", - "'TRIM'", "'VALUES'", "'VARCHAR'", "'XMLATTRIBUTES'", "'XMLCOMMENT'", - "'XMLAGG'", "'XML_IS_WELL_FORMED'", "'XML_IS_WELL_FORMED_DOCUMENT'", - "'XML_IS_WELL_FORMED_CONTENT'", "'XPATH'", "'XPATH_EXISTS'", "'XMLCONCAT'", - "'XMLELEMENT'", "'XMLEXISTS'", "'XMLFOREST'", "'XMLPARSE'", "'XMLPI'", - "'XMLROOT'", "'XMLSERIALIZE'", "'CALL'", "'CURRENT'", "'ATTACH'", "'DETACH'", - "'EXPRESSION'", "'GENERATED'", "'LOGGED'", "'STORED'", "'INCLUDE'", "'ROUTINE'", - "'TRANSFORM'", "'IMPORT'", "'POLICY'", "'METHOD'", "'REFERENCING'", "'NEW'", - "'OLD'", "'VALUE'", "'SUBSCRIPTION'", "'PUBLICATION'", "'OUT'", "'END'", - "'ROUTINES'", "'SCHEMAS'", "'PROCEDURES'", "'INPUT'", "'SUPPORT'", "'PARALLEL'", - "'SQL'", "'DEPENDS'", "'OVERRIDING'", "'CONFLICT'", "'SKIP'", "'LOCKED'", - "'TIES'", "'ROLLUP'", "'CUBE'", "'GROUPING'", "'SETS'", "'TABLESAMPLE'", - "'ORDINALITY'", "'XMLTABLE'", "'COLUMNS'", "'XMLNAMESPACES'", "'ROWTYPE'", - "'NORMALIZED'", "'WITHIN'", "'FILTER'", "'GROUPS'", "'OTHERS'", "'NFC'", - "'NFD'", "'NFKC'", "'NFKD'", "'UESCAPE'", "'VIEWS'", "'NORMALIZE'", "'DUMP'", - "'PRINT_STRICT_PARAMS'", "'VARIABLE_CONFLICT'", "'ERROR'", "'USE_VARIABLE'", - "'USE_COLUMN'", "'ALIAS'", "'CONSTANT'", "'PERFORM'", "'GET'", "'DIAGNOSTICS'", - "'STACKED'", "'ELSIF'", "'WHILE'", "'REVERSE'", "'FOREACH'", "'SLICE'", - "'EXIT'", "'RETURN'", "'QUERY'", "'RAISE'", "'SQLSTATE'", "'DEBUG'", - "'LOG'", "'INFO'", "'NOTICE'", "'WARNING'", "'EXCEPTION'", "'ASSERT'", - "'LOOP'", "'OPEN'", "'ABS'", "'CBRT'", "'CEIL'", "'CEILING'", "'DEGREES'", - "'DIV'", "'EXP'", "'FACTORIAL'", "'FLOOR'", "'GCD'", "'LCM'", "'LN'", - "'LOG10'", "'MIN_SCALE'", "'MOD'", "'PI'", "'POWER'", "'RADIANS'", "'ROUND'", - "'SCALE'", "'SIGN'", "'SQRT'", "'TRIM_SCALE'", "'TRUNC'", "'WIDTH_BUCKET'", - "'RANDOM'", "'SETSEED'", "'ACOS'", "'ACOSD'", "'ASIN'", "'ASIND'", "'ATAN'", - "'ATAND'", "'ATAN2'", "'ATAN2D'", "'COS'", "'COSD'", "'COT'", "'COTD'", - "'SIN'", "'SIND'", "'TAN'", "'TAND'", "'SINH'", "'COSH'", "'TANH'", "'ASINH'", - "'ACOSH'", "'ATANH'", "'BIT_LENGTH'", "'CHAR_LENGTH'", "'CHARACTER_LENGTH'", - "'LOWER'", "'OCTET_LENGTH'", "'UPPER'", "'ASCII'", "'BTRIM'", "'CHR'", - "'CONCAT'", "'CONCAT_WS'", "'FORMAT'", "'INITCAP'", "'LENGTH'", "'LPAD'", - "'LTRIM'", "'MD5'", "'PARSE_IDENT'", "'PG_CLIENT_ENCODING'", "'QUOTE_IDENT'", - "'QUOTE_LITERAL'", "'QUOTE_NULLABLE'", "'REGEXP_COUNT'", "'REGEXP_INSTR'", - "'REGEXP_LIKE'", "'REGEXP_MATCH'", "'REGEXP_MATCHES'", "'REGEXP_REPLACE'", - "'REGEXP_SPLIT_TO_ARRAY'", "'REGEXP_SPLIT_TO_TABLE'", "'REGEXP_SUBSTR'", - "'REPEAT'", "'RPAD'", "'RTRIM'", "'SPLIT_PART'", "'STARTS_WITH'", "'STRING_TO_ARRAY'", - "'STRING_TO_TABLE'", "'STRPOS'", "'SUBSTR'", "'TO_ASCII'", "'TO_HEX'", - "'TRANSLATE'", "'UNISTR'", "'AGE'", "'CLOCK_TIMESTAMP'", "'DATE_BIN'", - "'DATE_PART'", "'DATE_TRUNC'", "'ISFINITE'", "'JUSTIFY_DAYS'", "'JUSTIFY_HOURS'", - "'JUSTIFY_INTERVAL'", "'MAKE_DATE'", "'MAKE_INTERVAL'", "'MAKE_TIME'", - "'MAKE_TIMESTAMP'", "'MAKE_TIMESTAMPTZ'", "'NOW'", "'STATEMENT_TIMESTAMP'", - "'TIMEOFDAY'", "'TRANSACTION_TIMESTAMP'", "'TO_TIMESTAMP'", "'TO_CHAR'", - "'TO_DATE'", "'TO_NUMBER'", null, null, null, null, null, null, null, - null, null, null, null, null, null, null, null, null, null, null, null, - null, null, null, null, null, null, null, null, null, null, null, null, - null, null, "'\\\\'", null, null, null, null, null, null, null, null, - null, "'''" - }; - } - private static final String[] _LITERAL_NAMES = makeLiteralNames(); - private static String[] makeSymbolicNames() { - return new String[] { - null, "Dollar", "OPEN_PAREN", "CLOSE_PAREN", "OPEN_BRACKET", "CLOSE_BRACKET", - "COMMA", "SEMI", "COLON", "STAR", "EQUAL", "DOT", "PLUS", "MINUS", "SLASH", - "CARET", "LT", "GT", "LESS_LESS", "GREATER_GREATER", "COLON_EQUALS", - "LESS_EQUALS", "EQUALS_GREATER", "GREATER_EQUALS", "DOT_DOT", "NOT_EQUALS", - "TYPECAST", "PERCENT", "PARAM", "Operator", "ALL", "ANALYSE", "ANALYZE", - "AND", "ANY", "ARRAY", "AS", "ASC", "ASYMMETRIC", "BOTH", "CASE", "CAST", - "CHECK", "COLLATE", "COLUMN", "CONSTRAINT", "CREATE", "CURRENT_CATALOG", - "CURRENT_DATE", "CURRENT_ROLE", "CURRENT_TIME", "CURRENT_TIMESTAMP", - "CURRENT_USER", "DEFAULT", "DEFERRABLE", "DESC", "DISTINCT", "DO", "ELSE", - "EXCEPT", "FALSE_P", "FETCH", "FOR", "FOREIGN", "FROM", "GRANT", "GROUP_P", - "HAVING", "IN_P", "INITIALLY", "INTERSECT", "INTO", "LATERAL_P", "LEADING", - "LIMIT", "LOCALTIME", "LOCALTIMESTAMP", "NOT", "NULL_P", "OFFSET", "ON", - "ONLY", "OR", "ORDER", "PLACING", "PRIMARY", "REFERENCES", "RETURNING", - "SELECT", "SESSION_USER", "SOME", "SYMMETRIC", "TABLE", "THEN", "TO", - "TOPIC", "STREAM", "TRAILING", "TRUE_P", "UNION", "UNIQUE", "USER", "USING", - "VARIADIC", "WHEN", "WHERE", "WINDOW", "WITH", "AUTHORIZATION", "BINARY", - "COLLATION", "CONCURRENTLY", "CROSS", "CURRENT_SCHEMA", "FREEZE", "FULL", - "ILIKE", "INNER_P", "IS", "ISNULL", "JOIN", "LEFT", "LIKE", "NATURAL", - "NOTNULL", "OUTER_P", "OVER", "OVERLAPS", "RIGHT", "SIMILAR", "VERBOSE", - "ABORT_P", "ABSOLUTE_P", "ACCESS", "ACTION", "ADD_P", "ADMIN", "AFTER", - "AGGREGATE", "ALSO", "ALTER", "ALWAYS", "ASSERTION", "ASSIGNMENT", "AT", - "ATTRIBUTE", "BACKWARD", "BEFORE", "BEGIN_P", "BY", "CACHE", "CALLED", - "CASCADE", "CASCADED", "CATALOG", "CHAIN", "CHARACTERISTICS", "CHECKPOINT", - "CLASS", "CLOSE", "CLUSTER", "COMMENT", "COMMENTS", "COMMIT", "COMMITTED", - "CONFIGURATION", "CONNECTION", "CONSTRAINTS", "CONTENT_P", "CONTINUE_P", - "CONVERSION_P", "COPY", "COST", "CSV", "CURSOR", "CYCLE", "DATA_P", "DATABASE", - "DAY_P", "DEALLOCATE", "DECLARE", "DEFAULTS", "DEFERRED", "DEFINER", - "DELETE_P", "DELIMITER", "DELIMITERS", "DICTIONARY", "DISABLE_P", "DISCARD", - "DOCUMENT_P", "DOMAIN_P", "DOUBLE_P", "DROP", "EACH", "ENABLE_P", "ENCODING", - "ENCRYPTED", "ENUM_P", "ESCAPE", "EVENT", "EXCLUDE", "EXCLUDING", "EXCLUSIVE", - "EXECUTE", "EXPLAIN", "EXTENSION", "EXTERNAL", "FAMILY", "FIRST_P", "FOLLOWING", - "FORCE", "FORWARD", "FUNCTION", "FUNCTIONS", "GLOBAL", "GRANTED", "HANDLER", - "HEADER_P", "HOLD", "HOUR_P", "IDENTITY_P", "IF_P", "IMMEDIATE", "IMMUTABLE", - "IMPLICIT_P", "INCLUDING", "INCREMENT", "INDEX", "INDEXES", "INHERIT", - "INHERITS", "INLINE_P", "INSENSITIVE", "INSERT", "INSTEAD", "INVOKER", - "ISOLATION", "KEY", "LABEL", "LANGUAGE", "LARGE_P", "LAST_P", "LEAKPROOF", - "LEVEL", "LISTEN", "LOAD", "LOCAL", "LOCATION", "LOCK_P", "MAPPING", - "MATCH", "MATCHED", "MATERIALIZED", "MAXVALUE", "MERGE", "MINUTE_P", - "MINVALUE", "MODE", "MONTH_P", "MOVE", "NAME_P", "NAMES", "NEXT", "NO", - "NOTHING", "NOTIFY", "NOWAIT", "NULLS_P", "OBJECT_P", "OF", "OFF", "OIDS", - "OPERATOR", "OPTION", "OPTIONS", "OWNED", "OWNER", "PARSER", "PARTIAL", - "PARTITION", "PASSING", "PASSWORD", "PLANS", "PRECEDING", "PREPARE", - "PREPARED", "PRESERVE", "PRIOR", "PRIVILEGES", "PROCEDURAL", "PROCEDURE", - "PROGRAM", "QUOTE", "RANGE", "READ", "REASSIGN", "RECHECK", "RECURSIVE", - "REF", "REFRESH", "REINDEX", "RELATIVE_P", "RELEASE", "RENAME", "REPEATABLE", - "REPLACE", "REPLICA", "RESET", "RESTART", "RESTRICT", "RETURNS", "REVOKE", - "ROLE", "ROLLBACK", "ROWS", "RULE", "SAVEPOINT", "SCHEMA", "SCROLL", - "SEARCH", "SECOND_P", "SECURITY", "SEQUENCE", "SEQUENCES", "SERIALIZABLE", - "SERVER", "SESSION", "SET", "SHARE", "SHOW", "SIMPLE", "SNAPSHOT", "STABLE", - "STANDALONE_P", "START", "STATEMENT", "STATISTICS", "STDIN", "STDOUT", - "STORAGE", "STRICT_P", "STRIP_P", "SYSID", "SYSTEM_P", "TABLES", "TABLESPACE", - "TEMP", "TEMPLATE", "TEMPORARY", "TEXT_P", "TRANSACTION", "TRIGGER", - "TRUNCATE", "TRUSTED", "TYPE_P", "TYPES_P", "UNBOUNDED", "UNCOMMITTED", - "UNENCRYPTED", "UNKNOWN", "UNLISTEN", "UNLOGGED", "UNTIL", "UPDATE", - "VACUUM", "VALID", "VALIDATE", "VALIDATOR", "VARYING", "VERSION_P", "VIEW", - "VOLATILE", "WHITESPACE_P", "WITHOUT", "WORK", "WRAPPER", "WRITE", "XML_P", - "YEAR_P", "YES_P", "ZONE", "BETWEEN", "BIGINT", "BIT", "BOOLEAN_P", "CHAR_P", - "CHARACTER", "COALESCE", "DEC", "DECIMAL_P", "EXISTS", "EXTRACT", "FLOAT_P", - "GREATEST", "INOUT", "INT_P", "INTEGER", "INTERVAL", "LEAST", "NATIONAL", - "NCHAR", "NONE", "NULLIF", "NUMERIC", "OVERLAY", "POSITION", "PRECISION", - "REAL", "ROW", "SETOF", "SMALLINT", "SUBSTRING", "TIME", "TIMESTAMP", - "TREAT", "TRIM", "VALUES", "VARCHAR", "XMLATTRIBUTES", "XMLCOMMENT", - "XMLAGG", "XML_IS_WELL_FORMED", "XML_IS_WELL_FORMED_DOCUMENT", "XML_IS_WELL_FORMED_CONTENT", - "XPATH", "XPATH_EXISTS", "XMLCONCAT", "XMLELEMENT", "XMLEXISTS", "XMLFOREST", - "XMLPARSE", "XMLPI", "XMLROOT", "XMLSERIALIZE", "CALL", "CURRENT_P", - "ATTACH", "DETACH", "EXPRESSION", "GENERATED", "LOGGED", "STORED", "INCLUDE", - "ROUTINE", "TRANSFORM", "IMPORT_P", "POLICY", "METHOD", "REFERENCING", - "NEW", "OLD", "VALUE_P", "SUBSCRIPTION", "PUBLICATION", "OUT_P", "END_P", - "ROUTINES", "SCHEMAS", "PROCEDURES", "INPUT_P", "SUPPORT", "PARALLEL", - "SQL_P", "DEPENDS", "OVERRIDING", "CONFLICT", "SKIP_P", "LOCKED", "TIES", - "ROLLUP", "CUBE", "GROUPING", "SETS", "TABLESAMPLE", "ORDINALITY", "XMLTABLE", - "COLUMNS", "XMLNAMESPACES", "ROWTYPE", "NORMALIZED", "WITHIN", "FILTER", - "GROUPS", "OTHERS", "NFC", "NFD", "NFKC", "NFKD", "UESCAPE", "VIEWS", - "NORMALIZE", "DUMP", "PRINT_STRICT_PARAMS", "VARIABLE_CONFLICT", "ERROR", - "USE_VARIABLE", "USE_COLUMN", "ALIAS", "CONSTANT", "PERFORM", "GET", - "DIAGNOSTICS", "STACKED", "ELSIF", "WHILE", "REVERSE", "FOREACH", "SLICE", - "EXIT", "RETURN", "QUERY", "RAISE", "SQLSTATE", "DEBUG", "LOG", "INFO", - "NOTICE", "WARNING", "EXCEPTION", "ASSERT", "LOOP", "OPEN", "ABS", "CBRT", - "CEIL", "CEILING", "DEGREES", "DIV", "EXP", "FACTORIAL", "FLOOR", "GCD", - "LCM", "LN", "LOG10", "MIN_SCALE", "MOD", "PI", "POWER", "RADIANS", "ROUND", - "SCALE", "SIGN", "SQRT", "TRIM_SCALE", "TRUNC", "WIDTH_BUCKET", "RANDOM", - "SETSEED", "ACOS", "ACOSD", "ASIN", "ASIND", "ATAN", "ATAND", "ATAN2", - "ATAN2D", "COS", "COSD", "COT", "COTD", "SIN", "SIND", "TAN", "TAND", - "SINH", "COSH", "TANH", "ASINH", "ACOSH", "ATANH", "BIT_LENGTH", "CHAR_LENGTH", - "CHARACTER_LENGTH", "LOWER", "OCTET_LENGTH", "UPPER", "ASCII", "BTRIM", - "CHR", "CONCAT", "CONCAT_WS", "FORMAT", "INITCAP", "LENGTH", "LPAD", - "LTRIM", "MD5", "PARSE_IDENT", "PG_CLIENT_ENCODING", "QUOTE_IDENT", "QUOTE_LITERAL", - "QUOTE_NULLABLE", "REGEXP_COUNT", "REGEXP_INSTR", "REGEXP_LIKE", "REGEXP_MATCH", - "REGEXP_MATCHES", "REGEXP_REPLACE", "REGEXP_SPLIT_TO_ARRAY", "REGEXP_SPLIT_TO_TABLE", - "REGEXP_SUBSTR", "REPEAT", "RPAD", "RTRIM", "SPLIT_PART", "STARTS_WITH", - "STRING_TO_ARRAY", "STRING_TO_TABLE", "STRPOS", "SUBSTR", "TO_ASCII", - "TO_HEX", "TRANSLATE", "UNISTR", "AGE", "CLOCK_TIMESTAMP", "DATE_BIN", - "DATE_PART", "DATE_TRUNC", "ISFINITE", "JUSTIFY_DAYS", "JUSTIFY_HOURS", - "JUSTIFY_INTERVAL", "MAKE_DATE", "MAKE_INTERVAL", "MAKE_TIME", "MAKE_TIMESTAMP", - "MAKE_TIMESTAMPTZ", "NOW", "STATEMENT_TIMESTAMP", "TIMEOFDAY", "TRANSACTION_TIMESTAMP", - "TO_TIMESTAMP", "TO_CHAR", "TO_DATE", "TO_NUMBER", "Identifier", "QuotedIdentifier", - "UnterminatedQuotedIdentifier", "InvalidQuotedIdentifier", "InvalidUnterminatedQuotedIdentifier", - "UnicodeQuotedIdentifier", "UnterminatedUnicodeQuotedIdentifier", "InvalidUnicodeQuotedIdentifier", - "InvalidUnterminatedUnicodeQuotedIdentifier", "StringConstant", "UnterminatedStringConstant", - "UnicodeEscapeStringConstant", "UnterminatedUnicodeEscapeStringConstant", - "BeginDollarStringConstant", "BinaryStringConstant", "UnterminatedBinaryStringConstant", - "InvalidBinaryStringConstant", "InvalidUnterminatedBinaryStringConstant", - "HexadecimalStringConstant", "UnterminatedHexadecimalStringConstant", - "InvalidHexadecimalStringConstant", "InvalidUnterminatedHexadecimalStringConstant", - "Integral", "NumericFail", "Numeric", "PLSQLVARIABLENAME", "PLSQLIDENTIFIER", - "Whitespace", "Newline", "LineComment", "BlockComment", "UnterminatedBlockComment", - "MetaCommand", "EndMetaCommand", "ErrorCharacter", "EscapeStringConstant", - "UnterminatedEscapeStringConstant", "InvalidEscapeStringConstant", "InvalidUnterminatedEscapeStringConstant", - "AfterEscapeStringConstantMode_NotContinued", "AfterEscapeStringConstantWithNewlineMode_NotContinued", - "DollarText", "EndDollarStringConstant", "AfterEscapeStringConstantWithNewlineMode_Continued" - }; - } - private static final String[] _SYMBOLIC_NAMES = makeSymbolicNames(); - public static final Vocabulary VOCABULARY = new VocabularyImpl(_LITERAL_NAMES, _SYMBOLIC_NAMES); - - /** - * @deprecated Use {@link #VOCABULARY} instead. - */ - @Deprecated - public static final String[] tokenNames; - static { - tokenNames = new String[_SYMBOLIC_NAMES.length]; - for (int i = 0; i < tokenNames.length; i++) { - tokenNames[i] = VOCABULARY.getLiteralName(i); - if (tokenNames[i] == null) { - tokenNames[i] = VOCABULARY.getSymbolicName(i); - } - - if (tokenNames[i] == null) { - tokenNames[i] = ""; - } - } - } - - @Override - @Deprecated - public String[] getTokenNames() { - return tokenNames; - } - - @Override - - public Vocabulary getVocabulary() { - return VOCABULARY; - } - - - /* This field stores the tags which are used to detect the end of a dollar-quoted string literal. - */ - - - public PostgreSqlLexer(CharStream input) { - super(input); - _interp = new LexerATNSimulator(this,_ATN,_decisionToDFA,_sharedContextCache); - } - - @Override - public String getGrammarFileName() { return "PostgreSqlLexer.g4"; } - - @Override - public String[] getRuleNames() { return ruleNames; } - - @Override - public String getSerializedATN() { return _serializedATN; } - - @Override - public String[] getChannelNames() { return channelNames; } - - @Override - public String[] getModeNames() { return modeNames; } - - @Override - public ATN getATN() { return _ATN; } - - @Override - public void action(RuleContext _localctx, int ruleIndex, int actionIndex) { - switch (ruleIndex) { - case 28: - Operator_action((RuleContext)_localctx, actionIndex); - break; - case 658: - BeginDollarStringConstant_action((RuleContext)_localctx, actionIndex); - break; - case 669: - NumericFail_action((RuleContext)_localctx, actionIndex); - break; - case 678: - UnterminatedBlockComment_action((RuleContext)_localctx, actionIndex); - break; - case 690: - AfterEscapeStringConstantMode_NotContinued_action((RuleContext)_localctx, actionIndex); - break; - case 694: - AfterEscapeStringConstantWithNewlineMode_NotContinued_action((RuleContext)_localctx, actionIndex); - break; - case 696: - EndDollarStringConstant_action((RuleContext)_localctx, actionIndex); - break; - } - } - private void Operator_action(RuleContext _localctx, int actionIndex) { - switch (actionIndex) { - case 0: - - handleLessLessGreaterGreater(); - - break; - } - } - private void BeginDollarStringConstant_action(RuleContext _localctx, int actionIndex) { - switch (actionIndex) { - case 1: - pushTag(); - break; - } - } - private void NumericFail_action(RuleContext _localctx, int actionIndex) { - switch (actionIndex) { - case 2: - handleNumericFail(); - break; - } - } - private void UnterminatedBlockComment_action(RuleContext _localctx, int actionIndex) { - switch (actionIndex) { - case 3: - - unterminatedBlockCommentDebugAssert(); - - break; - } - } - private void AfterEscapeStringConstantMode_NotContinued_action(RuleContext _localctx, int actionIndex) { - switch (actionIndex) { - case 4: - break; - } - } - private void AfterEscapeStringConstantWithNewlineMode_NotContinued_action(RuleContext _localctx, int actionIndex) { - switch (actionIndex) { - case 5: - break; - } - } - private void EndDollarStringConstant_action(RuleContext _localctx, int actionIndex) { - switch (actionIndex) { - case 6: - popTag(); - break; - } - } - @Override - public boolean sempred(RuleContext _localctx, int ruleIndex, int predIndex) { - switch (ruleIndex) { - case 28: - return Operator_sempred((RuleContext)_localctx, predIndex); - case 29: - return OperatorEndingWithPlusMinus_sempred((RuleContext)_localctx, predIndex); - case 642: - return IdentifierStartChar_sempred((RuleContext)_localctx, predIndex); - case 696: - return EndDollarStringConstant_sempred((RuleContext)_localctx, predIndex); - } - return true; - } - private boolean Operator_sempred(RuleContext _localctx, int predIndex) { - switch (predIndex) { - case 0: - return checkLA('-'); - case 1: - return checkLA('*'); - case 2: - return checkLA('*'); - } - return true; - } - private boolean OperatorEndingWithPlusMinus_sempred(RuleContext _localctx, int predIndex) { - switch (predIndex) { - case 3: - return checkLA('-'); - case 4: - return checkLA('*'); - case 5: - return checkLA('-'); - } - return true; - } - private boolean IdentifierStartChar_sempred(RuleContext _localctx, int predIndex) { - switch (predIndex) { - case 6: - return charIsLetter(); - case 7: - return - checkIfUtf32Letter() - ; - } - return true; - } - private boolean EndDollarStringConstant_sempred(RuleContext _localctx, int predIndex) { - switch (predIndex) { - case 8: - return isTag(); - } - return true; - } - - private static final String _serializedATNSegment0 = - "\u0004\u0000\u02a9\u1a98\u0006\uffff\uffff\u0006\uffff\uffff\u0006\uffff"+ - "\uffff\u0006\uffff\uffff\u0006\uffff\uffff\u0002\u0000\u0007\u0000\u0002"+ - "\u0001\u0007\u0001\u0002\u0002\u0007\u0002\u0002\u0003\u0007\u0003\u0002"+ - "\u0004\u0007\u0004\u0002\u0005\u0007\u0005\u0002\u0006\u0007\u0006\u0002"+ - "\u0007\u0007\u0007\u0002\b\u0007\b\u0002\t\u0007\t\u0002\n\u0007\n\u0002"+ - "\u000b\u0007\u000b\u0002\f\u0007\f\u0002\r\u0007\r\u0002\u000e\u0007\u000e"+ - "\u0002\u000f\u0007\u000f\u0002\u0010\u0007\u0010\u0002\u0011\u0007\u0011"+ - "\u0002\u0012\u0007\u0012\u0002\u0013\u0007\u0013\u0002\u0014\u0007\u0014"+ - "\u0002\u0015\u0007\u0015\u0002\u0016\u0007\u0016\u0002\u0017\u0007\u0017"+ - "\u0002\u0018\u0007\u0018\u0002\u0019\u0007\u0019\u0002\u001a\u0007\u001a"+ - "\u0002\u001b\u0007\u001b\u0002\u001c\u0007\u001c\u0002\u001d\u0007\u001d"+ - "\u0002\u001e\u0007\u001e\u0002\u001f\u0007\u001f\u0002 \u0007 \u0002!"+ - "\u0007!\u0002\"\u0007\"\u0002#\u0007#\u0002$\u0007$\u0002%\u0007%\u0002"+ - "&\u0007&\u0002\'\u0007\'\u0002(\u0007(\u0002)\u0007)\u0002*\u0007*\u0002"+ - "+\u0007+\u0002,\u0007,\u0002-\u0007-\u0002.\u0007.\u0002/\u0007/\u0002"+ - "0\u00070\u00021\u00071\u00022\u00072\u00023\u00073\u00024\u00074\u0002"+ - "5\u00075\u00026\u00076\u00027\u00077\u00028\u00078\u00029\u00079\u0002"+ - ":\u0007:\u0002;\u0007;\u0002<\u0007<\u0002=\u0007=\u0002>\u0007>\u0002"+ - "?\u0007?\u0002@\u0007@\u0002A\u0007A\u0002B\u0007B\u0002C\u0007C\u0002"+ - "D\u0007D\u0002E\u0007E\u0002F\u0007F\u0002G\u0007G\u0002H\u0007H\u0002"+ - "I\u0007I\u0002J\u0007J\u0002K\u0007K\u0002L\u0007L\u0002M\u0007M\u0002"+ - "N\u0007N\u0002O\u0007O\u0002P\u0007P\u0002Q\u0007Q\u0002R\u0007R\u0002"+ - "S\u0007S\u0002T\u0007T\u0002U\u0007U\u0002V\u0007V\u0002W\u0007W\u0002"+ - "X\u0007X\u0002Y\u0007Y\u0002Z\u0007Z\u0002[\u0007[\u0002\\\u0007\\\u0002"+ - "]\u0007]\u0002^\u0007^\u0002_\u0007_\u0002`\u0007`\u0002a\u0007a\u0002"+ - "b\u0007b\u0002c\u0007c\u0002d\u0007d\u0002e\u0007e\u0002f\u0007f\u0002"+ - "g\u0007g\u0002h\u0007h\u0002i\u0007i\u0002j\u0007j\u0002k\u0007k\u0002"+ - "l\u0007l\u0002m\u0007m\u0002n\u0007n\u0002o\u0007o\u0002p\u0007p\u0002"+ - "q\u0007q\u0002r\u0007r\u0002s\u0007s\u0002t\u0007t\u0002u\u0007u\u0002"+ - "v\u0007v\u0002w\u0007w\u0002x\u0007x\u0002y\u0007y\u0002z\u0007z\u0002"+ - "{\u0007{\u0002|\u0007|\u0002}\u0007}\u0002~\u0007~\u0002\u007f\u0007\u007f"+ - "\u0002\u0080\u0007\u0080\u0002\u0081\u0007\u0081\u0002\u0082\u0007\u0082"+ - "\u0002\u0083\u0007\u0083\u0002\u0084\u0007\u0084\u0002\u0085\u0007\u0085"+ - "\u0002\u0086\u0007\u0086\u0002\u0087\u0007\u0087\u0002\u0088\u0007\u0088"+ - "\u0002\u0089\u0007\u0089\u0002\u008a\u0007\u008a\u0002\u008b\u0007\u008b"+ - "\u0002\u008c\u0007\u008c\u0002\u008d\u0007\u008d\u0002\u008e\u0007\u008e"+ - "\u0002\u008f\u0007\u008f\u0002\u0090\u0007\u0090\u0002\u0091\u0007\u0091"+ - "\u0002\u0092\u0007\u0092\u0002\u0093\u0007\u0093\u0002\u0094\u0007\u0094"+ - "\u0002\u0095\u0007\u0095\u0002\u0096\u0007\u0096\u0002\u0097\u0007\u0097"+ - "\u0002\u0098\u0007\u0098\u0002\u0099\u0007\u0099\u0002\u009a\u0007\u009a"+ - "\u0002\u009b\u0007\u009b\u0002\u009c\u0007\u009c\u0002\u009d\u0007\u009d"+ - "\u0002\u009e\u0007\u009e\u0002\u009f\u0007\u009f\u0002\u00a0\u0007\u00a0"+ - "\u0002\u00a1\u0007\u00a1\u0002\u00a2\u0007\u00a2\u0002\u00a3\u0007\u00a3"+ - "\u0002\u00a4\u0007\u00a4\u0002\u00a5\u0007\u00a5\u0002\u00a6\u0007\u00a6"+ - "\u0002\u00a7\u0007\u00a7\u0002\u00a8\u0007\u00a8\u0002\u00a9\u0007\u00a9"+ - "\u0002\u00aa\u0007\u00aa\u0002\u00ab\u0007\u00ab\u0002\u00ac\u0007\u00ac"+ - "\u0002\u00ad\u0007\u00ad\u0002\u00ae\u0007\u00ae\u0002\u00af\u0007\u00af"+ - "\u0002\u00b0\u0007\u00b0\u0002\u00b1\u0007\u00b1\u0002\u00b2\u0007\u00b2"+ - "\u0002\u00b3\u0007\u00b3\u0002\u00b4\u0007\u00b4\u0002\u00b5\u0007\u00b5"+ - "\u0002\u00b6\u0007\u00b6\u0002\u00b7\u0007\u00b7\u0002\u00b8\u0007\u00b8"+ - "\u0002\u00b9\u0007\u00b9\u0002\u00ba\u0007\u00ba\u0002\u00bb\u0007\u00bb"+ - "\u0002\u00bc\u0007\u00bc\u0002\u00bd\u0007\u00bd\u0002\u00be\u0007\u00be"+ - "\u0002\u00bf\u0007\u00bf\u0002\u00c0\u0007\u00c0\u0002\u00c1\u0007\u00c1"+ - "\u0002\u00c2\u0007\u00c2\u0002\u00c3\u0007\u00c3\u0002\u00c4\u0007\u00c4"+ - "\u0002\u00c5\u0007\u00c5\u0002\u00c6\u0007\u00c6\u0002\u00c7\u0007\u00c7"+ - "\u0002\u00c8\u0007\u00c8\u0002\u00c9\u0007\u00c9\u0002\u00ca\u0007\u00ca"+ - "\u0002\u00cb\u0007\u00cb\u0002\u00cc\u0007\u00cc\u0002\u00cd\u0007\u00cd"+ - "\u0002\u00ce\u0007\u00ce\u0002\u00cf\u0007\u00cf\u0002\u00d0\u0007\u00d0"+ - "\u0002\u00d1\u0007\u00d1\u0002\u00d2\u0007\u00d2\u0002\u00d3\u0007\u00d3"+ - "\u0002\u00d4\u0007\u00d4\u0002\u00d5\u0007\u00d5\u0002\u00d6\u0007\u00d6"+ - "\u0002\u00d7\u0007\u00d7\u0002\u00d8\u0007\u00d8\u0002\u00d9\u0007\u00d9"+ - "\u0002\u00da\u0007\u00da\u0002\u00db\u0007\u00db\u0002\u00dc\u0007\u00dc"+ - "\u0002\u00dd\u0007\u00dd\u0002\u00de\u0007\u00de\u0002\u00df\u0007\u00df"+ - "\u0002\u00e0\u0007\u00e0\u0002\u00e1\u0007\u00e1\u0002\u00e2\u0007\u00e2"+ - "\u0002\u00e3\u0007\u00e3\u0002\u00e4\u0007\u00e4\u0002\u00e5\u0007\u00e5"+ - "\u0002\u00e6\u0007\u00e6\u0002\u00e7\u0007\u00e7\u0002\u00e8\u0007\u00e8"+ - "\u0002\u00e9\u0007\u00e9\u0002\u00ea\u0007\u00ea\u0002\u00eb\u0007\u00eb"+ - "\u0002\u00ec\u0007\u00ec\u0002\u00ed\u0007\u00ed\u0002\u00ee\u0007\u00ee"+ - "\u0002\u00ef\u0007\u00ef\u0002\u00f0\u0007\u00f0\u0002\u00f1\u0007\u00f1"+ - "\u0002\u00f2\u0007\u00f2\u0002\u00f3\u0007\u00f3\u0002\u00f4\u0007\u00f4"+ - "\u0002\u00f5\u0007\u00f5\u0002\u00f6\u0007\u00f6\u0002\u00f7\u0007\u00f7"+ - "\u0002\u00f8\u0007\u00f8\u0002\u00f9\u0007\u00f9\u0002\u00fa\u0007\u00fa"+ - "\u0002\u00fb\u0007\u00fb\u0002\u00fc\u0007\u00fc\u0002\u00fd\u0007\u00fd"+ - "\u0002\u00fe\u0007\u00fe\u0002\u00ff\u0007\u00ff\u0002\u0100\u0007\u0100"+ - "\u0002\u0101\u0007\u0101\u0002\u0102\u0007\u0102\u0002\u0103\u0007\u0103"+ - "\u0002\u0104\u0007\u0104\u0002\u0105\u0007\u0105\u0002\u0106\u0007\u0106"+ - "\u0002\u0107\u0007\u0107\u0002\u0108\u0007\u0108\u0002\u0109\u0007\u0109"+ - "\u0002\u010a\u0007\u010a\u0002\u010b\u0007\u010b\u0002\u010c\u0007\u010c"+ - "\u0002\u010d\u0007\u010d\u0002\u010e\u0007\u010e\u0002\u010f\u0007\u010f"+ - "\u0002\u0110\u0007\u0110\u0002\u0111\u0007\u0111\u0002\u0112\u0007\u0112"+ - "\u0002\u0113\u0007\u0113\u0002\u0114\u0007\u0114\u0002\u0115\u0007\u0115"+ - "\u0002\u0116\u0007\u0116\u0002\u0117\u0007\u0117\u0002\u0118\u0007\u0118"+ - "\u0002\u0119\u0007\u0119\u0002\u011a\u0007\u011a\u0002\u011b\u0007\u011b"+ - "\u0002\u011c\u0007\u011c\u0002\u011d\u0007\u011d\u0002\u011e\u0007\u011e"+ - "\u0002\u011f\u0007\u011f\u0002\u0120\u0007\u0120\u0002\u0121\u0007\u0121"+ - "\u0002\u0122\u0007\u0122\u0002\u0123\u0007\u0123\u0002\u0124\u0007\u0124"+ - "\u0002\u0125\u0007\u0125\u0002\u0126\u0007\u0126\u0002\u0127\u0007\u0127"+ - "\u0002\u0128\u0007\u0128\u0002\u0129\u0007\u0129\u0002\u012a\u0007\u012a"+ - "\u0002\u012b\u0007\u012b\u0002\u012c\u0007\u012c\u0002\u012d\u0007\u012d"+ - "\u0002\u012e\u0007\u012e\u0002\u012f\u0007\u012f\u0002\u0130\u0007\u0130"+ - "\u0002\u0131\u0007\u0131\u0002\u0132\u0007\u0132\u0002\u0133\u0007\u0133"+ - "\u0002\u0134\u0007\u0134\u0002\u0135\u0007\u0135\u0002\u0136\u0007\u0136"+ - "\u0002\u0137\u0007\u0137\u0002\u0138\u0007\u0138\u0002\u0139\u0007\u0139"+ - "\u0002\u013a\u0007\u013a\u0002\u013b\u0007\u013b\u0002\u013c\u0007\u013c"+ - "\u0002\u013d\u0007\u013d\u0002\u013e\u0007\u013e\u0002\u013f\u0007\u013f"+ - "\u0002\u0140\u0007\u0140\u0002\u0141\u0007\u0141\u0002\u0142\u0007\u0142"+ - "\u0002\u0143\u0007\u0143\u0002\u0144\u0007\u0144\u0002\u0145\u0007\u0145"+ - "\u0002\u0146\u0007\u0146\u0002\u0147\u0007\u0147\u0002\u0148\u0007\u0148"+ - "\u0002\u0149\u0007\u0149\u0002\u014a\u0007\u014a\u0002\u014b\u0007\u014b"+ - "\u0002\u014c\u0007\u014c\u0002\u014d\u0007\u014d\u0002\u014e\u0007\u014e"+ - "\u0002\u014f\u0007\u014f\u0002\u0150\u0007\u0150\u0002\u0151\u0007\u0151"+ - "\u0002\u0152\u0007\u0152\u0002\u0153\u0007\u0153\u0002\u0154\u0007\u0154"+ - "\u0002\u0155\u0007\u0155\u0002\u0156\u0007\u0156\u0002\u0157\u0007\u0157"+ - "\u0002\u0158\u0007\u0158\u0002\u0159\u0007\u0159\u0002\u015a\u0007\u015a"+ - "\u0002\u015b\u0007\u015b\u0002\u015c\u0007\u015c\u0002\u015d\u0007\u015d"+ - "\u0002\u015e\u0007\u015e\u0002\u015f\u0007\u015f\u0002\u0160\u0007\u0160"+ - "\u0002\u0161\u0007\u0161\u0002\u0162\u0007\u0162\u0002\u0163\u0007\u0163"+ - "\u0002\u0164\u0007\u0164\u0002\u0165\u0007\u0165\u0002\u0166\u0007\u0166"+ - "\u0002\u0167\u0007\u0167\u0002\u0168\u0007\u0168\u0002\u0169\u0007\u0169"+ - "\u0002\u016a\u0007\u016a\u0002\u016b\u0007\u016b\u0002\u016c\u0007\u016c"+ - "\u0002\u016d\u0007\u016d\u0002\u016e\u0007\u016e\u0002\u016f\u0007\u016f"+ - "\u0002\u0170\u0007\u0170\u0002\u0171\u0007\u0171\u0002\u0172\u0007\u0172"+ - "\u0002\u0173\u0007\u0173\u0002\u0174\u0007\u0174\u0002\u0175\u0007\u0175"+ - "\u0002\u0176\u0007\u0176\u0002\u0177\u0007\u0177\u0002\u0178\u0007\u0178"+ - "\u0002\u0179\u0007\u0179\u0002\u017a\u0007\u017a\u0002\u017b\u0007\u017b"+ - "\u0002\u017c\u0007\u017c\u0002\u017d\u0007\u017d\u0002\u017e\u0007\u017e"+ - "\u0002\u017f\u0007\u017f\u0002\u0180\u0007\u0180\u0002\u0181\u0007\u0181"+ - "\u0002\u0182\u0007\u0182\u0002\u0183\u0007\u0183\u0002\u0184\u0007\u0184"+ - "\u0002\u0185\u0007\u0185\u0002\u0186\u0007\u0186\u0002\u0187\u0007\u0187"+ - "\u0002\u0188\u0007\u0188\u0002\u0189\u0007\u0189\u0002\u018a\u0007\u018a"+ - "\u0002\u018b\u0007\u018b\u0002\u018c\u0007\u018c\u0002\u018d\u0007\u018d"+ - "\u0002\u018e\u0007\u018e\u0002\u018f\u0007\u018f\u0002\u0190\u0007\u0190"+ - "\u0002\u0191\u0007\u0191\u0002\u0192\u0007\u0192\u0002\u0193\u0007\u0193"+ - "\u0002\u0194\u0007\u0194\u0002\u0195\u0007\u0195\u0002\u0196\u0007\u0196"+ - "\u0002\u0197\u0007\u0197\u0002\u0198\u0007\u0198\u0002\u0199\u0007\u0199"+ - "\u0002\u019a\u0007\u019a\u0002\u019b\u0007\u019b\u0002\u019c\u0007\u019c"+ - "\u0002\u019d\u0007\u019d\u0002\u019e\u0007\u019e\u0002\u019f\u0007\u019f"+ - "\u0002\u01a0\u0007\u01a0\u0002\u01a1\u0007\u01a1\u0002\u01a2\u0007\u01a2"+ - "\u0002\u01a3\u0007\u01a3\u0002\u01a4\u0007\u01a4\u0002\u01a5\u0007\u01a5"+ - "\u0002\u01a6\u0007\u01a6\u0002\u01a7\u0007\u01a7\u0002\u01a8\u0007\u01a8"+ - "\u0002\u01a9\u0007\u01a9\u0002\u01aa\u0007\u01aa\u0002\u01ab\u0007\u01ab"+ - "\u0002\u01ac\u0007\u01ac\u0002\u01ad\u0007\u01ad\u0002\u01ae\u0007\u01ae"+ - "\u0002\u01af\u0007\u01af\u0002\u01b0\u0007\u01b0\u0002\u01b1\u0007\u01b1"+ - "\u0002\u01b2\u0007\u01b2\u0002\u01b3\u0007\u01b3\u0002\u01b4\u0007\u01b4"+ - "\u0002\u01b5\u0007\u01b5\u0002\u01b6\u0007\u01b6\u0002\u01b7\u0007\u01b7"+ - "\u0002\u01b8\u0007\u01b8\u0002\u01b9\u0007\u01b9\u0002\u01ba\u0007\u01ba"+ - "\u0002\u01bb\u0007\u01bb\u0002\u01bc\u0007\u01bc\u0002\u01bd\u0007\u01bd"+ - "\u0002\u01be\u0007\u01be\u0002\u01bf\u0007\u01bf\u0002\u01c0\u0007\u01c0"+ - "\u0002\u01c1\u0007\u01c1\u0002\u01c2\u0007\u01c2\u0002\u01c3\u0007\u01c3"+ - "\u0002\u01c4\u0007\u01c4\u0002\u01c5\u0007\u01c5\u0002\u01c6\u0007\u01c6"+ - "\u0002\u01c7\u0007\u01c7\u0002\u01c8\u0007\u01c8\u0002\u01c9\u0007\u01c9"+ - "\u0002\u01ca\u0007\u01ca\u0002\u01cb\u0007\u01cb\u0002\u01cc\u0007\u01cc"+ - "\u0002\u01cd\u0007\u01cd\u0002\u01ce\u0007\u01ce\u0002\u01cf\u0007\u01cf"+ - "\u0002\u01d0\u0007\u01d0\u0002\u01d1\u0007\u01d1\u0002\u01d2\u0007\u01d2"+ - "\u0002\u01d3\u0007\u01d3\u0002\u01d4\u0007\u01d4\u0002\u01d5\u0007\u01d5"+ - "\u0002\u01d6\u0007\u01d6\u0002\u01d7\u0007\u01d7\u0002\u01d8\u0007\u01d8"+ - "\u0002\u01d9\u0007\u01d9\u0002\u01da\u0007\u01da\u0002\u01db\u0007\u01db"+ - "\u0002\u01dc\u0007\u01dc\u0002\u01dd\u0007\u01dd\u0002\u01de\u0007\u01de"+ - "\u0002\u01df\u0007\u01df\u0002\u01e0\u0007\u01e0\u0002\u01e1\u0007\u01e1"+ - "\u0002\u01e2\u0007\u01e2\u0002\u01e3\u0007\u01e3\u0002\u01e4\u0007\u01e4"+ - "\u0002\u01e5\u0007\u01e5\u0002\u01e6\u0007\u01e6\u0002\u01e7\u0007\u01e7"+ - "\u0002\u01e8\u0007\u01e8\u0002\u01e9\u0007\u01e9\u0002\u01ea\u0007\u01ea"+ - "\u0002\u01eb\u0007\u01eb\u0002\u01ec\u0007\u01ec\u0002\u01ed\u0007\u01ed"+ - "\u0002\u01ee\u0007\u01ee\u0002\u01ef\u0007\u01ef\u0002\u01f0\u0007\u01f0"+ - "\u0002\u01f1\u0007\u01f1\u0002\u01f2\u0007\u01f2\u0002\u01f3\u0007\u01f3"+ - "\u0002\u01f4\u0007\u01f4\u0002\u01f5\u0007\u01f5\u0002\u01f6\u0007\u01f6"+ - "\u0002\u01f7\u0007\u01f7\u0002\u01f8\u0007\u01f8\u0002\u01f9\u0007\u01f9"+ - "\u0002\u01fa\u0007\u01fa\u0002\u01fb\u0007\u01fb\u0002\u01fc\u0007\u01fc"+ - "\u0002\u01fd\u0007\u01fd\u0002\u01fe\u0007\u01fe\u0002\u01ff\u0007\u01ff"+ - "\u0002\u0200\u0007\u0200\u0002\u0201\u0007\u0201\u0002\u0202\u0007\u0202"+ - "\u0002\u0203\u0007\u0203\u0002\u0204\u0007\u0204\u0002\u0205\u0007\u0205"+ - "\u0002\u0206\u0007\u0206\u0002\u0207\u0007\u0207\u0002\u0208\u0007\u0208"+ - "\u0002\u0209\u0007\u0209\u0002\u020a\u0007\u020a\u0002\u020b\u0007\u020b"+ - "\u0002\u020c\u0007\u020c\u0002\u020d\u0007\u020d\u0002\u020e\u0007\u020e"+ - "\u0002\u020f\u0007\u020f\u0002\u0210\u0007\u0210\u0002\u0211\u0007\u0211"+ - "\u0002\u0212\u0007\u0212\u0002\u0213\u0007\u0213\u0002\u0214\u0007\u0214"+ - "\u0002\u0215\u0007\u0215\u0002\u0216\u0007\u0216\u0002\u0217\u0007\u0217"+ - "\u0002\u0218\u0007\u0218\u0002\u0219\u0007\u0219\u0002\u021a\u0007\u021a"+ - "\u0002\u021b\u0007\u021b\u0002\u021c\u0007\u021c\u0002\u021d\u0007\u021d"+ - "\u0002\u021e\u0007\u021e\u0002\u021f\u0007\u021f\u0002\u0220\u0007\u0220"+ - "\u0002\u0221\u0007\u0221\u0002\u0222\u0007\u0222\u0002\u0223\u0007\u0223"+ - "\u0002\u0224\u0007\u0224\u0002\u0225\u0007\u0225\u0002\u0226\u0007\u0226"+ - "\u0002\u0227\u0007\u0227\u0002\u0228\u0007\u0228\u0002\u0229\u0007\u0229"+ - "\u0002\u022a\u0007\u022a\u0002\u022b\u0007\u022b\u0002\u022c\u0007\u022c"+ - "\u0002\u022d\u0007\u022d\u0002\u022e\u0007\u022e\u0002\u022f\u0007\u022f"+ - "\u0002\u0230\u0007\u0230\u0002\u0231\u0007\u0231\u0002\u0232\u0007\u0232"+ - "\u0002\u0233\u0007\u0233\u0002\u0234\u0007\u0234\u0002\u0235\u0007\u0235"+ - "\u0002\u0236\u0007\u0236\u0002\u0237\u0007\u0237\u0002\u0238\u0007\u0238"+ - "\u0002\u0239\u0007\u0239\u0002\u023a\u0007\u023a\u0002\u023b\u0007\u023b"+ - "\u0002\u023c\u0007\u023c\u0002\u023d\u0007\u023d\u0002\u023e\u0007\u023e"+ - "\u0002\u023f\u0007\u023f\u0002\u0240\u0007\u0240\u0002\u0241\u0007\u0241"+ - "\u0002\u0242\u0007\u0242\u0002\u0243\u0007\u0243\u0002\u0244\u0007\u0244"+ - "\u0002\u0245\u0007\u0245\u0002\u0246\u0007\u0246\u0002\u0247\u0007\u0247"+ - "\u0002\u0248\u0007\u0248\u0002\u0249\u0007\u0249\u0002\u024a\u0007\u024a"+ - "\u0002\u024b\u0007\u024b\u0002\u024c\u0007\u024c\u0002\u024d\u0007\u024d"+ - "\u0002\u024e\u0007\u024e\u0002\u024f\u0007\u024f\u0002\u0250\u0007\u0250"+ - "\u0002\u0251\u0007\u0251\u0002\u0252\u0007\u0252\u0002\u0253\u0007\u0253"+ - "\u0002\u0254\u0007\u0254\u0002\u0255\u0007\u0255\u0002\u0256\u0007\u0256"+ - "\u0002\u0257\u0007\u0257\u0002\u0258\u0007\u0258\u0002\u0259\u0007\u0259"+ - "\u0002\u025a\u0007\u025a\u0002\u025b\u0007\u025b\u0002\u025c\u0007\u025c"+ - "\u0002\u025d\u0007\u025d\u0002\u025e\u0007\u025e\u0002\u025f\u0007\u025f"+ - "\u0002\u0260\u0007\u0260\u0002\u0261\u0007\u0261\u0002\u0262\u0007\u0262"+ - "\u0002\u0263\u0007\u0263\u0002\u0264\u0007\u0264\u0002\u0265\u0007\u0265"+ - "\u0002\u0266\u0007\u0266\u0002\u0267\u0007\u0267\u0002\u0268\u0007\u0268"+ - "\u0002\u0269\u0007\u0269\u0002\u026a\u0007\u026a\u0002\u026b\u0007\u026b"+ - "\u0002\u026c\u0007\u026c\u0002\u026d\u0007\u026d\u0002\u026e\u0007\u026e"+ - "\u0002\u026f\u0007\u026f\u0002\u0270\u0007\u0270\u0002\u0271\u0007\u0271"+ - "\u0002\u0272\u0007\u0272\u0002\u0273\u0007\u0273\u0002\u0274\u0007\u0274"+ - "\u0002\u0275\u0007\u0275\u0002\u0276\u0007\u0276\u0002\u0277\u0007\u0277"+ - "\u0002\u0278\u0007\u0278\u0002\u0279\u0007\u0279\u0002\u027a\u0007\u027a"+ - "\u0002\u027b\u0007\u027b\u0002\u027c\u0007\u027c\u0002\u027d\u0007\u027d"+ - "\u0002\u027e\u0007\u027e\u0002\u027f\u0007\u027f\u0002\u0280\u0007\u0280"+ - "\u0002\u0281\u0007\u0281\u0002\u0282\u0007\u0282\u0002\u0283\u0007\u0283"+ - "\u0002\u0284\u0007\u0284\u0002\u0285\u0007\u0285\u0002\u0286\u0007\u0286"+ - "\u0002\u0287\u0007\u0287\u0002\u0288\u0007\u0288\u0002\u0289\u0007\u0289"+ - "\u0002\u028a\u0007\u028a\u0002\u028b\u0007\u028b\u0002\u028c\u0007\u028c"+ - "\u0002\u028d\u0007\u028d\u0002\u028e\u0007\u028e\u0002\u028f\u0007\u028f"+ - "\u0002\u0290\u0007\u0290\u0002\u0291\u0007\u0291\u0002\u0292\u0007\u0292"+ - "\u0002\u0293\u0007\u0293\u0002\u0294\u0007\u0294\u0002\u0295\u0007\u0295"+ - "\u0002\u0296\u0007\u0296\u0002\u0297\u0007\u0297\u0002\u0298\u0007\u0298"+ - "\u0002\u0299\u0007\u0299\u0002\u029a\u0007\u029a\u0002\u029b\u0007\u029b"+ - "\u0002\u029c\u0007\u029c\u0002\u029d\u0007\u029d\u0002\u029e\u0007\u029e"+ - "\u0002\u029f\u0007\u029f\u0002\u02a0\u0007\u02a0\u0002\u02a1\u0007\u02a1"+ - "\u0002\u02a2\u0007\u02a2\u0002\u02a3\u0007\u02a3\u0002\u02a4\u0007\u02a4"+ - "\u0002\u02a5\u0007\u02a5\u0002\u02a6\u0007\u02a6\u0002\u02a7\u0007\u02a7"+ - "\u0002\u02a8\u0007\u02a8\u0002\u02a9\u0007\u02a9\u0002\u02aa\u0007\u02aa"+ - "\u0002\u02ab\u0007\u02ab\u0002\u02ac\u0007\u02ac\u0002\u02ad\u0007\u02ad"+ - "\u0002\u02ae\u0007\u02ae\u0002\u02af\u0007\u02af\u0002\u02b0\u0007\u02b0"+ - "\u0002\u02b1\u0007\u02b1\u0002\u02b2\u0007\u02b2\u0002\u02b3\u0007\u02b3"+ - "\u0002\u02b4\u0007\u02b4\u0002\u02b5\u0007\u02b5\u0002\u02b6\u0007\u02b6"+ - "\u0002\u02b7\u0007\u02b7\u0002\u02b8\u0007\u02b8\u0001\u0000\u0001\u0000"+ - "\u0001\u0001\u0001\u0001\u0001\u0002\u0001\u0002\u0001\u0003\u0001\u0003"+ - "\u0001\u0004\u0001\u0004\u0001\u0005\u0001\u0005\u0001\u0006\u0001\u0006"+ - "\u0001\u0007\u0001\u0007\u0001\b\u0001\b\u0001\t\u0001\t\u0001\n\u0001"+ - "\n\u0001\u000b\u0001\u000b\u0001\f\u0001\f\u0001\r\u0001\r\u0001\u000e"+ - "\u0001\u000e\u0001\u000f\u0001\u000f\u0001\u0010\u0001\u0010\u0001\u0011"+ - "\u0001\u0011\u0001\u0011\u0001\u0012\u0001\u0012\u0001\u0012\u0001\u0013"+ - "\u0001\u0013\u0001\u0013\u0001\u0014\u0001\u0014\u0001\u0014\u0001\u0015"+ - "\u0001\u0015\u0001\u0015\u0001\u0016\u0001\u0016\u0001\u0016\u0001\u0017"+ - "\u0001\u0017\u0001\u0017\u0001\u0018\u0001\u0018\u0001\u0018\u0001\u0019"+ - "\u0001\u0019\u0001\u0019\u0001\u001a\u0001\u001a\u0001\u001b\u0001\u001b"+ - "\u0004\u001b\u05b9\b\u001b\u000b\u001b\f\u001b\u05ba\u0001\u001c\u0001"+ - "\u001c\u0001\u001c\u0001\u001c\u0004\u001c\u05c1\b\u001c\u000b\u001c\f"+ - "\u001c\u05c2\u0001\u001c\u0001\u001c\u0001\u001c\u0003\u001c\u05c8\b\u001c"+ - "\u0001\u001c\u0001\u001c\u0004\u001c\u05cc\b\u001c\u000b\u001c\f\u001c"+ - "\u05cd\u0001\u001c\u0003\u001c\u05d1\b\u001c\u0001\u001c\u0001\u001c\u0001"+ - "\u001d\u0001\u001d\u0001\u001d\u0001\u001d\u0001\u001d\u0005\u001d\u05da"+ - "\b\u001d\n\u001d\f\u001d\u05dd\t\u001d\u0001\u001d\u0001\u001d\u0003\u001d"+ - "\u05e1\b\u001d\u0001\u001d\u0001\u001d\u0001\u001d\u0004\u001d\u05e6\b"+ - "\u001d\u000b\u001d\f\u001d\u05e7\u0001\u001d\u0001\u001d\u0001\u001e\u0001"+ - "\u001e\u0001\u001f\u0001\u001f\u0001 \u0001 \u0001!\u0001!\u0001!\u0001"+ - "!\u0001\"\u0001\"\u0001\"\u0001\"\u0001\"\u0001\"\u0001\"\u0001\"\u0001"+ - "#\u0001#\u0001#\u0001#\u0001#\u0001#\u0001#\u0001#\u0001$\u0001$\u0001"+ - "$\u0001$\u0001%\u0001%\u0001%\u0001%\u0001&\u0001&\u0001&\u0001&\u0001"+ - "&\u0001&\u0001\'\u0001\'\u0001\'\u0001(\u0001(\u0001(\u0001(\u0001)\u0001"+ - ")\u0001)\u0001)\u0001)\u0001)\u0001)\u0001)\u0001)\u0001)\u0001)\u0001"+ - "*\u0001*\u0001*\u0001*\u0001*\u0001+\u0001+\u0001+\u0001+\u0001+\u0001"+ - ",\u0001,\u0001,\u0001,\u0001,\u0001-\u0001-\u0001-\u0001-\u0001-\u0001"+ - "-\u0001.\u0001.\u0001.\u0001.\u0001.\u0001.\u0001.\u0001.\u0001/\u0001"+ - "/\u0001/\u0001/\u0001/\u0001/\u0001/\u00010\u00010\u00010\u00010\u0001"+ - "0\u00010\u00010\u00010\u00010\u00010\u00010\u00011\u00011\u00011\u0001"+ - "1\u00011\u00011\u00011\u00012\u00012\u00012\u00012\u00012\u00012\u0001"+ - "2\u00012\u00012\u00012\u00012\u00012\u00012\u00012\u00012\u00012\u0001"+ - "3\u00013\u00013\u00013\u00013\u00013\u00013\u00013\u00013\u00013\u0001"+ - "3\u00013\u00013\u00014\u00014\u00014\u00014\u00014\u00014\u00014\u0001"+ - "4\u00014\u00014\u00014\u00014\u00014\u00015\u00015\u00015\u00015\u0001"+ - "5\u00015\u00015\u00015\u00015\u00015\u00015\u00015\u00015\u00016\u0001"+ - "6\u00016\u00016\u00016\u00016\u00016\u00016\u00016\u00016\u00016\u0001"+ - "6\u00016\u00016\u00016\u00016\u00016\u00016\u00017\u00017\u00017\u0001"+ - "7\u00017\u00017\u00017\u00017\u00017\u00017\u00017\u00017\u00017\u0001"+ - "8\u00018\u00018\u00018\u00018\u00018\u00018\u00018\u00019\u00019\u0001"+ - "9\u00019\u00019\u00019\u00019\u00019\u00019\u00019\u00019\u0001:\u0001"+ - ":\u0001:\u0001:\u0001:\u0001;\u0001;\u0001;\u0001;\u0001;\u0001;\u0001"+ - ";\u0001;\u0001;\u0001<\u0001<\u0001<\u0001=\u0001=\u0001=\u0001=\u0001"+ - "=\u0001>\u0001>\u0001>\u0001>\u0001>\u0001>\u0001>\u0001?\u0001?\u0001"+ - "?\u0001?\u0001?\u0001?\u0001@\u0001@\u0001@\u0001@\u0001@\u0001@\u0001"+ - "A\u0001A\u0001A\u0001A\u0001B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001"+ - "B\u0001B\u0001C\u0001C\u0001C\u0001C\u0001C\u0001D\u0001D\u0001D\u0001"+ - "D\u0001D\u0001D\u0001E\u0001E\u0001E\u0001E\u0001E\u0001E\u0001F\u0001"+ - "F\u0001F\u0001F\u0001F\u0001F\u0001F\u0001G\u0001G\u0001G\u0001H\u0001"+ - "H\u0001H\u0001H\u0001H\u0001H\u0001H\u0001H\u0001H\u0001H\u0001I\u0001"+ - "I\u0001I\u0001I\u0001I\u0001I\u0001I\u0001I\u0001I\u0001I\u0001J\u0001"+ - "J\u0001J\u0001J\u0001J\u0001K\u0001K\u0001K\u0001K\u0001K\u0001K\u0001"+ - "K\u0001K\u0001L\u0001L\u0001L\u0001L\u0001L\u0001L\u0001L\u0001L\u0001"+ - "M\u0001M\u0001M\u0001M\u0001M\u0001M\u0001N\u0001N\u0001N\u0001N\u0001"+ - "N\u0001N\u0001N\u0001N\u0001N\u0001N\u0001O\u0001O\u0001O\u0001O\u0001"+ - "O\u0001O\u0001O\u0001O\u0001O\u0001O\u0001O\u0001O\u0001O\u0001O\u0001"+ - "O\u0001P\u0001P\u0001P\u0001P\u0001Q\u0001Q\u0001Q\u0001Q\u0001Q\u0001"+ - "R\u0001R\u0001R\u0001R\u0001R\u0001R\u0001R\u0001S\u0001S\u0001S\u0001"+ - "T\u0001T\u0001T\u0001T\u0001T\u0001U\u0001U\u0001U\u0001V\u0001V\u0001"+ - "V\u0001V\u0001V\u0001V\u0001W\u0001W\u0001W\u0001W\u0001W\u0001W\u0001"+ - "W\u0001W\u0001X\u0001X\u0001X\u0001X\u0001X\u0001X\u0001X\u0001X\u0001"+ - "Y\u0001Y\u0001Y\u0001Y\u0001Y\u0001Y\u0001Y\u0001Y\u0001Y\u0001Y\u0001"+ - "Y\u0001Z\u0001Z\u0001Z\u0001Z\u0001Z\u0001Z\u0001Z\u0001Z\u0001Z\u0001"+ - "Z\u0001[\u0001[\u0001[\u0001[\u0001[\u0001[\u0001[\u0001\\\u0001\\\u0001"+ - "\\\u0001\\\u0001\\\u0001\\\u0001\\\u0001\\\u0001\\\u0001\\\u0001\\\u0001"+ - "\\\u0001\\\u0001]\u0001]\u0001]\u0001]\u0001]\u0001^\u0001^\u0001^\u0001"+ - "^\u0001^\u0001^\u0001^\u0001^\u0001^\u0001^\u0001_\u0001_\u0001_\u0001"+ - "_\u0001_\u0001_\u0001`\u0001`\u0001`\u0001`\u0001`\u0001a\u0001a\u0001"+ - "a\u0001b\u0001b\u0001b\u0001b\u0001b\u0001b\u0001c\u0001c\u0001c\u0001"+ - "c\u0001c\u0001c\u0001c\u0001d\u0001d\u0001d\u0001d\u0001d\u0001d\u0001"+ - "d\u0001d\u0001d\u0001e\u0001e\u0001e\u0001e\u0001e\u0001f\u0001f\u0001"+ - "f\u0001f\u0001f\u0001f\u0001g\u0001g\u0001g\u0001g\u0001g\u0001g\u0001"+ - "g\u0001h\u0001h\u0001h\u0001h\u0001h\u0001i\u0001i\u0001i\u0001i\u0001"+ - "i\u0001i\u0001j\u0001j\u0001j\u0001j\u0001j\u0001j\u0001j\u0001j\u0001"+ - "j\u0001k\u0001k\u0001k\u0001k\u0001k\u0001l\u0001l\u0001l\u0001l\u0001"+ - "l\u0001l\u0001m\u0001m\u0001m\u0001m\u0001m\u0001m\u0001m\u0001n\u0001"+ - "n\u0001n\u0001n\u0001n\u0001o\u0001o\u0001o\u0001o\u0001o\u0001o\u0001"+ - "o\u0001o\u0001o\u0001o\u0001o\u0001o\u0001o\u0001o\u0001p\u0001p\u0001"+ - "p\u0001p\u0001p\u0001p\u0001p\u0001q\u0001q\u0001q\u0001q\u0001q\u0001"+ - "q\u0001q\u0001q\u0001q\u0001q\u0001r\u0001r\u0001r\u0001r\u0001r\u0001"+ - "r\u0001r\u0001r\u0001r\u0001r\u0001r\u0001r\u0001r\u0001s\u0001s\u0001"+ - "s\u0001s\u0001s\u0001s\u0001t\u0001t\u0001t\u0001t\u0001t\u0001t\u0001"+ - "t\u0001t\u0001t\u0001t\u0001t\u0001t\u0001t\u0001t\u0001t\u0001u\u0001"+ - "u\u0001u\u0001u\u0001u\u0001u\u0001u\u0001v\u0001v\u0001v\u0001v\u0001"+ - "v\u0001w\u0001w\u0001w\u0001w\u0001w\u0001w\u0001x\u0001x\u0001x\u0001"+ - "x\u0001x\u0001x\u0001y\u0001y\u0001y\u0001z\u0001z\u0001z\u0001z\u0001"+ - "z\u0001z\u0001z\u0001{\u0001{\u0001{\u0001{\u0001{\u0001|\u0001|\u0001"+ - "|\u0001|\u0001|\u0001}\u0001}\u0001}\u0001}\u0001}\u0001~\u0001~\u0001"+ - "~\u0001~\u0001~\u0001~\u0001~\u0001~\u0001\u007f\u0001\u007f\u0001\u007f"+ - "\u0001\u007f\u0001\u007f\u0001\u007f\u0001\u007f\u0001\u007f\u0001\u0080"+ - "\u0001\u0080\u0001\u0080\u0001\u0080\u0001\u0080\u0001\u0080\u0001\u0081"+ - "\u0001\u0081\u0001\u0081\u0001\u0081\u0001\u0081\u0001\u0082\u0001\u0082"+ - "\u0001\u0082\u0001\u0082\u0001\u0082\u0001\u0082\u0001\u0082\u0001\u0082"+ - "\u0001\u0082\u0001\u0083\u0001\u0083\u0001\u0083\u0001\u0083\u0001\u0083"+ - "\u0001\u0083\u0001\u0084\u0001\u0084\u0001\u0084\u0001\u0084\u0001\u0084"+ - "\u0001\u0084\u0001\u0084\u0001\u0084\u0001\u0085\u0001\u0085\u0001\u0085"+ - "\u0001\u0085\u0001\u0085\u0001\u0085\u0001\u0085\u0001\u0085\u0001\u0086"+ - "\u0001\u0086\u0001\u0086\u0001\u0086\u0001\u0086\u0001\u0086\u0001\u0087"+ - "\u0001\u0087\u0001\u0087\u0001\u0087\u0001\u0087\u0001\u0087\u0001\u0087"+ - "\u0001\u0087\u0001\u0087\u0001\u0088\u0001\u0088\u0001\u0088\u0001\u0088"+ - "\u0001\u0088\u0001\u0088\u0001\u0088\u0001\u0089\u0001\u0089\u0001\u0089"+ - "\u0001\u0089\u0001\u0089\u0001\u0089\u0001\u0089\u0001\u008a\u0001\u008a"+ - "\u0001\u008a\u0001\u008a\u0001\u008b\u0001\u008b\u0001\u008b\u0001\u008b"+ - "\u0001\u008b\u0001\u008b\u0001\u008c\u0001\u008c\u0001\u008c\u0001\u008c"+ - "\u0001\u008c\u0001\u008c\u0001\u008d\u0001\u008d\u0001\u008d\u0001\u008d"+ - "\u0001\u008d\u0001\u008d\u0001\u008d\u0001\u008d\u0001\u008d\u0001\u008d"+ - "\u0001\u008e\u0001\u008e\u0001\u008e\u0001\u008e\u0001\u008e\u0001\u008f"+ - "\u0001\u008f\u0001\u008f\u0001\u008f\u0001\u008f\u0001\u008f\u0001\u0090"+ - "\u0001\u0090\u0001\u0090\u0001\u0090\u0001\u0090\u0001\u0090\u0001\u0090"+ - "\u0001\u0091\u0001\u0091\u0001\u0091\u0001\u0091\u0001\u0091\u0001\u0091"+ - "\u0001\u0091\u0001\u0091\u0001\u0091\u0001\u0091\u0001\u0092\u0001\u0092"+ - "\u0001\u0092\u0001\u0092\u0001\u0092\u0001\u0092\u0001\u0092\u0001\u0092"+ - "\u0001\u0092\u0001\u0092\u0001\u0092\u0001\u0093\u0001\u0093\u0001\u0093"+ - "\u0001\u0094\u0001\u0094\u0001\u0094\u0001\u0094\u0001\u0094\u0001\u0094"+ - "\u0001\u0094\u0001\u0094\u0001\u0094\u0001\u0094\u0001\u0095\u0001\u0095"+ - "\u0001\u0095\u0001\u0095\u0001\u0095\u0001\u0095\u0001\u0095\u0001\u0095"+ - "\u0001\u0095\u0001\u0096\u0001\u0096\u0001\u0096\u0001\u0096\u0001\u0096"+ - "\u0001\u0096\u0001\u0096\u0001\u0097\u0001\u0097\u0001\u0097\u0001\u0097"+ - "\u0001\u0097\u0001\u0097\u0001\u0098\u0001\u0098\u0001\u0098\u0001\u0099"+ - "\u0001\u0099\u0001\u0099\u0001\u0099\u0001\u0099\u0001\u0099\u0001\u009a"+ - "\u0001\u009a\u0001\u009a\u0001\u009a\u0001\u009a\u0001\u009a\u0001\u009a"+ - "\u0001\u009b\u0001\u009b\u0001\u009b\u0001\u009b\u0001\u009b\u0001\u009b"+ - "\u0001\u009b\u0001\u009b\u0001\u009c\u0001\u009c\u0001\u009c\u0001\u009c"+ - "\u0001\u009c\u0001\u009c\u0001\u009c\u0001\u009c\u0001\u009c\u0001\u009d"+ - "\u0001\u009d\u0001\u009d\u0001\u009d\u0001\u009d\u0001\u009d\u0001\u009d"+ - "\u0001\u009d\u0001\u009e\u0001\u009e\u0001\u009e\u0001\u009e\u0001\u009e"+ - "\u0001\u009e\u0001\u009f\u0001\u009f\u0001\u009f\u0001\u009f\u0001\u009f"+ - "\u0001\u009f\u0001\u009f\u0001\u009f\u0001\u009f\u0001\u009f\u0001\u009f"+ - "\u0001\u009f\u0001\u009f\u0001\u009f\u0001\u009f\u0001\u009f\u0001\u00a0"+ - "\u0001\u00a0\u0001\u00a0\u0001\u00a0\u0001\u00a0\u0001\u00a0\u0001\u00a0"+ - "\u0001\u00a0\u0001\u00a0\u0001\u00a0\u0001\u00a0\u0001\u00a1\u0001\u00a1"+ - "\u0001\u00a1\u0001\u00a1\u0001\u00a1\u0001\u00a1\u0001\u00a2\u0001\u00a2"+ - "\u0001\u00a2\u0001\u00a2\u0001\u00a2\u0001\u00a2\u0001\u00a3\u0001\u00a3"+ - "\u0001\u00a3\u0001\u00a3\u0001\u00a3\u0001\u00a3\u0001\u00a3\u0001\u00a3"+ - "\u0001\u00a4\u0001\u00a4\u0001\u00a4\u0001\u00a4\u0001\u00a4\u0001\u00a4"+ - "\u0001\u00a4\u0001\u00a4\u0001\u00a5\u0001\u00a5\u0001\u00a5\u0001\u00a5"+ - "\u0001\u00a5\u0001\u00a5\u0001\u00a5\u0001\u00a5\u0001\u00a5\u0001\u00a6"+ - "\u0001\u00a6\u0001\u00a6\u0001\u00a6\u0001\u00a6\u0001\u00a6\u0001\u00a6"+ - "\u0001\u00a7\u0001\u00a7\u0001\u00a7\u0001\u00a7\u0001\u00a7\u0001\u00a7"+ - "\u0001\u00a7\u0001\u00a7\u0001\u00a7\u0001\u00a7\u0001\u00a8\u0001\u00a8"+ - "\u0001\u00a8\u0001\u00a8\u0001\u00a8\u0001\u00a8\u0001\u00a8\u0001\u00a8"+ - "\u0001\u00a8\u0001\u00a8\u0001\u00a8\u0001\u00a8\u0001\u00a8\u0001\u00a8"+ - "\u0001\u00a9\u0001\u00a9\u0001\u00a9\u0001\u00a9\u0001\u00a9\u0001\u00a9"+ - "\u0001\u00a9\u0001\u00a9\u0001\u00a9\u0001\u00a9\u0001\u00a9\u0001\u00aa"+ - "\u0001\u00aa\u0001\u00aa\u0001\u00aa\u0001\u00aa\u0001\u00aa\u0001\u00aa"+ - "\u0001\u00aa\u0001\u00aa\u0001\u00aa\u0001\u00aa\u0001\u00aa\u0001\u00ab"+ - "\u0001\u00ab\u0001\u00ab\u0001\u00ab\u0001\u00ab\u0001\u00ab\u0001\u00ab"+ - "\u0001\u00ab\u0001\u00ac\u0001\u00ac\u0001\u00ac\u0001\u00ac\u0001\u00ac"+ - "\u0001\u00ac\u0001\u00ac\u0001\u00ac\u0001\u00ac\u0001\u00ad\u0001\u00ad"+ - "\u0001\u00ad\u0001\u00ad\u0001\u00ad\u0001\u00ad\u0001\u00ad\u0001\u00ad"+ - "\u0001\u00ad\u0001\u00ad\u0001\u00ad\u0001\u00ae\u0001\u00ae\u0001\u00ae"+ - "\u0001\u00ae\u0001\u00ae\u0001\u00af\u0001\u00af\u0001\u00af\u0001\u00af"+ - "\u0001\u00af\u0001\u00b0\u0001\u00b0\u0001\u00b0\u0001\u00b0\u0001\u00b1"+ - "\u0001\u00b1\u0001\u00b1\u0001\u00b1\u0001\u00b1\u0001\u00b1\u0001\u00b1"+ - "\u0001\u00b2\u0001\u00b2\u0001\u00b2\u0001\u00b2\u0001\u00b2\u0001\u00b2"+ - "\u0001\u00b3\u0001\u00b3\u0001\u00b3\u0001\u00b3\u0001\u00b3\u0001\u00b4"+ - "\u0001\u00b4\u0001\u00b4\u0001\u00b4\u0001\u00b4\u0001\u00b4\u0001\u00b4"+ - "\u0001\u00b4\u0001\u00b4\u0001\u00b5\u0001\u00b5\u0001\u00b5\u0001\u00b5"+ - "\u0001\u00b6\u0001\u00b6\u0001\u00b6\u0001\u00b6\u0001\u00b6\u0001\u00b6"+ - "\u0001\u00b6\u0001\u00b6\u0001\u00b6\u0001\u00b6\u0001\u00b6\u0001\u00b7"+ - "\u0001\u00b7\u0001\u00b7\u0001\u00b7\u0001\u00b7\u0001\u00b7\u0001\u00b7"+ - "\u0001\u00b7\u0001\u00b8\u0001\u00b8\u0001\u00b8\u0001\u00b8\u0001\u00b8"+ - "\u0001\u00b8\u0001\u00b8\u0001\u00b8\u0001\u00b8\u0001\u00b9\u0001\u00b9"+ - "\u0001\u00b9\u0001\u00b9\u0001\u00b9\u0001\u00b9\u0001\u00b9\u0001\u00b9"+ - "\u0001\u00b9\u0001\u00ba\u0001\u00ba\u0001\u00ba\u0001\u00ba\u0001\u00ba"+ - "\u0001\u00ba\u0001\u00ba\u0001\u00ba\u0001\u00bb\u0001\u00bb\u0001\u00bb"+ - "\u0001\u00bb\u0001\u00bb\u0001\u00bb\u0001\u00bb\u0001\u00bc\u0001\u00bc"+ - "\u0001\u00bc\u0001\u00bc\u0001\u00bc\u0001\u00bc\u0001\u00bc\u0001\u00bc"+ - "\u0001\u00bc\u0001\u00bc\u0001\u00bd\u0001\u00bd\u0001\u00bd\u0001\u00bd"+ - "\u0001\u00bd\u0001\u00bd\u0001\u00bd\u0001\u00bd\u0001\u00bd\u0001\u00bd"+ - "\u0001\u00bd\u0001\u00be\u0001\u00be\u0001\u00be\u0001\u00be\u0001\u00be"+ - "\u0001\u00be\u0001\u00be\u0001\u00be\u0001\u00be\u0001\u00be\u0001\u00be"+ - "\u0001\u00bf\u0001\u00bf\u0001\u00bf\u0001\u00bf\u0001\u00bf\u0001\u00bf"+ - "\u0001\u00bf\u0001\u00bf\u0001\u00c0\u0001\u00c0\u0001\u00c0\u0001\u00c0"+ - "\u0001\u00c0\u0001\u00c0\u0001\u00c0\u0001\u00c0\u0001\u00c1\u0001\u00c1"+ - "\u0001\u00c1\u0001\u00c1\u0001\u00c1\u0001\u00c1\u0001\u00c1\u0001\u00c1"+ - "\u0001\u00c1\u0001\u00c2\u0001\u00c2\u0001\u00c2\u0001\u00c2\u0001\u00c2"+ - "\u0001\u00c2\u0001\u00c2\u0001\u00c3\u0001\u00c3\u0001\u00c3\u0001\u00c3"+ - "\u0001\u00c3\u0001\u00c3\u0001\u00c3\u0001\u00c4\u0001\u00c4\u0001\u00c4"+ - "\u0001\u00c4\u0001\u00c4\u0001\u00c5\u0001\u00c5\u0001\u00c5\u0001\u00c5"+ - "\u0001\u00c5\u0001\u00c6\u0001\u00c6\u0001\u00c6\u0001\u00c6\u0001\u00c6"+ - "\u0001\u00c6\u0001\u00c6\u0001\u00c7\u0001\u00c7\u0001\u00c7\u0001\u00c7"+ - "\u0001\u00c7\u0001\u00c7\u0001\u00c7\u0001\u00c7\u0001\u00c7\u0001\u00c8"+ - "\u0001\u00c8\u0001\u00c8\u0001\u00c8\u0001\u00c8\u0001\u00c8\u0001\u00c8"+ - "\u0001\u00c8\u0001\u00c8\u0001\u00c8\u0001\u00c9\u0001\u00c9\u0001\u00c9"+ - "\u0001\u00c9\u0001\u00c9\u0001\u00ca\u0001\u00ca\u0001\u00ca\u0001\u00ca"+ - "\u0001\u00ca\u0001\u00ca\u0001\u00ca\u0001\u00cb\u0001\u00cb\u0001\u00cb"+ - "\u0001\u00cb\u0001\u00cb\u0001\u00cb\u0001\u00cc\u0001\u00cc\u0001\u00cc"+ - "\u0001\u00cc\u0001\u00cc\u0001\u00cc\u0001\u00cc\u0001\u00cc\u0001\u00cd"+ - "\u0001\u00cd\u0001\u00cd\u0001\u00cd\u0001\u00cd\u0001\u00cd\u0001\u00cd"+ - "\u0001\u00cd\u0001\u00cd\u0001\u00cd\u0001\u00ce\u0001\u00ce\u0001\u00ce"+ - "\u0001\u00ce\u0001\u00ce\u0001\u00ce\u0001\u00ce\u0001\u00ce\u0001\u00ce"+ - "\u0001\u00ce\u0001\u00cf\u0001\u00cf\u0001\u00cf\u0001\u00cf\u0001\u00cf"+ - "\u0001\u00cf\u0001\u00cf\u0001\u00cf\u0001\u00d0\u0001\u00d0\u0001\u00d0"+ - "\u0001\u00d0\u0001\u00d0\u0001\u00d0\u0001\u00d0\u0001\u00d0\u0001\u00d1"+ - "\u0001\u00d1\u0001\u00d1\u0001\u00d1\u0001\u00d1\u0001\u00d1\u0001\u00d1"+ - "\u0001\u00d1\u0001\u00d1\u0001\u00d1\u0001\u00d2\u0001\u00d2\u0001\u00d2"+ - "\u0001\u00d2\u0001\u00d2\u0001\u00d2\u0001\u00d2\u0001\u00d2\u0001\u00d2"+ - "\u0001\u00d3\u0001\u00d3\u0001\u00d3\u0001\u00d3\u0001\u00d3\u0001\u00d3"+ - "\u0001\u00d3\u0001\u00d4\u0001\u00d4\u0001\u00d4\u0001\u00d4\u0001\u00d4"+ - "\u0001\u00d4\u0001\u00d5\u0001\u00d5\u0001\u00d5\u0001\u00d5\u0001\u00d5"+ - "\u0001\u00d5\u0001\u00d5\u0001\u00d5\u0001\u00d5\u0001\u00d5\u0001\u00d6"+ - "\u0001\u00d6\u0001\u00d6\u0001\u00d6\u0001\u00d6\u0001\u00d6\u0001\u00d7"+ - "\u0001\u00d7\u0001\u00d7\u0001\u00d7\u0001\u00d7\u0001\u00d7\u0001\u00d7"+ - "\u0001\u00d7\u0001\u00d8\u0001\u00d8\u0001\u00d8\u0001\u00d8\u0001\u00d8"+ - "\u0001\u00d8\u0001\u00d8\u0001\u00d8\u0001\u00d8\u0001\u00d9\u0001\u00d9"+ - "\u0001\u00d9\u0001\u00d9\u0001\u00d9\u0001\u00d9\u0001\u00d9\u0001\u00d9"+ - "\u0001\u00d9\u0001\u00d9\u0001\u00da\u0001\u00da\u0001\u00da\u0001\u00da"+ - "\u0001\u00da\u0001\u00da\u0001\u00da\u0001\u00db\u0001\u00db\u0001\u00db"+ - "\u0001\u00db\u0001\u00db\u0001\u00db\u0001\u00db\u0001\u00db\u0001\u00dc"+ - "\u0001\u00dc\u0001\u00dc\u0001\u00dc\u0001\u00dc\u0001\u00dc\u0001\u00dc"+ - "\u0001\u00dc\u0001\u00dd\u0001\u00dd\u0001\u00dd\u0001\u00dd\u0001\u00dd"+ - "\u0001\u00dd\u0001\u00dd\u0001\u00de\u0001\u00de\u0001\u00de\u0001\u00de"+ - "\u0001\u00de\u0001\u00df\u0001\u00df\u0001\u00df\u0001\u00df\u0001\u00df"+ - "\u0001\u00e0\u0001\u00e0\u0001\u00e0\u0001\u00e0\u0001\u00e0\u0001\u00e0"+ - "\u0001\u00e0\u0001\u00e0\u0001\u00e0\u0001\u00e1\u0001\u00e1\u0001\u00e1"+ - "\u0001\u00e2\u0001\u00e2\u0001\u00e2\u0001\u00e2\u0001\u00e2\u0001\u00e2"+ - "\u0001\u00e2\u0001\u00e2\u0001\u00e2\u0001\u00e2\u0001\u00e3\u0001\u00e3"+ - "\u0001\u00e3\u0001\u00e3\u0001\u00e3\u0001\u00e3\u0001\u00e3\u0001\u00e3"+ - "\u0001\u00e3\u0001\u00e3\u0001\u00e4\u0001\u00e4\u0001\u00e4\u0001\u00e4"+ - "\u0001\u00e4\u0001\u00e4\u0001\u00e4\u0001\u00e4\u0001\u00e4\u0001\u00e5"+ - "\u0001\u00e5\u0001\u00e5\u0001\u00e5\u0001\u00e5\u0001\u00e5\u0001\u00e5"+ - "\u0001\u00e5\u0001\u00e5\u0001\u00e5\u0001\u00e6\u0001\u00e6\u0001\u00e6"+ - "\u0001\u00e6\u0001\u00e6\u0001\u00e6\u0001\u00e6\u0001\u00e6\u0001\u00e6"+ - "\u0001\u00e6\u0001\u00e7\u0001\u00e7\u0001\u00e7\u0001\u00e7\u0001\u00e7"+ - "\u0001\u00e7\u0001\u00e8\u0001\u00e8\u0001\u00e8\u0001\u00e8\u0001\u00e8"+ - "\u0001\u00e8\u0001\u00e8\u0001\u00e8\u0001\u00e9\u0001\u00e9\u0001\u00e9"+ - "\u0001\u00e9\u0001\u00e9\u0001\u00e9\u0001\u00e9\u0001\u00e9\u0001\u00ea"+ - "\u0001\u00ea\u0001\u00ea\u0001\u00ea\u0001\u00ea\u0001\u00ea\u0001\u00ea"+ - "\u0001\u00ea\u0001\u00ea\u0001\u00eb\u0001\u00eb\u0001\u00eb\u0001\u00eb"+ - "\u0001\u00eb\u0001\u00eb\u0001\u00eb\u0001\u00ec\u0001\u00ec\u0001\u00ec"+ - "\u0001\u00ec\u0001\u00ec\u0001\u00ec\u0001\u00ec\u0001\u00ec\u0001\u00ec"+ - "\u0001\u00ec\u0001\u00ec\u0001\u00ec\u0001\u00ed\u0001\u00ed\u0001\u00ed"+ - "\u0001\u00ed\u0001\u00ed\u0001\u00ed\u0001\u00ed\u0001\u00ee\u0001\u00ee"+ - "\u0001\u00ee\u0001\u00ee\u0001\u00ee\u0001\u00ee\u0001\u00ee\u0001\u00ee"+ - "\u0001\u00ef\u0001\u00ef\u0001\u00ef\u0001\u00ef\u0001\u00ef\u0001\u00ef"+ - "\u0001\u00ef\u0001\u00ef\u0001\u00f0\u0001\u00f0\u0001\u00f0\u0001\u00f0"+ - "\u0001\u00f0\u0001\u00f0\u0001\u00f0\u0001\u00f0\u0001\u00f0\u0001\u00f0"+ - "\u0001\u00f1\u0001\u00f1\u0001\u00f1\u0001\u00f1\u0001\u00f2\u0001\u00f2"+ - "\u0001\u00f2\u0001\u00f2\u0001\u00f2\u0001\u00f2\u0001\u00f3\u0001\u00f3"+ - "\u0001\u00f3\u0001\u00f3\u0001\u00f3\u0001\u00f3\u0001\u00f3\u0001\u00f3"+ - "\u0001\u00f3\u0001\u00f4\u0001\u00f4\u0001\u00f4\u0001\u00f4\u0001\u00f4"+ - "\u0001\u00f4\u0001\u00f5\u0001\u00f5\u0001\u00f5\u0001\u00f5\u0001\u00f5"+ - "\u0001\u00f6\u0001\u00f6\u0001\u00f6\u0001\u00f6\u0001\u00f6\u0001\u00f6"+ - "\u0001\u00f6\u0001\u00f6\u0001\u00f6\u0001\u00f6\u0001\u00f7\u0001\u00f7"+ - "\u0001\u00f7\u0001\u00f7\u0001\u00f7\u0001\u00f7\u0001\u00f8\u0001\u00f8"+ - "\u0001\u00f8\u0001\u00f8\u0001\u00f8\u0001\u00f8\u0001\u00f8\u0001\u00f9"+ - "\u0001\u00f9\u0001\u00f9\u0001\u00f9\u0001\u00f9\u0001\u00fa\u0001\u00fa"+ - "\u0001\u00fa\u0001\u00fa\u0001\u00fa\u0001\u00fa\u0001\u00fb\u0001\u00fb"+ - "\u0001\u00fb\u0001\u00fb\u0001\u00fb\u0001\u00fb\u0001\u00fb\u0001\u00fb"+ - "\u0001\u00fb\u0001\u00fc\u0001\u00fc\u0001\u00fc\u0001\u00fc\u0001\u00fc"+ - "\u0001\u00fd\u0001\u00fd\u0001\u00fd\u0001\u00fd\u0001\u00fd\u0001\u00fd"+ - "\u0001\u00fd\u0001\u00fd\u0001\u00fe\u0001\u00fe\u0001\u00fe\u0001\u00fe"+ - "\u0001\u00fe\u0001\u00fe\u0001\u00ff\u0001\u00ff\u0001\u00ff\u0001\u00ff"+ - "\u0001\u00ff\u0001\u00ff\u0001\u00ff\u0001\u00ff\u0001\u0100\u0001\u0100"+ - "\u0001\u0100\u0001\u0100\u0001\u0100\u0001\u0100\u0001\u0100\u0001\u0100"+ - "\u0001\u0100\u0001\u0100\u0001\u0100\u0001\u0100\u0001\u0100\u0001\u0101"+ - "\u0001\u0101\u0001\u0101\u0001\u0101\u0001\u0101\u0001\u0101\u0001\u0101"+ - "\u0001\u0101\u0001\u0101\u0001\u0102\u0001\u0102\u0001\u0102\u0001\u0102"+ - "\u0001\u0102\u0001\u0102\u0001\u0103\u0001\u0103\u0001\u0103\u0001\u0103"+ - "\u0001\u0103\u0001\u0103\u0001\u0103\u0001\u0104\u0001\u0104\u0001\u0104"+ - "\u0001\u0104\u0001\u0104\u0001\u0104\u0001\u0104\u0001\u0104\u0001\u0104"+ - "\u0001\u0105\u0001\u0105\u0001\u0105\u0001\u0105\u0001\u0105\u0001\u0106"+ - "\u0001\u0106\u0001\u0106\u0001\u0106\u0001\u0106\u0001\u0106\u0001\u0107"+ - "\u0001\u0107\u0001\u0107\u0001\u0107\u0001\u0107\u0001\u0108\u0001\u0108"+ - "\u0001\u0108\u0001\u0108\u0001\u0108\u0001\u0109\u0001\u0109\u0001\u0109"+ - "\u0001\u0109\u0001\u0109\u0001\u0109\u0001\u010a\u0001\u010a\u0001\u010a"+ - "\u0001\u010a\u0001\u010a\u0001\u010b\u0001\u010b\u0001\u010b\u0001\u010c"+ - "\u0001\u010c\u0001\u010c\u0001\u010c\u0001\u010c\u0001\u010c\u0001\u010c"+ - "\u0001\u010c\u0001\u010d\u0001\u010d\u0001\u010d\u0001\u010d\u0001\u010d"+ - "\u0001\u010d\u0001\u010d\u0001\u010e\u0001\u010e\u0001\u010e\u0001\u010e"+ - "\u0001\u010e\u0001\u010e\u0001\u010e\u0001\u010f\u0001\u010f\u0001\u010f"+ - "\u0001\u010f\u0001\u010f\u0001\u010f\u0001\u0110\u0001\u0110\u0001\u0110"+ - "\u0001\u0110\u0001\u0110\u0001\u0110\u0001\u0110\u0001\u0111\u0001\u0111"+ - "\u0001\u0111\u0001\u0112\u0001\u0112\u0001\u0112\u0001\u0112\u0001\u0113"+ - "\u0001\u0113\u0001\u0113\u0001\u0113\u0001\u0113\u0001\u0114\u0001\u0114"+ - "\u0001\u0114\u0001\u0114\u0001\u0114\u0001\u0114\u0001\u0114\u0001\u0114"+ - "\u0001\u0114\u0001\u0115\u0001\u0115\u0001\u0115\u0001\u0115\u0001\u0115"+ - "\u0001\u0115\u0001\u0115\u0001\u0116\u0001\u0116\u0001\u0116\u0001\u0116"+ - "\u0001\u0116\u0001\u0116\u0001\u0116\u0001\u0116\u0001\u0117\u0001\u0117"+ - "\u0001\u0117\u0001\u0117\u0001\u0117\u0001\u0117\u0001\u0118\u0001\u0118"+ - "\u0001\u0118\u0001\u0118\u0001\u0118\u0001\u0118\u0001\u0119\u0001\u0119"+ - "\u0001\u0119\u0001\u0119\u0001\u0119\u0001\u0119\u0001\u0119\u0001\u011a"+ - "\u0001\u011a\u0001\u011a\u0001\u011a\u0001\u011a\u0001\u011a\u0001\u011a"+ - "\u0001\u011a\u0001\u011b\u0001\u011b\u0001\u011b\u0001\u011b\u0001\u011b"+ - "\u0001\u011b\u0001\u011b\u0001\u011b\u0001\u011b\u0001\u011b\u0001\u011c"+ - "\u0001\u011c\u0001\u011c\u0001\u011c\u0001\u011c\u0001\u011c\u0001\u011c"+ - "\u0001\u011c\u0001\u011d\u0001\u011d\u0001\u011d\u0001\u011d\u0001\u011d"+ - "\u0001\u011d\u0001\u011d\u0001\u011d\u0001\u011d\u0001\u011e\u0001\u011e"+ - "\u0001\u011e\u0001\u011e\u0001\u011e\u0001\u011e\u0001\u011f\u0001\u011f"+ - "\u0001\u011f\u0001\u011f\u0001\u011f\u0001\u011f\u0001\u011f\u0001\u011f"+ - "\u0001\u011f\u0001\u011f\u0001\u0120\u0001\u0120\u0001\u0120\u0001\u0120"+ - "\u0001\u0120\u0001\u0120\u0001\u0120\u0001\u0120\u0001\u0121\u0001\u0121"+ - "\u0001\u0121\u0001\u0121\u0001\u0121\u0001\u0121\u0001\u0121\u0001\u0121"+ - "\u0001\u0121\u0001\u0122\u0001\u0122\u0001\u0122\u0001\u0122\u0001\u0122"+ - "\u0001\u0122\u0001\u0122\u0001\u0122\u0001\u0122\u0001\u0123\u0001\u0123"+ - "\u0001\u0123\u0001\u0123\u0001\u0123\u0001\u0123\u0001\u0124\u0001\u0124"+ - "\u0001\u0124\u0001\u0124\u0001\u0124\u0001\u0124\u0001\u0124\u0001\u0124"+ - "\u0001\u0124\u0001\u0124\u0001\u0124\u0001\u0125\u0001\u0125\u0001\u0125"+ - "\u0001\u0125\u0001\u0125\u0001\u0125\u0001\u0125\u0001\u0125\u0001\u0125"+ - "\u0001\u0125\u0001\u0125\u0001\u0126\u0001\u0126\u0001\u0126\u0001\u0126"+ - "\u0001\u0126\u0001\u0126\u0001\u0126\u0001\u0126\u0001\u0126\u0001\u0126"+ - "\u0001\u0127\u0001\u0127\u0001\u0127\u0001\u0127\u0001\u0127\u0001\u0127"+ - "\u0001\u0127\u0001\u0127\u0001\u0128\u0001\u0128\u0001\u0128\u0001\u0128"+ - "\u0001\u0128\u0001\u0128\u0001\u0129\u0001\u0129\u0001\u0129\u0001\u0129"+ - "\u0001\u0129\u0001\u0129\u0001\u012a\u0001\u012a\u0001\u012a\u0001\u012a"+ - "\u0001\u012a\u0001\u012b\u0001\u012b\u0001\u012b\u0001\u012b\u0001\u012b"+ - "\u0001\u012b\u0001\u012b\u0001\u012b\u0001\u012b\u0001\u012c\u0001\u012c"+ - "\u0001\u012c\u0001\u012c\u0001\u012c\u0001\u012c\u0001\u012c\u0001\u012c"+ - "\u0001\u012d\u0001\u012d\u0001\u012d\u0001\u012d\u0001\u012d\u0001\u012d"+ - "\u0001\u012d\u0001\u012d\u0001\u012d\u0001\u012d\u0001\u012e\u0001\u012e"+ - "\u0001\u012e\u0001\u012e\u0001\u012f\u0001\u012f\u0001\u012f\u0001\u012f"+ - "\u0001\u012f\u0001\u012f\u0001\u012f\u0001\u012f\u0001\u0130\u0001\u0130"+ - "\u0001\u0130\u0001\u0130\u0001\u0130\u0001\u0130\u0001\u0130\u0001\u0130"+ - "\u0001\u0131\u0001\u0131\u0001\u0131\u0001\u0131\u0001\u0131\u0001\u0131"+ - "\u0001\u0131\u0001\u0131\u0001\u0131\u0001\u0132\u0001\u0132\u0001\u0132"+ - "\u0001\u0132\u0001\u0132\u0001\u0132\u0001\u0132\u0001\u0132\u0001\u0133"+ - "\u0001\u0133\u0001\u0133\u0001\u0133\u0001\u0133\u0001\u0133\u0001\u0133"+ - "\u0001\u0134\u0001\u0134\u0001\u0134\u0001\u0134\u0001\u0134\u0001\u0134"+ - "\u0001\u0134\u0001\u0134\u0001\u0134\u0001\u0134\u0001\u0134\u0001\u0135"+ - "\u0001\u0135\u0001\u0135\u0001\u0135\u0001\u0135\u0001\u0135\u0001\u0135"+ - "\u0001\u0135\u0001\u0136\u0001\u0136\u0001\u0136\u0001\u0136\u0001\u0136"+ - "\u0001\u0136\u0001\u0136\u0001\u0136\u0001\u0137\u0001\u0137\u0001\u0137"+ - "\u0001\u0137\u0001\u0137\u0001\u0137\u0001\u0138\u0001\u0138\u0001\u0138"+ - "\u0001\u0138\u0001\u0138\u0001\u0138\u0001\u0138\u0001\u0138\u0001\u0139"+ - "\u0001\u0139\u0001\u0139\u0001\u0139\u0001\u0139\u0001\u0139\u0001\u0139"+ - "\u0001\u0139\u0001\u0139\u0001\u013a\u0001\u013a\u0001\u013a\u0001\u013a"+ - "\u0001\u013a\u0001\u013a\u0001\u013a\u0001\u013a\u0001\u013b\u0001\u013b"+ - "\u0001\u013b\u0001\u013b\u0001\u013b\u0001\u013b\u0001\u013b\u0001\u013c"+ - "\u0001\u013c\u0001\u013c\u0001\u013c\u0001\u013c\u0001\u013d\u0001\u013d"+ - "\u0001\u013d\u0001\u013d\u0001\u013d\u0001\u013d\u0001\u013d\u0001\u013d"+ - "\u0001\u013d\u0001\u013e\u0001\u013e\u0001\u013e\u0001\u013e\u0001\u013e"+ - "\u0001\u013f\u0001\u013f\u0001\u013f\u0001\u013f\u0001\u013f\u0001\u0140"+ - "\u0001\u0140\u0001\u0140\u0001\u0140\u0001\u0140\u0001\u0140\u0001\u0140"+ - "\u0001\u0140\u0001\u0140\u0001\u0140\u0001\u0141\u0001\u0141\u0001\u0141"+ - "\u0001\u0141\u0001\u0141\u0001\u0141\u0001\u0141\u0001\u0142\u0001\u0142"+ - "\u0001\u0142\u0001\u0142\u0001\u0142\u0001\u0142\u0001\u0142\u0001\u0143"+ - "\u0001\u0143\u0001\u0143\u0001\u0143\u0001\u0143\u0001\u0143\u0001\u0143"+ - "\u0001\u0144\u0001\u0144\u0001\u0144\u0001\u0144\u0001\u0144\u0001\u0144"+ - "\u0001\u0144\u0001\u0145\u0001\u0145\u0001\u0145\u0001\u0145\u0001\u0145"+ - "\u0001\u0145\u0001\u0145\u0001\u0145\u0001\u0145\u0001\u0146\u0001\u0146"+ - "\u0001\u0146\u0001\u0146\u0001\u0146\u0001\u0146\u0001\u0146\u0001\u0146"+ - "\u0001\u0146\u0001\u0147\u0001\u0147\u0001\u0147\u0001\u0147\u0001\u0147"+ - "\u0001\u0147\u0001\u0147\u0001\u0147\u0001\u0147\u0001\u0147\u0001\u0148"+ - "\u0001\u0148\u0001\u0148\u0001\u0148\u0001\u0148\u0001\u0148\u0001\u0148"+ - "\u0001\u0148\u0001\u0148\u0001\u0148\u0001\u0148\u0001\u0148\u0001\u0148"+ - "\u0001\u0149\u0001\u0149\u0001\u0149\u0001\u0149\u0001\u0149\u0001\u0149"+ - "\u0001\u0149\u0001\u014a\u0001\u014a\u0001\u014a\u0001\u014a\u0001\u014a"+ - "\u0001\u014a\u0001\u014a\u0001\u014a\u0001\u014b\u0001\u014b\u0001\u014b"+ - "\u0001\u014b\u0001\u014c\u0001\u014c\u0001\u014c\u0001\u014c\u0001\u014c"+ - "\u0001\u014c\u0001\u014d\u0001\u014d\u0001\u014d\u0001\u014d\u0001\u014d"+ - "\u0001\u014e\u0001\u014e\u0001\u014e\u0001\u014e\u0001\u014e\u0001\u014e"+ - "\u0001\u014e\u0001\u014f\u0001\u014f\u0001\u014f\u0001\u014f\u0001\u014f"+ - "\u0001\u014f\u0001\u014f\u0001\u014f\u0001\u014f\u0001\u0150\u0001\u0150"+ - "\u0001\u0150\u0001\u0150\u0001\u0150\u0001\u0150\u0001\u0150\u0001\u0151"+ - "\u0001\u0151\u0001\u0151\u0001\u0151\u0001\u0151\u0001\u0151\u0001\u0151"+ - "\u0001\u0151\u0001\u0151\u0001\u0151\u0001\u0151\u0001\u0152\u0001\u0152"+ - "\u0001\u0152\u0001\u0152\u0001\u0152\u0001\u0152\u0001\u0153\u0001\u0153"+ - "\u0001\u0153\u0001\u0153\u0001\u0153\u0001\u0153\u0001\u0153\u0001\u0153"+ - "\u0001\u0153\u0001\u0153\u0001\u0154\u0001\u0154\u0001\u0154\u0001\u0154"+ - "\u0001\u0154\u0001\u0154\u0001\u0154\u0001\u0154\u0001\u0154\u0001\u0154"+ - "\u0001\u0154\u0001\u0155\u0001\u0155\u0001\u0155\u0001\u0155\u0001\u0155"+ - "\u0001\u0155\u0001\u0156\u0001\u0156\u0001\u0156\u0001\u0156\u0001\u0156"+ - "\u0001\u0156\u0001\u0156\u0001\u0157\u0001\u0157\u0001\u0157\u0001\u0157"+ - "\u0001\u0157\u0001\u0157\u0001\u0157\u0001\u0157\u0001\u0158\u0001\u0158"+ - "\u0001\u0158\u0001\u0158\u0001\u0158\u0001\u0158\u0001\u0158\u0001\u0159"+ - "\u0001\u0159\u0001\u0159\u0001\u0159\u0001\u0159\u0001\u0159\u0001\u015a"+ - "\u0001\u015a\u0001\u015a\u0001\u015a\u0001\u015a\u0001\u015a\u0001\u015b"+ - "\u0001\u015b\u0001\u015b\u0001\u015b\u0001\u015b\u0001\u015b\u0001\u015b"+ - "\u0001\u015c\u0001\u015c\u0001\u015c\u0001\u015c\u0001\u015c\u0001\u015c"+ - "\u0001\u015c\u0001\u015d\u0001\u015d\u0001\u015d\u0001\u015d\u0001\u015d"+ - "\u0001\u015d\u0001\u015d\u0001\u015d\u0001\u015d\u0001\u015d\u0001\u015d"+ - "\u0001\u015e\u0001\u015e\u0001\u015e\u0001\u015e\u0001\u015e\u0001\u015f"+ - "\u0001\u015f\u0001\u015f\u0001\u015f\u0001\u015f\u0001\u015f\u0001\u015f"+ - "\u0001\u015f\u0001\u015f\u0001\u0160\u0001\u0160\u0001\u0160\u0001\u0160"+ - "\u0001\u0160\u0001\u0160\u0001\u0160\u0001\u0160\u0001\u0160\u0001\u0160"+ - "\u0001\u0161\u0001\u0161\u0001\u0161\u0001\u0161\u0001\u0161\u0001\u0162"+ - "\u0001\u0162\u0001\u0162\u0001\u0162\u0001\u0162\u0001\u0162\u0001\u0162"+ - "\u0001\u0162\u0001\u0162\u0001\u0162\u0001\u0162\u0001\u0162\u0001\u0163"+ - "\u0001\u0163\u0001\u0163\u0001\u0163\u0001\u0163\u0001\u0163\u0001\u0163"+ - "\u0001\u0163\u0001\u0164\u0001\u0164\u0001\u0164\u0001\u0164\u0001\u0164"+ - "\u0001\u0164\u0001\u0164\u0001\u0164\u0001\u0164\u0001\u0165\u0001\u0165"+ - "\u0001\u0165\u0001\u0165\u0001\u0165\u0001\u0165\u0001\u0165\u0001\u0165"+ - "\u0001\u0166\u0001\u0166\u0001\u0166\u0001\u0166\u0001\u0166\u0001\u0167"+ - "\u0001\u0167\u0001\u0167\u0001\u0167\u0001\u0167\u0001\u0167\u0001\u0168"+ - "\u0001\u0168\u0001\u0168\u0001\u0168\u0001\u0168\u0001\u0168\u0001\u0168"+ - "\u0001\u0168\u0001\u0168\u0001\u0168\u0001\u0169\u0001\u0169\u0001\u0169"+ - "\u0001\u0169\u0001\u0169\u0001\u0169\u0001\u0169\u0001\u0169\u0001\u0169"+ - "\u0001\u0169\u0001\u0169\u0001\u0169\u0001\u016a\u0001\u016a\u0001\u016a"+ - "\u0001\u016a\u0001\u016a\u0001\u016a\u0001\u016a\u0001\u016a\u0001\u016a"+ - "\u0001\u016a\u0001\u016a\u0001\u016a\u0001\u016b\u0001\u016b\u0001\u016b"+ - "\u0001\u016b\u0001\u016b\u0001\u016b\u0001\u016b\u0001\u016b\u0001\u016c"+ - "\u0001\u016c\u0001\u016c\u0001\u016c\u0001\u016c\u0001\u016c\u0001\u016c"+ - "\u0001\u016c\u0001\u016c\u0001\u016d\u0001\u016d\u0001\u016d\u0001\u016d"+ - "\u0001\u016d\u0001\u016d\u0001\u016d\u0001\u016d\u0001\u016d\u0001\u016e"+ - "\u0001\u016e\u0001\u016e\u0001\u016e\u0001\u016e\u0001\u016e\u0001\u016f"+ - "\u0001\u016f\u0001\u016f\u0001\u016f\u0001\u016f\u0001\u016f\u0001\u016f"+ - "\u0001\u0170\u0001\u0170\u0001\u0170\u0001\u0170\u0001\u0170\u0001\u0170"+ - "\u0001\u0170\u0001\u0171\u0001\u0171\u0001\u0171\u0001\u0171\u0001\u0171"+ - "\u0001\u0171\u0001\u0172\u0001\u0172\u0001\u0172\u0001\u0172\u0001\u0172"+ - "\u0001\u0172\u0001\u0172\u0001\u0172\u0001\u0172\u0001\u0173\u0001\u0173"+ - "\u0001\u0173\u0001\u0173\u0001\u0173\u0001\u0173\u0001\u0173\u0001\u0173"+ - "\u0001\u0173\u0001\u0173\u0001\u0174\u0001\u0174\u0001\u0174\u0001\u0174"+ - "\u0001\u0174\u0001\u0174\u0001\u0174\u0001\u0174\u0001\u0175\u0001\u0175"+ - "\u0001\u0175\u0001\u0175\u0001\u0175\u0001\u0175\u0001\u0175\u0001\u0175"+ - "\u0001\u0176\u0001\u0176\u0001\u0176\u0001\u0176\u0001\u0176\u0001\u0177"+ - "\u0001\u0177\u0001\u0177\u0001\u0177\u0001\u0177\u0001\u0177\u0001\u0177"+ - "\u0001\u0177\u0001\u0177\u0001\u0178\u0001\u0178\u0001\u0178\u0001\u0178"+ - "\u0001\u0178\u0001\u0178\u0001\u0178\u0001\u0178\u0001\u0178\u0001\u0178"+ - "\u0001\u0178\u0001\u0179\u0001\u0179\u0001\u0179\u0001\u0179\u0001\u0179"+ - "\u0001\u0179\u0001\u0179\u0001\u0179\u0001\u017a\u0001\u017a\u0001\u017a"+ - "\u0001\u017a\u0001\u017a\u0001\u017b\u0001\u017b\u0001\u017b\u0001\u017b"+ - "\u0001\u017b\u0001\u017b\u0001\u017b\u0001\u017b\u0001\u017c\u0001\u017c"+ - "\u0001\u017c\u0001\u017c\u0001\u017c\u0001\u017c\u0001\u017d\u0001\u017d"+ - "\u0001\u017d\u0001\u017d\u0001\u017e\u0001\u017e\u0001\u017e\u0001\u017e"+ - "\u0001\u017e\u0001\u017f\u0001\u017f\u0001\u017f\u0001\u017f\u0001\u0180"+ - "\u0001\u0180\u0001\u0180\u0001\u0180\u0001\u0180\u0001\u0181\u0001\u0181"+ - "\u0001\u0181\u0001\u0181\u0001\u0181\u0001\u0181\u0001\u0181\u0001\u0181"+ - "\u0001\u0182\u0001\u0182\u0001\u0182\u0001\u0182\u0001\u0182\u0001\u0182"+ - "\u0001\u0182\u0001\u0183\u0001\u0183\u0001\u0183\u0001\u0183\u0001\u0184"+ - "\u0001\u0184\u0001\u0184\u0001\u0184\u0001\u0184\u0001\u0184\u0001\u0184"+ - "\u0001\u0184\u0001\u0185\u0001\u0185\u0001\u0185\u0001\u0185\u0001\u0185"+ - "\u0001\u0186\u0001\u0186\u0001\u0186\u0001\u0186\u0001\u0186\u0001\u0186"+ - "\u0001\u0186\u0001\u0186\u0001\u0186\u0001\u0186\u0001\u0187\u0001\u0187"+ - "\u0001\u0187\u0001\u0187\u0001\u0187\u0001\u0187\u0001\u0187\u0001\u0187"+ - "\u0001\u0187\u0001\u0188\u0001\u0188\u0001\u0188\u0001\u0188\u0001\u0189"+ - "\u0001\u0189\u0001\u0189\u0001\u0189\u0001\u0189\u0001\u0189\u0001\u0189"+ - "\u0001\u0189\u0001\u018a\u0001\u018a\u0001\u018a\u0001\u018a\u0001\u018a"+ - "\u0001\u018a\u0001\u018a\u0001\u018b\u0001\u018b\u0001\u018b\u0001\u018b"+ - "\u0001\u018b\u0001\u018b\u0001\u018b\u0001\u018b\u0001\u018c\u0001\u018c"+ - "\u0001\u018c\u0001\u018c\u0001\u018c\u0001\u018c\u0001\u018d\u0001\u018d"+ - "\u0001\u018d\u0001\u018d\u0001\u018d\u0001\u018d\u0001\u018d\u0001\u018d"+ - "\u0001\u018d\u0001\u018e\u0001\u018e\u0001\u018e\u0001\u018e\u0001\u018e"+ - "\u0001\u018e\u0001\u018f\u0001\u018f\u0001\u018f\u0001\u018f\u0001\u0190"+ - "\u0001\u0190\u0001\u0190\u0001\u0190\u0001\u0190\u0001\u0190\u0001\u0190"+ - "\u0001\u0190\u0001\u0191\u0001\u0191\u0001\u0191\u0001\u0191\u0001\u0191"+ - "\u0001\u0191\u0001\u0191\u0001\u0191\u0001\u0191\u0001\u0192\u0001\u0192"+ - "\u0001\u0192\u0001\u0192\u0001\u0192\u0001\u0192\u0001\u0193\u0001\u0193"+ - "\u0001\u0193\u0001\u0193\u0001\u0193\u0001\u0193\u0001\u0193\u0001\u0193"+ - "\u0001\u0193\u0001\u0194\u0001\u0194\u0001\u0194\u0001\u0194\u0001\u0194"+ - "\u0001\u0194\u0001\u0195\u0001\u0195\u0001\u0195\u0001\u0195\u0001\u0195"+ - "\u0001\u0196\u0001\u0196\u0001\u0196\u0001\u0196\u0001\u0196\u0001\u0196"+ - "\u0001\u0196\u0001\u0197\u0001\u0197\u0001\u0197\u0001\u0197\u0001\u0197"+ - "\u0001\u0197\u0001\u0197\u0001\u0197\u0001\u0198\u0001\u0198\u0001\u0198"+ - "\u0001\u0198\u0001\u0198\u0001\u0198\u0001\u0198\u0001\u0198\u0001\u0199"+ - "\u0001\u0199\u0001\u0199\u0001\u0199\u0001\u0199\u0001\u0199\u0001\u0199"+ - "\u0001\u0199\u0001\u0199\u0001\u019a\u0001\u019a\u0001\u019a\u0001\u019a"+ - "\u0001\u019a\u0001\u019a\u0001\u019a\u0001\u019a\u0001\u019a\u0001\u019a"+ - "\u0001\u019b\u0001\u019b\u0001\u019b\u0001\u019b\u0001\u019b\u0001\u019c"+ - "\u0001\u019c\u0001\u019c\u0001\u019c\u0001\u019d\u0001\u019d\u0001\u019d"+ - "\u0001\u019d\u0001\u019d\u0001\u019d\u0001\u019e\u0001\u019e\u0001\u019e"+ - "\u0001\u019e\u0001\u019e\u0001\u019e\u0001\u019e\u0001\u019e\u0001\u019e"+ - "\u0001\u019f\u0001\u019f\u0001\u019f\u0001\u019f\u0001\u019f\u0001\u019f"+ - "\u0001\u019f\u0001\u019f\u0001\u019f\u0001\u019f\u0001\u01a0\u0001\u01a0"+ - "\u0001\u01a0\u0001\u01a0\u0001\u01a0\u0001\u01a1\u0001\u01a1\u0001\u01a1"+ - "\u0001\u01a1\u0001\u01a1\u0001\u01a1\u0001\u01a1\u0001\u01a1\u0001\u01a1"+ - "\u0001\u01a1\u0001\u01a2\u0001\u01a2\u0001\u01a2\u0001\u01a2\u0001\u01a2"+ - "\u0001\u01a2\u0001\u01a3\u0001\u01a3\u0001\u01a3\u0001\u01a3\u0001\u01a3"+ - "\u0001\u01a4\u0001\u01a4\u0001\u01a4\u0001\u01a4\u0001\u01a4\u0001\u01a4"+ - "\u0001\u01a4\u0001\u01a5\u0001\u01a5\u0001\u01a5\u0001\u01a5\u0001\u01a5"+ - "\u0001\u01a5\u0001\u01a5\u0001\u01a5\u0001\u01a6\u0001\u01a6\u0001\u01a6"+ - "\u0001\u01a6\u0001\u01a6\u0001\u01a6\u0001\u01a6\u0001\u01a6\u0001\u01a6"+ - "\u0001\u01a6\u0001\u01a6\u0001\u01a6\u0001\u01a6\u0001\u01a6\u0001\u01a7"+ - "\u0001\u01a7\u0001\u01a7\u0001\u01a7\u0001\u01a7\u0001\u01a7\u0001\u01a7"+ - "\u0001\u01a7\u0001\u01a7\u0001\u01a7\u0001\u01a7\u0001\u01a8\u0001\u01a8"+ - "\u0001\u01a8\u0001\u01a8\u0001\u01a8\u0001\u01a8\u0001\u01a8\u0001\u01a9"+ - "\u0001\u01a9\u0001\u01a9\u0001\u01a9\u0001\u01a9\u0001\u01a9\u0001\u01a9"+ - "\u0001\u01a9\u0001\u01a9\u0001\u01a9\u0001\u01a9\u0001\u01a9\u0001\u01a9"+ - "\u0001\u01a9\u0001\u01a9\u0001\u01a9\u0001\u01a9\u0001\u01a9\u0001\u01a9"+ - "\u0001\u01aa\u0001\u01aa\u0001\u01aa\u0001\u01aa\u0001\u01aa\u0001\u01aa"+ - "\u0001\u01aa\u0001\u01aa\u0001\u01aa\u0001\u01aa\u0001\u01aa\u0001\u01aa"+ - "\u0001\u01aa\u0001\u01aa\u0001\u01aa\u0001\u01aa\u0001\u01aa\u0001\u01aa"+ - "\u0001\u01aa\u0001\u01aa\u0001\u01aa\u0001\u01aa\u0001\u01aa\u0001\u01aa"+ - "\u0001\u01aa\u0001\u01aa\u0001\u01aa\u0001\u01aa\u0001\u01ab\u0001\u01ab"+ - "\u0001\u01ab\u0001\u01ab\u0001\u01ab\u0001\u01ab\u0001\u01ab\u0001\u01ab"+ - "\u0001\u01ab\u0001\u01ab\u0001\u01ab\u0001\u01ab\u0001\u01ab\u0001\u01ab"+ - "\u0001\u01ab\u0001\u01ab\u0001\u01ab\u0001\u01ab\u0001\u01ab\u0001\u01ab"+ - "\u0001\u01ab\u0001\u01ab\u0001\u01ab\u0001\u01ab\u0001\u01ab\u0001\u01ab"+ - "\u0001\u01ab\u0001\u01ac\u0001\u01ac\u0001\u01ac\u0001\u01ac\u0001\u01ac"+ - "\u0001\u01ac\u0001\u01ad\u0001\u01ad\u0001\u01ad\u0001\u01ad\u0001\u01ad"+ - "\u0001\u01ad\u0001\u01ad\u0001\u01ad\u0001\u01ad\u0001\u01ad\u0001\u01ad"+ - "\u0001\u01ad\u0001\u01ad\u0001\u01ae\u0001\u01ae\u0001\u01ae\u0001\u01ae"+ - "\u0001\u01ae\u0001\u01ae\u0001\u01ae\u0001\u01ae\u0001\u01ae\u0001\u01ae"+ - "\u0001\u01af\u0001\u01af\u0001\u01af\u0001\u01af\u0001\u01af\u0001\u01af"+ - "\u0001\u01af\u0001\u01af\u0001\u01af\u0001\u01af\u0001\u01af\u0001\u01b0"+ - "\u0001\u01b0\u0001\u01b0\u0001\u01b0\u0001\u01b0\u0001\u01b0\u0001\u01b0"+ - "\u0001\u01b0\u0001\u01b0\u0001\u01b0\u0001\u01b1\u0001\u01b1\u0001\u01b1"+ - "\u0001\u01b1\u0001\u01b1\u0001\u01b1\u0001\u01b1\u0001\u01b1\u0001\u01b1"+ - "\u0001\u01b1\u0001\u01b2\u0001\u01b2\u0001\u01b2\u0001\u01b2\u0001\u01b2"+ - "\u0001\u01b2\u0001\u01b2\u0001\u01b2\u0001\u01b2\u0001\u01b3\u0001\u01b3"+ - "\u0001\u01b3\u0001\u01b3\u0001\u01b3\u0001\u01b3\u0001\u01b4\u0001\u01b4"+ - "\u0001\u01b4\u0001\u01b4\u0001\u01b4\u0001\u01b4\u0001\u01b4\u0001\u01b4"+ - "\u0001\u01b5\u0001\u01b5\u0001\u01b5\u0001\u01b5\u0001\u01b5\u0001\u01b5"+ - "\u0001\u01b5\u0001\u01b5\u0001\u01b5\u0001\u01b5\u0001\u01b5\u0001\u01b5"+ - "\u0001\u01b5\u0001\u01b6\u0001\u01b6\u0001\u01b6\u0001\u01b6\u0001\u01b6"+ - "\u0001\u01b7\u0001\u01b7\u0001\u01b7\u0001\u01b7\u0001\u01b7\u0001\u01b7"+ - "\u0001\u01b7\u0001\u01b7\u0001\u01b8\u0001\u01b8\u0001\u01b8\u0001\u01b8"+ - "\u0001\u01b8\u0001\u01b8\u0001\u01b8\u0001\u01b9\u0001\u01b9\u0001\u01b9"+ - "\u0001\u01b9\u0001\u01b9\u0001\u01b9\u0001\u01b9\u0001\u01ba\u0001\u01ba"+ - "\u0001\u01ba\u0001\u01ba\u0001\u01ba\u0001\u01ba\u0001\u01ba\u0001\u01ba"+ - "\u0001\u01ba\u0001\u01ba\u0001\u01ba\u0001\u01bb\u0001\u01bb\u0001\u01bb"+ - "\u0001\u01bb\u0001\u01bb\u0001\u01bb\u0001\u01bb\u0001\u01bb\u0001\u01bb"+ - "\u0001\u01bb\u0001\u01bc\u0001\u01bc\u0001\u01bc\u0001\u01bc\u0001\u01bc"+ - "\u0001\u01bc\u0001\u01bc\u0001\u01bd\u0001\u01bd\u0001\u01bd\u0001\u01bd"+ - "\u0001\u01bd\u0001\u01bd\u0001\u01bd\u0001\u01be\u0001\u01be\u0001\u01be"+ - "\u0001\u01be\u0001\u01be\u0001\u01be\u0001\u01be\u0001\u01be\u0001\u01bf"+ - "\u0001\u01bf\u0001\u01bf\u0001\u01bf\u0001\u01bf\u0001\u01bf\u0001\u01bf"+ - "\u0001\u01bf\u0001\u01c0\u0001\u01c0\u0001\u01c0\u0001\u01c0\u0001\u01c0"+ - "\u0001\u01c0\u0001\u01c0\u0001\u01c0\u0001\u01c0\u0001\u01c0\u0001\u01c1"+ - "\u0001\u01c1\u0001\u01c1\u0001\u01c1\u0001\u01c1\u0001\u01c1\u0001\u01c1"+ - "\u0001\u01c2\u0001\u01c2\u0001\u01c2\u0001\u01c2\u0001\u01c2\u0001\u01c2"+ - "\u0001\u01c2\u0001\u01c3\u0001\u01c3\u0001\u01c3\u0001\u01c3\u0001\u01c3"+ - "\u0001\u01c3\u0001\u01c3\u0001\u01c4\u0001\u01c4\u0001\u01c4\u0001\u01c4"+ - "\u0001\u01c4\u0001\u01c4\u0001\u01c4\u0001\u01c4\u0001\u01c4\u0001\u01c4"+ - "\u0001\u01c4\u0001\u01c4\u0001\u01c5\u0001\u01c5\u0001\u01c5\u0001\u01c5"+ - "\u0001\u01c6\u0001\u01c6\u0001\u01c6\u0001\u01c6\u0001\u01c7\u0001\u01c7"+ - "\u0001\u01c7\u0001\u01c7\u0001\u01c7\u0001\u01c7\u0001\u01c8\u0001\u01c8"+ - "\u0001\u01c8\u0001\u01c8\u0001\u01c8\u0001\u01c8\u0001\u01c8\u0001\u01c8"+ - "\u0001\u01c8\u0001\u01c8\u0001\u01c8\u0001\u01c8\u0001\u01c8\u0001\u01c9"+ - "\u0001\u01c9\u0001\u01c9\u0001\u01c9\u0001\u01c9\u0001\u01c9\u0001\u01c9"+ - "\u0001\u01c9\u0001\u01c9\u0001\u01c9\u0001\u01c9\u0001\u01c9\u0001\u01ca"+ - "\u0001\u01ca\u0001\u01ca\u0001\u01ca\u0001\u01cb\u0001\u01cb\u0001\u01cb"+ - "\u0001\u01cb\u0001\u01cc\u0001\u01cc\u0001\u01cc\u0001\u01cc\u0001\u01cc"+ - "\u0001\u01cc\u0001\u01cc\u0001\u01cc\u0001\u01cc\u0001\u01cd\u0001\u01cd"+ - "\u0001\u01cd\u0001\u01cd\u0001\u01cd\u0001\u01cd\u0001\u01cd\u0001\u01cd"+ - "\u0001\u01ce\u0001\u01ce\u0001\u01ce\u0001\u01ce\u0001\u01ce\u0001\u01ce"+ - "\u0001\u01ce\u0001\u01ce\u0001\u01ce\u0001\u01ce\u0001\u01ce\u0001\u01cf"+ - "\u0001\u01cf\u0001\u01cf\u0001\u01cf\u0001\u01cf\u0001\u01cf\u0001\u01d0"+ - "\u0001\u01d0\u0001\u01d0\u0001\u01d0\u0001\u01d0\u0001\u01d0\u0001\u01d0"+ - "\u0001\u01d0\u0001\u01d1\u0001\u01d1\u0001\u01d1\u0001\u01d1\u0001\u01d1"+ - "\u0001\u01d1\u0001\u01d1\u0001\u01d1\u0001\u01d1\u0001\u01d2\u0001\u01d2"+ - "\u0001\u01d2\u0001\u01d2\u0001\u01d3\u0001\u01d3\u0001\u01d3\u0001\u01d3"+ - "\u0001\u01d3\u0001\u01d3\u0001\u01d3\u0001\u01d3\u0001\u01d4\u0001\u01d4"+ - "\u0001\u01d4\u0001\u01d4\u0001\u01d4\u0001\u01d4\u0001\u01d4\u0001\u01d4"+ - "\u0001\u01d4\u0001\u01d4\u0001\u01d4\u0001\u01d5\u0001\u01d5\u0001\u01d5"+ - "\u0001\u01d5\u0001\u01d5\u0001\u01d5\u0001\u01d5\u0001\u01d5\u0001\u01d5"+ - "\u0001\u01d6\u0001\u01d6\u0001\u01d6\u0001\u01d6\u0001\u01d6\u0001\u01d7"+ - "\u0001\u01d7\u0001\u01d7\u0001\u01d7\u0001\u01d7\u0001\u01d7\u0001\u01d7"+ - "\u0001\u01d8\u0001\u01d8\u0001\u01d8\u0001\u01d8\u0001\u01d8\u0001\u01d9"+ - "\u0001\u01d9\u0001\u01d9\u0001\u01d9\u0001\u01d9\u0001\u01d9\u0001\u01d9"+ - "\u0001\u01da\u0001\u01da\u0001\u01da\u0001\u01da\u0001\u01da\u0001\u01db"+ - "\u0001\u01db\u0001\u01db\u0001\u01db\u0001\u01db\u0001\u01db\u0001\u01db"+ - "\u0001\u01db\u0001\u01db\u0001\u01dc\u0001\u01dc\u0001\u01dc\u0001\u01dc"+ - "\u0001\u01dc\u0001\u01dd\u0001\u01dd\u0001\u01dd\u0001\u01dd\u0001\u01dd"+ - "\u0001\u01dd\u0001\u01dd\u0001\u01dd\u0001\u01dd\u0001\u01dd\u0001\u01dd"+ - "\u0001\u01dd\u0001\u01de\u0001\u01de\u0001\u01de\u0001\u01de\u0001\u01de"+ - "\u0001\u01de\u0001\u01de\u0001\u01de\u0001\u01de\u0001\u01de\u0001\u01de"+ - "\u0001\u01df\u0001\u01df\u0001\u01df\u0001\u01df\u0001\u01df\u0001\u01df"+ - "\u0001\u01df\u0001\u01df\u0001\u01df\u0001\u01e0\u0001\u01e0\u0001\u01e0"+ - "\u0001\u01e0\u0001\u01e0\u0001\u01e0\u0001\u01e0\u0001\u01e0\u0001\u01e1"+ - "\u0001\u01e1\u0001\u01e1\u0001\u01e1\u0001\u01e1\u0001\u01e1\u0001\u01e1"+ - "\u0001\u01e1\u0001\u01e1\u0001\u01e1\u0001\u01e1\u0001\u01e1\u0001\u01e1"+ - "\u0001\u01e1\u0001\u01e2\u0001\u01e2\u0001\u01e2\u0001\u01e2\u0001\u01e2"+ - "\u0001\u01e2\u0001\u01e2\u0001\u01e2\u0001\u01e3\u0001\u01e3\u0001\u01e3"+ - "\u0001\u01e3\u0001\u01e3\u0001\u01e3\u0001\u01e3\u0001\u01e3\u0001\u01e3"+ - "\u0001\u01e3\u0001\u01e3\u0001\u01e4\u0001\u01e4\u0001\u01e4\u0001\u01e4"+ - "\u0001\u01e4\u0001\u01e4\u0001\u01e4\u0001\u01e5\u0001\u01e5\u0001\u01e5"+ - "\u0001\u01e5\u0001\u01e5\u0001\u01e5\u0001\u01e5\u0001\u01e6\u0001\u01e6"+ - "\u0001\u01e6\u0001\u01e6\u0001\u01e6\u0001\u01e6\u0001\u01e6\u0001\u01e7"+ - "\u0001\u01e7\u0001\u01e7\u0001\u01e7\u0001\u01e7\u0001\u01e7\u0001\u01e7"+ - "\u0001\u01e8\u0001\u01e8\u0001\u01e8\u0001\u01e8\u0001\u01e9\u0001\u01e9"+ - "\u0001\u01e9\u0001\u01e9\u0001\u01ea\u0001\u01ea\u0001\u01ea\u0001\u01ea"+ - "\u0001\u01ea\u0001\u01eb\u0001\u01eb\u0001\u01eb\u0001\u01eb\u0001\u01eb"+ - "\u0001\u01ec\u0001\u01ec\u0001\u01ec\u0001\u01ec\u0001\u01ec\u0001\u01ec"+ - "\u0001\u01ec\u0001\u01ec\u0001\u01ed\u0001\u01ed\u0001\u01ed\u0001\u01ed"+ - "\u0001\u01ed\u0001\u01ed\u0001\u01ee\u0001\u01ee\u0001\u01ee\u0001\u01ee"+ - "\u0001\u01ee\u0001\u01ee\u0001\u01ee\u0001\u01ee\u0001\u01ee\u0001\u01ee"+ - "\u0001\u01ef\u0001\u01ef\u0001\u01ef\u0001\u01ef\u0001\u01ef\u0001\u01f0"+ - "\u0001\u01f0\u0001\u01f0\u0001\u01f0\u0001\u01f0\u0001\u01f0\u0001\u01f0"+ - "\u0001\u01f0\u0001\u01f0\u0001\u01f0\u0001\u01f0\u0001\u01f0\u0001\u01f0"+ - "\u0001\u01f0\u0001\u01f0\u0001\u01f0\u0001\u01f0\u0001\u01f0\u0001\u01f0"+ - "\u0001\u01f0\u0001\u01f1\u0001\u01f1\u0001\u01f1\u0001\u01f1\u0001\u01f1"+ - "\u0001\u01f1\u0001\u01f1\u0001\u01f1\u0001\u01f1\u0001\u01f1\u0001\u01f1"+ - "\u0001\u01f1\u0001\u01f1\u0001\u01f1\u0001\u01f1\u0001\u01f1\u0001\u01f1"+ - "\u0001\u01f1\u0001\u01f2\u0001\u01f2\u0001\u01f2\u0001\u01f2\u0001\u01f2"+ - "\u0001\u01f2\u0001\u01f3\u0001\u01f3\u0001\u01f3\u0001\u01f3\u0001\u01f3"+ - "\u0001\u01f3\u0001\u01f3\u0001\u01f3\u0001\u01f3\u0001\u01f3\u0001\u01f3"+ - "\u0001\u01f3\u0001\u01f3\u0001\u01f4\u0001\u01f4\u0001\u01f4\u0001\u01f4"+ - "\u0001\u01f4\u0001\u01f4\u0001\u01f4\u0001\u01f4\u0001\u01f4\u0001\u01f4"+ - "\u0001\u01f4\u0001\u01f5\u0001\u01f5\u0001\u01f5\u0001\u01f5\u0001\u01f5"+ - "\u0001\u01f5\u0001\u01f6\u0001\u01f6\u0001\u01f6\u0001\u01f6\u0001\u01f6"+ - "\u0001\u01f6\u0001\u01f6\u0001\u01f6\u0001\u01f6\u0001\u01f7\u0001\u01f7"+ - "\u0001\u01f7\u0001\u01f7\u0001\u01f7\u0001\u01f7\u0001\u01f7\u0001\u01f7"+ - "\u0001\u01f8\u0001\u01f8\u0001\u01f8\u0001\u01f8\u0001\u01f9\u0001\u01f9"+ - "\u0001\u01f9\u0001\u01f9\u0001\u01f9\u0001\u01f9\u0001\u01f9\u0001\u01f9"+ - "\u0001\u01f9\u0001\u01f9\u0001\u01f9\u0001\u01f9\u0001\u01fa\u0001\u01fa"+ - "\u0001\u01fa\u0001\u01fa\u0001\u01fa\u0001\u01fa\u0001\u01fa\u0001\u01fa"+ - "\u0001\u01fb\u0001\u01fb\u0001\u01fb\u0001\u01fb\u0001\u01fb\u0001\u01fb"+ - "\u0001\u01fc\u0001\u01fc\u0001\u01fc\u0001\u01fc\u0001\u01fc\u0001\u01fc"+ - "\u0001\u01fd\u0001\u01fd\u0001\u01fd\u0001\u01fd\u0001\u01fd\u0001\u01fd"+ - "\u0001\u01fd\u0001\u01fd\u0001\u01fe\u0001\u01fe\u0001\u01fe\u0001\u01fe"+ - "\u0001\u01fe\u0001\u01fe\u0001\u01fe\u0001\u01fe\u0001\u01ff\u0001\u01ff"+ - "\u0001\u01ff\u0001\u01ff\u0001\u01ff\u0001\u01ff\u0001\u0200\u0001\u0200"+ - "\u0001\u0200\u0001\u0200\u0001\u0200\u0001\u0201\u0001\u0201\u0001\u0201"+ - "\u0001\u0201\u0001\u0201\u0001\u0201\u0001\u0201\u0001\u0202\u0001\u0202"+ - "\u0001\u0202\u0001\u0202\u0001\u0202\u0001\u0202\u0001\u0203\u0001\u0203"+ - "\u0001\u0203\u0001\u0203\u0001\u0203\u0001\u0203\u0001\u0204\u0001\u0204"+ - "\u0001\u0204\u0001\u0204\u0001\u0204\u0001\u0204\u0001\u0204\u0001\u0204"+ - "\u0001\u0204\u0001\u0205\u0001\u0205\u0001\u0205\u0001\u0205\u0001\u0205"+ - "\u0001\u0205\u0001\u0206\u0001\u0206\u0001\u0206\u0001\u0206\u0001\u0207"+ - "\u0001\u0207\u0001\u0207\u0001\u0207\u0001\u0207\u0001\u0208\u0001\u0208"+ - "\u0001\u0208\u0001\u0208\u0001\u0208\u0001\u0208\u0001\u0208\u0001\u0209"+ - "\u0001\u0209\u0001\u0209\u0001\u0209\u0001\u0209\u0001\u0209\u0001\u0209"+ - "\u0001\u0209\u0001\u020a\u0001\u020a\u0001\u020a\u0001\u020a\u0001\u020a"+ - "\u0001\u020a\u0001\u020a\u0001\u020a\u0001\u020a\u0001\u020a\u0001\u020b"+ - "\u0001\u020b\u0001\u020b\u0001\u020b\u0001\u020b\u0001\u020b\u0001\u020b"+ - "\u0001\u020c\u0001\u020c\u0001\u020c\u0001\u020c\u0001\u020c\u0001\u020d"+ - "\u0001\u020d\u0001\u020d\u0001\u020d\u0001\u020d\u0001\u020e\u0001\u020e"+ - "\u0001\u020e\u0001\u020e\u0001\u020f\u0001\u020f\u0001\u020f\u0001\u020f"+ - "\u0001\u020f\u0001\u0210\u0001\u0210\u0001\u0210\u0001\u0210\u0001\u0210"+ - "\u0001\u0211\u0001\u0211\u0001\u0211\u0001\u0211\u0001\u0211\u0001\u0211"+ - "\u0001\u0211\u0001\u0211\u0001\u0212\u0001\u0212\u0001\u0212\u0001\u0212"+ - "\u0001\u0212\u0001\u0212\u0001\u0212\u0001\u0212\u0001\u0213\u0001\u0213"+ - "\u0001\u0213\u0001\u0213\u0001\u0214\u0001\u0214\u0001\u0214\u0001\u0214"+ - "\u0001\u0215\u0001\u0215\u0001\u0215\u0001\u0215\u0001\u0215\u0001\u0215"+ - "\u0001\u0215\u0001\u0215\u0001\u0215\u0001\u0215\u0001\u0216\u0001\u0216"+ - "\u0001\u0216\u0001\u0216\u0001\u0216\u0001\u0216\u0001\u0217\u0001\u0217"+ - "\u0001\u0217\u0001\u0217\u0001\u0218\u0001\u0218\u0001\u0218\u0001\u0218"+ - "\u0001\u0219\u0001\u0219\u0001\u0219\u0001\u021a\u0001\u021a\u0001\u021a"+ - "\u0001\u021a\u0001\u021a\u0001\u021a\u0001\u021b\u0001\u021b\u0001\u021b"+ - "\u0001\u021b\u0001\u021b\u0001\u021b\u0001\u021b\u0001\u021b\u0001\u021b"+ - "\u0001\u021b\u0001\u021c\u0001\u021c\u0001\u021c\u0001\u021c\u0001\u021d"+ - "\u0001\u021d\u0001\u021d\u0001\u021e\u0001\u021e\u0001\u021e\u0001\u021e"+ - "\u0001\u021e\u0001\u021e\u0001\u021f\u0001\u021f\u0001\u021f\u0001\u021f"+ - "\u0001\u021f\u0001\u021f\u0001\u021f\u0001\u021f\u0001\u0220\u0001\u0220"+ - "\u0001\u0220\u0001\u0220\u0001\u0220\u0001\u0220\u0001\u0221\u0001\u0221"+ - "\u0001\u0221\u0001\u0221\u0001\u0221\u0001\u0221\u0001\u0222\u0001\u0222"+ - "\u0001\u0222\u0001\u0222\u0001\u0222\u0001\u0223\u0001\u0223\u0001\u0223"+ - "\u0001\u0223\u0001\u0223\u0001\u0224\u0001\u0224\u0001\u0224\u0001\u0224"+ - "\u0001\u0224\u0001\u0224\u0001\u0224\u0001\u0224\u0001\u0224\u0001\u0224"+ - "\u0001\u0224\u0001\u0225\u0001\u0225\u0001\u0225\u0001\u0225\u0001\u0225"+ - "\u0001\u0225\u0001\u0226\u0001\u0226\u0001\u0226\u0001\u0226\u0001\u0226"+ - "\u0001\u0226\u0001\u0226\u0001\u0226\u0001\u0226\u0001\u0226\u0001\u0226"+ - "\u0001\u0226\u0001\u0226\u0001\u0227\u0001\u0227\u0001\u0227\u0001\u0227"+ - "\u0001\u0227\u0001\u0227\u0001\u0227\u0001\u0228\u0001\u0228\u0001\u0228"+ - "\u0001\u0228\u0001\u0228\u0001\u0228\u0001\u0228\u0001\u0228\u0001\u0229"+ - "\u0001\u0229\u0001\u0229\u0001\u0229\u0001\u0229\u0001\u022a\u0001\u022a"+ - "\u0001\u022a\u0001\u022a\u0001\u022a\u0001\u022a\u0001\u022b\u0001\u022b"+ - "\u0001\u022b\u0001\u022b\u0001\u022b\u0001\u022c\u0001\u022c\u0001\u022c"+ - "\u0001\u022c\u0001\u022c\u0001\u022c\u0001\u022d\u0001\u022d\u0001\u022d"+ - "\u0001\u022d\u0001\u022d\u0001\u022e\u0001\u022e\u0001\u022e\u0001\u022e"+ - "\u0001\u022e\u0001\u022e\u0001\u022f\u0001\u022f\u0001\u022f\u0001\u022f"+ - "\u0001\u022f\u0001\u022f\u0001\u0230\u0001\u0230\u0001\u0230\u0001\u0230"+ - "\u0001\u0230\u0001\u0230\u0001\u0230\u0001\u0231\u0001\u0231\u0001\u0231"+ - "\u0001\u0231\u0001\u0232\u0001\u0232\u0001\u0232\u0001\u0232\u0001\u0232"+ - "\u0001\u0233\u0001\u0233\u0001\u0233\u0001\u0233\u0001\u0234\u0001\u0234"+ - "\u0001\u0234\u0001\u0234\u0001\u0234\u0001\u0235\u0001\u0235\u0001\u0235"+ - "\u0001\u0235\u0001\u0236\u0001\u0236\u0001\u0236\u0001\u0236\u0001\u0236"+ - "\u0001\u0237\u0001\u0237\u0001\u0237\u0001\u0237\u0001\u0238\u0001\u0238"+ - "\u0001\u0238\u0001\u0238\u0001\u0238\u0001\u0239\u0001\u0239\u0001\u0239"+ - "\u0001\u0239\u0001\u0239\u0001\u023a\u0001\u023a\u0001\u023a\u0001\u023a"+ - "\u0001\u023a\u0001\u023b\u0001\u023b\u0001\u023b\u0001\u023b\u0001\u023b"+ - "\u0001\u023c\u0001\u023c\u0001\u023c\u0001\u023c\u0001\u023c\u0001\u023c"+ - "\u0001\u023d\u0001\u023d\u0001\u023d\u0001\u023d\u0001\u023d\u0001\u023d"+ - "\u0001\u023e\u0001\u023e\u0001\u023e\u0001\u023e\u0001\u023e\u0001\u023e"+ - "\u0001\u023f\u0001\u023f\u0001\u023f\u0001\u023f\u0001\u023f\u0001\u023f"+ - "\u0001\u023f\u0001\u023f\u0001\u023f\u0001\u023f\u0001\u023f\u0001\u0240"+ - "\u0001\u0240\u0001\u0240\u0001\u0240\u0001\u0240\u0001\u0240\u0001\u0240"+ - "\u0001\u0240\u0001\u0240\u0001\u0240\u0001\u0240\u0001\u0240\u0001\u0241"+ - "\u0001\u0241\u0001\u0241\u0001\u0241\u0001\u0241\u0001\u0241\u0001\u0241"+ - "\u0001\u0241\u0001\u0241\u0001\u0241\u0001\u0241\u0001\u0241\u0001\u0241"+ - "\u0001\u0241\u0001\u0241\u0001\u0241\u0001\u0241\u0001\u0242\u0001\u0242"+ - "\u0001\u0242\u0001\u0242\u0001\u0242\u0001\u0242\u0001\u0243\u0001\u0243"+ - "\u0001\u0243\u0001\u0243\u0001\u0243\u0001\u0243\u0001\u0243\u0001\u0243"+ - "\u0001\u0243\u0001\u0243\u0001\u0243\u0001\u0243\u0001\u0243\u0001\u0244"+ - "\u0001\u0244\u0001\u0244\u0001\u0244\u0001\u0244\u0001\u0244\u0001\u0245"+ - "\u0001\u0245\u0001\u0245\u0001\u0245\u0001\u0245\u0001\u0245\u0001\u0246"+ - "\u0001\u0246\u0001\u0246\u0001\u0246\u0001\u0246\u0001\u0246\u0001\u0247"+ - "\u0001\u0247\u0001\u0247\u0001\u0247\u0001\u0248\u0001\u0248\u0001\u0248"+ - "\u0001\u0248\u0001\u0248\u0001\u0248\u0001\u0248\u0001\u0249\u0001\u0249"+ - "\u0001\u0249\u0001\u0249\u0001\u0249\u0001\u0249\u0001\u0249\u0001\u0249"+ - "\u0001\u0249\u0001\u0249\u0001\u024a\u0001\u024a\u0001\u024a\u0001\u024a"+ - "\u0001\u024a\u0001\u024a\u0001\u024a\u0001\u024b\u0001\u024b\u0001\u024b"+ - "\u0001\u024b\u0001\u024b\u0001\u024b\u0001\u024b\u0001\u024b\u0001\u024c"+ - "\u0001\u024c\u0001\u024c\u0001\u024c\u0001\u024c\u0001\u024c\u0001\u024c"+ - "\u0001\u024d\u0001\u024d\u0001\u024d\u0001\u024d\u0001\u024d\u0001\u024e"+ - "\u0001\u024e\u0001\u024e\u0001\u024e\u0001\u024e\u0001\u024e\u0001\u024f"+ - "\u0001\u024f\u0001\u024f\u0001\u024f\u0001\u0250\u0001\u0250\u0001\u0250"+ - "\u0001\u0250\u0001\u0250\u0001\u0250\u0001\u0250\u0001\u0250\u0001\u0250"+ - "\u0001\u0250\u0001\u0250\u0001\u0250\u0001\u0251\u0001\u0251\u0001\u0251"+ - "\u0001\u0251\u0001\u0251\u0001\u0251\u0001\u0251\u0001\u0251\u0001\u0251"+ - "\u0001\u0251\u0001\u0251\u0001\u0251\u0001\u0251\u0001\u0251\u0001\u0251"+ - "\u0001\u0251\u0001\u0251\u0001\u0251\u0001\u0251\u0001\u0252\u0001\u0252"+ - "\u0001\u0252\u0001\u0252\u0001\u0252\u0001\u0252\u0001\u0252\u0001\u0252"+ - "\u0001\u0252\u0001\u0252\u0001\u0252\u0001\u0252\u0001\u0253\u0001\u0253"+ - "\u0001\u0253\u0001\u0253\u0001\u0253\u0001\u0253\u0001\u0253\u0001\u0253"+ - "\u0001\u0253\u0001\u0253\u0001\u0253\u0001\u0253\u0001\u0253\u0001\u0253"+ - "\u0001\u0254\u0001\u0254\u0001\u0254\u0001\u0254\u0001\u0254\u0001\u0254"+ - "\u0001\u0254\u0001\u0254\u0001\u0254\u0001\u0254\u0001\u0254\u0001\u0254"+ - "\u0001\u0254\u0001\u0254\u0001\u0254\u0001\u0255\u0001\u0255\u0001\u0255"+ - "\u0001\u0255\u0001\u0255\u0001\u0255\u0001\u0255\u0001\u0255\u0001\u0255"+ - "\u0001\u0255\u0001\u0255\u0001\u0255\u0001\u0255\u0001\u0256\u0001\u0256"+ - "\u0001\u0256\u0001\u0256\u0001\u0256\u0001\u0256\u0001\u0256\u0001\u0256"+ - "\u0001\u0256\u0001\u0256\u0001\u0256\u0001\u0256\u0001\u0256\u0001\u0257"+ - "\u0001\u0257\u0001\u0257\u0001\u0257\u0001\u0257\u0001\u0257\u0001\u0257"+ - "\u0001\u0257\u0001\u0257\u0001\u0257\u0001\u0257\u0001\u0257\u0001\u0258"+ - "\u0001\u0258\u0001\u0258\u0001\u0258\u0001\u0258\u0001\u0258\u0001\u0258"+ - "\u0001\u0258\u0001\u0258\u0001\u0258\u0001\u0258\u0001\u0258\u0001\u0258"+ - "\u0001\u0259\u0001\u0259\u0001\u0259\u0001\u0259\u0001\u0259\u0001\u0259"+ - "\u0001\u0259\u0001\u0259\u0001\u0259\u0001\u0259\u0001\u0259\u0001\u0259"+ - "\u0001\u0259\u0001\u0259\u0001\u0259\u0001\u025a\u0001\u025a\u0001\u025a"+ - "\u0001\u025a\u0001\u025a\u0001\u025a\u0001\u025a\u0001\u025a\u0001\u025a"+ - "\u0001\u025a\u0001\u025a\u0001\u025a\u0001\u025a\u0001\u025a\u0001\u025a"+ - "\u0001\u025b\u0001\u025b\u0001\u025b\u0001\u025b\u0001\u025b\u0001\u025b"+ - "\u0001\u025b\u0001\u025b\u0001\u025b\u0001\u025b\u0001\u025b\u0001\u025b"+ - "\u0001\u025b\u0001\u025b\u0001\u025b\u0001\u025b\u0001\u025b\u0001\u025b"+ - "\u0001\u025b\u0001\u025b\u0001\u025b\u0001\u025b\u0001\u025c\u0001\u025c"+ - "\u0001\u025c\u0001\u025c\u0001\u025c\u0001\u025c\u0001\u025c\u0001\u025c"+ - "\u0001\u025c\u0001\u025c\u0001\u025c\u0001\u025c\u0001\u025c\u0001\u025c"+ - "\u0001\u025c\u0001\u025c\u0001\u025c\u0001\u025c\u0001\u025c\u0001\u025c"+ - "\u0001\u025c\u0001\u025c\u0001\u025d\u0001\u025d\u0001\u025d\u0001\u025d"+ - "\u0001\u025d\u0001\u025d\u0001\u025d\u0001\u025d\u0001\u025d\u0001\u025d"+ - "\u0001\u025d\u0001\u025d\u0001\u025d\u0001\u025d\u0001\u025e\u0001\u025e"+ - "\u0001\u025e\u0001\u025e\u0001\u025e\u0001\u025e\u0001\u025e\u0001\u025f"+ - "\u0001\u025f\u0001\u025f\u0001\u025f\u0001\u025f\u0001\u0260\u0001\u0260"+ - "\u0001\u0260\u0001\u0260\u0001\u0260\u0001\u0260\u0001\u0261\u0001\u0261"+ - "\u0001\u0261\u0001\u0261\u0001\u0261\u0001\u0261\u0001\u0261\u0001\u0261"+ - "\u0001\u0261\u0001\u0261\u0001\u0261\u0001\u0262\u0001\u0262\u0001\u0262"+ - "\u0001\u0262\u0001\u0262\u0001\u0262\u0001\u0262\u0001\u0262\u0001\u0262"+ - "\u0001\u0262\u0001\u0262\u0001\u0262\u0001\u0263\u0001\u0263\u0001\u0263"+ - "\u0001\u0263\u0001\u0263\u0001\u0263\u0001\u0263\u0001\u0263\u0001\u0263"+ - "\u0001\u0263\u0001\u0263\u0001\u0263\u0001\u0263\u0001\u0263\u0001\u0263"+ - "\u0001\u0263\u0001\u0264\u0001\u0264\u0001\u0264\u0001\u0264\u0001\u0264"+ - "\u0001\u0264\u0001\u0264\u0001\u0264\u0001\u0264\u0001\u0264\u0001\u0264"+ - "\u0001\u0264\u0001\u0264\u0001\u0264\u0001\u0264\u0001\u0264\u0001\u0265"+ - "\u0001\u0265\u0001\u0265\u0001\u0265\u0001\u0265\u0001\u0265\u0001\u0265"+ - "\u0001\u0266\u0001\u0266\u0001\u0266\u0001\u0266\u0001\u0266\u0001\u0266"+ - "\u0001\u0266\u0001\u0267\u0001\u0267\u0001\u0267\u0001\u0267\u0001\u0267"+ - "\u0001\u0267\u0001\u0267\u0001\u0267\u0001\u0267\u0001\u0268\u0001\u0268"+ - "\u0001\u0268\u0001\u0268\u0001\u0268\u0001\u0268\u0001\u0268\u0001\u0269"+ - "\u0001\u0269\u0001\u0269\u0001\u0269\u0001\u0269\u0001\u0269\u0001\u0269"+ - "\u0001\u0269\u0001\u0269\u0001\u0269\u0001\u026a\u0001\u026a\u0001\u026a"+ - "\u0001\u026a\u0001\u026a\u0001\u026a\u0001\u026a\u0001\u026b\u0001\u026b"+ - "\u0001\u026b\u0001\u026b\u0001\u026c\u0001\u026c\u0001\u026c\u0001\u026c"+ - "\u0001\u026c\u0001\u026c\u0001\u026c\u0001\u026c\u0001\u026c\u0001\u026c"+ - "\u0001\u026c\u0001\u026c\u0001\u026c\u0001\u026c\u0001\u026c\u0001\u026c"+ - "\u0001\u026d\u0001\u026d\u0001\u026d\u0001\u026d\u0001\u026d\u0001\u026d"+ - "\u0001\u026d\u0001\u026d\u0001\u026d\u0001\u026e\u0001\u026e\u0001\u026e"+ - "\u0001\u026e\u0001\u026e\u0001\u026e\u0001\u026e\u0001\u026e\u0001\u026e"+ - "\u0001\u026e\u0001\u026f\u0001\u026f\u0001\u026f\u0001\u026f\u0001\u026f"+ - "\u0001\u026f\u0001\u026f\u0001\u026f\u0001\u026f\u0001\u026f\u0001\u026f"+ - "\u0001\u0270\u0001\u0270\u0001\u0270\u0001\u0270\u0001\u0270\u0001\u0270"+ - "\u0001\u0270\u0001\u0270\u0001\u0270\u0001\u0271\u0001\u0271\u0001\u0271"+ - "\u0001\u0271\u0001\u0271\u0001\u0271\u0001\u0271\u0001\u0271\u0001\u0271"+ - "\u0001\u0271\u0001\u0271\u0001\u0271\u0001\u0271\u0001\u0272\u0001\u0272"+ - "\u0001\u0272\u0001\u0272\u0001\u0272\u0001\u0272\u0001\u0272\u0001\u0272"+ - "\u0001\u0272\u0001\u0272\u0001\u0272\u0001\u0272\u0001\u0272\u0001\u0272"+ - "\u0001\u0273\u0001\u0273\u0001\u0273\u0001\u0273\u0001\u0273\u0001\u0273"+ - "\u0001\u0273\u0001\u0273\u0001\u0273\u0001\u0273\u0001\u0273\u0001\u0273"+ - "\u0001\u0273\u0001\u0273\u0001\u0273\u0001\u0273\u0001\u0273\u0001\u0274"+ - "\u0001\u0274\u0001\u0274\u0001\u0274\u0001\u0274\u0001\u0274\u0001\u0274"+ - "\u0001\u0274\u0001\u0274\u0001\u0274\u0001\u0275\u0001\u0275\u0001\u0275"+ - "\u0001\u0275\u0001\u0275\u0001\u0275\u0001\u0275\u0001\u0275\u0001\u0275"+ - "\u0001\u0275\u0001\u0275\u0001\u0275\u0001\u0275\u0001\u0275\u0001\u0276"+ - "\u0001\u0276\u0001\u0276\u0001\u0276\u0001\u0276\u0001\u0276\u0001\u0276"+ - "\u0001\u0276\u0001\u0276\u0001\u0276\u0001\u0277\u0001\u0277\u0001\u0277"+ - "\u0001\u0277\u0001\u0277\u0001\u0277\u0001\u0277\u0001\u0277\u0001\u0277"+ - "\u0001\u0277\u0001\u0277\u0001\u0277\u0001\u0277\u0001\u0277\u0001\u0277"+ - "\u0001\u0278\u0001\u0278\u0001\u0278\u0001\u0278\u0001\u0278\u0001\u0278"+ - "\u0001\u0278\u0001\u0278\u0001\u0278\u0001\u0278\u0001\u0278\u0001\u0278"+ - "\u0001\u0278\u0001\u0278\u0001\u0278\u0001\u0278\u0001\u0278\u0001\u0279"+ - "\u0001\u0279\u0001\u0279\u0001\u0279\u0001\u027a\u0001\u027a\u0001\u027a"+ - "\u0001\u027a\u0001\u027a\u0001\u027a\u0001\u027a\u0001\u027a\u0001\u027a"+ - "\u0001\u027a\u0001\u027a\u0001\u027a\u0001\u027a\u0001\u027a\u0001\u027a"+ - "\u0001\u027a\u0001\u027a\u0001\u027a\u0001\u027a\u0001\u027a\u0001\u027b"+ - "\u0001\u027b\u0001\u027b\u0001\u027b\u0001\u027b\u0001\u027b\u0001\u027b"+ - "\u0001\u027b\u0001\u027b\u0001\u027b\u0001\u027c\u0001\u027c\u0001\u027c"+ - "\u0001\u027c\u0001\u027c\u0001\u027c\u0001\u027c\u0001\u027c\u0001\u027c"+ - "\u0001\u027c\u0001\u027c\u0001\u027c\u0001\u027c\u0001\u027c\u0001\u027c"+ - "\u0001\u027c\u0001\u027c\u0001\u027c\u0001\u027c\u0001\u027c\u0001\u027c"+ - "\u0001\u027c\u0001\u027d\u0001\u027d\u0001\u027d\u0001\u027d\u0001\u027d"+ - "\u0001\u027d\u0001\u027d\u0001\u027d\u0001\u027d\u0001\u027d\u0001\u027d"+ - "\u0001\u027d\u0001\u027d\u0001\u027e\u0001\u027e\u0001\u027e\u0001\u027e"+ - "\u0001\u027e\u0001\u027e\u0001\u027e\u0001\u027e\u0001\u027f\u0001\u027f"+ - "\u0001\u027f\u0001\u027f\u0001\u027f\u0001\u027f\u0001\u027f\u0001\u027f"+ - "\u0001\u0280\u0001\u0280\u0001\u0280\u0001\u0280\u0001\u0280\u0001\u0280"+ - "\u0001\u0280\u0001\u0280\u0001\u0280\u0001\u0280\u0001\u0281\u0001\u0281"+ - "\u0005\u0281\u18c4\b\u0281\n\u0281\f\u0281\u18c7\t\u0281\u0001\u0282\u0001"+ - "\u0282\u0001\u0282\u0001\u0282\u0001\u0282\u0001\u0282\u0003\u0282\u18cf"+ - "\b\u0282\u0001\u0283\u0001\u0283\u0003\u0283\u18d3\b\u0283\u0001\u0284"+ - "\u0001\u0284\u0003\u0284\u18d7\b\u0284\u0001\u0285\u0001\u0285\u0001\u0285"+ - "\u0001\u0286\u0001\u0286\u0001\u0286\u0001\u0286\u0005\u0286\u18e0\b\u0286"+ - "\n\u0286\f\u0286\u18e3\t\u0286\u0001\u0287\u0001\u0287\u0001\u0287\u0001"+ - "\u0288\u0001\u0288\u0001\u0288\u0001\u0288\u0005\u0288\u18ec\b\u0288\n"+ - "\u0288\f\u0288\u18ef\t\u0288\u0001\u0289\u0001\u0289\u0001\u0289\u0001"+ - "\u0289\u0001\u028a\u0001\u028a\u0001\u028a\u0001\u028a\u0001\u028b\u0001"+ - "\u028b\u0001\u028b\u0001\u028b\u0001\u028c\u0001\u028c\u0001\u028c\u0001"+ - "\u028c\u0001\u028d\u0001\u028d\u0001\u028d\u0001\u028e\u0001\u028e\u0001"+ - "\u028e\u0001\u028e\u0005\u028e\u1908\b\u028e\n\u028e\f\u028e\u190b\t\u028e"+ - "\u0001\u028f\u0001\u028f\u0001\u028f\u0001\u028f\u0001\u028f\u0001\u028f"+ - "\u0001\u0290\u0001\u0290\u0001\u0290\u0001\u0291\u0001\u0291\u0001\u0291"+ - "\u0001\u0291\u0001\u0292\u0001\u0292\u0003\u0292\u191c\b\u0292\u0001\u0292"+ - "\u0001\u0292\u0001\u0292\u0001\u0292\u0001\u0292\u0001\u0293\u0001\u0293"+ - "\u0005\u0293\u1925\b\u0293\n\u0293\f\u0293\u1928\t\u0293\u0001\u0294\u0001"+ - "\u0294\u0001\u0294\u0001\u0295\u0001\u0295\u0001\u0295\u0005\u0295\u1930"+ - "\b\u0295\n\u0295\f\u0295\u1933\t\u0295\u0001\u0296\u0001\u0296\u0001\u0296"+ - "\u0001\u0297\u0001\u0297\u0001\u0297\u0001\u0298\u0001\u0298\u0001\u0298"+ - "\u0001\u0299\u0001\u0299\u0001\u0299\u0005\u0299\u1941\b\u0299\n\u0299"+ - "\f\u0299\u1944\t\u0299\u0001\u029a\u0001\u029a\u0001\u029a\u0001\u029b"+ - "\u0001\u029b\u0001\u029b\u0001\u029c\u0001\u029c\u0001\u029d\u0001\u029d"+ - "\u0001\u029d\u0001\u029d\u0001\u029d\u0001\u029d\u0001\u029e\u0001\u029e"+ - "\u0001\u029e\u0003\u029e\u1957\b\u029e\u0001\u029e\u0001\u029e\u0003\u029e"+ - "\u195b\b\u029e\u0001\u029e\u0003\u029e\u195e\b\u029e\u0001\u029e\u0001"+ - "\u029e\u0001\u029e\u0001\u029e\u0003\u029e\u1964\b\u029e\u0001\u029e\u0003"+ - "\u029e\u1967\b\u029e\u0001\u029e\u0001\u029e\u0001\u029e\u0003\u029e\u196c"+ - "\b\u029e\u0001\u029e\u0001\u029e\u0003\u029e\u1970\b\u029e\u0001\u029f"+ - "\u0004\u029f\u1973\b\u029f\u000b\u029f\f\u029f\u1974\u0001\u02a0\u0001"+ - "\u02a0\u0001\u02a0\u0005\u02a0\u197a\b\u02a0\n\u02a0\f\u02a0\u197d\t\u02a0"+ - "\u0001\u02a1\u0001\u02a1\u0001\u02a1\u0001\u02a1\u0001\u02a1\u0001\u02a1"+ - "\u0001\u02a1\u0001\u02a1\u0005\u02a1\u1987\b\u02a1\n\u02a1\f\u02a1\u198a"+ - "\t\u02a1\u0001\u02a1\u0001\u02a1\u0001\u02a2\u0004\u02a2\u198f\b\u02a2"+ - "\u000b\u02a2\f\u02a2\u1990\u0001\u02a2\u0001\u02a2\u0001\u02a3\u0001\u02a3"+ - "\u0003\u02a3\u1997\b\u02a3\u0001\u02a3\u0003\u02a3\u199a\b\u02a3\u0001"+ - "\u02a3\u0001\u02a3\u0001\u02a4\u0001\u02a4\u0001\u02a4\u0001\u02a4\u0005"+ - "\u02a4\u19a2\b\u02a4\n\u02a4\f\u02a4\u19a5\t\u02a4\u0001\u02a4\u0001\u02a4"+ - "\u0001\u02a5\u0001\u02a5\u0001\u02a5\u0001\u02a5\u0005\u02a5\u19ad\b\u02a5"+ - "\n\u02a5\f\u02a5\u19b0\t\u02a5\u0001\u02a5\u0001\u02a5\u0001\u02a5\u0004"+ - "\u02a5\u19b5\b\u02a5\u000b\u02a5\f\u02a5\u19b6\u0001\u02a5\u0001\u02a5"+ - "\u0004\u02a5\u19bb\b\u02a5\u000b\u02a5\f\u02a5\u19bc\u0001\u02a5\u0005"+ - "\u02a5\u19c0\b\u02a5\n\u02a5\f\u02a5\u19c3\t\u02a5\u0001\u02a5\u0005\u02a5"+ - "\u19c6\b\u02a5\n\u02a5\f\u02a5\u19c9\t\u02a5\u0001\u02a5\u0001\u02a5\u0001"+ - "\u02a5\u0001\u02a5\u0001\u02a5\u0001\u02a6\u0001\u02a6\u0001\u02a6\u0001"+ - "\u02a6\u0005\u02a6\u19d4\b\u02a6\n\u02a6\f\u02a6\u19d7\t\u02a6\u0001\u02a6"+ - "\u0001\u02a6\u0001\u02a6\u0004\u02a6\u19dc\b\u02a6\u000b\u02a6\f\u02a6"+ - "\u19dd\u0001\u02a6\u0001\u02a6\u0004\u02a6\u19e2\b\u02a6\u000b\u02a6\f"+ - "\u02a6\u19e3\u0001\u02a6\u0003\u02a6\u19e7\b\u02a6\u0005\u02a6\u19e9\b"+ - "\u02a6\n\u02a6\f\u02a6\u19ec\t\u02a6\u0001\u02a6\u0004\u02a6\u19ef\b\u02a6"+ - "\u000b\u02a6\f\u02a6\u19f0\u0001\u02a6\u0004\u02a6\u19f4\b\u02a6\u000b"+ - "\u02a6\f\u02a6\u19f5\u0001\u02a6\u0005\u02a6\u19f9\b\u02a6\n\u02a6\f\u02a6"+ - "\u19fc\t\u02a6\u0001\u02a6\u0003\u02a6\u19ff\b\u02a6\u0001\u02a6\u0001"+ - "\u02a6\u0001\u02a7\u0001\u02a7\u0001\u02a7\u0001\u02a7\u0005\u02a7\u1a07"+ - "\b\u02a7\n\u02a7\f\u02a7\u1a0a\t\u02a7\u0001\u02a7\u0005\u02a7\u1a0d\b"+ - "\u02a7\n\u02a7\f\u02a7\u1a10\t\u02a7\u0001\u02a7\u0001\u02a7\u0005\u02a7"+ - "\u1a14\b\u02a7\n\u02a7\f\u02a7\u1a17\t\u02a7\u0003\u02a7\u1a19\b\u02a7"+ - "\u0001\u02a8\u0001\u02a8\u0001\u02a8\u0001\u02a9\u0001\u02a9\u0001\u02aa"+ - "\u0001\u02aa\u0001\u02aa\u0001\u02aa\u0001\u02aa\u0001\u02ab\u0001\u02ab"+ - "\u0003\u02ab\u1a27\b\u02ab\u0001\u02ab\u0001\u02ab\u0001\u02ac\u0001\u02ac"+ - "\u0001\u02ac\u0001\u02ac\u0001\u02ac\u0001\u02ac\u0001\u02ac\u0001\u02ac"+ - "\u0001\u02ac\u0001\u02ac\u0001\u02ac\u0001\u02ac\u0001\u02ac\u0001\u02ac"+ - "\u0001\u02ac\u0001\u02ac\u0001\u02ac\u0001\u02ac\u0001\u02ac\u0001\u02ac"+ - "\u0003\u02ac\u1a3f\b\u02ac\u0001\u02ac\u0005\u02ac\u1a42\b\u02ac\n\u02ac"+ - "\f\u02ac\u1a45\t\u02ac\u0001\u02ad\u0001\u02ad\u0001\u02ad\u0001\u02ad"+ - "\u0001\u02ad\u0001\u02ae\u0001\u02ae\u0003\u02ae\u1a4e\b\u02ae\u0001\u02ae"+ - "\u0001\u02ae\u0001\u02af\u0001\u02af\u0001\u02af\u0001\u02af\u0001\u02af"+ - "\u0005\u02af\u1a57\b\u02af\n\u02af\f\u02af\u1a5a\t\u02af\u0001\u02b0\u0001"+ - "\u02b0\u0001\u02b0\u0001\u02b0\u0001\u02b0\u0001\u02b1\u0001\u02b1\u0001"+ - "\u02b1\u0001\u02b1\u0001\u02b1\u0001\u02b1\u0001\u02b2\u0001\u02b2\u0001"+ - "\u02b2\u0001\u02b2\u0001\u02b2\u0001\u02b3\u0001\u02b3\u0001\u02b3\u0001"+ - "\u02b3\u0001\u02b3\u0001\u02b4\u0001\u02b4\u0001\u02b4\u0001\u02b4\u0001"+ - "\u02b4\u0001\u02b5\u0001\u02b5\u0001\u02b5\u0001\u02b5\u0001\u02b5\u0001"+ - "\u02b6\u0001\u02b6\u0001\u02b6\u0001\u02b6\u0001\u02b6\u0001\u02b7\u0004"+ - "\u02b7\u1a81\b\u02b7\u000b\u02b7\f\u02b7\u1a82\u0001\u02b7\u0001\u02b7"+ - "\u0005\u02b7\u1a87\b\u02b7\n\u02b7\f\u02b7\u1a8a\t\u02b7\u0003\u02b7\u1a8c"+ - "\b\u02b7\u0001\u02b8\u0001\u02b8\u0003\u02b8\u1a90\b\u02b8\u0001\u02b8"+ - "\u0001\u02b8\u0001\u02b8\u0001\u02b8\u0001\u02b8\u0001\u02b8\u0001\u02b8"+ - "\u0000\u0000\u02b9\u0005\u0001\u0007\u0002\t\u0003\u000b\u0004\r\u0005"+ - "\u000f\u0006\u0011\u0007\u0013\b\u0015\t\u0017\n\u0019\u000b\u001b\f\u001d"+ - "\r\u001f\u000e!\u000f#\u0010%\u0011\'\u0012)\u0013+\u0014-\u0015/\u0016"+ - "1\u00173\u00185\u00197\u001a9\u001b;\u001c=\u001d?\u0000A\u0000C\u0000"+ - "E\u0000G\u001eI\u001fK M!O\"Q#S$U%W&Y\'[(])_*a+c,e-g.i/k0m1o2q3s4u5w6"+ - "y7{8}9\u007f:\u0081;\u0083<\u0085=\u0087>\u0089?\u008b@\u008dA\u008fB"+ - "\u0091C\u0093D\u0095E\u0097F\u0099G\u009bH\u009dI\u009fJ\u00a1K\u00a3"+ - "L\u00a5M\u00a7N\u00a9O\u00abP\u00adQ\u00afR\u00b1S\u00b3T\u00b5U\u00b7"+ - "V\u00b9W\u00bbX\u00bdY\u00bfZ\u00c1[\u00c3\\\u00c5]\u00c7^\u00c9_\u00cb"+ - "`\u00cda\u00cfb\u00d1c\u00d3d\u00d5e\u00d7f\u00d9g\u00dbh\u00ddi\u00df"+ - "j\u00e1k\u00e3l\u00e5m\u00e7n\u00e9o\u00ebp\u00edq\u00efr\u00f1s\u00f3"+ - "t\u00f5u\u00f7v\u00f9w\u00fbx\u00fdy\u00ffz\u0101{\u0103|\u0105}\u0107"+ - "~\u0109\u007f\u010b\u0080\u010d\u0081\u010f\u0082\u0111\u0083\u0113\u0084"+ - "\u0115\u0085\u0117\u0086\u0119\u0087\u011b\u0088\u011d\u0089\u011f\u008a"+ - "\u0121\u008b\u0123\u008c\u0125\u008d\u0127\u008e\u0129\u008f\u012b\u0090"+ - "\u012d\u0091\u012f\u0092\u0131\u0093\u0133\u0094\u0135\u0095\u0137\u0096"+ - "\u0139\u0097\u013b\u0098\u013d\u0099\u013f\u009a\u0141\u009b\u0143\u009c"+ - "\u0145\u009d\u0147\u009e\u0149\u009f\u014b\u00a0\u014d\u00a1\u014f\u00a2"+ - "\u0151\u00a3\u0153\u00a4\u0155\u00a5\u0157\u00a6\u0159\u00a7\u015b\u00a8"+ - "\u015d\u00a9\u015f\u00aa\u0161\u00ab\u0163\u00ac\u0165\u00ad\u0167\u00ae"+ - "\u0169\u00af\u016b\u00b0\u016d\u00b1\u016f\u00b2\u0171\u00b3\u0173\u00b4"+ - "\u0175\u00b5\u0177\u00b6\u0179\u00b7\u017b\u00b8\u017d\u00b9\u017f\u00ba"+ - "\u0181\u00bb\u0183\u00bc\u0185\u00bd\u0187\u00be\u0189\u00bf\u018b\u00c0"+ - "\u018d\u00c1\u018f\u00c2\u0191\u00c3\u0193\u00c4\u0195\u00c5\u0197\u00c6"+ - "\u0199\u00c7\u019b\u00c8\u019d\u00c9\u019f\u00ca\u01a1\u00cb\u01a3\u00cc"+ - "\u01a5\u00cd\u01a7\u00ce\u01a9\u00cf\u01ab\u00d0\u01ad\u00d1\u01af\u00d2"+ - "\u01b1\u00d3\u01b3\u00d4\u01b5\u00d5\u01b7\u00d6\u01b9\u00d7\u01bb\u00d8"+ - "\u01bd\u00d9\u01bf\u00da\u01c1\u00db\u01c3\u00dc\u01c5\u00dd\u01c7\u00de"+ - "\u01c9\u00df\u01cb\u00e0\u01cd\u00e1\u01cf\u00e2\u01d1\u00e3\u01d3\u00e4"+ - "\u01d5\u00e5\u01d7\u00e6\u01d9\u00e7\u01db\u00e8\u01dd\u00e9\u01df\u00ea"+ - "\u01e1\u00eb\u01e3\u00ec\u01e5\u00ed\u01e7\u00ee\u01e9\u00ef\u01eb\u00f0"+ - "\u01ed\u00f1\u01ef\u00f2\u01f1\u00f3\u01f3\u00f4\u01f5\u00f5\u01f7\u00f6"+ - "\u01f9\u00f7\u01fb\u00f8\u01fd\u00f9\u01ff\u00fa\u0201\u00fb\u0203\u00fc"+ - "\u0205\u00fd\u0207\u00fe\u0209\u00ff\u020b\u0100\u020d\u0101\u020f\u0102"+ - "\u0211\u0103\u0213\u0104\u0215\u0105\u0217\u0106\u0219\u0107\u021b\u0108"+ - "\u021d\u0109\u021f\u010a\u0221\u010b\u0223\u010c\u0225\u010d\u0227\u010e"+ - "\u0229\u010f\u022b\u0110\u022d\u0111\u022f\u0112\u0231\u0113\u0233\u0114"+ - "\u0235\u0115\u0237\u0116\u0239\u0117\u023b\u0118\u023d\u0119\u023f\u011a"+ - "\u0241\u011b\u0243\u011c\u0245\u011d\u0247\u011e\u0249\u011f\u024b\u0120"+ - "\u024d\u0121\u024f\u0122\u0251\u0123\u0253\u0124\u0255\u0125\u0257\u0126"+ - "\u0259\u0127\u025b\u0128\u025d\u0129\u025f\u012a\u0261\u012b\u0263\u012c"+ - "\u0265\u012d\u0267\u012e\u0269\u012f\u026b\u0130\u026d\u0131\u026f\u0132"+ - "\u0271\u0133\u0273\u0134\u0275\u0135\u0277\u0136\u0279\u0137\u027b\u0138"+ - "\u027d\u0139\u027f\u013a\u0281\u013b\u0283\u013c\u0285\u013d\u0287\u013e"+ - "\u0289\u013f\u028b\u0140\u028d\u0141\u028f\u0142\u0291\u0143\u0293\u0144"+ - "\u0295\u0145\u0297\u0146\u0299\u0147\u029b\u0148\u029d\u0149\u029f\u014a"+ - "\u02a1\u014b\u02a3\u014c\u02a5\u014d\u02a7\u014e\u02a9\u014f\u02ab\u0150"+ - "\u02ad\u0151\u02af\u0152\u02b1\u0153\u02b3\u0154\u02b5\u0155\u02b7\u0156"+ - "\u02b9\u0157\u02bb\u0158\u02bd\u0159\u02bf\u015a\u02c1\u015b\u02c3\u015c"+ - "\u02c5\u015d\u02c7\u015e\u02c9\u015f\u02cb\u0160\u02cd\u0161\u02cf\u0162"+ - "\u02d1\u0163\u02d3\u0164\u02d5\u0165\u02d7\u0166\u02d9\u0167\u02db\u0168"+ - "\u02dd\u0169\u02df\u016a\u02e1\u016b\u02e3\u016c\u02e5\u016d\u02e7\u016e"+ - "\u02e9\u016f\u02eb\u0170\u02ed\u0171\u02ef\u0172\u02f1\u0173\u02f3\u0174"+ - "\u02f5\u0175\u02f7\u0176\u02f9\u0177\u02fb\u0178\u02fd\u0179\u02ff\u017a"+ - "\u0301\u017b\u0303\u017c\u0305\u017d\u0307\u017e\u0309\u017f\u030b\u0180"+ - "\u030d\u0181\u030f\u0182\u0311\u0183\u0313\u0184\u0315\u0185\u0317\u0186"+ - "\u0319\u0187\u031b\u0188\u031d\u0189\u031f\u018a\u0321\u018b\u0323\u018c"+ - "\u0325\u018d\u0327\u018e\u0329\u018f\u032b\u0190\u032d\u0191\u032f\u0192"+ - "\u0331\u0193\u0333\u0194\u0335\u0195\u0337\u0196\u0339\u0197\u033b\u0198"+ - "\u033d\u0199\u033f\u019a\u0341\u019b\u0343\u019c\u0345\u019d\u0347\u019e"+ - "\u0349\u019f\u034b\u01a0\u034d\u01a1\u034f\u01a2\u0351\u01a3\u0353\u01a4"+ - "\u0355\u01a5\u0357\u01a6\u0359\u01a7\u035b\u01a8\u035d\u01a9\u035f\u01aa"+ - "\u0361\u01ab\u0363\u01ac\u0365\u01ad\u0367\u01ae\u0369\u01af\u036b\u01b0"+ - "\u036d\u01b1\u036f\u01b2\u0371\u01b3\u0373\u01b4\u0375\u01b5\u0377\u01b6"+ - "\u0379\u01b7\u037b\u01b8\u037d\u01b9\u037f\u01ba\u0381\u01bb\u0383\u01bc"+ - "\u0385\u01bd\u0387\u01be\u0389\u01bf\u038b\u01c0\u038d\u01c1\u038f\u01c2"+ - "\u0391\u01c3\u0393\u01c4\u0395\u01c5\u0397\u01c6\u0399\u01c7\u039b\u01c8"+ - "\u039d\u01c9\u039f\u01ca\u03a1\u01cb\u03a3\u01cc\u03a5\u01cd\u03a7\u01ce"+ - "\u03a9\u01cf\u03ab\u01d0\u03ad\u01d1\u03af\u01d2\u03b1\u01d3\u03b3\u01d4"+ - "\u03b5\u01d5\u03b7\u01d6\u03b9\u01d7\u03bb\u01d8\u03bd\u01d9\u03bf\u01da"+ - "\u03c1\u01db\u03c3\u01dc\u03c5\u01dd\u03c7\u01de\u03c9\u01df\u03cb\u01e0"+ - "\u03cd\u01e1\u03cf\u01e2\u03d1\u01e3\u03d3\u01e4\u03d5\u01e5\u03d7\u01e6"+ - "\u03d9\u01e7\u03db\u01e8\u03dd\u01e9\u03df\u01ea\u03e1\u01eb\u03e3\u01ec"+ - "\u03e5\u01ed\u03e7\u01ee\u03e9\u01ef\u03eb\u01f0\u03ed\u01f1\u03ef\u01f2"+ - "\u03f1\u01f3\u03f3\u01f4\u03f5\u01f5\u03f7\u01f6\u03f9\u01f7\u03fb\u01f8"+ - "\u03fd\u01f9\u03ff\u01fa\u0401\u01fb\u0403\u01fc\u0405\u01fd\u0407\u01fe"+ - "\u0409\u01ff\u040b\u0200\u040d\u0201\u040f\u0202\u0411\u0203\u0413\u0204"+ - "\u0415\u0205\u0417\u0206\u0419\u0207\u041b\u0208\u041d\u0209\u041f\u020a"+ - "\u0421\u020b\u0423\u020c\u0425\u020d\u0427\u020e\u0429\u020f\u042b\u0210"+ - "\u042d\u0211\u042f\u0212\u0431\u0213\u0433\u0214\u0435\u0215\u0437\u0216"+ - "\u0439\u0217\u043b\u0218\u043d\u0219\u043f\u021a\u0441\u021b\u0443\u021c"+ - "\u0445\u021d\u0447\u021e\u0449\u021f\u044b\u0220\u044d\u0221\u044f\u0222"+ - "\u0451\u0223\u0453\u0224\u0455\u0225\u0457\u0226\u0459\u0227\u045b\u0228"+ - "\u045d\u0229\u045f\u022a\u0461\u022b\u0463\u022c\u0465\u022d\u0467\u022e"+ - "\u0469\u022f\u046b\u0230\u046d\u0231\u046f\u0232\u0471\u0233\u0473\u0234"+ - "\u0475\u0235\u0477\u0236\u0479\u0237\u047b\u0238\u047d\u0239\u047f\u023a"+ - "\u0481\u023b\u0483\u023c\u0485\u023d\u0487\u023e\u0489\u023f\u048b\u0240"+ - "\u048d\u0241\u048f\u0242\u0491\u0243\u0493\u0244\u0495\u0245\u0497\u0246"+ - "\u0499\u0247\u049b\u0248\u049d\u0249\u049f\u024a\u04a1\u024b\u04a3\u024c"+ - "\u04a5\u024d\u04a7\u024e\u04a9\u024f\u04ab\u0250\u04ad\u0251\u04af\u0252"+ - "\u04b1\u0253\u04b3\u0254\u04b5\u0255\u04b7\u0256\u04b9\u0257\u04bb\u0258"+ - "\u04bd\u0259\u04bf\u025a\u04c1\u025b\u04c3\u025c\u04c5\u025d\u04c7\u025e"+ - "\u04c9\u025f\u04cb\u0260\u04cd\u0261\u04cf\u0262\u04d1\u0263\u04d3\u0264"+ - "\u04d5\u0265\u04d7\u0266\u04d9\u0267\u04db\u0268\u04dd\u0269\u04df\u026a"+ - "\u04e1\u026b\u04e3\u026c\u04e5\u026d\u04e7\u026e\u04e9\u026f\u04eb\u0270"+ - "\u04ed\u0271\u04ef\u0272\u04f1\u0273\u04f3\u0274\u04f5\u0275\u04f7\u0276"+ - "\u04f9\u0277\u04fb\u0278\u04fd\u0279\u04ff\u027a\u0501\u027b\u0503\u027c"+ - "\u0505\u027d\u0507\u027e\u0509\u0000\u050b\u0000\u050d\u0000\u050f\u027f"+ - "\u0511\u0280\u0513\u0281\u0515\u0282\u0517\u0283\u0519\u0284\u051b\u0285"+ - "\u051d\u0286\u051f\u0287\u0521\u0288\u0523\u0000\u0525\u0289\u0527\u028a"+ - "\u0529\u028b\u052b\u0000\u052d\u028c\u052f\u028d\u0531\u028e\u0533\u028f"+ - "\u0535\u0290\u0537\u0291\u0539\u0292\u053b\u0293\u053d\u0294\u053f\u0295"+ - "\u0541\u0296\u0543\u0000\u0545\u0297\u0547\u0298\u0549\u0299\u054b\u029a"+ - "\u054d\u029b\u054f\u029c\u0551\u029d\u0553\u029e\u0555\u029f\u0557\u02a0"+ - "\u0559\u02a1\u055b\u02a2\u055d\u0000\u055f\u02a3\u0561\u02a4\u0563\u0000"+ - "\u0565\u0000\u0567\u0000\u0569\u02a5\u056b\u0000\u056d\u0000\u056f\u02a9"+ - "\u0571\u02a6\u0573\u02a7\u0575\u02a8\u0005\u0000\u0001\u0002\u0003\u0004"+ - "3\u0001\u000009\u0002\u0000++--\t\u0000!!##%&**<@^^``||~~\u0002\u0000"+ - "*+<>\b\u0000!!##%&?@^^``||~~\u0002\u0000AAaa\u0002\u0000LLll\u0002\u0000"+ - "NNnn\u0002\u0000YYyy\u0002\u0000SSss\u0002\u0000EEee\u0002\u0000ZZzz\u0002"+ - "\u0000DDdd\u0002\u0000RRrr\u0002\u0000CCcc\u0002\u0000MMmm\u0002\u0000"+ - "TTtt\u0002\u0000IIii\u0002\u0000BBbb\u0002\u0000OOoo\u0002\u0000HHhh\u0002"+ - "\u0000KKkk\u0002\u0000UUuu\u0002\u0000GGgg\u0002\u0000PPpp\u0002\u0000"+ - "FFff\u0002\u0000XXxx\u0002\u0000VVvv\u0002\u0000QQqq\u0002\u0000WWww\u0002"+ - "\u0000JJjj\t\u0000AZ__az\u00aa\u00aa\u00b5\u00b5\u00ba\u00ba\u00c0\u00d6"+ - "\u00d8\u00f6\u00f8\u00ff\u0002\u0000\u0100\u8000\ud7ff\u8000\ue000\u8000"+ - "\uffff\u0001\u0000\u8000\ud800\u8000\udbff\u0001\u0000\u8000\udc00\u8000"+ - "\udfff\u0002\u0000\u0000\u0000\"\"\u0001\u0000\"\"\u0001\u0000\'\'\u0001"+ - "\u000001\u0003\u000009AFaf\u0003\u0000AZ__az\u0005\u0000$$09AZ__az\u0002"+ - "\u0000\"\"\\\\\u0002\u0000\t\t \u0002\u0000\n\n\r\r\u0002\u0000**//\u0004"+ - "\u0000\n\n\r\r\"\"\\\\\u0003\u0000\n\n\r\r\"\"\u0003\u0000UUuuxx\u0002"+ - "\u0000\'\'\\\\\u0001\u0000$$\u1ae0\u0000\u0005\u0001\u0000\u0000\u0000"+ - "\u0000\u0007\u0001\u0000\u0000\u0000\u0000\t\u0001\u0000\u0000\u0000\u0000"+ - "\u000b\u0001\u0000\u0000\u0000\u0000\r\u0001\u0000\u0000\u0000\u0000\u000f"+ - "\u0001\u0000\u0000\u0000\u0000\u0011\u0001\u0000\u0000\u0000\u0000\u0013"+ - "\u0001\u0000\u0000\u0000\u0000\u0015\u0001\u0000\u0000\u0000\u0000\u0017"+ - "\u0001\u0000\u0000\u0000\u0000\u0019\u0001\u0000\u0000\u0000\u0000\u001b"+ - "\u0001\u0000\u0000\u0000\u0000\u001d\u0001\u0000\u0000\u0000\u0000\u001f"+ - "\u0001\u0000\u0000\u0000\u0000!\u0001\u0000\u0000\u0000\u0000#\u0001\u0000"+ - "\u0000\u0000\u0000%\u0001\u0000\u0000\u0000\u0000\'\u0001\u0000\u0000"+ - "\u0000\u0000)\u0001\u0000\u0000\u0000\u0000+\u0001\u0000\u0000\u0000\u0000"+ - "-\u0001\u0000\u0000\u0000\u0000/\u0001\u0000\u0000\u0000\u00001\u0001"+ - "\u0000\u0000\u0000\u00003\u0001\u0000\u0000\u0000\u00005\u0001\u0000\u0000"+ - "\u0000\u00007\u0001\u0000\u0000\u0000\u00009\u0001\u0000\u0000\u0000\u0000"+ - ";\u0001\u0000\u0000\u0000\u0000=\u0001\u0000\u0000\u0000\u0000?\u0001"+ - "\u0000\u0000\u0000\u0000G\u0001\u0000\u0000\u0000\u0000I\u0001\u0000\u0000"+ - "\u0000\u0000K\u0001\u0000\u0000\u0000\u0000M\u0001\u0000\u0000\u0000\u0000"+ - "O\u0001\u0000\u0000\u0000\u0000Q\u0001\u0000\u0000\u0000\u0000S\u0001"+ - "\u0000\u0000\u0000\u0000U\u0001\u0000\u0000\u0000\u0000W\u0001\u0000\u0000"+ - "\u0000\u0000Y\u0001\u0000\u0000\u0000\u0000[\u0001\u0000\u0000\u0000\u0000"+ - "]\u0001\u0000\u0000\u0000\u0000_\u0001\u0000\u0000\u0000\u0000a\u0001"+ - "\u0000\u0000\u0000\u0000c\u0001\u0000\u0000\u0000\u0000e\u0001\u0000\u0000"+ - "\u0000\u0000g\u0001\u0000\u0000\u0000\u0000i\u0001\u0000\u0000\u0000\u0000"+ - "k\u0001\u0000\u0000\u0000\u0000m\u0001\u0000\u0000\u0000\u0000o\u0001"+ - "\u0000\u0000\u0000\u0000q\u0001\u0000\u0000\u0000\u0000s\u0001\u0000\u0000"+ - "\u0000\u0000u\u0001\u0000\u0000\u0000\u0000w\u0001\u0000\u0000\u0000\u0000"+ - "y\u0001\u0000\u0000\u0000\u0000{\u0001\u0000\u0000\u0000\u0000}\u0001"+ - "\u0000\u0000\u0000\u0000\u007f\u0001\u0000\u0000\u0000\u0000\u0081\u0001"+ - "\u0000\u0000\u0000\u0000\u0083\u0001\u0000\u0000\u0000\u0000\u0085\u0001"+ - "\u0000\u0000\u0000\u0000\u0087\u0001\u0000\u0000\u0000\u0000\u0089\u0001"+ - "\u0000\u0000\u0000\u0000\u008b\u0001\u0000\u0000\u0000\u0000\u008d\u0001"+ - "\u0000\u0000\u0000\u0000\u008f\u0001\u0000\u0000\u0000\u0000\u0091\u0001"+ - "\u0000\u0000\u0000\u0000\u0093\u0001\u0000\u0000\u0000\u0000\u0095\u0001"+ - "\u0000\u0000\u0000\u0000\u0097\u0001\u0000\u0000\u0000\u0000\u0099\u0001"+ - "\u0000\u0000\u0000\u0000\u009b\u0001\u0000\u0000\u0000\u0000\u009d\u0001"+ - "\u0000\u0000\u0000\u0000\u009f\u0001\u0000\u0000\u0000\u0000\u00a1\u0001"+ - "\u0000\u0000\u0000\u0000\u00a3\u0001\u0000\u0000\u0000\u0000\u00a5\u0001"+ - "\u0000\u0000\u0000\u0000\u00a7\u0001\u0000\u0000\u0000\u0000\u00a9\u0001"+ - "\u0000\u0000\u0000\u0000\u00ab\u0001\u0000\u0000\u0000\u0000\u00ad\u0001"+ - "\u0000\u0000\u0000\u0000\u00af\u0001\u0000\u0000\u0000\u0000\u00b1\u0001"+ - "\u0000\u0000\u0000\u0000\u00b3\u0001\u0000\u0000\u0000\u0000\u00b5\u0001"+ - "\u0000\u0000\u0000\u0000\u00b7\u0001\u0000\u0000\u0000\u0000\u00b9\u0001"+ - "\u0000\u0000\u0000\u0000\u00bb\u0001\u0000\u0000\u0000\u0000\u00bd\u0001"+ - "\u0000\u0000\u0000\u0000\u00bf\u0001\u0000\u0000\u0000\u0000\u00c1\u0001"+ - "\u0000\u0000\u0000\u0000\u00c3\u0001\u0000\u0000\u0000\u0000\u00c5\u0001"+ - "\u0000\u0000\u0000\u0000\u00c7\u0001\u0000\u0000\u0000\u0000\u00c9\u0001"+ - "\u0000\u0000\u0000\u0000\u00cb\u0001\u0000\u0000\u0000\u0000\u00cd\u0001"+ - "\u0000\u0000\u0000\u0000\u00cf\u0001\u0000\u0000\u0000\u0000\u00d1\u0001"+ - "\u0000\u0000\u0000\u0000\u00d3\u0001\u0000\u0000\u0000\u0000\u00d5\u0001"+ - "\u0000\u0000\u0000\u0000\u00d7\u0001\u0000\u0000\u0000\u0000\u00d9\u0001"+ - "\u0000\u0000\u0000\u0000\u00db\u0001\u0000\u0000\u0000\u0000\u00dd\u0001"+ - "\u0000\u0000\u0000\u0000\u00df\u0001\u0000\u0000\u0000\u0000\u00e1\u0001"+ - "\u0000\u0000\u0000\u0000\u00e3\u0001\u0000\u0000\u0000\u0000\u00e5\u0001"+ - "\u0000\u0000\u0000\u0000\u00e7\u0001\u0000\u0000\u0000\u0000\u00e9\u0001"+ - "\u0000\u0000\u0000\u0000\u00eb\u0001\u0000\u0000\u0000\u0000\u00ed\u0001"+ - "\u0000\u0000\u0000\u0000\u00ef\u0001\u0000\u0000\u0000\u0000\u00f1\u0001"+ - "\u0000\u0000\u0000\u0000\u00f3\u0001\u0000\u0000\u0000\u0000\u00f5\u0001"+ - "\u0000\u0000\u0000\u0000\u00f7\u0001\u0000\u0000\u0000\u0000\u00f9\u0001"+ - "\u0000\u0000\u0000\u0000\u00fb\u0001\u0000\u0000\u0000\u0000\u00fd\u0001"+ - "\u0000\u0000\u0000\u0000\u00ff\u0001\u0000\u0000\u0000\u0000\u0101\u0001"+ - "\u0000\u0000\u0000\u0000\u0103\u0001\u0000\u0000\u0000\u0000\u0105\u0001"+ - "\u0000\u0000\u0000\u0000\u0107\u0001\u0000\u0000\u0000\u0000\u0109\u0001"+ - "\u0000\u0000\u0000\u0000\u010b\u0001\u0000\u0000\u0000\u0000\u010d\u0001"+ - "\u0000\u0000\u0000\u0000\u010f\u0001\u0000\u0000\u0000\u0000\u0111\u0001"+ - "\u0000\u0000\u0000\u0000\u0113\u0001\u0000\u0000\u0000\u0000\u0115\u0001"+ - "\u0000\u0000\u0000\u0000\u0117\u0001\u0000\u0000\u0000\u0000\u0119\u0001"+ - "\u0000\u0000\u0000\u0000\u011b\u0001\u0000\u0000\u0000\u0000\u011d\u0001"+ - "\u0000\u0000\u0000\u0000\u011f\u0001\u0000\u0000\u0000\u0000\u0121\u0001"+ - "\u0000\u0000\u0000\u0000\u0123\u0001\u0000\u0000\u0000\u0000\u0125\u0001"+ - "\u0000\u0000\u0000\u0000\u0127\u0001\u0000\u0000\u0000\u0000\u0129\u0001"+ - "\u0000\u0000\u0000\u0000\u012b\u0001\u0000\u0000\u0000\u0000\u012d\u0001"+ - "\u0000\u0000\u0000\u0000\u012f\u0001\u0000\u0000\u0000\u0000\u0131\u0001"+ - "\u0000\u0000\u0000\u0000\u0133\u0001\u0000\u0000\u0000\u0000\u0135\u0001"+ - "\u0000\u0000\u0000\u0000\u0137\u0001\u0000\u0000\u0000\u0000\u0139\u0001"+ - "\u0000\u0000\u0000\u0000\u013b\u0001\u0000\u0000\u0000\u0000\u013d\u0001"+ - "\u0000\u0000\u0000\u0000\u013f\u0001\u0000\u0000\u0000\u0000\u0141\u0001"+ - "\u0000\u0000\u0000\u0000\u0143\u0001\u0000\u0000\u0000\u0000\u0145\u0001"+ - "\u0000\u0000\u0000\u0000\u0147\u0001\u0000\u0000\u0000\u0000\u0149\u0001"+ - "\u0000\u0000\u0000\u0000\u014b\u0001\u0000\u0000\u0000\u0000\u014d\u0001"+ - "\u0000\u0000\u0000\u0000\u014f\u0001\u0000\u0000\u0000\u0000\u0151\u0001"+ - "\u0000\u0000\u0000\u0000\u0153\u0001\u0000\u0000\u0000\u0000\u0155\u0001"+ - "\u0000\u0000\u0000\u0000\u0157\u0001\u0000\u0000\u0000\u0000\u0159\u0001"+ - "\u0000\u0000\u0000\u0000\u015b\u0001\u0000\u0000\u0000\u0000\u015d\u0001"+ - "\u0000\u0000\u0000\u0000\u015f\u0001\u0000\u0000\u0000\u0000\u0161\u0001"+ - "\u0000\u0000\u0000\u0000\u0163\u0001\u0000\u0000\u0000\u0000\u0165\u0001"+ - "\u0000\u0000\u0000\u0000\u0167\u0001\u0000\u0000\u0000\u0000\u0169\u0001"+ - "\u0000\u0000\u0000\u0000\u016b\u0001\u0000\u0000\u0000\u0000\u016d\u0001"+ - "\u0000\u0000\u0000\u0000\u016f\u0001\u0000\u0000\u0000\u0000\u0171\u0001"+ - "\u0000\u0000\u0000\u0000\u0173\u0001\u0000\u0000\u0000\u0000\u0175\u0001"+ - "\u0000\u0000\u0000\u0000\u0177\u0001\u0000\u0000\u0000\u0000\u0179\u0001"+ - "\u0000\u0000\u0000\u0000\u017b\u0001\u0000\u0000\u0000\u0000\u017d\u0001"+ - "\u0000\u0000\u0000\u0000\u017f\u0001\u0000\u0000\u0000\u0000\u0181\u0001"+ - "\u0000\u0000\u0000\u0000\u0183\u0001\u0000\u0000\u0000\u0000\u0185\u0001"+ - "\u0000\u0000\u0000\u0000\u0187\u0001\u0000\u0000\u0000\u0000\u0189\u0001"+ - "\u0000\u0000\u0000\u0000\u018b\u0001\u0000\u0000\u0000\u0000\u018d\u0001"+ - "\u0000\u0000\u0000\u0000\u018f\u0001\u0000\u0000\u0000\u0000\u0191\u0001"+ - "\u0000\u0000\u0000\u0000\u0193\u0001\u0000\u0000\u0000\u0000\u0195\u0001"+ - "\u0000\u0000\u0000\u0000\u0197\u0001\u0000\u0000\u0000\u0000\u0199\u0001"+ - "\u0000\u0000\u0000\u0000\u019b\u0001\u0000\u0000\u0000\u0000\u019d\u0001"+ - "\u0000\u0000\u0000\u0000\u019f\u0001\u0000\u0000\u0000\u0000\u01a1\u0001"+ - "\u0000\u0000\u0000\u0000\u01a3\u0001\u0000\u0000\u0000\u0000\u01a5\u0001"+ - "\u0000\u0000\u0000\u0000\u01a7\u0001\u0000\u0000\u0000\u0000\u01a9\u0001"+ - "\u0000\u0000\u0000\u0000\u01ab\u0001\u0000\u0000\u0000\u0000\u01ad\u0001"+ - "\u0000\u0000\u0000\u0000\u01af\u0001\u0000\u0000\u0000\u0000\u01b1\u0001"+ - "\u0000\u0000\u0000\u0000\u01b3\u0001\u0000\u0000\u0000\u0000\u01b5\u0001"+ - "\u0000\u0000\u0000\u0000\u01b7\u0001\u0000\u0000\u0000\u0000\u01b9\u0001"+ - "\u0000\u0000\u0000\u0000\u01bb\u0001\u0000\u0000\u0000\u0000\u01bd\u0001"+ - "\u0000\u0000\u0000\u0000\u01bf\u0001\u0000\u0000\u0000\u0000\u01c1\u0001"+ - "\u0000\u0000\u0000\u0000\u01c3\u0001\u0000\u0000\u0000\u0000\u01c5\u0001"+ - "\u0000\u0000\u0000\u0000\u01c7\u0001\u0000\u0000\u0000\u0000\u01c9\u0001"+ - "\u0000\u0000\u0000\u0000\u01cb\u0001\u0000\u0000\u0000\u0000\u01cd\u0001"+ - "\u0000\u0000\u0000\u0000\u01cf\u0001\u0000\u0000\u0000\u0000\u01d1\u0001"+ - "\u0000\u0000\u0000\u0000\u01d3\u0001\u0000\u0000\u0000\u0000\u01d5\u0001"+ - "\u0000\u0000\u0000\u0000\u01d7\u0001\u0000\u0000\u0000\u0000\u01d9\u0001"+ - "\u0000\u0000\u0000\u0000\u01db\u0001\u0000\u0000\u0000\u0000\u01dd\u0001"+ - "\u0000\u0000\u0000\u0000\u01df\u0001\u0000\u0000\u0000\u0000\u01e1\u0001"+ - "\u0000\u0000\u0000\u0000\u01e3\u0001\u0000\u0000\u0000\u0000\u01e5\u0001"+ - "\u0000\u0000\u0000\u0000\u01e7\u0001\u0000\u0000\u0000\u0000\u01e9\u0001"+ - "\u0000\u0000\u0000\u0000\u01eb\u0001\u0000\u0000\u0000\u0000\u01ed\u0001"+ - "\u0000\u0000\u0000\u0000\u01ef\u0001\u0000\u0000\u0000\u0000\u01f1\u0001"+ - "\u0000\u0000\u0000\u0000\u01f3\u0001\u0000\u0000\u0000\u0000\u01f5\u0001"+ - "\u0000\u0000\u0000\u0000\u01f7\u0001\u0000\u0000\u0000\u0000\u01f9\u0001"+ - "\u0000\u0000\u0000\u0000\u01fb\u0001\u0000\u0000\u0000\u0000\u01fd\u0001"+ - "\u0000\u0000\u0000\u0000\u01ff\u0001\u0000\u0000\u0000\u0000\u0201\u0001"+ - "\u0000\u0000\u0000\u0000\u0203\u0001\u0000\u0000\u0000\u0000\u0205\u0001"+ - "\u0000\u0000\u0000\u0000\u0207\u0001\u0000\u0000\u0000\u0000\u0209\u0001"+ - "\u0000\u0000\u0000\u0000\u020b\u0001\u0000\u0000\u0000\u0000\u020d\u0001"+ - "\u0000\u0000\u0000\u0000\u020f\u0001\u0000\u0000\u0000\u0000\u0211\u0001"+ - "\u0000\u0000\u0000\u0000\u0213\u0001\u0000\u0000\u0000\u0000\u0215\u0001"+ - "\u0000\u0000\u0000\u0000\u0217\u0001\u0000\u0000\u0000\u0000\u0219\u0001"+ - "\u0000\u0000\u0000\u0000\u021b\u0001\u0000\u0000\u0000\u0000\u021d\u0001"+ - "\u0000\u0000\u0000\u0000\u021f\u0001\u0000\u0000\u0000\u0000\u0221\u0001"+ - "\u0000\u0000\u0000\u0000\u0223\u0001\u0000\u0000\u0000\u0000\u0225\u0001"+ - "\u0000\u0000\u0000\u0000\u0227\u0001\u0000\u0000\u0000\u0000\u0229\u0001"+ - "\u0000\u0000\u0000\u0000\u022b\u0001\u0000\u0000\u0000\u0000\u022d\u0001"+ - "\u0000\u0000\u0000\u0000\u022f\u0001\u0000\u0000\u0000\u0000\u0231\u0001"+ - "\u0000\u0000\u0000\u0000\u0233\u0001\u0000\u0000\u0000\u0000\u0235\u0001"+ - "\u0000\u0000\u0000\u0000\u0237\u0001\u0000\u0000\u0000\u0000\u0239\u0001"+ - "\u0000\u0000\u0000\u0000\u023b\u0001\u0000\u0000\u0000\u0000\u023d\u0001"+ - "\u0000\u0000\u0000\u0000\u023f\u0001\u0000\u0000\u0000\u0000\u0241\u0001"+ - "\u0000\u0000\u0000\u0000\u0243\u0001\u0000\u0000\u0000\u0000\u0245\u0001"+ - "\u0000\u0000\u0000\u0000\u0247\u0001\u0000\u0000\u0000\u0000\u0249\u0001"+ - "\u0000\u0000\u0000\u0000\u024b\u0001\u0000\u0000\u0000\u0000\u024d\u0001"+ - "\u0000\u0000\u0000\u0000\u024f\u0001\u0000\u0000\u0000\u0000\u0251\u0001"+ - "\u0000\u0000\u0000\u0000\u0253\u0001\u0000\u0000\u0000\u0000\u0255\u0001"+ - "\u0000\u0000\u0000\u0000\u0257\u0001\u0000\u0000\u0000\u0000\u0259\u0001"+ - "\u0000\u0000\u0000\u0000\u025b\u0001\u0000\u0000\u0000\u0000\u025d\u0001"+ - "\u0000\u0000\u0000\u0000\u025f\u0001\u0000\u0000\u0000\u0000\u0261\u0001"+ - "\u0000\u0000\u0000\u0000\u0263\u0001\u0000\u0000\u0000\u0000\u0265\u0001"+ - "\u0000\u0000\u0000\u0000\u0267\u0001\u0000\u0000\u0000\u0000\u0269\u0001"+ - "\u0000\u0000\u0000\u0000\u026b\u0001\u0000\u0000\u0000\u0000\u026d\u0001"+ - "\u0000\u0000\u0000\u0000\u026f\u0001\u0000\u0000\u0000\u0000\u0271\u0001"+ - "\u0000\u0000\u0000\u0000\u0273\u0001\u0000\u0000\u0000\u0000\u0275\u0001"+ - "\u0000\u0000\u0000\u0000\u0277\u0001\u0000\u0000\u0000\u0000\u0279\u0001"+ - "\u0000\u0000\u0000\u0000\u027b\u0001\u0000\u0000\u0000\u0000\u027d\u0001"+ - "\u0000\u0000\u0000\u0000\u027f\u0001\u0000\u0000\u0000\u0000\u0281\u0001"+ - "\u0000\u0000\u0000\u0000\u0283\u0001\u0000\u0000\u0000\u0000\u0285\u0001"+ - "\u0000\u0000\u0000\u0000\u0287\u0001\u0000\u0000\u0000\u0000\u0289\u0001"+ - "\u0000\u0000\u0000\u0000\u028b\u0001\u0000\u0000\u0000\u0000\u028d\u0001"+ - "\u0000\u0000\u0000\u0000\u028f\u0001\u0000\u0000\u0000\u0000\u0291\u0001"+ - "\u0000\u0000\u0000\u0000\u0293\u0001\u0000\u0000\u0000\u0000\u0295\u0001"+ - "\u0000\u0000\u0000\u0000\u0297\u0001\u0000\u0000\u0000\u0000\u0299\u0001"+ - "\u0000\u0000\u0000\u0000\u029b\u0001\u0000\u0000\u0000\u0000\u029d\u0001"+ - "\u0000\u0000\u0000\u0000\u029f\u0001\u0000\u0000\u0000\u0000\u02a1\u0001"+ - "\u0000\u0000\u0000\u0000\u02a3\u0001\u0000\u0000\u0000\u0000\u02a5\u0001"+ - "\u0000\u0000\u0000\u0000\u02a7\u0001\u0000\u0000\u0000\u0000\u02a9\u0001"+ - "\u0000\u0000\u0000\u0000\u02ab\u0001\u0000\u0000\u0000\u0000\u02ad\u0001"+ - "\u0000\u0000\u0000\u0000\u02af\u0001\u0000\u0000\u0000\u0000\u02b1\u0001"+ - "\u0000\u0000\u0000\u0000\u02b3\u0001\u0000\u0000\u0000\u0000\u02b5\u0001"+ - "\u0000\u0000\u0000\u0000\u02b7\u0001\u0000\u0000\u0000\u0000\u02b9\u0001"+ - "\u0000\u0000\u0000\u0000\u02bb\u0001\u0000\u0000\u0000\u0000\u02bd\u0001"+ - "\u0000\u0000\u0000\u0000\u02bf\u0001\u0000\u0000\u0000\u0000\u02c1\u0001"+ - "\u0000\u0000\u0000\u0000\u02c3\u0001\u0000\u0000\u0000\u0000\u02c5\u0001"+ - "\u0000\u0000\u0000\u0000\u02c7\u0001\u0000\u0000\u0000\u0000\u02c9\u0001"+ - "\u0000\u0000\u0000\u0000\u02cb\u0001\u0000\u0000\u0000\u0000\u02cd\u0001"+ - "\u0000\u0000\u0000\u0000\u02cf\u0001\u0000\u0000\u0000\u0000\u02d1\u0001"+ - "\u0000\u0000\u0000\u0000\u02d3\u0001\u0000\u0000\u0000\u0000\u02d5\u0001"+ - "\u0000\u0000\u0000\u0000\u02d7\u0001\u0000\u0000\u0000\u0000\u02d9\u0001"+ - "\u0000\u0000\u0000\u0000\u02db\u0001\u0000\u0000\u0000\u0000\u02dd\u0001"+ - "\u0000\u0000\u0000\u0000\u02df\u0001\u0000\u0000\u0000\u0000\u02e1\u0001"+ - "\u0000\u0000\u0000\u0000\u02e3\u0001\u0000\u0000\u0000\u0000\u02e5\u0001"+ - "\u0000\u0000\u0000\u0000\u02e7\u0001\u0000\u0000\u0000\u0000\u02e9\u0001"+ - "\u0000\u0000\u0000\u0000\u02eb\u0001\u0000\u0000\u0000\u0000\u02ed\u0001"+ - "\u0000\u0000\u0000\u0000\u02ef\u0001\u0000\u0000\u0000\u0000\u02f1\u0001"+ - "\u0000\u0000\u0000\u0000\u02f3\u0001\u0000\u0000\u0000\u0000\u02f5\u0001"+ - "\u0000\u0000\u0000\u0000\u02f7\u0001\u0000\u0000\u0000\u0000\u02f9\u0001"+ - "\u0000\u0000\u0000\u0000\u02fb\u0001\u0000\u0000\u0000\u0000\u02fd\u0001"+ - "\u0000\u0000\u0000\u0000\u02ff\u0001\u0000\u0000\u0000\u0000\u0301\u0001"+ - "\u0000\u0000\u0000\u0000\u0303\u0001\u0000\u0000\u0000\u0000\u0305\u0001"+ - "\u0000\u0000\u0000\u0000\u0307\u0001\u0000\u0000\u0000\u0000\u0309\u0001"+ - "\u0000\u0000\u0000\u0000\u030b\u0001\u0000\u0000\u0000\u0000\u030d\u0001"+ - "\u0000\u0000\u0000\u0000\u030f\u0001\u0000\u0000\u0000\u0000\u0311\u0001"+ - "\u0000\u0000\u0000\u0000\u0313\u0001\u0000\u0000\u0000\u0000\u0315\u0001"+ - "\u0000\u0000\u0000\u0000\u0317\u0001\u0000\u0000\u0000\u0000\u0319\u0001"+ - "\u0000\u0000\u0000\u0000\u031b\u0001\u0000\u0000\u0000\u0000\u031d\u0001"+ - "\u0000\u0000\u0000\u0000\u031f\u0001\u0000\u0000\u0000\u0000\u0321\u0001"+ - "\u0000\u0000\u0000\u0000\u0323\u0001\u0000\u0000\u0000\u0000\u0325\u0001"+ - "\u0000\u0000\u0000\u0000\u0327\u0001\u0000\u0000\u0000\u0000\u0329\u0001"+ - "\u0000\u0000\u0000\u0000\u032b\u0001\u0000\u0000\u0000\u0000\u032d\u0001"+ - "\u0000\u0000\u0000\u0000\u032f\u0001\u0000\u0000\u0000\u0000\u0331\u0001"+ - "\u0000\u0000\u0000\u0000\u0333\u0001\u0000\u0000\u0000\u0000\u0335\u0001"+ - "\u0000\u0000\u0000\u0000\u0337\u0001\u0000\u0000\u0000\u0000\u0339\u0001"+ - "\u0000\u0000\u0000\u0000\u033b\u0001\u0000\u0000\u0000\u0000\u033d\u0001"+ - "\u0000\u0000\u0000\u0000\u033f\u0001\u0000\u0000\u0000\u0000\u0341\u0001"+ - "\u0000\u0000\u0000\u0000\u0343\u0001\u0000\u0000\u0000\u0000\u0345\u0001"+ - "\u0000\u0000\u0000\u0000\u0347\u0001\u0000\u0000\u0000\u0000\u0349\u0001"+ - "\u0000\u0000\u0000\u0000\u034b\u0001\u0000\u0000\u0000\u0000\u034d\u0001"+ - "\u0000\u0000\u0000\u0000\u034f\u0001\u0000\u0000\u0000\u0000\u0351\u0001"+ - "\u0000\u0000\u0000\u0000\u0353\u0001\u0000\u0000\u0000\u0000\u0355\u0001"+ - "\u0000\u0000\u0000\u0000\u0357\u0001\u0000\u0000\u0000\u0000\u0359\u0001"+ - "\u0000\u0000\u0000\u0000\u035b\u0001\u0000\u0000\u0000\u0000\u035d\u0001"+ - "\u0000\u0000\u0000\u0000\u035f\u0001\u0000\u0000\u0000\u0000\u0361\u0001"+ - "\u0000\u0000\u0000\u0000\u0363\u0001\u0000\u0000\u0000\u0000\u0365\u0001"+ - "\u0000\u0000\u0000\u0000\u0367\u0001\u0000\u0000\u0000\u0000\u0369\u0001"+ - "\u0000\u0000\u0000\u0000\u036b\u0001\u0000\u0000\u0000\u0000\u036d\u0001"+ - "\u0000\u0000\u0000\u0000\u036f\u0001\u0000\u0000\u0000\u0000\u0371\u0001"+ - "\u0000\u0000\u0000\u0000\u0373\u0001\u0000\u0000\u0000\u0000\u0375\u0001"+ - "\u0000\u0000\u0000\u0000\u0377\u0001\u0000\u0000\u0000\u0000\u0379\u0001"+ - "\u0000\u0000\u0000\u0000\u037b\u0001\u0000\u0000\u0000\u0000\u037d\u0001"+ - "\u0000\u0000\u0000\u0000\u037f\u0001\u0000\u0000\u0000\u0000\u0381\u0001"+ - "\u0000\u0000\u0000\u0000\u0383\u0001\u0000\u0000\u0000\u0000\u0385\u0001"+ - "\u0000\u0000\u0000\u0000\u0387\u0001\u0000\u0000\u0000\u0000\u0389\u0001"+ - "\u0000\u0000\u0000\u0000\u038b\u0001\u0000\u0000\u0000\u0000\u038d\u0001"+ - "\u0000\u0000\u0000\u0000\u038f\u0001\u0000\u0000\u0000\u0000\u0391\u0001"+ - "\u0000\u0000\u0000\u0000\u0393\u0001\u0000\u0000\u0000\u0000\u0395\u0001"+ - "\u0000\u0000\u0000\u0000\u0397\u0001\u0000\u0000\u0000\u0000\u0399\u0001"+ - "\u0000\u0000\u0000\u0000\u039b\u0001\u0000\u0000\u0000\u0000\u039d\u0001"+ - "\u0000\u0000\u0000\u0000\u039f\u0001\u0000\u0000\u0000\u0000\u03a1\u0001"+ - "\u0000\u0000\u0000\u0000\u03a3\u0001\u0000\u0000\u0000\u0000\u03a5\u0001"+ - "\u0000\u0000\u0000\u0000\u03a7\u0001\u0000\u0000\u0000\u0000\u03a9\u0001"+ - "\u0000\u0000\u0000\u0000\u03ab\u0001\u0000\u0000\u0000\u0000\u03ad\u0001"+ - "\u0000\u0000\u0000\u0000\u03af\u0001\u0000\u0000\u0000\u0000\u03b1\u0001"+ - "\u0000\u0000\u0000\u0000\u03b3\u0001\u0000\u0000\u0000\u0000\u03b5\u0001"+ - "\u0000\u0000\u0000\u0000\u03b7\u0001\u0000\u0000\u0000\u0000\u03b9\u0001"+ - "\u0000\u0000\u0000\u0000\u03bb\u0001\u0000\u0000\u0000\u0000\u03bd\u0001"+ - "\u0000\u0000\u0000\u0000\u03bf\u0001\u0000\u0000\u0000\u0000\u03c1\u0001"+ - "\u0000\u0000\u0000\u0000\u03c3\u0001\u0000\u0000\u0000\u0000\u03c5\u0001"+ - "\u0000\u0000\u0000\u0000\u03c7\u0001\u0000\u0000\u0000\u0000\u03c9\u0001"+ - "\u0000\u0000\u0000\u0000\u03cb\u0001\u0000\u0000\u0000\u0000\u03cd\u0001"+ - "\u0000\u0000\u0000\u0000\u03cf\u0001\u0000\u0000\u0000\u0000\u03d1\u0001"+ - "\u0000\u0000\u0000\u0000\u03d3\u0001\u0000\u0000\u0000\u0000\u03d5\u0001"+ - "\u0000\u0000\u0000\u0000\u03d7\u0001\u0000\u0000\u0000\u0000\u03d9\u0001"+ - "\u0000\u0000\u0000\u0000\u03db\u0001\u0000\u0000\u0000\u0000\u03dd\u0001"+ - "\u0000\u0000\u0000\u0000\u03df\u0001\u0000\u0000\u0000\u0000\u03e1\u0001"+ - "\u0000\u0000\u0000\u0000\u03e3\u0001\u0000\u0000\u0000\u0000\u03e5\u0001"+ - "\u0000\u0000\u0000\u0000\u03e7\u0001\u0000\u0000\u0000\u0000\u03e9\u0001"+ - "\u0000\u0000\u0000\u0000\u03eb\u0001\u0000\u0000\u0000\u0000\u03ed\u0001"+ - "\u0000\u0000\u0000\u0000\u03ef\u0001\u0000\u0000\u0000\u0000\u03f1\u0001"+ - "\u0000\u0000\u0000\u0000\u03f3\u0001\u0000\u0000\u0000\u0000\u03f5\u0001"+ - "\u0000\u0000\u0000\u0000\u03f7\u0001\u0000\u0000\u0000\u0000\u03f9\u0001"+ - "\u0000\u0000\u0000\u0000\u03fb\u0001\u0000\u0000\u0000\u0000\u03fd\u0001"+ - "\u0000\u0000\u0000\u0000\u03ff\u0001\u0000\u0000\u0000\u0000\u0401\u0001"+ - "\u0000\u0000\u0000\u0000\u0403\u0001\u0000\u0000\u0000\u0000\u0405\u0001"+ - "\u0000\u0000\u0000\u0000\u0407\u0001\u0000\u0000\u0000\u0000\u0409\u0001"+ - "\u0000\u0000\u0000\u0000\u040b\u0001\u0000\u0000\u0000\u0000\u040d\u0001"+ - "\u0000\u0000\u0000\u0000\u040f\u0001\u0000\u0000\u0000\u0000\u0411\u0001"+ - "\u0000\u0000\u0000\u0000\u0413\u0001\u0000\u0000\u0000\u0000\u0415\u0001"+ - "\u0000\u0000\u0000\u0000\u0417\u0001\u0000\u0000\u0000\u0000\u0419\u0001"+ - "\u0000\u0000\u0000\u0000\u041b\u0001\u0000\u0000\u0000\u0000\u041d\u0001"+ - "\u0000\u0000\u0000\u0000\u041f\u0001\u0000\u0000\u0000\u0000\u0421\u0001"+ - "\u0000\u0000\u0000\u0000\u0423\u0001\u0000\u0000\u0000\u0000\u0425\u0001"+ - "\u0000\u0000\u0000\u0000\u0427\u0001\u0000\u0000\u0000\u0000\u0429\u0001"+ - "\u0000\u0000\u0000\u0000\u042b\u0001\u0000\u0000\u0000\u0000\u042d\u0001"+ - "\u0000\u0000\u0000\u0000\u042f\u0001\u0000\u0000\u0000\u0000\u0431\u0001"+ - "\u0000\u0000\u0000\u0000\u0433\u0001\u0000\u0000\u0000\u0000\u0435\u0001"+ - "\u0000\u0000\u0000\u0000\u0437\u0001\u0000\u0000\u0000\u0000\u0439\u0001"+ - "\u0000\u0000\u0000\u0000\u043b\u0001\u0000\u0000\u0000\u0000\u043d\u0001"+ - "\u0000\u0000\u0000\u0000\u043f\u0001\u0000\u0000\u0000\u0000\u0441\u0001"+ - "\u0000\u0000\u0000\u0000\u0443\u0001\u0000\u0000\u0000\u0000\u0445\u0001"+ - "\u0000\u0000\u0000\u0000\u0447\u0001\u0000\u0000\u0000\u0000\u0449\u0001"+ - "\u0000\u0000\u0000\u0000\u044b\u0001\u0000\u0000\u0000\u0000\u044d\u0001"+ - "\u0000\u0000\u0000\u0000\u044f\u0001\u0000\u0000\u0000\u0000\u0451\u0001"+ - "\u0000\u0000\u0000\u0000\u0453\u0001\u0000\u0000\u0000\u0000\u0455\u0001"+ - "\u0000\u0000\u0000\u0000\u0457\u0001\u0000\u0000\u0000\u0000\u0459\u0001"+ - "\u0000\u0000\u0000\u0000\u045b\u0001\u0000\u0000\u0000\u0000\u045d\u0001"+ - "\u0000\u0000\u0000\u0000\u045f\u0001\u0000\u0000\u0000\u0000\u0461\u0001"+ - "\u0000\u0000\u0000\u0000\u0463\u0001\u0000\u0000\u0000\u0000\u0465\u0001"+ - "\u0000\u0000\u0000\u0000\u0467\u0001\u0000\u0000\u0000\u0000\u0469\u0001"+ - "\u0000\u0000\u0000\u0000\u046b\u0001\u0000\u0000\u0000\u0000\u046d\u0001"+ - "\u0000\u0000\u0000\u0000\u046f\u0001\u0000\u0000\u0000\u0000\u0471\u0001"+ - "\u0000\u0000\u0000\u0000\u0473\u0001\u0000\u0000\u0000\u0000\u0475\u0001"+ - "\u0000\u0000\u0000\u0000\u0477\u0001\u0000\u0000\u0000\u0000\u0479\u0001"+ - "\u0000\u0000\u0000\u0000\u047b\u0001\u0000\u0000\u0000\u0000\u047d\u0001"+ - "\u0000\u0000\u0000\u0000\u047f\u0001\u0000\u0000\u0000\u0000\u0481\u0001"+ - "\u0000\u0000\u0000\u0000\u0483\u0001\u0000\u0000\u0000\u0000\u0485\u0001"+ - "\u0000\u0000\u0000\u0000\u0487\u0001\u0000\u0000\u0000\u0000\u0489\u0001"+ - "\u0000\u0000\u0000\u0000\u048b\u0001\u0000\u0000\u0000\u0000\u048d\u0001"+ - "\u0000\u0000\u0000\u0000\u048f\u0001\u0000\u0000\u0000\u0000\u0491\u0001"+ - "\u0000\u0000\u0000\u0000\u0493\u0001\u0000\u0000\u0000\u0000\u0495\u0001"+ - "\u0000\u0000\u0000\u0000\u0497\u0001\u0000\u0000\u0000\u0000\u0499\u0001"+ - "\u0000\u0000\u0000\u0000\u049b\u0001\u0000\u0000\u0000\u0000\u049d\u0001"+ - "\u0000\u0000\u0000\u0000\u049f\u0001\u0000\u0000\u0000\u0000\u04a1\u0001"+ - "\u0000\u0000\u0000\u0000\u04a3\u0001\u0000\u0000\u0000\u0000\u04a5\u0001"+ - "\u0000\u0000\u0000\u0000\u04a7\u0001\u0000\u0000\u0000\u0000\u04a9\u0001"+ - "\u0000\u0000\u0000\u0000\u04ab\u0001\u0000\u0000\u0000\u0000\u04ad\u0001"+ - "\u0000\u0000\u0000\u0000\u04af\u0001\u0000\u0000\u0000\u0000\u04b1\u0001"+ - "\u0000\u0000\u0000\u0000\u04b3\u0001\u0000\u0000\u0000\u0000\u04b5\u0001"+ - "\u0000\u0000\u0000\u0000\u04b7\u0001\u0000\u0000\u0000\u0000\u04b9\u0001"+ - "\u0000\u0000\u0000\u0000\u04bb\u0001\u0000\u0000\u0000\u0000\u04bd\u0001"+ - "\u0000\u0000\u0000\u0000\u04bf\u0001\u0000\u0000\u0000\u0000\u04c1\u0001"+ - "\u0000\u0000\u0000\u0000\u04c3\u0001\u0000\u0000\u0000\u0000\u04c5\u0001"+ - "\u0000\u0000\u0000\u0000\u04c7\u0001\u0000\u0000\u0000\u0000\u04c9\u0001"+ - "\u0000\u0000\u0000\u0000\u04cb\u0001\u0000\u0000\u0000\u0000\u04cd\u0001"+ - "\u0000\u0000\u0000\u0000\u04cf\u0001\u0000\u0000\u0000\u0000\u04d1\u0001"+ - "\u0000\u0000\u0000\u0000\u04d3\u0001\u0000\u0000\u0000\u0000\u04d5\u0001"+ - "\u0000\u0000\u0000\u0000\u04d7\u0001\u0000\u0000\u0000\u0000\u04d9\u0001"+ - "\u0000\u0000\u0000\u0000\u04db\u0001\u0000\u0000\u0000\u0000\u04dd\u0001"+ - "\u0000\u0000\u0000\u0000\u04df\u0001\u0000\u0000\u0000\u0000\u04e1\u0001"+ - "\u0000\u0000\u0000\u0000\u04e3\u0001\u0000\u0000\u0000\u0000\u04e5\u0001"+ - "\u0000\u0000\u0000\u0000\u04e7\u0001\u0000\u0000\u0000\u0000\u04e9\u0001"+ - "\u0000\u0000\u0000\u0000\u04eb\u0001\u0000\u0000\u0000\u0000\u04ed\u0001"+ - "\u0000\u0000\u0000\u0000\u04ef\u0001\u0000\u0000\u0000\u0000\u04f1\u0001"+ - "\u0000\u0000\u0000\u0000\u04f3\u0001\u0000\u0000\u0000\u0000\u04f5\u0001"+ - "\u0000\u0000\u0000\u0000\u04f7\u0001\u0000\u0000\u0000\u0000\u04f9\u0001"+ - "\u0000\u0000\u0000\u0000\u04fb\u0001\u0000\u0000\u0000\u0000\u04fd\u0001"+ - "\u0000\u0000\u0000\u0000\u04ff\u0001\u0000\u0000\u0000\u0000\u0501\u0001"+ - "\u0000\u0000\u0000\u0000\u0503\u0001\u0000\u0000\u0000\u0000\u0505\u0001"+ - "\u0000\u0000\u0000\u0000\u0507\u0001\u0000\u0000\u0000\u0000\u050f\u0001"+ - "\u0000\u0000\u0000\u0000\u0511\u0001\u0000\u0000\u0000\u0000\u0513\u0001"+ - "\u0000\u0000\u0000\u0000\u0515\u0001\u0000\u0000\u0000\u0000\u0517\u0001"+ - "\u0000\u0000\u0000\u0000\u0519\u0001\u0000\u0000\u0000\u0000\u051b\u0001"+ - "\u0000\u0000\u0000\u0000\u051d\u0001\u0000\u0000\u0000\u0000\u051f\u0001"+ - "\u0000\u0000\u0000\u0000\u0521\u0001\u0000\u0000\u0000\u0000\u0523\u0001"+ - "\u0000\u0000\u0000\u0000\u0525\u0001\u0000\u0000\u0000\u0000\u0527\u0001"+ - "\u0000\u0000\u0000\u0000\u0529\u0001\u0000\u0000\u0000\u0000\u052d\u0001"+ - "\u0000\u0000\u0000\u0000\u052f\u0001\u0000\u0000\u0000\u0000\u0531\u0001"+ - "\u0000\u0000\u0000\u0000\u0533\u0001\u0000\u0000\u0000\u0000\u0535\u0001"+ - "\u0000\u0000\u0000\u0000\u0537\u0001\u0000\u0000\u0000\u0000\u0539\u0001"+ - "\u0000\u0000\u0000\u0000\u053b\u0001\u0000\u0000\u0000\u0000\u053d\u0001"+ - "\u0000\u0000\u0000\u0000\u053f\u0001\u0000\u0000\u0000\u0000\u0541\u0001"+ - "\u0000\u0000\u0000\u0000\u0545\u0001\u0000\u0000\u0000\u0000\u0547\u0001"+ - "\u0000\u0000\u0000\u0000\u0549\u0001\u0000\u0000\u0000\u0000\u054b\u0001"+ - "\u0000\u0000\u0000\u0000\u054d\u0001\u0000\u0000\u0000\u0000\u054f\u0001"+ - "\u0000\u0000\u0000\u0000\u0551\u0001\u0000\u0000\u0000\u0000\u0553\u0001"+ - "\u0000\u0000\u0000\u0000\u0555\u0001\u0000\u0000\u0000\u0000\u0557\u0001"+ - "\u0000\u0000\u0000\u0001\u0559\u0001\u0000\u0000\u0000\u0001\u055b\u0001"+ - "\u0000\u0000\u0000\u0001\u055f\u0001\u0000\u0000\u0000\u0001\u0561\u0001"+ - "\u0000\u0000\u0000\u0002\u0565\u0001\u0000\u0000\u0000\u0002\u0567\u0001"+ - "\u0000\u0000\u0000\u0002\u0569\u0001\u0000\u0000\u0000\u0003\u056b\u0001"+ - "\u0000\u0000\u0000\u0003\u056d\u0001\u0000\u0000\u0000\u0003\u056f\u0001"+ - "\u0000\u0000\u0000\u0003\u0571\u0001\u0000\u0000\u0000\u0004\u0573\u0001"+ - "\u0000\u0000\u0000\u0004\u0575\u0001\u0000\u0000\u0000\u0005\u0577\u0001"+ - "\u0000\u0000\u0000\u0007\u0579\u0001\u0000\u0000\u0000\t\u057b\u0001\u0000"+ - "\u0000\u0000\u000b\u057d\u0001\u0000\u0000\u0000\r\u057f\u0001\u0000\u0000"+ - "\u0000\u000f\u0581\u0001\u0000\u0000\u0000\u0011\u0583\u0001\u0000\u0000"+ - "\u0000\u0013\u0585\u0001\u0000\u0000\u0000\u0015\u0587\u0001\u0000\u0000"+ - "\u0000\u0017\u0589\u0001\u0000\u0000\u0000\u0019\u058b\u0001\u0000\u0000"+ - "\u0000\u001b\u058d\u0001\u0000\u0000\u0000\u001d\u058f\u0001\u0000\u0000"+ - "\u0000\u001f\u0591\u0001\u0000\u0000\u0000!\u0593\u0001\u0000\u0000\u0000"+ - "#\u0595\u0001\u0000\u0000\u0000%\u0597\u0001\u0000\u0000\u0000\'\u0599"+ - "\u0001\u0000\u0000\u0000)\u059c\u0001\u0000\u0000\u0000+\u059f\u0001\u0000"+ - "\u0000\u0000-\u05a2\u0001\u0000\u0000\u0000/\u05a5\u0001\u0000\u0000\u0000"+ - "1\u05a8\u0001\u0000\u0000\u00003\u05ab\u0001\u0000\u0000\u00005\u05ae"+ - "\u0001\u0000\u0000\u00007\u05b1\u0001\u0000\u0000\u00009\u05b4\u0001\u0000"+ - "\u0000\u0000;\u05b6\u0001\u0000\u0000\u0000=\u05d0\u0001\u0000\u0000\u0000"+ - "?\u05db\u0001\u0000\u0000\u0000A\u05eb\u0001\u0000\u0000\u0000C\u05ed"+ - "\u0001\u0000\u0000\u0000E\u05ef\u0001\u0000\u0000\u0000G\u05f1\u0001\u0000"+ - "\u0000\u0000I\u05f5\u0001\u0000\u0000\u0000K\u05fd\u0001\u0000\u0000\u0000"+ - "M\u0605\u0001\u0000\u0000\u0000O\u0609\u0001\u0000\u0000\u0000Q\u060d"+ - "\u0001\u0000\u0000\u0000S\u0613\u0001\u0000\u0000\u0000U\u0616\u0001\u0000"+ - "\u0000\u0000W\u061a\u0001\u0000\u0000\u0000Y\u0625\u0001\u0000\u0000\u0000"+ - "[\u062a\u0001\u0000\u0000\u0000]\u062f\u0001\u0000\u0000\u0000_\u0634"+ - "\u0001\u0000\u0000\u0000a\u063a\u0001\u0000\u0000\u0000c\u0642\u0001\u0000"+ - "\u0000\u0000e\u0649\u0001\u0000\u0000\u0000g\u0654\u0001\u0000\u0000\u0000"+ - "i\u065b\u0001\u0000\u0000\u0000k\u066b\u0001\u0000\u0000\u0000m\u0678"+ - "\u0001\u0000\u0000\u0000o\u0685\u0001\u0000\u0000\u0000q\u0692\u0001\u0000"+ - "\u0000\u0000s\u06a4\u0001\u0000\u0000\u0000u\u06b1\u0001\u0000\u0000\u0000"+ - "w\u06b9\u0001\u0000\u0000\u0000y\u06c4\u0001\u0000\u0000\u0000{\u06c9"+ - "\u0001\u0000\u0000\u0000}\u06d2\u0001\u0000\u0000\u0000\u007f\u06d5\u0001"+ - "\u0000\u0000\u0000\u0081\u06da\u0001\u0000\u0000\u0000\u0083\u06e1\u0001"+ - "\u0000\u0000\u0000\u0085\u06e7\u0001\u0000\u0000\u0000\u0087\u06ed\u0001"+ - "\u0000\u0000\u0000\u0089\u06f1\u0001\u0000\u0000\u0000\u008b\u06f9\u0001"+ - "\u0000\u0000\u0000\u008d\u06fe\u0001\u0000\u0000\u0000\u008f\u0704\u0001"+ - "\u0000\u0000\u0000\u0091\u070a\u0001\u0000\u0000\u0000\u0093\u0711\u0001"+ - "\u0000\u0000\u0000\u0095\u0714\u0001\u0000\u0000\u0000\u0097\u071e\u0001"+ - "\u0000\u0000\u0000\u0099\u0728\u0001\u0000\u0000\u0000\u009b\u072d\u0001"+ - "\u0000\u0000\u0000\u009d\u0735\u0001\u0000\u0000\u0000\u009f\u073d\u0001"+ - "\u0000\u0000\u0000\u00a1\u0743\u0001\u0000\u0000\u0000\u00a3\u074d\u0001"+ - "\u0000\u0000\u0000\u00a5\u075c\u0001\u0000\u0000\u0000\u00a7\u0760\u0001"+ - "\u0000\u0000\u0000\u00a9\u0765\u0001\u0000\u0000\u0000\u00ab\u076c\u0001"+ - "\u0000\u0000\u0000\u00ad\u076f\u0001\u0000\u0000\u0000\u00af\u0774\u0001"+ - "\u0000\u0000\u0000\u00b1\u0777\u0001\u0000\u0000\u0000\u00b3\u077d\u0001"+ - "\u0000\u0000\u0000\u00b5\u0785\u0001\u0000\u0000\u0000\u00b7\u078d\u0001"+ - "\u0000\u0000\u0000\u00b9\u0798\u0001\u0000\u0000\u0000\u00bb\u07a2\u0001"+ - "\u0000\u0000\u0000\u00bd\u07a9\u0001\u0000\u0000\u0000\u00bf\u07b6\u0001"+ - "\u0000\u0000\u0000\u00c1\u07bb\u0001\u0000\u0000\u0000\u00c3\u07c5\u0001"+ - "\u0000\u0000\u0000\u00c5\u07cb\u0001\u0000\u0000\u0000\u00c7\u07d0\u0001"+ - "\u0000\u0000\u0000\u00c9\u07d3\u0001\u0000\u0000\u0000\u00cb\u07d9\u0001"+ - "\u0000\u0000\u0000\u00cd\u07e0\u0001\u0000\u0000\u0000\u00cf\u07e9\u0001"+ - "\u0000\u0000\u0000\u00d1\u07ee\u0001\u0000\u0000\u0000\u00d3\u07f4\u0001"+ - "\u0000\u0000\u0000\u00d5\u07fb\u0001\u0000\u0000\u0000\u00d7\u0800\u0001"+ - "\u0000\u0000\u0000\u00d9\u0806\u0001\u0000\u0000\u0000\u00db\u080f\u0001"+ - "\u0000\u0000\u0000\u00dd\u0814\u0001\u0000\u0000\u0000\u00df\u081a\u0001"+ - "\u0000\u0000\u0000\u00e1\u0821\u0001\u0000\u0000\u0000\u00e3\u0826\u0001"+ - "\u0000\u0000\u0000\u00e5\u0834\u0001\u0000\u0000\u0000\u00e7\u083b\u0001"+ - "\u0000\u0000\u0000\u00e9\u0845\u0001\u0000\u0000\u0000\u00eb\u0852\u0001"+ - "\u0000\u0000\u0000\u00ed\u0858\u0001\u0000\u0000\u0000\u00ef\u0867\u0001"+ - "\u0000\u0000\u0000\u00f1\u086e\u0001\u0000\u0000\u0000\u00f3\u0873\u0001"+ - "\u0000\u0000\u0000\u00f5\u0879\u0001\u0000\u0000\u0000\u00f7\u087f\u0001"+ - "\u0000\u0000\u0000\u00f9\u0882\u0001\u0000\u0000\u0000\u00fb\u0889\u0001"+ - "\u0000\u0000\u0000\u00fd\u088e\u0001\u0000\u0000\u0000\u00ff\u0893\u0001"+ - "\u0000\u0000\u0000\u0101\u0898\u0001\u0000\u0000\u0000\u0103\u08a0\u0001"+ - "\u0000\u0000\u0000\u0105\u08a8\u0001\u0000\u0000\u0000\u0107\u08ae\u0001"+ - "\u0000\u0000\u0000\u0109\u08b3\u0001\u0000\u0000\u0000\u010b\u08bc\u0001"+ - "\u0000\u0000\u0000\u010d\u08c2\u0001\u0000\u0000\u0000\u010f\u08ca\u0001"+ - "\u0000\u0000\u0000\u0111\u08d2\u0001\u0000\u0000\u0000\u0113\u08d8\u0001"+ - "\u0000\u0000\u0000\u0115\u08e1\u0001\u0000\u0000\u0000\u0117\u08e8\u0001"+ - "\u0000\u0000\u0000\u0119\u08ef\u0001\u0000\u0000\u0000\u011b\u08f3\u0001"+ - "\u0000\u0000\u0000\u011d\u08f9\u0001\u0000\u0000\u0000\u011f\u08ff\u0001"+ - "\u0000\u0000\u0000\u0121\u0909\u0001\u0000\u0000\u0000\u0123\u090e\u0001"+ - "\u0000\u0000\u0000\u0125\u0914\u0001\u0000\u0000\u0000\u0127\u091b\u0001"+ - "\u0000\u0000\u0000\u0129\u0925\u0001\u0000\u0000\u0000\u012b\u0930\u0001"+ - "\u0000\u0000\u0000\u012d\u0933\u0001\u0000\u0000\u0000\u012f\u093d\u0001"+ - "\u0000\u0000\u0000\u0131\u0946\u0001\u0000\u0000\u0000\u0133\u094d\u0001"+ - "\u0000\u0000\u0000\u0135\u0953\u0001\u0000\u0000\u0000\u0137\u0956\u0001"+ - "\u0000\u0000\u0000\u0139\u095c\u0001\u0000\u0000\u0000\u013b\u0963\u0001"+ - "\u0000\u0000\u0000\u013d\u096b\u0001\u0000\u0000\u0000\u013f\u0974\u0001"+ - "\u0000\u0000\u0000\u0141\u097c\u0001\u0000\u0000\u0000\u0143\u0982\u0001"+ - "\u0000\u0000\u0000\u0145\u0992\u0001\u0000\u0000\u0000\u0147\u099d\u0001"+ - "\u0000\u0000\u0000\u0149\u09a3\u0001\u0000\u0000\u0000\u014b\u09a9\u0001"+ - "\u0000\u0000\u0000\u014d\u09b1\u0001\u0000\u0000\u0000\u014f\u09b9\u0001"+ - "\u0000\u0000\u0000\u0151\u09c2\u0001\u0000\u0000\u0000\u0153\u09c9\u0001"+ - "\u0000\u0000\u0000\u0155\u09d3\u0001\u0000\u0000\u0000\u0157\u09e1\u0001"+ - "\u0000\u0000\u0000\u0159\u09ec\u0001\u0000\u0000\u0000\u015b\u09f8\u0001"+ - "\u0000\u0000\u0000\u015d\u0a00\u0001\u0000\u0000\u0000\u015f\u0a09\u0001"+ - "\u0000\u0000\u0000\u0161\u0a14\u0001\u0000\u0000\u0000\u0163\u0a19\u0001"+ - "\u0000\u0000\u0000\u0165\u0a1e\u0001\u0000\u0000\u0000\u0167\u0a22\u0001"+ - "\u0000\u0000\u0000\u0169\u0a29\u0001\u0000\u0000\u0000\u016b\u0a2f\u0001"+ - "\u0000\u0000\u0000\u016d\u0a34\u0001\u0000\u0000\u0000\u016f\u0a3d\u0001"+ - "\u0000\u0000\u0000\u0171\u0a41\u0001\u0000\u0000\u0000\u0173\u0a4c\u0001"+ - "\u0000\u0000\u0000\u0175\u0a54\u0001\u0000\u0000\u0000\u0177\u0a5d\u0001"+ - "\u0000\u0000\u0000\u0179\u0a66\u0001\u0000\u0000\u0000\u017b\u0a6e\u0001"+ - "\u0000\u0000\u0000\u017d\u0a75\u0001\u0000\u0000\u0000\u017f\u0a7f\u0001"+ - "\u0000\u0000\u0000\u0181\u0a8a\u0001\u0000\u0000\u0000\u0183\u0a95\u0001"+ - "\u0000\u0000\u0000\u0185\u0a9d\u0001\u0000\u0000\u0000\u0187\u0aa5\u0001"+ - "\u0000\u0000\u0000\u0189\u0aae\u0001\u0000\u0000\u0000\u018b\u0ab5\u0001"+ - "\u0000\u0000\u0000\u018d\u0abc\u0001\u0000\u0000\u0000\u018f\u0ac1\u0001"+ - "\u0000\u0000\u0000\u0191\u0ac6\u0001\u0000\u0000\u0000\u0193\u0acd\u0001"+ - "\u0000\u0000\u0000\u0195\u0ad6\u0001\u0000\u0000\u0000\u0197\u0ae0\u0001"+ - "\u0000\u0000\u0000\u0199\u0ae5\u0001\u0000\u0000\u0000\u019b\u0aec\u0001"+ - "\u0000\u0000\u0000\u019d\u0af2\u0001\u0000\u0000\u0000\u019f\u0afa\u0001"+ - "\u0000\u0000\u0000\u01a1\u0b04\u0001\u0000\u0000\u0000\u01a3\u0b0e\u0001"+ - "\u0000\u0000\u0000\u01a5\u0b16\u0001\u0000\u0000\u0000\u01a7\u0b1e\u0001"+ - "\u0000\u0000\u0000\u01a9\u0b28\u0001\u0000\u0000\u0000\u01ab\u0b31\u0001"+ - "\u0000\u0000\u0000\u01ad\u0b38\u0001\u0000\u0000\u0000\u01af\u0b3e\u0001"+ - "\u0000\u0000\u0000\u01b1\u0b48\u0001\u0000\u0000\u0000\u01b3\u0b4e\u0001"+ - "\u0000\u0000\u0000\u01b5\u0b56\u0001\u0000\u0000\u0000\u01b7\u0b5f\u0001"+ - "\u0000\u0000\u0000\u01b9\u0b69\u0001\u0000\u0000\u0000\u01bb\u0b70\u0001"+ - "\u0000\u0000\u0000\u01bd\u0b78\u0001\u0000\u0000\u0000\u01bf\u0b80\u0001"+ - "\u0000\u0000\u0000\u01c1\u0b87\u0001\u0000\u0000\u0000\u01c3\u0b8c\u0001"+ - "\u0000\u0000\u0000\u01c5\u0b91\u0001\u0000\u0000\u0000\u01c7\u0b9a\u0001"+ - "\u0000\u0000\u0000\u01c9\u0b9d\u0001\u0000\u0000\u0000\u01cb\u0ba7\u0001"+ - "\u0000\u0000\u0000\u01cd\u0bb1\u0001\u0000\u0000\u0000\u01cf\u0bba\u0001"+ - "\u0000\u0000\u0000\u01d1\u0bc4\u0001\u0000\u0000\u0000\u01d3\u0bce\u0001"+ - "\u0000\u0000\u0000\u01d5\u0bd4\u0001\u0000\u0000\u0000\u01d7\u0bdc\u0001"+ - "\u0000\u0000\u0000\u01d9\u0be4\u0001\u0000\u0000\u0000\u01db\u0bed\u0001"+ - "\u0000\u0000\u0000\u01dd\u0bf4\u0001\u0000\u0000\u0000\u01df\u0c00\u0001"+ - "\u0000\u0000\u0000\u01e1\u0c07\u0001\u0000\u0000\u0000\u01e3\u0c0f\u0001"+ - "\u0000\u0000\u0000\u01e5\u0c17\u0001\u0000\u0000\u0000\u01e7\u0c21\u0001"+ - "\u0000\u0000\u0000\u01e9\u0c25\u0001\u0000\u0000\u0000\u01eb\u0c2b\u0001"+ - "\u0000\u0000\u0000\u01ed\u0c34\u0001\u0000\u0000\u0000\u01ef\u0c3a\u0001"+ - "\u0000\u0000\u0000\u01f1\u0c3f\u0001\u0000\u0000\u0000\u01f3\u0c49\u0001"+ - "\u0000\u0000\u0000\u01f5\u0c4f\u0001\u0000\u0000\u0000\u01f7\u0c56\u0001"+ - "\u0000\u0000\u0000\u01f9\u0c5b\u0001\u0000\u0000\u0000\u01fb\u0c61\u0001"+ - "\u0000\u0000\u0000\u01fd\u0c6a\u0001\u0000\u0000\u0000\u01ff\u0c6f\u0001"+ - "\u0000\u0000\u0000\u0201\u0c77\u0001\u0000\u0000\u0000\u0203\u0c7d\u0001"+ - "\u0000\u0000\u0000\u0205\u0c85\u0001\u0000\u0000\u0000\u0207\u0c92\u0001"+ - "\u0000\u0000\u0000\u0209\u0c9b\u0001\u0000\u0000\u0000\u020b\u0ca1\u0001"+ - "\u0000\u0000\u0000\u020d\u0ca8\u0001\u0000\u0000\u0000\u020f\u0cb1\u0001"+ - "\u0000\u0000\u0000\u0211\u0cb6\u0001\u0000\u0000\u0000\u0213\u0cbc\u0001"+ - "\u0000\u0000\u0000\u0215\u0cc1\u0001\u0000\u0000\u0000\u0217\u0cc6\u0001"+ - "\u0000\u0000\u0000\u0219\u0ccc\u0001\u0000\u0000\u0000\u021b\u0cd1\u0001"+ - "\u0000\u0000\u0000\u021d\u0cd4\u0001\u0000\u0000\u0000\u021f\u0cdc\u0001"+ - "\u0000\u0000\u0000\u0221\u0ce3\u0001\u0000\u0000\u0000\u0223\u0cea\u0001"+ - "\u0000\u0000\u0000\u0225\u0cf0\u0001\u0000\u0000\u0000\u0227\u0cf7\u0001"+ - "\u0000\u0000\u0000\u0229\u0cfa\u0001\u0000\u0000\u0000\u022b\u0cfe\u0001"+ - "\u0000\u0000\u0000\u022d\u0d03\u0001\u0000\u0000\u0000\u022f\u0d0c\u0001"+ - "\u0000\u0000\u0000\u0231\u0d13\u0001\u0000\u0000\u0000\u0233\u0d1b\u0001"+ - "\u0000\u0000\u0000\u0235\u0d21\u0001\u0000\u0000\u0000\u0237\u0d27\u0001"+ - "\u0000\u0000\u0000\u0239\u0d2e\u0001\u0000\u0000\u0000\u023b\u0d36\u0001"+ - "\u0000\u0000\u0000\u023d\u0d40\u0001\u0000\u0000\u0000\u023f\u0d48\u0001"+ - "\u0000\u0000\u0000\u0241\u0d51\u0001\u0000\u0000\u0000\u0243\u0d57\u0001"+ - "\u0000\u0000\u0000\u0245\u0d61\u0001\u0000\u0000\u0000\u0247\u0d69\u0001"+ - "\u0000\u0000\u0000\u0249\u0d72\u0001\u0000\u0000\u0000\u024b\u0d7b\u0001"+ - "\u0000\u0000\u0000\u024d\u0d81\u0001\u0000\u0000\u0000\u024f\u0d8c\u0001"+ - "\u0000\u0000\u0000\u0251\u0d97\u0001\u0000\u0000\u0000\u0253\u0da1\u0001"+ - "\u0000\u0000\u0000\u0255\u0da9\u0001\u0000\u0000\u0000\u0257\u0daf\u0001"+ - "\u0000\u0000\u0000\u0259\u0db5\u0001\u0000\u0000\u0000\u025b\u0dba\u0001"+ - "\u0000\u0000\u0000\u025d\u0dc3\u0001\u0000\u0000\u0000\u025f\u0dcb\u0001"+ - "\u0000\u0000\u0000\u0261\u0dd5\u0001\u0000\u0000\u0000\u0263\u0dd9\u0001"+ - "\u0000\u0000\u0000\u0265\u0de1\u0001\u0000\u0000\u0000\u0267\u0de9\u0001"+ - "\u0000\u0000\u0000\u0269\u0df2\u0001\u0000\u0000\u0000\u026b\u0dfa\u0001"+ - "\u0000\u0000\u0000\u026d\u0e01\u0001\u0000\u0000\u0000\u026f\u0e0c\u0001"+ - "\u0000\u0000\u0000\u0271\u0e14\u0001\u0000\u0000\u0000\u0273\u0e1c\u0001"+ - "\u0000\u0000\u0000\u0275\u0e22\u0001\u0000\u0000\u0000\u0277\u0e2a\u0001"+ - "\u0000\u0000\u0000\u0279\u0e33\u0001\u0000\u0000\u0000\u027b\u0e3b\u0001"+ - "\u0000\u0000\u0000\u027d\u0e42\u0001\u0000\u0000\u0000\u027f\u0e47\u0001"+ - "\u0000\u0000\u0000\u0281\u0e50\u0001\u0000\u0000\u0000\u0283\u0e55\u0001"+ - "\u0000\u0000\u0000\u0285\u0e5a\u0001\u0000\u0000\u0000\u0287\u0e64\u0001"+ - "\u0000\u0000\u0000\u0289\u0e6b\u0001\u0000\u0000\u0000\u028b\u0e72\u0001"+ - "\u0000\u0000\u0000\u028d\u0e79\u0001\u0000\u0000\u0000\u028f\u0e80\u0001"+ - "\u0000\u0000\u0000\u0291\u0e89\u0001\u0000\u0000\u0000\u0293\u0e92\u0001"+ - "\u0000\u0000\u0000\u0295\u0e9c\u0001\u0000\u0000\u0000\u0297\u0ea9\u0001"+ - "\u0000\u0000\u0000\u0299\u0eb0\u0001\u0000\u0000\u0000\u029b\u0eb8\u0001"+ - "\u0000\u0000\u0000\u029d\u0ebc\u0001\u0000\u0000\u0000\u029f\u0ec2\u0001"+ - "\u0000\u0000\u0000\u02a1\u0ec7\u0001\u0000\u0000\u0000\u02a3\u0ece\u0001"+ - "\u0000\u0000\u0000\u02a5\u0ed7\u0001\u0000\u0000\u0000\u02a7\u0ede\u0001"+ - "\u0000\u0000\u0000\u02a9\u0ee9\u0001\u0000\u0000\u0000\u02ab\u0eef\u0001"+ - "\u0000\u0000\u0000\u02ad\u0ef9\u0001\u0000\u0000\u0000\u02af\u0f04\u0001"+ - "\u0000\u0000\u0000\u02b1\u0f0a\u0001\u0000\u0000\u0000\u02b3\u0f11\u0001"+ - "\u0000\u0000\u0000\u02b5\u0f19\u0001\u0000\u0000\u0000\u02b7\u0f20\u0001"+ - "\u0000\u0000\u0000\u02b9\u0f26\u0001\u0000\u0000\u0000\u02bb\u0f2c\u0001"+ - "\u0000\u0000\u0000\u02bd\u0f33\u0001\u0000\u0000\u0000\u02bf\u0f3a\u0001"+ - "\u0000\u0000\u0000\u02c1\u0f45\u0001\u0000\u0000\u0000\u02c3\u0f4a\u0001"+ - "\u0000\u0000\u0000\u02c5\u0f53\u0001\u0000\u0000\u0000\u02c7\u0f5d\u0001"+ - "\u0000\u0000\u0000\u02c9\u0f62\u0001\u0000\u0000\u0000\u02cb\u0f6e\u0001"+ - "\u0000\u0000\u0000\u02cd\u0f76\u0001\u0000\u0000\u0000\u02cf\u0f7f\u0001"+ - "\u0000\u0000\u0000\u02d1\u0f87\u0001\u0000\u0000\u0000\u02d3\u0f8c\u0001"+ - "\u0000\u0000\u0000\u02d5\u0f92\u0001\u0000\u0000\u0000\u02d7\u0f9c\u0001"+ - "\u0000\u0000\u0000\u02d9\u0fa8\u0001\u0000\u0000\u0000\u02db\u0fb4\u0001"+ - "\u0000\u0000\u0000\u02dd\u0fbc\u0001\u0000\u0000\u0000\u02df\u0fc5\u0001"+ - "\u0000\u0000\u0000\u02e1\u0fce\u0001\u0000\u0000\u0000\u02e3\u0fd4\u0001"+ - "\u0000\u0000\u0000\u02e5\u0fdb\u0001\u0000\u0000\u0000\u02e7\u0fe2\u0001"+ - "\u0000\u0000\u0000\u02e9\u0fe8\u0001\u0000\u0000\u0000\u02eb\u0ff1\u0001"+ - "\u0000\u0000\u0000\u02ed\u0ffb\u0001\u0000\u0000\u0000\u02ef\u1003"; - private static final String _serializedATNSegment1 = - "\u0001\u0000\u0000\u0000\u02f1\u100b\u0001\u0000\u0000\u0000\u02f3\u1010"+ - "\u0001\u0000\u0000\u0000\u02f5\u1019\u0001\u0000\u0000\u0000\u02f7\u1024"+ - "\u0001\u0000\u0000\u0000\u02f9\u102c\u0001\u0000\u0000\u0000\u02fb\u1031"+ - "\u0001\u0000\u0000\u0000\u02fd\u1039\u0001\u0000\u0000\u0000\u02ff\u103f"+ - "\u0001\u0000\u0000\u0000\u0301\u1043\u0001\u0000\u0000\u0000\u0303\u1048"+ - "\u0001\u0000\u0000\u0000\u0305\u104c\u0001\u0000\u0000\u0000\u0307\u1051"+ - "\u0001\u0000\u0000\u0000\u0309\u1059\u0001\u0000\u0000\u0000\u030b\u1060"+ - "\u0001\u0000\u0000\u0000\u030d\u1064\u0001\u0000\u0000\u0000\u030f\u106c"+ - "\u0001\u0000\u0000\u0000\u0311\u1071\u0001\u0000\u0000\u0000\u0313\u107b"+ - "\u0001\u0000\u0000\u0000\u0315\u1084\u0001\u0000\u0000\u0000\u0317\u1088"+ - "\u0001\u0000\u0000\u0000\u0319\u1090\u0001\u0000\u0000\u0000\u031b\u1097"+ - "\u0001\u0000\u0000\u0000\u031d\u109f\u0001\u0000\u0000\u0000\u031f\u10a5"+ - "\u0001\u0000\u0000\u0000\u0321\u10ae\u0001\u0000\u0000\u0000\u0323\u10b4"+ - "\u0001\u0000\u0000\u0000\u0325\u10b8\u0001\u0000\u0000\u0000\u0327\u10c0"+ - "\u0001\u0000\u0000\u0000\u0329\u10c9\u0001\u0000\u0000\u0000\u032b\u10cf"+ - "\u0001\u0000\u0000\u0000\u032d\u10d8\u0001\u0000\u0000\u0000\u032f\u10de"+ - "\u0001\u0000\u0000\u0000\u0331\u10e3\u0001\u0000\u0000\u0000\u0333\u10ea"+ - "\u0001\u0000\u0000\u0000\u0335\u10f2\u0001\u0000\u0000\u0000\u0337\u10fa"+ - "\u0001\u0000\u0000\u0000\u0339\u1103\u0001\u0000\u0000\u0000\u033b\u110d"+ - "\u0001\u0000\u0000\u0000\u033d\u1112\u0001\u0000\u0000\u0000\u033f\u1116"+ - "\u0001\u0000\u0000\u0000\u0341\u111c\u0001\u0000\u0000\u0000\u0343\u1125"+ - "\u0001\u0000\u0000\u0000\u0345\u112f\u0001\u0000\u0000\u0000\u0347\u1134"+ - "\u0001\u0000\u0000\u0000\u0349\u113e\u0001\u0000\u0000\u0000\u034b\u1144"+ - "\u0001\u0000\u0000\u0000\u034d\u1149\u0001\u0000\u0000\u0000\u034f\u1150"+ - "\u0001\u0000\u0000\u0000\u0351\u1158\u0001\u0000\u0000\u0000\u0353\u1166"+ - "\u0001\u0000\u0000\u0000\u0355\u1171\u0001\u0000\u0000\u0000\u0357\u1178"+ - "\u0001\u0000\u0000\u0000\u0359\u118b\u0001\u0000\u0000\u0000\u035b\u11a7"+ - "\u0001\u0000\u0000\u0000\u035d\u11c2\u0001\u0000\u0000\u0000\u035f\u11c8"+ - "\u0001\u0000\u0000\u0000\u0361\u11d5\u0001\u0000\u0000\u0000\u0363\u11df"+ - "\u0001\u0000\u0000\u0000\u0365\u11ea\u0001\u0000\u0000\u0000\u0367\u11f4"+ - "\u0001\u0000\u0000\u0000\u0369\u11fe\u0001\u0000\u0000\u0000\u036b\u1207"+ - "\u0001\u0000\u0000\u0000\u036d\u120d\u0001\u0000\u0000\u0000\u036f\u1215"+ - "\u0001\u0000\u0000\u0000\u0371\u1222\u0001\u0000\u0000\u0000\u0373\u1227"+ - "\u0001\u0000\u0000\u0000\u0375\u122f\u0001\u0000\u0000\u0000\u0377\u1236"+ - "\u0001\u0000\u0000\u0000\u0379\u123d\u0001\u0000\u0000\u0000\u037b\u1248"+ - "\u0001\u0000\u0000\u0000\u037d\u1252\u0001\u0000\u0000\u0000\u037f\u1259"+ - "\u0001\u0000\u0000\u0000\u0381\u1260\u0001\u0000\u0000\u0000\u0383\u1268"+ - "\u0001\u0000\u0000\u0000\u0385\u1270\u0001\u0000\u0000\u0000\u0387\u127a"+ - "\u0001\u0000\u0000\u0000\u0389\u1281\u0001\u0000\u0000\u0000\u038b\u1288"+ - "\u0001\u0000\u0000\u0000\u038d\u128f\u0001\u0000\u0000\u0000\u038f\u129b"+ - "\u0001\u0000\u0000\u0000\u0391\u129f\u0001\u0000\u0000\u0000\u0393\u12a3"+ - "\u0001\u0000\u0000\u0000\u0395\u12a9\u0001\u0000\u0000\u0000\u0397\u12b6"+ - "\u0001\u0000\u0000\u0000\u0399\u12c2\u0001\u0000\u0000\u0000\u039b\u12c6"+ - "\u0001\u0000\u0000\u0000\u039d\u12ca\u0001\u0000\u0000\u0000\u039f\u12d3"+ - "\u0001\u0000\u0000\u0000\u03a1\u12db\u0001\u0000\u0000\u0000\u03a3\u12e6"+ - "\u0001\u0000\u0000\u0000\u03a5\u12ec\u0001\u0000\u0000\u0000\u03a7\u12f4"+ - "\u0001\u0000\u0000\u0000\u03a9\u12fd\u0001\u0000\u0000\u0000\u03ab\u1301"+ - "\u0001\u0000\u0000\u0000\u03ad\u1309\u0001\u0000\u0000\u0000\u03af\u1314"+ - "\u0001\u0000\u0000\u0000\u03b1\u131d\u0001\u0000\u0000\u0000\u03b3\u1322"+ - "\u0001\u0000\u0000\u0000\u03b5\u1329\u0001\u0000\u0000\u0000\u03b7\u132e"+ - "\u0001\u0000\u0000\u0000\u03b9\u1335\u0001\u0000\u0000\u0000\u03bb\u133a"+ - "\u0001\u0000\u0000\u0000\u03bd\u1343\u0001\u0000\u0000\u0000\u03bf\u1348"+ - "\u0001\u0000\u0000\u0000\u03c1\u1354\u0001\u0000\u0000\u0000\u03c3\u135f"+ - "\u0001\u0000\u0000\u0000\u03c5\u1368\u0001\u0000\u0000\u0000\u03c7\u1370"+ - "\u0001\u0000\u0000\u0000\u03c9\u137e\u0001\u0000\u0000\u0000\u03cb\u1386"+ - "\u0001\u0000\u0000\u0000\u03cd\u1391\u0001\u0000\u0000\u0000\u03cf\u1398"+ - "\u0001\u0000\u0000\u0000\u03d1\u139f\u0001\u0000\u0000\u0000\u03d3\u13a6"+ - "\u0001\u0000\u0000\u0000\u03d5\u13ad\u0001\u0000\u0000\u0000\u03d7\u13b1"+ - "\u0001\u0000\u0000\u0000\u03d9\u13b5\u0001\u0000\u0000\u0000\u03db\u13ba"+ - "\u0001\u0000\u0000\u0000\u03dd\u13bf\u0001\u0000\u0000\u0000\u03df\u13c7"+ - "\u0001\u0000\u0000\u0000\u03e1\u13cd\u0001\u0000\u0000\u0000\u03e3\u13d7"+ - "\u0001\u0000\u0000\u0000\u03e5\u13dc\u0001\u0000\u0000\u0000\u03e7\u13f0"+ - "\u0001\u0000\u0000\u0000\u03e9\u1402\u0001\u0000\u0000\u0000\u03eb\u1408"+ - "\u0001\u0000\u0000\u0000\u03ed\u1415\u0001\u0000\u0000\u0000\u03ef\u1420"+ - "\u0001\u0000\u0000\u0000\u03f1\u1426\u0001\u0000\u0000\u0000\u03f3\u142f"+ - "\u0001\u0000\u0000\u0000\u03f5\u1437\u0001\u0000\u0000\u0000\u03f7\u143b"+ - "\u0001\u0000\u0000\u0000\u03f9\u1447\u0001\u0000\u0000\u0000\u03fb\u144f"+ - "\u0001\u0000\u0000\u0000\u03fd\u1455\u0001\u0000\u0000\u0000\u03ff\u145b"+ - "\u0001\u0000\u0000\u0000\u0401\u1463\u0001\u0000\u0000\u0000\u0403\u146b"+ - "\u0001\u0000\u0000\u0000\u0405\u1471\u0001\u0000\u0000\u0000\u0407\u1476"+ - "\u0001\u0000\u0000\u0000\u0409\u147d\u0001\u0000\u0000\u0000\u040b\u1483"+ - "\u0001\u0000\u0000\u0000\u040d\u1489\u0001\u0000\u0000\u0000\u040f\u1492"+ - "\u0001\u0000\u0000\u0000\u0411\u1498\u0001\u0000\u0000\u0000\u0413\u149c"+ - "\u0001\u0000\u0000\u0000\u0415\u14a1\u0001\u0000\u0000\u0000\u0417\u14a8"+ - "\u0001\u0000\u0000\u0000\u0419\u14b0\u0001\u0000\u0000\u0000\u041b\u14ba"+ - "\u0001\u0000\u0000\u0000\u041d\u14c1\u0001\u0000\u0000\u0000\u041f\u14c6"+ - "\u0001\u0000\u0000\u0000\u0421\u14cb\u0001\u0000\u0000\u0000\u0423\u14cf"+ - "\u0001\u0000\u0000\u0000\u0425\u14d4\u0001\u0000\u0000\u0000\u0427\u14d9"+ - "\u0001\u0000\u0000\u0000\u0429\u14e1\u0001\u0000\u0000\u0000\u042b\u14e9"+ - "\u0001\u0000\u0000\u0000\u042d\u14ed\u0001\u0000\u0000\u0000\u042f\u14f1"+ - "\u0001\u0000\u0000\u0000\u0431\u14fb\u0001\u0000\u0000\u0000\u0433\u1501"+ - "\u0001\u0000\u0000\u0000\u0435\u1505\u0001\u0000\u0000\u0000\u0437\u1509"+ - "\u0001\u0000\u0000\u0000\u0439\u150c\u0001\u0000\u0000\u0000\u043b\u1512"+ - "\u0001\u0000\u0000\u0000\u043d\u151c\u0001\u0000\u0000\u0000\u043f\u1520"+ - "\u0001\u0000\u0000\u0000\u0441\u1523\u0001\u0000\u0000\u0000\u0443\u1529"+ - "\u0001\u0000\u0000\u0000\u0445\u1531\u0001\u0000\u0000\u0000\u0447\u1537"+ - "\u0001\u0000\u0000\u0000\u0449\u153d\u0001\u0000\u0000\u0000\u044b\u1542"+ - "\u0001\u0000\u0000\u0000\u044d\u1547\u0001\u0000\u0000\u0000\u044f\u1552"+ - "\u0001\u0000\u0000\u0000\u0451\u1558\u0001\u0000\u0000\u0000\u0453\u1565"+ - "\u0001\u0000\u0000\u0000\u0455\u156c\u0001\u0000\u0000\u0000\u0457\u1574"+ - "\u0001\u0000\u0000\u0000\u0459\u1579\u0001\u0000\u0000\u0000\u045b\u157f"+ - "\u0001\u0000\u0000\u0000\u045d\u1584\u0001\u0000\u0000\u0000\u045f\u158a"+ - "\u0001\u0000\u0000\u0000\u0461\u158f\u0001\u0000\u0000\u0000\u0463\u1595"+ - "\u0001\u0000\u0000\u0000\u0465\u159b\u0001\u0000\u0000\u0000\u0467\u15a2"+ - "\u0001\u0000\u0000\u0000\u0469\u15a6\u0001\u0000\u0000\u0000\u046b\u15ab"+ - "\u0001\u0000\u0000\u0000\u046d\u15af\u0001\u0000\u0000\u0000\u046f\u15b4"+ - "\u0001\u0000\u0000\u0000\u0471\u15b8\u0001\u0000\u0000\u0000\u0473\u15bd"+ - "\u0001\u0000\u0000\u0000\u0475\u15c1\u0001\u0000\u0000\u0000\u0477\u15c6"+ - "\u0001\u0000\u0000\u0000\u0479\u15cb\u0001\u0000\u0000\u0000\u047b\u15d0"+ - "\u0001\u0000\u0000\u0000\u047d\u15d5\u0001\u0000\u0000\u0000\u047f\u15db"+ - "\u0001\u0000\u0000\u0000\u0481\u15e1\u0001\u0000\u0000\u0000\u0483\u15e7"+ - "\u0001\u0000\u0000\u0000\u0485\u15f2\u0001\u0000\u0000\u0000\u0487\u15fe"+ - "\u0001\u0000\u0000\u0000\u0489\u160f\u0001\u0000\u0000\u0000\u048b\u1615"+ - "\u0001\u0000\u0000\u0000\u048d\u1622\u0001\u0000\u0000\u0000\u048f\u1628"+ - "\u0001\u0000\u0000\u0000\u0491\u162e\u0001\u0000\u0000\u0000\u0493\u1634"+ - "\u0001\u0000\u0000\u0000\u0495\u1638\u0001\u0000\u0000\u0000\u0497\u163f"+ - "\u0001\u0000\u0000\u0000\u0499\u1649\u0001\u0000\u0000\u0000\u049b\u1650"+ - "\u0001\u0000\u0000\u0000\u049d\u1658\u0001\u0000\u0000\u0000\u049f\u165f"+ - "\u0001\u0000\u0000\u0000\u04a1\u1664\u0001\u0000\u0000\u0000\u04a3\u166a"+ - "\u0001\u0000\u0000\u0000\u04a5\u166e\u0001\u0000\u0000\u0000\u04a7\u167a"+ - "\u0001\u0000\u0000\u0000\u04a9\u168d\u0001\u0000\u0000\u0000\u04ab\u1699"+ - "\u0001\u0000\u0000\u0000\u04ad\u16a7\u0001\u0000\u0000\u0000\u04af\u16b6"+ - "\u0001\u0000\u0000\u0000\u04b1\u16c3\u0001\u0000\u0000\u0000\u04b3\u16d0"+ - "\u0001\u0000\u0000\u0000\u04b5\u16dc\u0001\u0000\u0000\u0000\u04b7\u16e9"+ - "\u0001\u0000\u0000\u0000\u04b9\u16f8\u0001\u0000\u0000\u0000\u04bb\u1707"+ - "\u0001\u0000\u0000\u0000\u04bd\u171d\u0001\u0000\u0000\u0000\u04bf\u1733"+ - "\u0001\u0000\u0000\u0000\u04c1\u1741\u0001\u0000\u0000\u0000\u04c3\u1748"+ - "\u0001\u0000\u0000\u0000\u04c5\u174d\u0001\u0000\u0000\u0000\u04c7\u1753"+ - "\u0001\u0000\u0000\u0000\u04c9\u175e\u0001\u0000\u0000\u0000\u04cb\u176a"+ - "\u0001\u0000\u0000\u0000\u04cd\u177a\u0001\u0000\u0000\u0000\u04cf\u178a"+ - "\u0001\u0000\u0000\u0000\u04d1\u1791\u0001\u0000\u0000\u0000\u04d3\u1798"+ - "\u0001\u0000\u0000\u0000\u04d5\u17a1\u0001\u0000\u0000\u0000\u04d7\u17a8"+ - "\u0001\u0000\u0000\u0000\u04d9\u17b2\u0001\u0000\u0000\u0000\u04db\u17b9"+ - "\u0001\u0000\u0000\u0000\u04dd\u17bd\u0001\u0000\u0000\u0000\u04df\u17cd"+ - "\u0001\u0000\u0000\u0000\u04e1\u17d6\u0001\u0000\u0000\u0000\u04e3\u17e0"+ - "\u0001\u0000\u0000\u0000\u04e5\u17eb\u0001\u0000\u0000\u0000\u04e7\u17f4"+ - "\u0001\u0000\u0000\u0000\u04e9\u1801\u0001\u0000\u0000\u0000\u04eb\u180f"+ - "\u0001\u0000\u0000\u0000\u04ed\u1820\u0001\u0000\u0000\u0000\u04ef\u182a"+ - "\u0001\u0000\u0000\u0000\u04f1\u1838\u0001\u0000\u0000\u0000\u04f3\u1842"+ - "\u0001\u0000\u0000\u0000\u04f5\u1851\u0001\u0000\u0000\u0000\u04f7\u1862"+ - "\u0001\u0000\u0000\u0000\u04f9\u1866\u0001\u0000\u0000\u0000\u04fb\u187a"+ - "\u0001\u0000\u0000\u0000\u04fd\u1884\u0001\u0000\u0000\u0000\u04ff\u189a"+ - "\u0001\u0000\u0000\u0000\u0501\u18a7\u0001\u0000\u0000\u0000\u0503\u18af"+ - "\u0001\u0000\u0000\u0000\u0505\u18b7\u0001\u0000\u0000\u0000\u0507\u18c1"+ - "\u0001\u0000\u0000\u0000\u0509\u18ce\u0001\u0000\u0000\u0000\u050b\u18d2"+ - "\u0001\u0000\u0000\u0000\u050d\u18d6\u0001\u0000\u0000\u0000\u050f\u18d8"+ - "\u0001\u0000\u0000\u0000\u0511\u18db\u0001\u0000\u0000\u0000\u0513\u18e4"+ - "\u0001\u0000\u0000\u0000\u0515\u18e7\u0001\u0000\u0000\u0000\u0517\u18f0"+ - "\u0001\u0000\u0000\u0000\u0519\u18f4\u0001\u0000\u0000\u0000\u051b\u18f8"+ - "\u0001\u0000\u0000\u0000\u051d\u18fc\u0001\u0000\u0000\u0000\u051f\u1900"+ - "\u0001\u0000\u0000\u0000\u0521\u1903\u0001\u0000\u0000\u0000\u0523\u190c"+ - "\u0001\u0000\u0000\u0000\u0525\u1912\u0001\u0000\u0000\u0000\u0527\u1915"+ - "\u0001\u0000\u0000\u0000\u0529\u1919\u0001\u0000\u0000\u0000\u052b\u1922"+ - "\u0001\u0000\u0000\u0000\u052d\u1929\u0001\u0000\u0000\u0000\u052f\u192c"+ - "\u0001\u0000\u0000\u0000\u0531\u1934\u0001\u0000\u0000\u0000\u0533\u1937"+ - "\u0001\u0000\u0000\u0000\u0535\u193a\u0001\u0000\u0000\u0000\u0537\u193d"+ - "\u0001\u0000\u0000\u0000\u0539\u1945\u0001\u0000\u0000\u0000\u053b\u1948"+ - "\u0001\u0000\u0000\u0000\u053d\u194b\u0001\u0000\u0000\u0000\u053f\u194d"+ - "\u0001\u0000\u0000\u0000\u0541\u196f\u0001\u0000\u0000\u0000\u0543\u1972"+ - "\u0001\u0000\u0000\u0000\u0545\u1976\u0001\u0000\u0000\u0000\u0547\u197e"+ - "\u0001\u0000\u0000\u0000\u0549\u198e\u0001\u0000\u0000\u0000\u054b\u1999"+ - "\u0001\u0000\u0000\u0000\u054d\u199d\u0001\u0000\u0000\u0000\u054f\u19a8"+ - "\u0001\u0000\u0000\u0000\u0551\u19cf\u0001\u0000\u0000\u0000\u0553\u1a02"+ - "\u0001\u0000\u0000\u0000\u0555\u1a1a\u0001\u0000\u0000\u0000\u0557\u1a1d"+ - "\u0001\u0000\u0000\u0000\u0559\u1a1f\u0001\u0000\u0000\u0000\u055b\u1a24"+ - "\u0001\u0000\u0000\u0000\u055d\u1a43\u0001\u0000\u0000\u0000\u055f\u1a46"+ - "\u0001\u0000\u0000\u0000\u0561\u1a4b\u0001\u0000\u0000\u0000\u0563\u1a58"+ - "\u0001\u0000\u0000\u0000\u0565\u1a5b\u0001\u0000\u0000\u0000\u0567\u1a60"+ - "\u0001\u0000\u0000\u0000\u0569\u1a66\u0001\u0000\u0000\u0000\u056b\u1a6b"+ - "\u0001\u0000\u0000\u0000\u056d\u1a70\u0001\u0000\u0000\u0000\u056f\u1a75"+ - "\u0001\u0000\u0000\u0000\u0571\u1a7a\u0001\u0000\u0000\u0000\u0573\u1a8b"+ - "\u0001\u0000\u0000\u0000\u0575\u1a8d\u0001\u0000\u0000\u0000\u0577\u0578"+ - "\u0005$\u0000\u0000\u0578\u0006\u0001\u0000\u0000\u0000\u0579\u057a\u0005"+ - "(\u0000\u0000\u057a\b\u0001\u0000\u0000\u0000\u057b\u057c\u0005)\u0000"+ - "\u0000\u057c\n\u0001\u0000\u0000\u0000\u057d\u057e\u0005[\u0000\u0000"+ - "\u057e\f\u0001\u0000\u0000\u0000\u057f\u0580\u0005]\u0000\u0000\u0580"+ - "\u000e\u0001\u0000\u0000\u0000\u0581\u0582\u0005,\u0000\u0000\u0582\u0010"+ - "\u0001\u0000\u0000\u0000\u0583\u0584\u0005;\u0000\u0000\u0584\u0012\u0001"+ - "\u0000\u0000\u0000\u0585\u0586\u0005:\u0000\u0000\u0586\u0014\u0001\u0000"+ - "\u0000\u0000\u0587\u0588\u0005*\u0000\u0000\u0588\u0016\u0001\u0000\u0000"+ - "\u0000\u0589\u058a\u0005=\u0000\u0000\u058a\u0018\u0001\u0000\u0000\u0000"+ - "\u058b\u058c\u0005.\u0000\u0000\u058c\u001a\u0001\u0000\u0000\u0000\u058d"+ - "\u058e\u0005+\u0000\u0000\u058e\u001c\u0001\u0000\u0000\u0000\u058f\u0590"+ - "\u0005-\u0000\u0000\u0590\u001e\u0001\u0000\u0000\u0000\u0591\u0592\u0005"+ - "/\u0000\u0000\u0592 \u0001\u0000\u0000\u0000\u0593\u0594\u0005^\u0000"+ - "\u0000\u0594\"\u0001\u0000\u0000\u0000\u0595\u0596\u0005<\u0000\u0000"+ - "\u0596$\u0001\u0000\u0000\u0000\u0597\u0598\u0005>\u0000\u0000\u0598&"+ - "\u0001\u0000\u0000\u0000\u0599\u059a\u0005<\u0000\u0000\u059a\u059b\u0005"+ - "<\u0000\u0000\u059b(\u0001\u0000\u0000\u0000\u059c\u059d\u0005>\u0000"+ - "\u0000\u059d\u059e\u0005>\u0000\u0000\u059e*\u0001\u0000\u0000\u0000\u059f"+ - "\u05a0\u0005:\u0000\u0000\u05a0\u05a1\u0005=\u0000\u0000\u05a1,\u0001"+ - "\u0000\u0000\u0000\u05a2\u05a3\u0005<\u0000\u0000\u05a3\u05a4\u0005=\u0000"+ - "\u0000\u05a4.\u0001\u0000\u0000\u0000\u05a5\u05a6\u0005=\u0000\u0000\u05a6"+ - "\u05a7\u0005>\u0000\u0000\u05a70\u0001\u0000\u0000\u0000\u05a8\u05a9\u0005"+ - ">\u0000\u0000\u05a9\u05aa\u0005=\u0000\u0000\u05aa2\u0001\u0000\u0000"+ - "\u0000\u05ab\u05ac\u0005.\u0000\u0000\u05ac\u05ad\u0005.\u0000\u0000\u05ad"+ - "4\u0001\u0000\u0000\u0000\u05ae\u05af\u0005<\u0000\u0000\u05af\u05b0\u0005"+ - ">\u0000\u0000\u05b06\u0001\u0000\u0000\u0000\u05b1\u05b2\u0005:\u0000"+ - "\u0000\u05b2\u05b3\u0005:\u0000\u0000\u05b38\u0001\u0000\u0000\u0000\u05b4"+ - "\u05b5\u0005%\u0000\u0000\u05b5:\u0001\u0000\u0000\u0000\u05b6\u05b8\u0005"+ - "$\u0000\u0000\u05b7\u05b9\u0007\u0000\u0000\u0000\u05b8\u05b7\u0001\u0000"+ - "\u0000\u0000\u05b9\u05ba\u0001\u0000\u0000\u0000\u05ba\u05b8\u0001\u0000"+ - "\u0000\u0000\u05ba\u05bb\u0001\u0000\u0000\u0000\u05bb<\u0001\u0000\u0000"+ - "\u0000\u05bc\u05cc\u0003A\u001e\u0000\u05bd\u05c1\u0005+\u0000\u0000\u05be"+ - "\u05bf\u0005-\u0000\u0000\u05bf\u05c1\u0004\u001c\u0000\u0000\u05c0\u05bd"+ - "\u0001\u0000\u0000\u0000\u05c0\u05be\u0001\u0000\u0000\u0000\u05c1\u05c2"+ - "\u0001\u0000\u0000\u0000\u05c2\u05c0\u0001\u0000\u0000\u0000\u05c2\u05c3"+ - "\u0001\u0000\u0000\u0000\u05c3\u05c7\u0001\u0000\u0000\u0000\u05c4\u05c8"+ - "\u0003A\u001e\u0000\u05c5\u05c6\u0005/\u0000\u0000\u05c6\u05c8\u0004\u001c"+ - "\u0001\u0000\u05c7\u05c4\u0001\u0000\u0000\u0000\u05c7\u05c5\u0001\u0000"+ - "\u0000\u0000\u05c8\u05cc\u0001\u0000\u0000\u0000\u05c9\u05ca\u0005/\u0000"+ - "\u0000\u05ca\u05cc\u0004\u001c\u0002\u0000\u05cb\u05bc\u0001\u0000\u0000"+ - "\u0000\u05cb\u05c0\u0001\u0000\u0000\u0000\u05cb\u05c9\u0001\u0000\u0000"+ - "\u0000\u05cc\u05cd\u0001\u0000\u0000\u0000\u05cd\u05cb\u0001\u0000\u0000"+ - "\u0000\u05cd\u05ce\u0001\u0000\u0000\u0000\u05ce\u05d1\u0001\u0000\u0000"+ - "\u0000\u05cf\u05d1\u0007\u0001\u0000\u0000\u05d0\u05cb\u0001\u0000\u0000"+ - "\u0000\u05d0\u05cf\u0001\u0000\u0000\u0000\u05d1\u05d2\u0001\u0000\u0000"+ - "\u0000\u05d2\u05d3\u0006\u001c\u0000\u0000\u05d3>\u0001\u0000\u0000\u0000"+ - "\u05d4\u05da\u0003C\u001f\u0000\u05d5\u05d6\u0005-\u0000\u0000\u05d6\u05da"+ - "\u0004\u001d\u0003\u0000\u05d7\u05d8\u0005/\u0000\u0000\u05d8\u05da\u0004"+ - "\u001d\u0004\u0000\u05d9\u05d4\u0001\u0000\u0000\u0000\u05d9\u05d5\u0001"+ - "\u0000\u0000\u0000\u05d9\u05d7\u0001\u0000\u0000\u0000\u05da\u05dd\u0001"+ - "\u0000\u0000\u0000\u05db\u05d9\u0001\u0000\u0000\u0000\u05db\u05dc\u0001"+ - "\u0000\u0000\u0000\u05dc\u05de\u0001\u0000\u0000\u0000\u05dd\u05db\u0001"+ - "\u0000\u0000\u0000\u05de\u05e0\u0003E \u0000\u05df\u05e1\u0003=\u001c"+ - "\u0000\u05e0\u05df\u0001\u0000\u0000\u0000\u05e0\u05e1\u0001\u0000\u0000"+ - "\u0000\u05e1\u05e5\u0001\u0000\u0000\u0000\u05e2\u05e6\u0005+\u0000\u0000"+ - "\u05e3\u05e4\u0005-\u0000\u0000\u05e4\u05e6\u0004\u001d\u0005\u0000\u05e5"+ - "\u05e2\u0001\u0000\u0000\u0000\u05e5\u05e3\u0001\u0000\u0000\u0000\u05e6"+ - "\u05e7\u0001\u0000\u0000\u0000\u05e7\u05e5\u0001\u0000\u0000\u0000\u05e7"+ - "\u05e8\u0001\u0000\u0000\u0000\u05e8\u05e9\u0001\u0000\u0000\u0000\u05e9"+ - "\u05ea\u0006\u001d\u0001\u0000\u05ea@\u0001\u0000\u0000\u0000\u05eb\u05ec"+ - "\u0007\u0002\u0000\u0000\u05ecB\u0001\u0000\u0000\u0000\u05ed\u05ee\u0007"+ - "\u0003\u0000\u0000\u05eeD\u0001\u0000\u0000\u0000\u05ef\u05f0\u0007\u0004"+ - "\u0000\u0000\u05f0F\u0001\u0000\u0000\u0000\u05f1\u05f2\u0007\u0005\u0000"+ - "\u0000\u05f2\u05f3\u0007\u0006\u0000\u0000\u05f3\u05f4\u0007\u0006\u0000"+ - "\u0000\u05f4H\u0001\u0000\u0000\u0000\u05f5\u05f6\u0007\u0005\u0000\u0000"+ - "\u05f6\u05f7\u0007\u0007\u0000\u0000\u05f7\u05f8\u0007\u0005\u0000\u0000"+ - "\u05f8\u05f9\u0007\u0006\u0000\u0000\u05f9\u05fa\u0007\b\u0000\u0000\u05fa"+ - "\u05fb\u0007\t\u0000\u0000\u05fb\u05fc\u0007\n\u0000\u0000\u05fcJ\u0001"+ - "\u0000\u0000\u0000\u05fd\u05fe\u0007\u0005\u0000\u0000\u05fe\u05ff\u0007"+ - "\u0007\u0000\u0000\u05ff\u0600\u0007\u0005\u0000\u0000\u0600\u0601\u0007"+ - "\u0006\u0000\u0000\u0601\u0602\u0007\b\u0000\u0000\u0602\u0603\u0007\u000b"+ - "\u0000\u0000\u0603\u0604\u0007\n\u0000\u0000\u0604L\u0001\u0000\u0000"+ - "\u0000\u0605\u0606\u0007\u0005\u0000\u0000\u0606\u0607\u0007\u0007\u0000"+ - "\u0000\u0607\u0608\u0007\f\u0000\u0000\u0608N\u0001\u0000\u0000\u0000"+ - "\u0609\u060a\u0007\u0005\u0000\u0000\u060a\u060b\u0007\u0007\u0000\u0000"+ - "\u060b\u060c\u0007\b\u0000\u0000\u060cP\u0001\u0000\u0000\u0000\u060d"+ - "\u060e\u0007\u0005\u0000\u0000\u060e\u060f\u0007\r\u0000\u0000\u060f\u0610"+ - "\u0007\r\u0000\u0000\u0610\u0611\u0007\u0005\u0000\u0000\u0611\u0612\u0007"+ - "\b\u0000\u0000\u0612R\u0001\u0000\u0000\u0000\u0613\u0614\u0007\u0005"+ - "\u0000\u0000\u0614\u0615\u0007\t\u0000\u0000\u0615T\u0001\u0000\u0000"+ - "\u0000\u0616\u0617\u0007\u0005\u0000\u0000\u0617\u0618\u0007\t\u0000\u0000"+ - "\u0618\u0619\u0007\u000e\u0000\u0000\u0619V\u0001\u0000\u0000\u0000\u061a"+ - "\u061b\u0007\u0005\u0000\u0000\u061b\u061c\u0007\t\u0000\u0000\u061c\u061d"+ - "\u0007\b\u0000\u0000\u061d\u061e\u0007\u000f\u0000\u0000\u061e\u061f\u0007"+ - "\u000f\u0000\u0000\u061f\u0620\u0007\n\u0000\u0000\u0620\u0621\u0007\u0010"+ - "\u0000\u0000\u0621\u0622\u0007\r\u0000\u0000\u0622\u0623\u0007\u0011\u0000"+ - "\u0000\u0623\u0624\u0007\u000e\u0000\u0000\u0624X\u0001\u0000\u0000\u0000"+ - "\u0625\u0626\u0007\u0012\u0000\u0000\u0626\u0627\u0007\u0013\u0000\u0000"+ - "\u0627\u0628\u0007\u0010\u0000\u0000\u0628\u0629\u0007\u0014\u0000\u0000"+ - "\u0629Z\u0001\u0000\u0000\u0000\u062a\u062b\u0007\u000e\u0000\u0000\u062b"+ - "\u062c\u0007\u0005\u0000\u0000\u062c\u062d\u0007\t\u0000\u0000\u062d\u062e"+ - "\u0007\n\u0000\u0000\u062e\\\u0001\u0000\u0000\u0000\u062f\u0630\u0007"+ - "\u000e\u0000\u0000\u0630\u0631\u0007\u0005\u0000\u0000\u0631\u0632\u0007"+ - "\t\u0000\u0000\u0632\u0633\u0007\u0010\u0000\u0000\u0633^\u0001\u0000"+ - "\u0000\u0000\u0634\u0635\u0007\u000e\u0000\u0000\u0635\u0636\u0007\u0014"+ - "\u0000\u0000\u0636\u0637\u0007\n\u0000\u0000\u0637\u0638\u0007\u000e\u0000"+ - "\u0000\u0638\u0639\u0007\u0015\u0000\u0000\u0639`\u0001\u0000\u0000\u0000"+ - "\u063a\u063b\u0007\u000e\u0000\u0000\u063b\u063c\u0007\u0013\u0000\u0000"+ - "\u063c\u063d\u0007\u0006\u0000\u0000\u063d\u063e\u0007\u0006\u0000\u0000"+ - "\u063e\u063f\u0007\u0005\u0000\u0000\u063f\u0640\u0007\u0010\u0000\u0000"+ - "\u0640\u0641\u0007\n\u0000\u0000\u0641b\u0001\u0000\u0000\u0000\u0642"+ - "\u0643\u0007\u000e\u0000\u0000\u0643\u0644\u0007\u0013\u0000\u0000\u0644"+ - "\u0645\u0007\u0006\u0000\u0000\u0645\u0646\u0007\u0016\u0000\u0000\u0646"+ - "\u0647\u0007\u000f\u0000\u0000\u0647\u0648\u0007\u0007\u0000\u0000\u0648"+ - "d\u0001\u0000\u0000\u0000\u0649\u064a\u0007\u000e\u0000\u0000\u064a\u064b"+ - "\u0007\u0013\u0000\u0000\u064b\u064c\u0007\u0007\u0000\u0000\u064c\u064d"+ - "\u0007\t\u0000\u0000\u064d\u064e\u0007\u0010\u0000\u0000\u064e\u064f\u0007"+ - "\r\u0000\u0000\u064f\u0650\u0007\u0005\u0000\u0000\u0650\u0651\u0007\u0011"+ - "\u0000\u0000\u0651\u0652\u0007\u0007\u0000\u0000\u0652\u0653\u0007\u0010"+ - "\u0000\u0000\u0653f\u0001\u0000\u0000\u0000\u0654\u0655\u0007\u000e\u0000"+ - "\u0000\u0655\u0656\u0007\r\u0000\u0000\u0656\u0657\u0007\n\u0000\u0000"+ - "\u0657\u0658\u0007\u0005\u0000\u0000\u0658\u0659\u0007\u0010\u0000\u0000"+ - "\u0659\u065a\u0007\n\u0000\u0000\u065ah\u0001\u0000\u0000\u0000\u065b"+ - "\u065c\u0007\u000e\u0000\u0000\u065c\u065d\u0007\u0016\u0000\u0000\u065d"+ - "\u065e\u0007\r\u0000\u0000\u065e\u065f\u0007\r\u0000\u0000\u065f\u0660"+ - "\u0007\n\u0000\u0000\u0660\u0661\u0007\u0007\u0000\u0000\u0661\u0662\u0007"+ - "\u0010\u0000\u0000\u0662\u0663\u0005_\u0000\u0000\u0663\u0664\u0007\u000e"+ - "\u0000\u0000\u0664\u0665\u0007\u0005\u0000\u0000\u0665\u0666\u0007\u0010"+ - "\u0000\u0000\u0666\u0667\u0007\u0005\u0000\u0000\u0667\u0668\u0007\u0006"+ - "\u0000\u0000\u0668\u0669\u0007\u0013\u0000\u0000\u0669\u066a\u0007\u0017"+ - "\u0000\u0000\u066aj\u0001\u0000\u0000\u0000\u066b\u066c\u0007\u000e\u0000"+ - "\u0000\u066c\u066d\u0007\u0016\u0000\u0000\u066d\u066e\u0007\r\u0000\u0000"+ - "\u066e\u066f\u0007\r\u0000\u0000\u066f\u0670\u0007\n\u0000\u0000\u0670"+ - "\u0671\u0007\u0007\u0000\u0000\u0671\u0672\u0007\u0010\u0000\u0000\u0672"+ - "\u0673\u0005_\u0000\u0000\u0673\u0674\u0007\f\u0000\u0000\u0674\u0675"+ - "\u0007\u0005\u0000\u0000\u0675\u0676\u0007\u0010\u0000\u0000\u0676\u0677"+ - "\u0007\n\u0000\u0000\u0677l\u0001\u0000\u0000\u0000\u0678\u0679\u0007"+ - "\u000e\u0000\u0000\u0679\u067a\u0007\u0016\u0000\u0000\u067a\u067b\u0007"+ - "\r\u0000\u0000\u067b\u067c\u0007\r\u0000\u0000\u067c\u067d\u0007\n\u0000"+ - "\u0000\u067d\u067e\u0007\u0007\u0000\u0000\u067e\u067f\u0007\u0010\u0000"+ - "\u0000\u067f\u0680\u0005_\u0000\u0000\u0680\u0681\u0007\r\u0000\u0000"+ - "\u0681\u0682\u0007\u0013\u0000\u0000\u0682\u0683\u0007\u0006\u0000\u0000"+ - "\u0683\u0684\u0007\n\u0000\u0000\u0684n\u0001\u0000\u0000\u0000\u0685"+ - "\u0686\u0007\u000e\u0000\u0000\u0686\u0687\u0007\u0016\u0000\u0000\u0687"+ - "\u0688\u0007\r\u0000\u0000\u0688\u0689\u0007\r\u0000\u0000\u0689\u068a"+ - "\u0007\n\u0000\u0000\u068a\u068b\u0007\u0007\u0000\u0000\u068b\u068c\u0007"+ - "\u0010\u0000\u0000\u068c\u068d\u0005_\u0000\u0000\u068d\u068e\u0007\u0010"+ - "\u0000\u0000\u068e\u068f\u0007\u0011\u0000\u0000\u068f\u0690\u0007\u000f"+ - "\u0000\u0000\u0690\u0691\u0007\n\u0000\u0000\u0691p\u0001\u0000\u0000"+ - "\u0000\u0692\u0693\u0007\u000e\u0000\u0000\u0693\u0694\u0007\u0016\u0000"+ - "\u0000\u0694\u0695\u0007\r\u0000\u0000\u0695\u0696\u0007\r\u0000\u0000"+ - "\u0696\u0697\u0007\n\u0000\u0000\u0697\u0698\u0007\u0007\u0000\u0000\u0698"+ - "\u0699\u0007\u0010\u0000\u0000\u0699\u069a\u0005_\u0000\u0000\u069a\u069b"+ - "\u0007\u0010\u0000\u0000\u069b\u069c\u0007\u0011\u0000\u0000\u069c\u069d"+ - "\u0007\u000f\u0000\u0000\u069d\u069e\u0007\n\u0000\u0000\u069e\u069f\u0007"+ - "\t\u0000\u0000\u069f\u06a0\u0007\u0010\u0000\u0000\u06a0\u06a1\u0007\u0005"+ - "\u0000\u0000\u06a1\u06a2\u0007\u000f\u0000\u0000\u06a2\u06a3\u0007\u0018"+ - "\u0000\u0000\u06a3r\u0001\u0000\u0000\u0000\u06a4\u06a5\u0007\u000e\u0000"+ - "\u0000\u06a5\u06a6\u0007\u0016\u0000\u0000\u06a6\u06a7\u0007\r\u0000\u0000"+ - "\u06a7\u06a8\u0007\r\u0000\u0000\u06a8\u06a9\u0007\n\u0000\u0000\u06a9"+ - "\u06aa\u0007\u0007\u0000\u0000\u06aa\u06ab\u0007\u0010\u0000\u0000\u06ab"+ - "\u06ac\u0005_\u0000\u0000\u06ac\u06ad\u0007\u0016\u0000\u0000\u06ad\u06ae"+ - "\u0007\t\u0000\u0000\u06ae\u06af\u0007\n\u0000\u0000\u06af\u06b0\u0007"+ - "\r\u0000\u0000\u06b0t\u0001\u0000\u0000\u0000\u06b1\u06b2\u0007\f\u0000"+ - "\u0000\u06b2\u06b3\u0007\n\u0000\u0000\u06b3\u06b4\u0007\u0019\u0000\u0000"+ - "\u06b4\u06b5\u0007\u0005\u0000\u0000\u06b5\u06b6\u0007\u0016\u0000\u0000"+ - "\u06b6\u06b7\u0007\u0006\u0000\u0000\u06b7\u06b8\u0007\u0010\u0000\u0000"+ - "\u06b8v\u0001\u0000\u0000\u0000\u06b9\u06ba\u0007\f\u0000\u0000\u06ba"+ - "\u06bb\u0007\n\u0000\u0000\u06bb\u06bc\u0007\u0019\u0000\u0000\u06bc\u06bd"+ - "\u0007\n\u0000\u0000\u06bd\u06be\u0007\r\u0000\u0000\u06be\u06bf\u0007"+ - "\r\u0000\u0000\u06bf\u06c0\u0007\u0005\u0000\u0000\u06c0\u06c1\u0007\u0012"+ - "\u0000\u0000\u06c1\u06c2\u0007\u0006\u0000\u0000\u06c2\u06c3\u0007\n\u0000"+ - "\u0000\u06c3x\u0001\u0000\u0000\u0000\u06c4\u06c5\u0007\f\u0000\u0000"+ - "\u06c5\u06c6\u0007\n\u0000\u0000\u06c6\u06c7\u0007\t\u0000\u0000\u06c7"+ - "\u06c8\u0007\u000e\u0000\u0000\u06c8z\u0001\u0000\u0000\u0000\u06c9\u06ca"+ - "\u0007\f\u0000\u0000\u06ca\u06cb\u0007\u0011\u0000\u0000\u06cb\u06cc\u0007"+ - "\t\u0000\u0000\u06cc\u06cd\u0007\u0010\u0000\u0000\u06cd\u06ce\u0007\u0011"+ - "\u0000\u0000\u06ce\u06cf\u0007\u0007\u0000\u0000\u06cf\u06d0\u0007\u000e"+ - "\u0000\u0000\u06d0\u06d1\u0007\u0010\u0000\u0000\u06d1|\u0001\u0000\u0000"+ - "\u0000\u06d2\u06d3\u0007\f\u0000\u0000\u06d3\u06d4\u0007\u0013\u0000\u0000"+ - "\u06d4~\u0001\u0000\u0000\u0000\u06d5\u06d6\u0007\n\u0000\u0000\u06d6"+ - "\u06d7\u0007\u0006\u0000\u0000\u06d7\u06d8\u0007\t\u0000\u0000\u06d8\u06d9"+ - "\u0007\n\u0000\u0000\u06d9\u0080\u0001\u0000\u0000\u0000\u06da\u06db\u0007"+ - "\n\u0000\u0000\u06db\u06dc\u0007\u001a\u0000\u0000\u06dc\u06dd\u0007\u000e"+ - "\u0000\u0000\u06dd\u06de\u0007\n\u0000\u0000\u06de\u06df\u0007\u0018\u0000"+ - "\u0000\u06df\u06e0\u0007\u0010\u0000\u0000\u06e0\u0082\u0001\u0000\u0000"+ - "\u0000\u06e1\u06e2\u0007\u0019\u0000\u0000\u06e2\u06e3\u0007\u0005\u0000"+ - "\u0000\u06e3\u06e4\u0007\u0006\u0000\u0000\u06e4\u06e5\u0007\t\u0000\u0000"+ - "\u06e5\u06e6\u0007\n\u0000\u0000\u06e6\u0084\u0001\u0000\u0000\u0000\u06e7"+ - "\u06e8\u0007\u0019\u0000\u0000\u06e8\u06e9\u0007\n\u0000\u0000\u06e9\u06ea"+ - "\u0007\u0010\u0000\u0000\u06ea\u06eb\u0007\u000e\u0000\u0000\u06eb\u06ec"+ - "\u0007\u0014\u0000\u0000\u06ec\u0086\u0001\u0000\u0000\u0000\u06ed\u06ee"+ - "\u0007\u0019\u0000\u0000\u06ee\u06ef\u0007\u0013\u0000\u0000\u06ef\u06f0"+ - "\u0007\r\u0000\u0000\u06f0\u0088\u0001\u0000\u0000\u0000\u06f1\u06f2\u0007"+ - "\u0019\u0000\u0000\u06f2\u06f3\u0007\u0013\u0000\u0000\u06f3\u06f4\u0007"+ - "\r\u0000\u0000\u06f4\u06f5\u0007\n\u0000\u0000\u06f5\u06f6\u0007\u0011"+ - "\u0000\u0000\u06f6\u06f7\u0007\u0017\u0000\u0000\u06f7\u06f8\u0007\u0007"+ - "\u0000\u0000\u06f8\u008a\u0001\u0000\u0000\u0000\u06f9\u06fa\u0007\u0019"+ - "\u0000\u0000\u06fa\u06fb\u0007\r\u0000\u0000\u06fb\u06fc\u0007\u0013\u0000"+ - "\u0000\u06fc\u06fd\u0007\u000f\u0000\u0000\u06fd\u008c\u0001\u0000\u0000"+ - "\u0000\u06fe\u06ff\u0007\u0017\u0000\u0000\u06ff\u0700\u0007\r\u0000\u0000"+ - "\u0700\u0701\u0007\u0005\u0000\u0000\u0701\u0702\u0007\u0007\u0000\u0000"+ - "\u0702\u0703\u0007\u0010\u0000\u0000\u0703\u008e\u0001\u0000\u0000\u0000"+ - "\u0704\u0705\u0007\u0017\u0000\u0000\u0705\u0706\u0007\r\u0000\u0000\u0706"+ - "\u0707\u0007\u0013\u0000\u0000\u0707\u0708\u0007\u0016\u0000\u0000\u0708"+ - "\u0709\u0007\u0018\u0000\u0000\u0709\u0090\u0001\u0000\u0000\u0000\u070a"+ - "\u070b\u0007\u0014\u0000\u0000\u070b\u070c\u0007\u0005\u0000\u0000\u070c"+ - "\u070d\u0007\u001b\u0000\u0000\u070d\u070e\u0007\u0011\u0000\u0000\u070e"+ - "\u070f\u0007\u0007\u0000\u0000\u070f\u0710\u0007\u0017\u0000\u0000\u0710"+ - "\u0092\u0001\u0000\u0000\u0000\u0711\u0712\u0007\u0011\u0000\u0000\u0712"+ - "\u0713\u0007\u0007\u0000\u0000\u0713\u0094\u0001\u0000\u0000\u0000\u0714"+ - "\u0715\u0007\u0011\u0000\u0000\u0715\u0716\u0007\u0007\u0000\u0000\u0716"+ - "\u0717\u0007\u0011\u0000\u0000\u0717\u0718\u0007\u0010\u0000\u0000\u0718"+ - "\u0719\u0007\u0011\u0000\u0000\u0719\u071a\u0007\u0005\u0000\u0000\u071a"+ - "\u071b\u0007\u0006\u0000\u0000\u071b\u071c\u0007\u0006\u0000\u0000\u071c"+ - "\u071d\u0007\b\u0000\u0000\u071d\u0096\u0001\u0000\u0000\u0000\u071e\u071f"+ - "\u0007\u0011\u0000\u0000\u071f\u0720\u0007\u0007\u0000\u0000\u0720\u0721"+ - "\u0007\u0010\u0000\u0000\u0721\u0722\u0007\n\u0000\u0000\u0722\u0723\u0007"+ - "\r\u0000\u0000\u0723\u0724\u0007\t\u0000\u0000\u0724\u0725\u0007\n\u0000"+ - "\u0000\u0725\u0726\u0007\u000e\u0000\u0000\u0726\u0727\u0007\u0010\u0000"+ - "\u0000\u0727\u0098\u0001\u0000\u0000\u0000\u0728\u0729\u0007\u0011\u0000"+ - "\u0000\u0729\u072a\u0007\u0007\u0000\u0000\u072a\u072b\u0007\u0010\u0000"+ - "\u0000\u072b\u072c\u0007\u0013\u0000\u0000\u072c\u009a\u0001\u0000\u0000"+ - "\u0000\u072d\u072e\u0007\u0006\u0000\u0000\u072e\u072f\u0007\u0005\u0000"+ - "\u0000\u072f\u0730\u0007\u0010\u0000\u0000\u0730\u0731\u0007\n\u0000\u0000"+ - "\u0731\u0732\u0007\r\u0000\u0000\u0732\u0733\u0007\u0005\u0000\u0000\u0733"+ - "\u0734\u0007\u0006\u0000\u0000\u0734\u009c\u0001\u0000\u0000\u0000\u0735"+ - "\u0736\u0007\u0006\u0000\u0000\u0736\u0737\u0007\n\u0000\u0000\u0737\u0738"+ - "\u0007\u0005\u0000\u0000\u0738\u0739\u0007\f\u0000\u0000\u0739\u073a\u0007"+ - "\u0011\u0000\u0000\u073a\u073b\u0007\u0007\u0000\u0000\u073b\u073c\u0007"+ - "\u0017\u0000\u0000\u073c\u009e\u0001\u0000\u0000\u0000\u073d\u073e\u0007"+ - "\u0006\u0000\u0000\u073e\u073f\u0007\u0011\u0000\u0000\u073f\u0740\u0007"+ - "\u000f\u0000\u0000\u0740\u0741\u0007\u0011\u0000\u0000\u0741\u0742\u0007"+ - "\u0010\u0000\u0000\u0742\u00a0\u0001\u0000\u0000\u0000\u0743\u0744\u0007"+ - "\u0006\u0000\u0000\u0744\u0745\u0007\u0013\u0000\u0000\u0745\u0746\u0007"+ - "\u000e\u0000\u0000\u0746\u0747\u0007\u0005\u0000\u0000\u0747\u0748\u0007"+ - "\u0006\u0000\u0000\u0748\u0749\u0007\u0010\u0000\u0000\u0749\u074a\u0007"+ - "\u0011\u0000\u0000\u074a\u074b\u0007\u000f\u0000\u0000\u074b\u074c\u0007"+ - "\n\u0000\u0000\u074c\u00a2\u0001\u0000\u0000\u0000\u074d\u074e\u0007\u0006"+ - "\u0000\u0000\u074e\u074f\u0007\u0013\u0000\u0000\u074f\u0750\u0007\u000e"+ - "\u0000\u0000\u0750\u0751\u0007\u0005\u0000\u0000\u0751\u0752\u0007\u0006"+ - "\u0000\u0000\u0752\u0753\u0007\u0010\u0000\u0000\u0753\u0754\u0007\u0011"+ - "\u0000\u0000\u0754\u0755\u0007\u000f\u0000\u0000\u0755\u0756\u0007\n\u0000"+ - "\u0000\u0756\u0757\u0007\t\u0000\u0000\u0757\u0758\u0007\u0010\u0000\u0000"+ - "\u0758\u0759\u0007\u0005\u0000\u0000\u0759\u075a\u0007\u000f\u0000\u0000"+ - "\u075a\u075b\u0007\u0018\u0000\u0000\u075b\u00a4\u0001\u0000\u0000\u0000"+ - "\u075c\u075d\u0007\u0007\u0000\u0000\u075d\u075e\u0007\u0013\u0000\u0000"+ - "\u075e\u075f\u0007\u0010\u0000\u0000\u075f\u00a6\u0001\u0000\u0000\u0000"+ - "\u0760\u0761\u0007\u0007\u0000\u0000\u0761\u0762\u0007\u0016\u0000\u0000"+ - "\u0762\u0763\u0007\u0006\u0000\u0000\u0763\u0764\u0007\u0006\u0000\u0000"+ - "\u0764\u00a8\u0001\u0000\u0000\u0000\u0765\u0766\u0007\u0013\u0000\u0000"+ - "\u0766\u0767\u0007\u0019\u0000\u0000\u0767\u0768\u0007\u0019\u0000\u0000"+ - "\u0768\u0769\u0007\t\u0000\u0000\u0769\u076a\u0007\n\u0000\u0000\u076a"+ - "\u076b\u0007\u0010\u0000\u0000\u076b\u00aa\u0001\u0000\u0000\u0000\u076c"+ - "\u076d\u0007\u0013\u0000\u0000\u076d\u076e\u0007\u0007\u0000\u0000\u076e"+ - "\u00ac\u0001\u0000\u0000\u0000\u076f\u0770\u0007\u0013\u0000\u0000\u0770"+ - "\u0771\u0007\u0007\u0000\u0000\u0771\u0772\u0007\u0006\u0000\u0000\u0772"+ - "\u0773\u0007\b\u0000\u0000\u0773\u00ae\u0001\u0000\u0000\u0000\u0774\u0775"+ - "\u0007\u0013\u0000\u0000\u0775\u0776\u0007\r\u0000\u0000\u0776\u00b0\u0001"+ - "\u0000\u0000\u0000\u0777\u0778\u0007\u0013\u0000\u0000\u0778\u0779\u0007"+ - "\r\u0000\u0000\u0779\u077a\u0007\f\u0000\u0000\u077a\u077b\u0007\n\u0000"+ - "\u0000\u077b\u077c\u0007\r\u0000\u0000\u077c\u00b2\u0001\u0000\u0000\u0000"+ - "\u077d\u077e\u0007\u0018\u0000\u0000\u077e\u077f\u0007\u0006\u0000\u0000"+ - "\u077f\u0780\u0007\u0005\u0000\u0000\u0780\u0781\u0007\u000e\u0000\u0000"+ - "\u0781\u0782\u0007\u0011\u0000\u0000\u0782\u0783\u0007\u0007\u0000\u0000"+ - "\u0783\u0784\u0007\u0017\u0000\u0000\u0784\u00b4\u0001\u0000\u0000\u0000"+ - "\u0785\u0786\u0007\u0018\u0000\u0000\u0786\u0787\u0007\r\u0000\u0000\u0787"+ - "\u0788\u0007\u0011\u0000\u0000\u0788\u0789\u0007\u000f\u0000\u0000\u0789"+ - "\u078a\u0007\u0005\u0000\u0000\u078a\u078b\u0007\r\u0000\u0000\u078b\u078c"+ - "\u0007\b\u0000\u0000\u078c\u00b6\u0001\u0000\u0000\u0000\u078d\u078e\u0007"+ - "\r\u0000\u0000\u078e\u078f\u0007\n\u0000\u0000\u078f\u0790\u0007\u0019"+ - "\u0000\u0000\u0790\u0791\u0007\n\u0000\u0000\u0791\u0792\u0007\r\u0000"+ - "\u0000\u0792\u0793\u0007\n\u0000\u0000\u0793\u0794\u0007\u0007\u0000\u0000"+ - "\u0794\u0795\u0007\u000e\u0000\u0000\u0795\u0796\u0007\n\u0000\u0000\u0796"+ - "\u0797\u0007\t\u0000\u0000\u0797\u00b8\u0001\u0000\u0000\u0000\u0798\u0799"+ - "\u0007\r\u0000\u0000\u0799\u079a\u0007\n\u0000\u0000\u079a\u079b\u0007"+ - "\u0010\u0000\u0000\u079b\u079c\u0007\u0016\u0000\u0000\u079c\u079d\u0007"+ - "\r\u0000\u0000\u079d\u079e\u0007\u0007\u0000\u0000\u079e\u079f\u0007\u0011"+ - "\u0000\u0000\u079f\u07a0\u0007\u0007\u0000\u0000\u07a0\u07a1\u0007\u0017"+ - "\u0000\u0000\u07a1\u00ba\u0001\u0000\u0000\u0000\u07a2\u07a3\u0007\t\u0000"+ - "\u0000\u07a3\u07a4\u0007\n\u0000\u0000\u07a4\u07a5\u0007\u0006\u0000\u0000"+ - "\u07a5\u07a6\u0007\n\u0000\u0000\u07a6\u07a7\u0007\u000e\u0000\u0000\u07a7"+ - "\u07a8\u0007\u0010\u0000\u0000\u07a8\u00bc\u0001\u0000\u0000\u0000\u07a9"+ - "\u07aa\u0007\t\u0000\u0000\u07aa\u07ab\u0007\n\u0000\u0000\u07ab\u07ac"+ - "\u0007\t\u0000\u0000\u07ac\u07ad\u0007\t\u0000\u0000\u07ad\u07ae\u0007"+ - "\u0011\u0000\u0000\u07ae\u07af\u0007\u0013\u0000\u0000\u07af\u07b0\u0007"+ - "\u0007\u0000\u0000\u07b0\u07b1\u0005_\u0000\u0000\u07b1\u07b2\u0007\u0016"+ - "\u0000\u0000\u07b2\u07b3\u0007\t\u0000\u0000\u07b3\u07b4\u0007\n\u0000"+ - "\u0000\u07b4\u07b5\u0007\r\u0000\u0000\u07b5\u00be\u0001\u0000\u0000\u0000"+ - "\u07b6\u07b7\u0007\t\u0000\u0000\u07b7\u07b8\u0007\u0013\u0000\u0000\u07b8"+ - "\u07b9\u0007\u000f\u0000\u0000\u07b9\u07ba\u0007\n\u0000\u0000\u07ba\u00c0"+ - "\u0001\u0000\u0000\u0000\u07bb\u07bc\u0007\t\u0000\u0000\u07bc\u07bd\u0007"+ - "\b\u0000\u0000\u07bd\u07be\u0007\u000f\u0000\u0000\u07be\u07bf\u0007\u000f"+ - "\u0000\u0000\u07bf\u07c0\u0007\n\u0000\u0000\u07c0\u07c1\u0007\u0010\u0000"+ - "\u0000\u07c1\u07c2\u0007\r\u0000\u0000\u07c2\u07c3\u0007\u0011\u0000\u0000"+ - "\u07c3\u07c4\u0007\u000e\u0000\u0000\u07c4\u00c2\u0001\u0000\u0000\u0000"+ - "\u07c5\u07c6\u0007\u0010\u0000\u0000\u07c6\u07c7\u0007\u0005\u0000\u0000"+ - "\u07c7\u07c8\u0007\u0012\u0000\u0000\u07c8\u07c9\u0007\u0006\u0000\u0000"+ - "\u07c9\u07ca\u0007\n\u0000\u0000\u07ca\u00c4\u0001\u0000\u0000\u0000\u07cb"+ - "\u07cc\u0007\u0010\u0000\u0000\u07cc\u07cd\u0007\u0014\u0000\u0000\u07cd"+ - "\u07ce\u0007\n\u0000\u0000\u07ce\u07cf\u0007\u0007\u0000\u0000\u07cf\u00c6"+ - "\u0001\u0000\u0000\u0000\u07d0\u07d1\u0007\u0010\u0000\u0000\u07d1\u07d2"+ - "\u0007\u0013\u0000\u0000\u07d2\u00c8\u0001\u0000\u0000\u0000\u07d3\u07d4"+ - "\u0007\u0010\u0000\u0000\u07d4\u07d5\u0007\u0013\u0000\u0000\u07d5\u07d6"+ - "\u0007\u0018\u0000\u0000\u07d6\u07d7\u0007\u0011\u0000\u0000\u07d7\u07d8"+ - "\u0007\u000e\u0000\u0000\u07d8\u00ca\u0001\u0000\u0000\u0000\u07d9\u07da"+ - "\u0007\t\u0000\u0000\u07da\u07db\u0007\u0010\u0000\u0000\u07db\u07dc\u0007"+ - "\r\u0000\u0000\u07dc\u07dd\u0007\n\u0000\u0000\u07dd\u07de\u0007\u0005"+ - "\u0000\u0000\u07de\u07df\u0007\u000f\u0000\u0000\u07df\u00cc\u0001\u0000"+ - "\u0000\u0000\u07e0\u07e1\u0007\u0010\u0000\u0000\u07e1\u07e2\u0007\r\u0000"+ - "\u0000\u07e2\u07e3\u0007\u0005\u0000\u0000\u07e3\u07e4\u0007\u0011\u0000"+ - "\u0000\u07e4\u07e5\u0007\u0006\u0000\u0000\u07e5\u07e6\u0007\u0011\u0000"+ - "\u0000\u07e6\u07e7\u0007\u0007\u0000\u0000\u07e7\u07e8\u0007\u0017\u0000"+ - "\u0000\u07e8\u00ce\u0001\u0000\u0000\u0000\u07e9\u07ea\u0007\u0010\u0000"+ - "\u0000\u07ea\u07eb\u0007\r\u0000\u0000\u07eb\u07ec\u0007\u0016\u0000\u0000"+ - "\u07ec\u07ed\u0007\n\u0000\u0000\u07ed\u00d0\u0001\u0000\u0000\u0000\u07ee"+ - "\u07ef\u0007\u0016\u0000\u0000\u07ef\u07f0\u0007\u0007\u0000\u0000\u07f0"+ - "\u07f1\u0007\u0011\u0000\u0000\u07f1\u07f2\u0007\u0013\u0000\u0000\u07f2"+ - "\u07f3\u0007\u0007\u0000\u0000\u07f3\u00d2\u0001\u0000\u0000\u0000\u07f4"+ - "\u07f5\u0007\u0016\u0000\u0000\u07f5\u07f6\u0007\u0007\u0000\u0000\u07f6"+ - "\u07f7\u0007\u0011\u0000\u0000\u07f7\u07f8\u0007\u001c\u0000\u0000\u07f8"+ - "\u07f9\u0007\u0016\u0000\u0000\u07f9\u07fa\u0007\n\u0000\u0000\u07fa\u00d4"+ - "\u0001\u0000\u0000\u0000\u07fb\u07fc\u0007\u0016\u0000\u0000\u07fc\u07fd"+ - "\u0007\t\u0000\u0000\u07fd\u07fe\u0007\n\u0000\u0000\u07fe\u07ff\u0007"+ - "\r\u0000\u0000\u07ff\u00d6\u0001\u0000\u0000\u0000\u0800\u0801\u0007\u0016"+ - "\u0000\u0000\u0801\u0802\u0007\t\u0000\u0000\u0802\u0803\u0007\u0011\u0000"+ - "\u0000\u0803\u0804\u0007\u0007\u0000\u0000\u0804\u0805\u0007\u0017\u0000"+ - "\u0000\u0805\u00d8\u0001\u0000\u0000\u0000\u0806\u0807\u0007\u001b\u0000"+ - "\u0000\u0807\u0808\u0007\u0005\u0000\u0000\u0808\u0809\u0007\r\u0000\u0000"+ - "\u0809\u080a\u0007\u0011\u0000\u0000\u080a\u080b\u0007\u0005\u0000\u0000"+ - "\u080b\u080c\u0007\f\u0000\u0000\u080c\u080d\u0007\u0011\u0000\u0000\u080d"+ - "\u080e\u0007\u000e\u0000\u0000\u080e\u00da\u0001\u0000\u0000\u0000\u080f"+ - "\u0810\u0007\u001d\u0000\u0000\u0810\u0811\u0007\u0014\u0000\u0000\u0811"+ - "\u0812\u0007\n\u0000\u0000\u0812\u0813\u0007\u0007\u0000\u0000\u0813\u00dc"+ - "\u0001\u0000\u0000\u0000\u0814\u0815\u0007\u001d\u0000\u0000\u0815\u0816"+ - "\u0007\u0014\u0000\u0000\u0816\u0817\u0007\n\u0000\u0000\u0817\u0818\u0007"+ - "\r\u0000\u0000\u0818\u0819\u0007\n\u0000\u0000\u0819\u00de\u0001\u0000"+ - "\u0000\u0000\u081a\u081b\u0007\u001d\u0000\u0000\u081b\u081c\u0007\u0011"+ - "\u0000\u0000\u081c\u081d\u0007\u0007\u0000\u0000\u081d\u081e\u0007\f\u0000"+ - "\u0000\u081e\u081f\u0007\u0013\u0000\u0000\u081f\u0820\u0007\u001d\u0000"+ - "\u0000\u0820\u00e0\u0001\u0000\u0000\u0000\u0821\u0822\u0007\u001d\u0000"+ - "\u0000\u0822\u0823\u0007\u0011\u0000\u0000\u0823\u0824\u0007\u0010\u0000"+ - "\u0000\u0824\u0825\u0007\u0014\u0000\u0000\u0825\u00e2\u0001\u0000\u0000"+ - "\u0000\u0826\u0827\u0007\u0005\u0000\u0000\u0827\u0828\u0007\u0016\u0000"+ - "\u0000\u0828\u0829\u0007\u0010\u0000\u0000\u0829\u082a\u0007\u0014\u0000"+ - "\u0000\u082a\u082b\u0007\u0013\u0000\u0000\u082b\u082c\u0007\r\u0000\u0000"+ - "\u082c\u082d\u0007\u0011\u0000\u0000\u082d\u082e\u0007\u000b\u0000\u0000"+ - "\u082e\u082f\u0007\u0005\u0000\u0000\u082f\u0830\u0007\u0010\u0000\u0000"+ - "\u0830\u0831\u0007\u0011\u0000\u0000\u0831\u0832\u0007\u0013\u0000\u0000"+ - "\u0832\u0833\u0007\u0007\u0000\u0000\u0833\u00e4\u0001\u0000\u0000\u0000"+ - "\u0834\u0835\u0007\u0012\u0000\u0000\u0835\u0836\u0007\u0011\u0000\u0000"+ - "\u0836\u0837\u0007\u0007\u0000\u0000\u0837\u0838\u0007\u0005\u0000\u0000"+ - "\u0838\u0839\u0007\r\u0000\u0000\u0839\u083a\u0007\b\u0000\u0000\u083a"+ - "\u00e6\u0001\u0000\u0000\u0000\u083b\u083c\u0007\u000e\u0000\u0000\u083c"+ - "\u083d\u0007\u0013\u0000\u0000\u083d\u083e\u0007\u0006\u0000\u0000\u083e"+ - "\u083f\u0007\u0006\u0000\u0000\u083f\u0840\u0007\u0005\u0000\u0000\u0840"+ - "\u0841\u0007\u0010\u0000\u0000\u0841\u0842\u0007\u0011\u0000\u0000\u0842"+ - "\u0843\u0007\u0013\u0000\u0000\u0843\u0844\u0007\u0007\u0000\u0000\u0844"+ - "\u00e8\u0001\u0000\u0000\u0000\u0845\u0846\u0007\u000e\u0000\u0000\u0846"+ - "\u0847\u0007\u0013\u0000\u0000\u0847\u0848\u0007\u0007\u0000\u0000\u0848"+ - "\u0849\u0007\u000e\u0000\u0000\u0849\u084a\u0007\u0016\u0000\u0000\u084a"+ - "\u084b\u0007\r\u0000\u0000\u084b\u084c\u0007\r\u0000\u0000\u084c\u084d"+ - "\u0007\n\u0000\u0000\u084d\u084e\u0007\u0007\u0000\u0000\u084e\u084f\u0007"+ - "\u0010\u0000\u0000\u084f\u0850\u0007\u0006\u0000\u0000\u0850\u0851\u0007"+ - "\b\u0000\u0000\u0851\u00ea\u0001\u0000\u0000\u0000\u0852\u0853\u0007\u000e"+ - "\u0000\u0000\u0853\u0854\u0007\r\u0000\u0000\u0854\u0855\u0007\u0013\u0000"+ - "\u0000\u0855\u0856\u0007\t\u0000\u0000\u0856\u0857\u0007\t\u0000\u0000"+ - "\u0857\u00ec\u0001\u0000\u0000\u0000\u0858\u0859\u0007\u000e\u0000\u0000"+ - "\u0859\u085a\u0007\u0016\u0000\u0000\u085a\u085b\u0007\r\u0000\u0000\u085b"+ - "\u085c\u0007\r\u0000\u0000\u085c\u085d\u0007\n\u0000\u0000\u085d\u085e"+ - "\u0007\u0007\u0000\u0000\u085e\u085f\u0007\u0010\u0000\u0000\u085f\u0860"+ - "\u0005_\u0000\u0000\u0860\u0861\u0007\t\u0000\u0000\u0861\u0862\u0007"+ - "\u000e\u0000\u0000\u0862\u0863\u0007\u0014\u0000\u0000\u0863\u0864\u0007"+ - "\n\u0000\u0000\u0864\u0865\u0007\u000f\u0000\u0000\u0865\u0866\u0007\u0005"+ - "\u0000\u0000\u0866\u00ee\u0001\u0000\u0000\u0000\u0867\u0868\u0007\u0019"+ - "\u0000\u0000\u0868\u0869\u0007\r\u0000\u0000\u0869\u086a\u0007\n\u0000"+ - "\u0000\u086a\u086b\u0007\n\u0000\u0000\u086b\u086c\u0007\u000b\u0000\u0000"+ - "\u086c\u086d\u0007\n\u0000\u0000\u086d\u00f0\u0001\u0000\u0000\u0000\u086e"+ - "\u086f\u0007\u0019\u0000\u0000\u086f\u0870\u0007\u0016\u0000\u0000\u0870"+ - "\u0871\u0007\u0006\u0000\u0000\u0871\u0872\u0007\u0006\u0000\u0000\u0872"+ - "\u00f2\u0001\u0000\u0000\u0000\u0873\u0874\u0007\u0011\u0000\u0000\u0874"+ - "\u0875\u0007\u0006\u0000\u0000\u0875\u0876\u0007\u0011\u0000\u0000\u0876"+ - "\u0877\u0007\u0015\u0000\u0000\u0877\u0878\u0007\n\u0000\u0000\u0878\u00f4"+ - "\u0001\u0000\u0000\u0000\u0879\u087a\u0007\u0011\u0000\u0000\u087a\u087b"+ - "\u0007\u0007\u0000\u0000\u087b\u087c\u0007\u0007\u0000\u0000\u087c\u087d"+ - "\u0007\n\u0000\u0000\u087d\u087e\u0007\r\u0000\u0000\u087e\u00f6\u0001"+ - "\u0000\u0000\u0000\u087f\u0880\u0007\u0011\u0000\u0000\u0880\u0881\u0007"+ - "\t\u0000\u0000\u0881\u00f8\u0001\u0000\u0000\u0000\u0882\u0883\u0007\u0011"+ - "\u0000\u0000\u0883\u0884\u0007\t\u0000\u0000\u0884\u0885\u0007\u0007\u0000"+ - "\u0000\u0885\u0886\u0007\u0016\u0000\u0000\u0886\u0887\u0007\u0006\u0000"+ - "\u0000\u0887\u0888\u0007\u0006\u0000\u0000\u0888\u00fa\u0001\u0000\u0000"+ - "\u0000\u0889\u088a\u0007\u001e\u0000\u0000\u088a\u088b\u0007\u0013\u0000"+ - "\u0000\u088b\u088c\u0007\u0011\u0000\u0000\u088c\u088d\u0007\u0007\u0000"+ - "\u0000\u088d\u00fc\u0001\u0000\u0000\u0000\u088e\u088f\u0007\u0006\u0000"+ - "\u0000\u088f\u0890\u0007\n\u0000\u0000\u0890\u0891\u0007\u0019\u0000\u0000"+ - "\u0891\u0892\u0007\u0010\u0000\u0000\u0892\u00fe\u0001\u0000\u0000\u0000"+ - "\u0893\u0894\u0007\u0006\u0000\u0000\u0894\u0895\u0007\u0011\u0000\u0000"+ - "\u0895\u0896\u0007\u0015\u0000\u0000\u0896\u0897\u0007\n\u0000\u0000\u0897"+ - "\u0100\u0001\u0000\u0000\u0000\u0898\u0899\u0007\u0007\u0000\u0000\u0899"+ - "\u089a\u0007\u0005\u0000\u0000\u089a\u089b\u0007\u0010\u0000\u0000\u089b"+ - "\u089c\u0007\u0016\u0000\u0000\u089c\u089d\u0007\r\u0000\u0000\u089d\u089e"+ - "\u0007\u0005\u0000\u0000\u089e\u089f\u0007\u0006\u0000\u0000\u089f\u0102"+ - "\u0001\u0000\u0000\u0000\u08a0\u08a1\u0007\u0007\u0000\u0000\u08a1\u08a2"+ - "\u0007\u0013\u0000\u0000\u08a2\u08a3\u0007\u0010\u0000\u0000\u08a3\u08a4"+ - "\u0007\u0007\u0000\u0000\u08a4\u08a5\u0007\u0016\u0000\u0000\u08a5\u08a6"+ - "\u0007\u0006\u0000\u0000\u08a6\u08a7\u0007\u0006\u0000\u0000\u08a7\u0104"+ - "\u0001\u0000\u0000\u0000\u08a8\u08a9\u0007\u0013\u0000\u0000\u08a9\u08aa"+ - "\u0007\u0016\u0000\u0000\u08aa\u08ab\u0007\u0010\u0000\u0000\u08ab\u08ac"+ - "\u0007\n\u0000\u0000\u08ac\u08ad\u0007\r\u0000\u0000\u08ad\u0106\u0001"+ - "\u0000\u0000\u0000\u08ae\u08af\u0007\u0013\u0000\u0000\u08af\u08b0\u0007"+ - "\u001b\u0000\u0000\u08b0\u08b1\u0007\n\u0000\u0000\u08b1\u08b2\u0007\r"+ - "\u0000\u0000\u08b2\u0108\u0001\u0000\u0000\u0000\u08b3\u08b4\u0007\u0013"+ - "\u0000\u0000\u08b4\u08b5\u0007\u001b\u0000\u0000\u08b5\u08b6\u0007\n\u0000"+ - "\u0000\u08b6\u08b7\u0007\r\u0000\u0000\u08b7\u08b8\u0007\u0006\u0000\u0000"+ - "\u08b8\u08b9\u0007\u0005\u0000\u0000\u08b9\u08ba\u0007\u0018\u0000\u0000"+ - "\u08ba\u08bb\u0007\t\u0000\u0000\u08bb\u010a\u0001\u0000\u0000\u0000\u08bc"+ - "\u08bd\u0007\r\u0000\u0000\u08bd\u08be\u0007\u0011\u0000\u0000\u08be\u08bf"+ - "\u0007\u0017\u0000\u0000\u08bf\u08c0\u0007\u0014\u0000\u0000\u08c0\u08c1"+ - "\u0007\u0010\u0000\u0000\u08c1\u010c\u0001\u0000\u0000\u0000\u08c2\u08c3"+ - "\u0007\t\u0000\u0000\u08c3\u08c4\u0007\u0011\u0000\u0000\u08c4\u08c5\u0007"+ - "\u000f\u0000\u0000\u08c5\u08c6\u0007\u0011\u0000\u0000\u08c6\u08c7\u0007"+ - "\u0006\u0000\u0000\u08c7\u08c8\u0007\u0005\u0000\u0000\u08c8\u08c9\u0007"+ - "\r\u0000\u0000\u08c9\u010e\u0001\u0000\u0000\u0000\u08ca\u08cb\u0007\u001b"+ - "\u0000\u0000\u08cb\u08cc\u0007\n\u0000\u0000\u08cc\u08cd\u0007\r\u0000"+ - "\u0000\u08cd\u08ce\u0007\u0012\u0000\u0000\u08ce\u08cf\u0007\u0013\u0000"+ - "\u0000\u08cf\u08d0\u0007\t\u0000\u0000\u08d0\u08d1\u0007\n\u0000\u0000"+ - "\u08d1\u0110\u0001\u0000\u0000\u0000\u08d2\u08d3\u0007\u0005\u0000\u0000"+ - "\u08d3\u08d4\u0007\u0012\u0000\u0000\u08d4\u08d5\u0007\u0013\u0000\u0000"+ - "\u08d5\u08d6\u0007\r\u0000\u0000\u08d6\u08d7\u0007\u0010\u0000\u0000\u08d7"+ - "\u0112\u0001\u0000\u0000\u0000\u08d8\u08d9\u0007\u0005\u0000\u0000\u08d9"+ - "\u08da\u0007\u0012\u0000\u0000\u08da\u08db\u0007\t\u0000\u0000\u08db\u08dc"+ - "\u0007\u0013\u0000\u0000\u08dc\u08dd\u0007\u0006\u0000\u0000\u08dd\u08de"+ - "\u0007\u0016\u0000\u0000\u08de\u08df\u0007\u0010\u0000\u0000\u08df\u08e0"+ - "\u0007\n\u0000\u0000\u08e0\u0114\u0001\u0000\u0000\u0000\u08e1\u08e2\u0007"+ - "\u0005\u0000\u0000\u08e2\u08e3\u0007\u000e\u0000\u0000\u08e3\u08e4\u0007"+ - "\u000e\u0000\u0000\u08e4\u08e5\u0007\n\u0000\u0000\u08e5\u08e6\u0007\t"+ - "\u0000\u0000\u08e6\u08e7\u0007\t\u0000\u0000\u08e7\u0116\u0001\u0000\u0000"+ - "\u0000\u08e8\u08e9\u0007\u0005\u0000\u0000\u08e9\u08ea\u0007\u000e\u0000"+ - "\u0000\u08ea\u08eb\u0007\u0010\u0000\u0000\u08eb\u08ec\u0007\u0011\u0000"+ - "\u0000\u08ec\u08ed\u0007\u0013\u0000\u0000\u08ed\u08ee\u0007\u0007\u0000"+ - "\u0000\u08ee\u0118\u0001\u0000\u0000\u0000\u08ef\u08f0\u0007\u0005\u0000"+ - "\u0000\u08f0\u08f1\u0007\f\u0000\u0000\u08f1\u08f2\u0007\f\u0000\u0000"+ - "\u08f2\u011a\u0001\u0000\u0000\u0000\u08f3\u08f4\u0007\u0005\u0000\u0000"+ - "\u08f4\u08f5\u0007\f\u0000\u0000\u08f5\u08f6\u0007\u000f\u0000\u0000\u08f6"+ - "\u08f7\u0007\u0011\u0000\u0000\u08f7\u08f8\u0007\u0007\u0000\u0000\u08f8"+ - "\u011c\u0001\u0000\u0000\u0000\u08f9\u08fa\u0007\u0005\u0000\u0000\u08fa"+ - "\u08fb\u0007\u0019\u0000\u0000\u08fb\u08fc\u0007\u0010\u0000\u0000\u08fc"+ - "\u08fd\u0007\n\u0000\u0000\u08fd\u08fe\u0007\r\u0000\u0000\u08fe\u011e"+ - "\u0001\u0000\u0000\u0000\u08ff\u0900\u0007\u0005\u0000\u0000\u0900\u0901"+ - "\u0007\u0017\u0000\u0000\u0901\u0902\u0007\u0017\u0000\u0000\u0902\u0903"+ - "\u0007\r\u0000\u0000\u0903\u0904\u0007\n\u0000\u0000\u0904\u0905\u0007"+ - "\u0017\u0000\u0000\u0905\u0906\u0007\u0005\u0000\u0000\u0906\u0907\u0007"+ - "\u0010\u0000\u0000\u0907\u0908\u0007\n\u0000\u0000\u0908\u0120\u0001\u0000"+ - "\u0000\u0000\u0909\u090a\u0007\u0005\u0000\u0000\u090a\u090b\u0007\u0006"+ - "\u0000\u0000\u090b\u090c\u0007\t\u0000\u0000\u090c\u090d\u0007\u0013\u0000"+ - "\u0000\u090d\u0122\u0001\u0000\u0000\u0000\u090e\u090f\u0007\u0005\u0000"+ - "\u0000\u090f\u0910\u0007\u0006\u0000\u0000\u0910\u0911\u0007\u0010\u0000"+ - "\u0000\u0911\u0912\u0007\n\u0000\u0000\u0912\u0913\u0007\r\u0000\u0000"+ - "\u0913\u0124\u0001\u0000\u0000\u0000\u0914\u0915\u0007\u0005\u0000\u0000"+ - "\u0915\u0916\u0007\u0006\u0000\u0000\u0916\u0917\u0007\u001d\u0000\u0000"+ - "\u0917\u0918\u0007\u0005\u0000\u0000\u0918\u0919\u0007\b\u0000\u0000\u0919"+ - "\u091a\u0007\t\u0000\u0000\u091a\u0126\u0001\u0000\u0000\u0000\u091b\u091c"+ - "\u0007\u0005\u0000\u0000\u091c\u091d\u0007\t\u0000\u0000\u091d\u091e\u0007"+ - "\t\u0000\u0000\u091e\u091f\u0007\n\u0000\u0000\u091f\u0920\u0007\r\u0000"+ - "\u0000\u0920\u0921\u0007\u0010\u0000\u0000\u0921\u0922\u0007\u0011\u0000"+ - "\u0000\u0922\u0923\u0007\u0013\u0000\u0000\u0923\u0924\u0007\u0007\u0000"+ - "\u0000\u0924\u0128\u0001\u0000\u0000\u0000\u0925\u0926\u0007\u0005\u0000"+ - "\u0000\u0926\u0927\u0007\t\u0000\u0000\u0927\u0928\u0007\t\u0000\u0000"+ - "\u0928\u0929\u0007\u0011\u0000\u0000\u0929\u092a\u0007\u0017\u0000\u0000"+ - "\u092a\u092b\u0007\u0007\u0000\u0000\u092b\u092c\u0007\u000f\u0000\u0000"+ - "\u092c\u092d\u0007\n\u0000\u0000\u092d\u092e\u0007\u0007\u0000\u0000\u092e"+ - "\u092f\u0007\u0010\u0000\u0000\u092f\u012a\u0001\u0000\u0000\u0000\u0930"+ - "\u0931\u0007\u0005\u0000\u0000\u0931\u0932\u0007\u0010\u0000\u0000\u0932"+ - "\u012c\u0001\u0000\u0000\u0000\u0933\u0934\u0007\u0005\u0000\u0000\u0934"+ - "\u0935\u0007\u0010\u0000\u0000\u0935\u0936\u0007\u0010\u0000\u0000\u0936"+ - "\u0937\u0007\r\u0000\u0000\u0937\u0938\u0007\u0011\u0000\u0000\u0938\u0939"+ - "\u0007\u0012\u0000\u0000\u0939\u093a\u0007\u0016\u0000\u0000\u093a\u093b"+ - "\u0007\u0010\u0000\u0000\u093b\u093c\u0007\n\u0000\u0000\u093c\u012e\u0001"+ - "\u0000\u0000\u0000\u093d\u093e\u0007\u0012\u0000\u0000\u093e\u093f\u0007"+ - "\u0005\u0000\u0000\u093f\u0940\u0007\u000e\u0000\u0000\u0940\u0941\u0007"+ - "\u0015\u0000\u0000\u0941\u0942\u0007\u001d\u0000\u0000\u0942\u0943\u0007"+ - "\u0005\u0000\u0000\u0943\u0944\u0007\r\u0000\u0000\u0944\u0945\u0007\f"+ - "\u0000\u0000\u0945\u0130\u0001\u0000\u0000\u0000\u0946\u0947\u0007\u0012"+ - "\u0000\u0000\u0947\u0948\u0007\n\u0000\u0000\u0948\u0949\u0007\u0019\u0000"+ - "\u0000\u0949\u094a\u0007\u0013\u0000\u0000\u094a\u094b\u0007\r\u0000\u0000"+ - "\u094b\u094c\u0007\n\u0000\u0000\u094c\u0132\u0001\u0000\u0000\u0000\u094d"+ - "\u094e\u0007\u0012\u0000\u0000\u094e\u094f\u0007\n\u0000\u0000\u094f\u0950"+ - "\u0007\u0017\u0000\u0000\u0950\u0951\u0007\u0011\u0000\u0000\u0951\u0952"+ - "\u0007\u0007\u0000\u0000\u0952\u0134\u0001\u0000\u0000\u0000\u0953\u0954"+ - "\u0007\u0012\u0000\u0000\u0954\u0955\u0007\b\u0000\u0000\u0955\u0136\u0001"+ - "\u0000\u0000\u0000\u0956\u0957\u0007\u000e\u0000\u0000\u0957\u0958\u0007"+ - "\u0005\u0000\u0000\u0958\u0959\u0007\u000e\u0000\u0000\u0959\u095a\u0007"+ - "\u0014\u0000\u0000\u095a\u095b\u0007\n\u0000\u0000\u095b\u0138\u0001\u0000"+ - "\u0000\u0000\u095c\u095d\u0007\u000e\u0000\u0000\u095d\u095e\u0007\u0005"+ - "\u0000\u0000\u095e\u095f\u0007\u0006\u0000\u0000\u095f\u0960\u0007\u0006"+ - "\u0000\u0000\u0960\u0961\u0007\n\u0000\u0000\u0961\u0962\u0007\f\u0000"+ - "\u0000\u0962\u013a\u0001\u0000\u0000\u0000\u0963\u0964\u0007\u000e\u0000"+ - "\u0000\u0964\u0965\u0007\u0005\u0000\u0000\u0965\u0966\u0007\t\u0000\u0000"+ - "\u0966\u0967\u0007\u000e\u0000\u0000\u0967\u0968\u0007\u0005\u0000\u0000"+ - "\u0968\u0969\u0007\f\u0000\u0000\u0969\u096a\u0007\n\u0000\u0000\u096a"+ - "\u013c\u0001\u0000\u0000\u0000\u096b\u096c\u0007\u000e\u0000\u0000\u096c"+ - "\u096d\u0007\u0005\u0000\u0000\u096d\u096e\u0007\t\u0000\u0000\u096e\u096f"+ - "\u0007\u000e\u0000\u0000\u096f\u0970\u0007\u0005\u0000\u0000\u0970\u0971"+ - "\u0007\f\u0000\u0000\u0971\u0972\u0007\n\u0000\u0000\u0972\u0973\u0007"+ - "\f\u0000\u0000\u0973\u013e\u0001\u0000\u0000\u0000\u0974\u0975\u0007\u000e"+ - "\u0000\u0000\u0975\u0976\u0007\u0005\u0000\u0000\u0976\u0977\u0007\u0010"+ - "\u0000\u0000\u0977\u0978\u0007\u0005\u0000\u0000\u0978\u0979\u0007\u0006"+ - "\u0000\u0000\u0979\u097a\u0007\u0013\u0000\u0000\u097a\u097b\u0007\u0017"+ - "\u0000\u0000\u097b\u0140\u0001\u0000\u0000\u0000\u097c\u097d\u0007\u000e"+ - "\u0000\u0000\u097d\u097e\u0007\u0014\u0000\u0000\u097e\u097f\u0007\u0005"+ - "\u0000\u0000\u097f\u0980\u0007\u0011\u0000\u0000\u0980\u0981\u0007\u0007"+ - "\u0000\u0000\u0981\u0142\u0001\u0000\u0000\u0000\u0982\u0983\u0007\u000e"+ - "\u0000\u0000\u0983\u0984\u0007\u0014\u0000\u0000\u0984\u0985\u0007\u0005"+ - "\u0000\u0000\u0985\u0986\u0007\r\u0000\u0000\u0986\u0987\u0007\u0005\u0000"+ - "\u0000\u0987\u0988\u0007\u000e\u0000\u0000\u0988\u0989\u0007\u0010\u0000"+ - "\u0000\u0989\u098a\u0007\n\u0000\u0000\u098a\u098b\u0007\r\u0000\u0000"+ - "\u098b\u098c\u0007\u0011\u0000\u0000\u098c\u098d\u0007\t\u0000\u0000\u098d"+ - "\u098e\u0007\u0010\u0000\u0000\u098e\u098f\u0007\u0011\u0000\u0000\u098f"+ - "\u0990\u0007\u000e\u0000\u0000\u0990\u0991\u0007\t\u0000\u0000\u0991\u0144"+ - "\u0001\u0000\u0000\u0000\u0992\u0993\u0007\u000e\u0000\u0000\u0993\u0994"+ - "\u0007\u0014\u0000\u0000\u0994\u0995\u0007\n\u0000\u0000\u0995\u0996\u0007"+ - "\u000e\u0000\u0000\u0996\u0997\u0007\u0015\u0000\u0000\u0997\u0998\u0007"+ - "\u0018\u0000\u0000\u0998\u0999\u0007\u0013\u0000\u0000\u0999\u099a\u0007"+ - "\u0011\u0000\u0000\u099a\u099b\u0007\u0007\u0000\u0000\u099b\u099c\u0007"+ - "\u0010\u0000\u0000\u099c\u0146\u0001\u0000\u0000\u0000\u099d\u099e\u0007"+ - "\u000e\u0000\u0000\u099e\u099f\u0007\u0006\u0000\u0000\u099f\u09a0\u0007"+ - "\u0005\u0000\u0000\u09a0\u09a1\u0007\t\u0000\u0000\u09a1\u09a2\u0007\t"+ - "\u0000\u0000\u09a2\u0148\u0001\u0000\u0000\u0000\u09a3\u09a4\u0007\u000e"+ - "\u0000\u0000\u09a4\u09a5\u0007\u0006\u0000\u0000\u09a5\u09a6\u0007\u0013"+ - "\u0000\u0000\u09a6\u09a7\u0007\t\u0000\u0000\u09a7\u09a8\u0007\n\u0000"+ - "\u0000\u09a8\u014a\u0001\u0000\u0000\u0000\u09a9\u09aa\u0007\u000e\u0000"+ - "\u0000\u09aa\u09ab\u0007\u0006\u0000\u0000\u09ab\u09ac\u0007\u0016\u0000"+ - "\u0000\u09ac\u09ad\u0007\t\u0000\u0000\u09ad\u09ae\u0007\u0010\u0000\u0000"+ - "\u09ae\u09af\u0007\n\u0000\u0000\u09af\u09b0\u0007\r\u0000\u0000\u09b0"+ - "\u014c\u0001\u0000\u0000\u0000\u09b1\u09b2\u0007\u000e\u0000\u0000\u09b2"+ - "\u09b3\u0007\u0013\u0000\u0000\u09b3\u09b4\u0007\u000f\u0000\u0000\u09b4"+ - "\u09b5\u0007\u000f\u0000\u0000\u09b5\u09b6\u0007\n\u0000\u0000\u09b6\u09b7"+ - "\u0007\u0007\u0000\u0000\u09b7\u09b8\u0007\u0010\u0000\u0000\u09b8\u014e"+ - "\u0001\u0000\u0000\u0000\u09b9\u09ba\u0007\u000e\u0000\u0000\u09ba\u09bb"+ - "\u0007\u0013\u0000\u0000\u09bb\u09bc\u0007\u000f\u0000\u0000\u09bc\u09bd"+ - "\u0007\u000f\u0000\u0000\u09bd\u09be\u0007\n\u0000\u0000\u09be\u09bf\u0007"+ - "\u0007\u0000\u0000\u09bf\u09c0\u0007\u0010\u0000\u0000\u09c0\u09c1\u0007"+ - "\t\u0000\u0000\u09c1\u0150\u0001\u0000\u0000\u0000\u09c2\u09c3\u0007\u000e"+ - "\u0000\u0000\u09c3\u09c4\u0007\u0013\u0000\u0000\u09c4\u09c5\u0007\u000f"+ - "\u0000\u0000\u09c5\u09c6\u0007\u000f\u0000\u0000\u09c6\u09c7\u0007\u0011"+ - "\u0000\u0000\u09c7\u09c8\u0007\u0010\u0000\u0000\u09c8\u0152\u0001\u0000"+ - "\u0000\u0000\u09c9\u09ca\u0007\u000e\u0000\u0000\u09ca\u09cb\u0007\u0013"+ - "\u0000\u0000\u09cb\u09cc\u0007\u000f\u0000\u0000\u09cc\u09cd\u0007\u000f"+ - "\u0000\u0000\u09cd\u09ce\u0007\u0011\u0000\u0000\u09ce\u09cf\u0007\u0010"+ - "\u0000\u0000\u09cf\u09d0\u0007\u0010\u0000\u0000\u09d0\u09d1\u0007\n\u0000"+ - "\u0000\u09d1\u09d2\u0007\f\u0000\u0000\u09d2\u0154\u0001\u0000\u0000\u0000"+ - "\u09d3\u09d4\u0007\u000e\u0000\u0000\u09d4\u09d5\u0007\u0013\u0000\u0000"+ - "\u09d5\u09d6\u0007\u0007\u0000\u0000\u09d6\u09d7\u0007\u0019\u0000\u0000"+ - "\u09d7\u09d8\u0007\u0011\u0000\u0000\u09d8\u09d9\u0007\u0017\u0000\u0000"+ - "\u09d9\u09da\u0007\u0016\u0000\u0000\u09da\u09db\u0007\r\u0000\u0000\u09db"+ - "\u09dc\u0007\u0005\u0000\u0000\u09dc\u09dd\u0007\u0010\u0000\u0000\u09dd"+ - "\u09de\u0007\u0011\u0000\u0000\u09de\u09df\u0007\u0013\u0000\u0000\u09df"+ - "\u09e0\u0007\u0007\u0000\u0000\u09e0\u0156\u0001\u0000\u0000\u0000\u09e1"+ - "\u09e2\u0007\u000e\u0000\u0000\u09e2\u09e3\u0007\u0013\u0000\u0000\u09e3"+ - "\u09e4\u0007\u0007\u0000\u0000\u09e4\u09e5\u0007\u0007\u0000\u0000\u09e5"+ - "\u09e6\u0007\n\u0000\u0000\u09e6\u09e7\u0007\u000e\u0000\u0000\u09e7\u09e8"+ - "\u0007\u0010\u0000\u0000\u09e8\u09e9\u0007\u0011\u0000\u0000\u09e9\u09ea"+ - "\u0007\u0013\u0000\u0000\u09ea\u09eb\u0007\u0007\u0000\u0000\u09eb\u0158"+ - "\u0001\u0000\u0000\u0000\u09ec\u09ed\u0007\u000e\u0000\u0000\u09ed\u09ee"+ - "\u0007\u0013\u0000\u0000\u09ee\u09ef\u0007\u0007\u0000\u0000\u09ef\u09f0"+ - "\u0007\t\u0000\u0000\u09f0\u09f1\u0007\u0010\u0000\u0000\u09f1\u09f2\u0007"+ - "\r\u0000\u0000\u09f2\u09f3\u0007\u0005\u0000\u0000\u09f3\u09f4\u0007\u0011"+ - "\u0000\u0000\u09f4\u09f5\u0007\u0007\u0000\u0000\u09f5\u09f6\u0007\u0010"+ - "\u0000\u0000\u09f6\u09f7\u0007\t\u0000\u0000\u09f7\u015a\u0001\u0000\u0000"+ - "\u0000\u09f8\u09f9\u0007\u000e\u0000\u0000\u09f9\u09fa\u0007\u0013\u0000"+ - "\u0000\u09fa\u09fb\u0007\u0007\u0000\u0000\u09fb\u09fc\u0007\u0010\u0000"+ - "\u0000\u09fc\u09fd\u0007\n\u0000\u0000\u09fd\u09fe\u0007\u0007\u0000\u0000"+ - "\u09fe\u09ff\u0007\u0010\u0000\u0000\u09ff\u015c\u0001\u0000\u0000\u0000"+ - "\u0a00\u0a01\u0007\u000e\u0000\u0000\u0a01\u0a02\u0007\u0013\u0000\u0000"+ - "\u0a02\u0a03\u0007\u0007\u0000\u0000\u0a03\u0a04\u0007\u0010\u0000\u0000"+ - "\u0a04\u0a05\u0007\u0011\u0000\u0000\u0a05\u0a06\u0007\u0007\u0000\u0000"+ - "\u0a06\u0a07\u0007\u0016\u0000\u0000\u0a07\u0a08\u0007\n\u0000\u0000\u0a08"+ - "\u015e\u0001\u0000\u0000\u0000\u0a09\u0a0a\u0007\u000e\u0000\u0000\u0a0a"+ - "\u0a0b\u0007\u0013\u0000\u0000\u0a0b\u0a0c\u0007\u0007\u0000\u0000\u0a0c"+ - "\u0a0d\u0007\u001b\u0000\u0000\u0a0d\u0a0e\u0007\n\u0000\u0000\u0a0e\u0a0f"+ - "\u0007\r\u0000\u0000\u0a0f\u0a10\u0007\t\u0000\u0000\u0a10\u0a11\u0007"+ - "\u0011\u0000\u0000\u0a11\u0a12\u0007\u0013\u0000\u0000\u0a12\u0a13\u0007"+ - "\u0007\u0000\u0000\u0a13\u0160\u0001\u0000\u0000\u0000\u0a14\u0a15\u0007"+ - "\u000e\u0000\u0000\u0a15\u0a16\u0007\u0013\u0000\u0000\u0a16\u0a17\u0007"+ - "\u0018\u0000\u0000\u0a17\u0a18\u0007\b\u0000\u0000\u0a18\u0162\u0001\u0000"+ - "\u0000\u0000\u0a19\u0a1a\u0007\u000e\u0000\u0000\u0a1a\u0a1b\u0007\u0013"+ - "\u0000\u0000\u0a1b\u0a1c\u0007\t\u0000\u0000\u0a1c\u0a1d\u0007\u0010\u0000"+ - "\u0000\u0a1d\u0164\u0001\u0000\u0000\u0000\u0a1e\u0a1f\u0007\u000e\u0000"+ - "\u0000\u0a1f\u0a20\u0007\t\u0000\u0000\u0a20\u0a21\u0007\u001b\u0000\u0000"+ - "\u0a21\u0166\u0001\u0000\u0000\u0000\u0a22\u0a23\u0007\u000e\u0000\u0000"+ - "\u0a23\u0a24\u0007\u0016\u0000\u0000\u0a24\u0a25\u0007\r\u0000\u0000\u0a25"+ - "\u0a26\u0007\t\u0000\u0000\u0a26\u0a27\u0007\u0013\u0000\u0000\u0a27\u0a28"+ - "\u0007\r\u0000\u0000\u0a28\u0168\u0001\u0000\u0000\u0000\u0a29\u0a2a\u0007"+ - "\u000e\u0000\u0000\u0a2a\u0a2b\u0007\b\u0000\u0000\u0a2b\u0a2c\u0007\u000e"+ - "\u0000\u0000\u0a2c\u0a2d\u0007\u0006\u0000\u0000\u0a2d\u0a2e\u0007\n\u0000"+ - "\u0000\u0a2e\u016a\u0001\u0000\u0000\u0000\u0a2f\u0a30\u0007\f\u0000\u0000"+ - "\u0a30\u0a31\u0007\u0005\u0000\u0000\u0a31\u0a32\u0007\u0010\u0000\u0000"+ - "\u0a32\u0a33\u0007\u0005\u0000\u0000\u0a33\u016c\u0001\u0000\u0000\u0000"+ - "\u0a34\u0a35\u0007\f\u0000\u0000\u0a35\u0a36\u0007\u0005\u0000\u0000\u0a36"+ - "\u0a37\u0007\u0010\u0000\u0000\u0a37\u0a38\u0007\u0005\u0000\u0000\u0a38"+ - "\u0a39\u0007\u0012\u0000\u0000\u0a39\u0a3a\u0007\u0005\u0000\u0000\u0a3a"+ - "\u0a3b\u0007\t\u0000\u0000\u0a3b\u0a3c\u0007\n\u0000\u0000\u0a3c\u016e"+ - "\u0001\u0000\u0000\u0000\u0a3d\u0a3e\u0007\f\u0000\u0000\u0a3e\u0a3f\u0007"+ - "\u0005\u0000\u0000\u0a3f\u0a40\u0007\b\u0000\u0000\u0a40\u0170\u0001\u0000"+ - "\u0000\u0000\u0a41\u0a42\u0007\f\u0000\u0000\u0a42\u0a43\u0007\n\u0000"+ - "\u0000\u0a43\u0a44\u0007\u0005\u0000\u0000\u0a44\u0a45\u0007\u0006\u0000"+ - "\u0000\u0a45\u0a46\u0007\u0006\u0000\u0000\u0a46\u0a47\u0007\u0013\u0000"+ - "\u0000\u0a47\u0a48\u0007\u000e\u0000\u0000\u0a48\u0a49\u0007\u0005\u0000"+ - "\u0000\u0a49\u0a4a\u0007\u0010\u0000\u0000\u0a4a\u0a4b\u0007\n\u0000\u0000"+ - "\u0a4b\u0172\u0001\u0000\u0000\u0000\u0a4c\u0a4d\u0007\f\u0000\u0000\u0a4d"+ - "\u0a4e\u0007\n\u0000\u0000\u0a4e\u0a4f\u0007\u000e\u0000\u0000\u0a4f\u0a50"+ - "\u0007\u0006\u0000\u0000\u0a50\u0a51\u0007\u0005\u0000\u0000\u0a51\u0a52"+ - "\u0007\r\u0000\u0000\u0a52\u0a53\u0007\n\u0000\u0000\u0a53\u0174\u0001"+ - "\u0000\u0000\u0000\u0a54\u0a55\u0007\f\u0000\u0000\u0a55\u0a56\u0007\n"+ - "\u0000\u0000\u0a56\u0a57\u0007\u0019\u0000\u0000\u0a57\u0a58\u0007\u0005"+ - "\u0000\u0000\u0a58\u0a59\u0007\u0016\u0000\u0000\u0a59\u0a5a\u0007\u0006"+ - "\u0000\u0000\u0a5a\u0a5b\u0007\u0010\u0000\u0000\u0a5b\u0a5c\u0007\t\u0000"+ - "\u0000\u0a5c\u0176\u0001\u0000\u0000\u0000\u0a5d\u0a5e\u0007\f\u0000\u0000"+ - "\u0a5e\u0a5f\u0007\n\u0000\u0000\u0a5f\u0a60\u0007\u0019\u0000\u0000\u0a60"+ - "\u0a61\u0007\n\u0000\u0000\u0a61\u0a62\u0007\r\u0000\u0000\u0a62\u0a63"+ - "\u0007\r\u0000\u0000\u0a63\u0a64\u0007\n\u0000\u0000\u0a64\u0a65\u0007"+ - "\f\u0000\u0000\u0a65\u0178\u0001\u0000\u0000\u0000\u0a66\u0a67\u0007\f"+ - "\u0000\u0000\u0a67\u0a68\u0007\n\u0000\u0000\u0a68\u0a69\u0007\u0019\u0000"+ - "\u0000\u0a69\u0a6a\u0007\u0011\u0000\u0000\u0a6a\u0a6b\u0007\u0007\u0000"+ - "\u0000\u0a6b\u0a6c\u0007\n\u0000\u0000\u0a6c\u0a6d\u0007\r\u0000\u0000"+ - "\u0a6d\u017a\u0001\u0000\u0000\u0000\u0a6e\u0a6f\u0007\f\u0000\u0000\u0a6f"+ - "\u0a70\u0007\n\u0000\u0000\u0a70\u0a71\u0007\u0006\u0000\u0000\u0a71\u0a72"+ - "\u0007\n\u0000\u0000\u0a72\u0a73\u0007\u0010\u0000\u0000\u0a73\u0a74\u0007"+ - "\n\u0000\u0000\u0a74\u017c\u0001\u0000\u0000\u0000\u0a75\u0a76\u0007\f"+ - "\u0000\u0000\u0a76\u0a77\u0007\n\u0000\u0000\u0a77\u0a78\u0007\u0006\u0000"+ - "\u0000\u0a78\u0a79\u0007\u0011\u0000\u0000\u0a79\u0a7a\u0007\u000f\u0000"+ - "\u0000\u0a7a\u0a7b\u0007\u0011\u0000\u0000\u0a7b\u0a7c\u0007\u0010\u0000"+ - "\u0000\u0a7c\u0a7d\u0007\n\u0000\u0000\u0a7d\u0a7e\u0007\r\u0000\u0000"+ - "\u0a7e\u017e\u0001\u0000\u0000\u0000\u0a7f\u0a80\u0007\f\u0000\u0000\u0a80"+ - "\u0a81\u0007\n\u0000\u0000\u0a81\u0a82\u0007\u0006\u0000\u0000\u0a82\u0a83"+ - "\u0007\u0011\u0000\u0000\u0a83\u0a84\u0007\u000f\u0000\u0000\u0a84\u0a85"+ - "\u0007\u0011\u0000\u0000\u0a85\u0a86\u0007\u0010\u0000\u0000\u0a86\u0a87"+ - "\u0007\n\u0000\u0000\u0a87\u0a88\u0007\r\u0000\u0000\u0a88\u0a89\u0007"+ - "\t\u0000\u0000\u0a89\u0180\u0001\u0000\u0000\u0000\u0a8a\u0a8b\u0007\f"+ - "\u0000\u0000\u0a8b\u0a8c\u0007\u0011\u0000\u0000\u0a8c\u0a8d\u0007\u000e"+ - "\u0000\u0000\u0a8d\u0a8e\u0007\u0010\u0000\u0000\u0a8e\u0a8f\u0007\u0011"+ - "\u0000\u0000\u0a8f\u0a90\u0007\u0013\u0000\u0000\u0a90\u0a91\u0007\u0007"+ - "\u0000\u0000\u0a91\u0a92\u0007\u0005\u0000\u0000\u0a92\u0a93\u0007\r\u0000"+ - "\u0000\u0a93\u0a94\u0007\b\u0000\u0000\u0a94\u0182\u0001\u0000\u0000\u0000"+ - "\u0a95\u0a96\u0007\f\u0000\u0000\u0a96\u0a97\u0007\u0011\u0000\u0000\u0a97"+ - "\u0a98\u0007\t\u0000\u0000\u0a98\u0a99\u0007\u0005\u0000\u0000\u0a99\u0a9a"+ - "\u0007\u0012\u0000\u0000\u0a9a\u0a9b\u0007\u0006\u0000\u0000\u0a9b\u0a9c"+ - "\u0007\n\u0000\u0000\u0a9c\u0184\u0001\u0000\u0000\u0000\u0a9d\u0a9e\u0007"+ - "\f\u0000\u0000\u0a9e\u0a9f\u0007\u0011\u0000\u0000\u0a9f\u0aa0\u0007\t"+ - "\u0000\u0000\u0aa0\u0aa1\u0007\u000e\u0000\u0000\u0aa1\u0aa2\u0007\u0005"+ - "\u0000\u0000\u0aa2\u0aa3\u0007\r\u0000\u0000\u0aa3\u0aa4\u0007\f\u0000"+ - "\u0000\u0aa4\u0186\u0001\u0000\u0000\u0000\u0aa5\u0aa6\u0007\f\u0000\u0000"+ - "\u0aa6\u0aa7\u0007\u0013\u0000\u0000\u0aa7\u0aa8\u0007\u000e\u0000\u0000"+ - "\u0aa8\u0aa9\u0007\u0016\u0000\u0000\u0aa9\u0aaa\u0007\u000f\u0000\u0000"+ - "\u0aaa\u0aab\u0007\n\u0000\u0000\u0aab\u0aac\u0007\u0007\u0000\u0000\u0aac"+ - "\u0aad\u0007\u0010\u0000\u0000\u0aad\u0188\u0001\u0000\u0000\u0000\u0aae"+ - "\u0aaf\u0007\f\u0000\u0000\u0aaf\u0ab0\u0007\u0013\u0000\u0000\u0ab0\u0ab1"+ - "\u0007\u000f\u0000\u0000\u0ab1\u0ab2\u0007\u0005\u0000\u0000\u0ab2\u0ab3"+ - "\u0007\u0011\u0000\u0000\u0ab3\u0ab4\u0007\u0007\u0000\u0000\u0ab4\u018a"+ - "\u0001\u0000\u0000\u0000\u0ab5\u0ab6\u0007\f\u0000\u0000\u0ab6\u0ab7\u0007"+ - "\u0013\u0000\u0000\u0ab7\u0ab8\u0007\u0016\u0000\u0000\u0ab8\u0ab9\u0007"+ - "\u0012\u0000\u0000\u0ab9\u0aba\u0007\u0006\u0000\u0000\u0aba\u0abb\u0007"+ - "\n\u0000\u0000\u0abb\u018c\u0001\u0000\u0000\u0000\u0abc\u0abd\u0007\f"+ - "\u0000\u0000\u0abd\u0abe\u0007\r\u0000\u0000\u0abe\u0abf\u0007\u0013\u0000"+ - "\u0000\u0abf\u0ac0\u0007\u0018\u0000\u0000\u0ac0\u018e\u0001\u0000\u0000"+ - "\u0000\u0ac1\u0ac2\u0007\n\u0000\u0000\u0ac2\u0ac3\u0007\u0005\u0000\u0000"+ - "\u0ac3\u0ac4\u0007\u000e\u0000\u0000\u0ac4\u0ac5\u0007\u0014\u0000\u0000"+ - "\u0ac5\u0190\u0001\u0000\u0000\u0000\u0ac6\u0ac7\u0007\n\u0000\u0000\u0ac7"+ - "\u0ac8\u0007\u0007\u0000\u0000\u0ac8\u0ac9\u0007\u0005\u0000\u0000\u0ac9"+ - "\u0aca\u0007\u0012\u0000\u0000\u0aca\u0acb\u0007\u0006\u0000\u0000\u0acb"+ - "\u0acc\u0007\n\u0000\u0000\u0acc\u0192\u0001\u0000\u0000\u0000\u0acd\u0ace"+ - "\u0007\n\u0000\u0000\u0ace\u0acf\u0007\u0007\u0000\u0000\u0acf\u0ad0\u0007"+ - "\u000e\u0000\u0000\u0ad0\u0ad1\u0007\u0013\u0000\u0000\u0ad1\u0ad2\u0007"+ - "\f\u0000\u0000\u0ad2\u0ad3\u0007\u0011\u0000\u0000\u0ad3\u0ad4\u0007\u0007"+ - "\u0000\u0000\u0ad4\u0ad5\u0007\u0017\u0000\u0000\u0ad5\u0194\u0001\u0000"+ - "\u0000\u0000\u0ad6\u0ad7\u0007\n\u0000\u0000\u0ad7\u0ad8\u0007\u0007\u0000"+ - "\u0000\u0ad8\u0ad9\u0007\u000e\u0000\u0000\u0ad9\u0ada\u0007\r\u0000\u0000"+ - "\u0ada\u0adb\u0007\b\u0000\u0000\u0adb\u0adc\u0007\u0018\u0000\u0000\u0adc"+ - "\u0add\u0007\u0010\u0000\u0000\u0add\u0ade\u0007\n\u0000\u0000\u0ade\u0adf"+ - "\u0007\f\u0000\u0000\u0adf\u0196\u0001\u0000\u0000\u0000\u0ae0\u0ae1\u0007"+ - "\n\u0000\u0000\u0ae1\u0ae2\u0007\u0007\u0000\u0000\u0ae2\u0ae3\u0007\u0016"+ - "\u0000\u0000\u0ae3\u0ae4\u0007\u000f\u0000\u0000\u0ae4\u0198\u0001\u0000"+ - "\u0000\u0000\u0ae5\u0ae6\u0007\n\u0000\u0000\u0ae6\u0ae7\u0007\t\u0000"+ - "\u0000\u0ae7\u0ae8\u0007\u000e\u0000\u0000\u0ae8\u0ae9\u0007\u0005\u0000"+ - "\u0000\u0ae9\u0aea\u0007\u0018\u0000\u0000\u0aea\u0aeb\u0007\n\u0000\u0000"+ - "\u0aeb\u019a\u0001\u0000\u0000\u0000\u0aec\u0aed\u0007\n\u0000\u0000\u0aed"+ - "\u0aee\u0007\u001b\u0000\u0000\u0aee\u0aef\u0007\n\u0000\u0000\u0aef\u0af0"+ - "\u0007\u0007\u0000\u0000\u0af0\u0af1\u0007\u0010\u0000\u0000\u0af1\u019c"+ - "\u0001\u0000\u0000\u0000\u0af2\u0af3\u0007\n\u0000\u0000\u0af3\u0af4\u0007"+ - "\u001a\u0000\u0000\u0af4\u0af5\u0007\u000e\u0000\u0000\u0af5\u0af6\u0007"+ - "\u0006\u0000\u0000\u0af6\u0af7\u0007\u0016\u0000\u0000\u0af7\u0af8\u0007"+ - "\f\u0000\u0000\u0af8\u0af9\u0007\n\u0000\u0000\u0af9\u019e\u0001\u0000"+ - "\u0000\u0000\u0afa\u0afb\u0007\n\u0000\u0000\u0afb\u0afc\u0007\u001a\u0000"+ - "\u0000\u0afc\u0afd\u0007\u000e\u0000\u0000\u0afd\u0afe\u0007\u0006\u0000"+ - "\u0000\u0afe\u0aff\u0007\u0016\u0000\u0000\u0aff\u0b00\u0007\f\u0000\u0000"+ - "\u0b00\u0b01\u0007\u0011\u0000\u0000\u0b01\u0b02\u0007\u0007\u0000\u0000"+ - "\u0b02\u0b03\u0007\u0017\u0000\u0000\u0b03\u01a0\u0001\u0000\u0000\u0000"+ - "\u0b04\u0b05\u0007\n\u0000\u0000\u0b05\u0b06\u0007\u001a\u0000\u0000\u0b06"+ - "\u0b07\u0007\u000e\u0000\u0000\u0b07\u0b08\u0007\u0006\u0000\u0000\u0b08"+ - "\u0b09\u0007\u0016\u0000\u0000\u0b09\u0b0a\u0007\t\u0000\u0000\u0b0a\u0b0b"+ - "\u0007\u0011\u0000\u0000\u0b0b\u0b0c\u0007\u001b\u0000\u0000\u0b0c\u0b0d"+ - "\u0007\n\u0000\u0000\u0b0d\u01a2\u0001\u0000\u0000\u0000\u0b0e\u0b0f\u0007"+ - "\n\u0000\u0000\u0b0f\u0b10\u0007\u001a\u0000\u0000\u0b10\u0b11\u0007\n"+ - "\u0000\u0000\u0b11\u0b12\u0007\u000e\u0000\u0000\u0b12\u0b13\u0007\u0016"+ - "\u0000\u0000\u0b13\u0b14\u0007\u0010\u0000\u0000\u0b14\u0b15\u0007\n\u0000"+ - "\u0000\u0b15\u01a4\u0001\u0000\u0000\u0000\u0b16\u0b17\u0007\n\u0000\u0000"+ - "\u0b17\u0b18\u0007\u001a\u0000\u0000\u0b18\u0b19\u0007\u0018\u0000\u0000"+ - "\u0b19\u0b1a\u0007\u0006\u0000\u0000\u0b1a\u0b1b\u0007\u0005\u0000\u0000"+ - "\u0b1b\u0b1c\u0007\u0011\u0000\u0000\u0b1c\u0b1d\u0007\u0007\u0000\u0000"+ - "\u0b1d\u01a6\u0001\u0000\u0000\u0000\u0b1e\u0b1f\u0007\n\u0000\u0000\u0b1f"+ - "\u0b20\u0007\u001a\u0000\u0000\u0b20\u0b21\u0007\u0010\u0000\u0000\u0b21"+ - "\u0b22\u0007\n\u0000\u0000\u0b22\u0b23\u0007\u0007\u0000\u0000\u0b23\u0b24"+ - "\u0007\t\u0000\u0000\u0b24\u0b25\u0007\u0011\u0000\u0000\u0b25\u0b26\u0007"+ - "\u0013\u0000\u0000\u0b26\u0b27\u0007\u0007\u0000\u0000\u0b27\u01a8\u0001"+ - "\u0000\u0000\u0000\u0b28\u0b29\u0007\n\u0000\u0000\u0b29\u0b2a\u0007\u001a"+ - "\u0000\u0000\u0b2a\u0b2b\u0007\u0010\u0000\u0000\u0b2b\u0b2c\u0007\n\u0000"+ - "\u0000\u0b2c\u0b2d\u0007\r\u0000\u0000\u0b2d\u0b2e\u0007\u0007\u0000\u0000"+ - "\u0b2e\u0b2f\u0007\u0005\u0000\u0000\u0b2f\u0b30\u0007\u0006\u0000\u0000"+ - "\u0b30\u01aa\u0001\u0000\u0000\u0000\u0b31\u0b32\u0007\u0019\u0000\u0000"+ - "\u0b32\u0b33\u0007\u0005\u0000\u0000\u0b33\u0b34\u0007\u000f\u0000\u0000"+ - "\u0b34\u0b35\u0007\u0011\u0000\u0000\u0b35\u0b36\u0007\u0006\u0000\u0000"+ - "\u0b36\u0b37\u0007\b\u0000\u0000\u0b37\u01ac\u0001\u0000\u0000\u0000\u0b38"+ - "\u0b39\u0007\u0019\u0000\u0000\u0b39\u0b3a\u0007\u0011\u0000\u0000\u0b3a"+ - "\u0b3b\u0007\r\u0000\u0000\u0b3b\u0b3c\u0007\t\u0000\u0000\u0b3c\u0b3d"+ - "\u0007\u0010\u0000\u0000\u0b3d\u01ae\u0001\u0000\u0000\u0000\u0b3e\u0b3f"+ - "\u0007\u0019\u0000\u0000\u0b3f\u0b40\u0007\u0013\u0000\u0000\u0b40\u0b41"+ - "\u0007\u0006\u0000\u0000\u0b41\u0b42\u0007\u0006\u0000\u0000\u0b42\u0b43"+ - "\u0007\u0013\u0000\u0000\u0b43\u0b44\u0007\u001d\u0000\u0000\u0b44\u0b45"+ - "\u0007\u0011\u0000\u0000\u0b45\u0b46\u0007\u0007\u0000\u0000\u0b46\u0b47"+ - "\u0007\u0017\u0000\u0000\u0b47\u01b0\u0001\u0000\u0000\u0000\u0b48\u0b49"+ - "\u0007\u0019\u0000\u0000\u0b49\u0b4a\u0007\u0013\u0000\u0000\u0b4a\u0b4b"+ - "\u0007\r\u0000\u0000\u0b4b\u0b4c\u0007\u000e\u0000\u0000\u0b4c\u0b4d\u0007"+ - "\n\u0000\u0000\u0b4d\u01b2\u0001\u0000\u0000\u0000\u0b4e\u0b4f\u0007\u0019"+ - "\u0000\u0000\u0b4f\u0b50\u0007\u0013\u0000\u0000\u0b50\u0b51\u0007\r\u0000"+ - "\u0000\u0b51\u0b52\u0007\u001d\u0000\u0000\u0b52\u0b53\u0007\u0005\u0000"+ - "\u0000\u0b53\u0b54\u0007\r\u0000\u0000\u0b54\u0b55\u0007\f\u0000\u0000"+ - "\u0b55\u01b4\u0001\u0000\u0000\u0000\u0b56\u0b57\u0007\u0019\u0000\u0000"+ - "\u0b57\u0b58\u0007\u0016\u0000\u0000\u0b58\u0b59\u0007\u0007\u0000\u0000"+ - "\u0b59\u0b5a\u0007\u000e\u0000\u0000\u0b5a\u0b5b\u0007\u0010\u0000\u0000"+ - "\u0b5b\u0b5c\u0007\u0011\u0000\u0000\u0b5c\u0b5d\u0007\u0013\u0000\u0000"+ - "\u0b5d\u0b5e\u0007\u0007\u0000\u0000\u0b5e\u01b6\u0001\u0000\u0000\u0000"+ - "\u0b5f\u0b60\u0007\u0019\u0000\u0000\u0b60\u0b61\u0007\u0016\u0000\u0000"+ - "\u0b61\u0b62\u0007\u0007\u0000\u0000\u0b62\u0b63\u0007\u000e\u0000\u0000"+ - "\u0b63\u0b64\u0007\u0010\u0000\u0000\u0b64\u0b65\u0007\u0011\u0000\u0000"+ - "\u0b65\u0b66\u0007\u0013\u0000\u0000\u0b66\u0b67\u0007\u0007\u0000\u0000"+ - "\u0b67\u0b68\u0007\t\u0000\u0000\u0b68\u01b8\u0001\u0000\u0000\u0000\u0b69"+ - "\u0b6a\u0007\u0017\u0000\u0000\u0b6a\u0b6b\u0007\u0006\u0000\u0000\u0b6b"+ - "\u0b6c\u0007\u0013\u0000\u0000\u0b6c\u0b6d\u0007\u0012\u0000\u0000\u0b6d"+ - "\u0b6e\u0007\u0005\u0000\u0000\u0b6e\u0b6f\u0007\u0006\u0000\u0000\u0b6f"+ - "\u01ba\u0001\u0000\u0000\u0000\u0b70\u0b71\u0007\u0017\u0000\u0000\u0b71"+ - "\u0b72\u0007\r\u0000\u0000\u0b72\u0b73\u0007\u0005\u0000\u0000\u0b73\u0b74"+ - "\u0007\u0007\u0000\u0000\u0b74\u0b75\u0007\u0010\u0000\u0000\u0b75\u0b76"+ - "\u0007\n\u0000\u0000\u0b76\u0b77\u0007\f\u0000\u0000\u0b77\u01bc\u0001"+ - "\u0000\u0000\u0000\u0b78\u0b79\u0007\u0014\u0000\u0000\u0b79\u0b7a\u0007"+ - "\u0005\u0000\u0000\u0b7a\u0b7b\u0007\u0007\u0000\u0000\u0b7b\u0b7c\u0007"+ - "\f\u0000\u0000\u0b7c\u0b7d\u0007\u0006\u0000\u0000\u0b7d\u0b7e\u0007\n"+ - "\u0000\u0000\u0b7e\u0b7f\u0007\r\u0000\u0000\u0b7f\u01be\u0001\u0000\u0000"+ - "\u0000\u0b80\u0b81\u0007\u0014\u0000\u0000\u0b81\u0b82\u0007\n\u0000\u0000"+ - "\u0b82\u0b83\u0007\u0005\u0000\u0000\u0b83\u0b84\u0007\f\u0000\u0000\u0b84"+ - "\u0b85\u0007\n\u0000\u0000\u0b85\u0b86\u0007\r\u0000\u0000\u0b86\u01c0"+ - "\u0001\u0000\u0000\u0000\u0b87\u0b88\u0007\u0014\u0000\u0000\u0b88\u0b89"+ - "\u0007\u0013\u0000\u0000\u0b89\u0b8a\u0007\u0006\u0000\u0000\u0b8a\u0b8b"+ - "\u0007\f\u0000\u0000\u0b8b\u01c2\u0001\u0000\u0000\u0000\u0b8c\u0b8d\u0007"+ - "\u0014\u0000\u0000\u0b8d\u0b8e\u0007\u0013\u0000\u0000\u0b8e\u0b8f\u0007"+ - "\u0016\u0000\u0000\u0b8f\u0b90\u0007\r\u0000\u0000\u0b90\u01c4\u0001\u0000"+ - "\u0000\u0000\u0b91\u0b92\u0007\u0011\u0000\u0000\u0b92\u0b93\u0007\f\u0000"+ - "\u0000\u0b93\u0b94\u0007\n\u0000\u0000\u0b94\u0b95\u0007\u0007\u0000\u0000"+ - "\u0b95\u0b96\u0007\u0010\u0000\u0000\u0b96\u0b97\u0007\u0011\u0000\u0000"+ - "\u0b97\u0b98\u0007\u0010\u0000\u0000\u0b98\u0b99\u0007\b\u0000\u0000\u0b99"+ - "\u01c6\u0001\u0000\u0000\u0000\u0b9a\u0b9b\u0007\u0011\u0000\u0000\u0b9b"+ - "\u0b9c\u0007\u0019\u0000\u0000\u0b9c\u01c8\u0001\u0000\u0000\u0000\u0b9d"+ - "\u0b9e\u0007\u0011\u0000\u0000\u0b9e\u0b9f\u0007\u000f\u0000\u0000\u0b9f"+ - "\u0ba0\u0007\u000f\u0000\u0000\u0ba0\u0ba1\u0007\n\u0000\u0000\u0ba1\u0ba2"+ - "\u0007\f\u0000\u0000\u0ba2\u0ba3\u0007\u0011\u0000\u0000\u0ba3\u0ba4\u0007"+ - "\u0005\u0000\u0000\u0ba4\u0ba5\u0007\u0010\u0000\u0000\u0ba5\u0ba6\u0007"+ - "\n\u0000\u0000\u0ba6\u01ca\u0001\u0000\u0000\u0000\u0ba7\u0ba8\u0007\u0011"+ - "\u0000\u0000\u0ba8\u0ba9\u0007\u000f\u0000\u0000\u0ba9\u0baa\u0007\u000f"+ - "\u0000\u0000\u0baa\u0bab\u0007\u0016\u0000\u0000\u0bab\u0bac\u0007\u0010"+ - "\u0000\u0000\u0bac\u0bad\u0007\u0005\u0000\u0000\u0bad\u0bae\u0007\u0012"+ - "\u0000\u0000\u0bae\u0baf\u0007\u0006\u0000\u0000\u0baf\u0bb0\u0007\n\u0000"+ - "\u0000\u0bb0\u01cc\u0001\u0000\u0000\u0000\u0bb1\u0bb2\u0007\u0011\u0000"+ - "\u0000\u0bb2\u0bb3\u0007\u000f\u0000\u0000\u0bb3\u0bb4\u0007\u0018\u0000"+ - "\u0000\u0bb4\u0bb5\u0007\u0006\u0000\u0000\u0bb5\u0bb6\u0007\u0011\u0000"+ - "\u0000\u0bb6\u0bb7\u0007\u000e\u0000\u0000\u0bb7\u0bb8\u0007\u0011\u0000"+ - "\u0000\u0bb8\u0bb9\u0007\u0010\u0000\u0000\u0bb9\u01ce\u0001\u0000\u0000"+ - "\u0000\u0bba\u0bbb\u0007\u0011\u0000\u0000\u0bbb\u0bbc\u0007\u0007\u0000"+ - "\u0000\u0bbc\u0bbd\u0007\u000e\u0000\u0000\u0bbd\u0bbe\u0007\u0006\u0000"+ - "\u0000\u0bbe\u0bbf\u0007\u0016\u0000\u0000\u0bbf\u0bc0\u0007\f\u0000\u0000"+ - "\u0bc0\u0bc1\u0007\u0011\u0000\u0000\u0bc1\u0bc2\u0007\u0007\u0000\u0000"+ - "\u0bc2\u0bc3\u0007\u0017\u0000\u0000\u0bc3\u01d0\u0001\u0000\u0000\u0000"+ - "\u0bc4\u0bc5\u0007\u0011\u0000\u0000\u0bc5\u0bc6\u0007\u0007\u0000\u0000"+ - "\u0bc6\u0bc7\u0007\u000e\u0000\u0000\u0bc7\u0bc8\u0007\r\u0000\u0000\u0bc8"+ - "\u0bc9\u0007\n\u0000\u0000\u0bc9\u0bca\u0007\u000f\u0000\u0000\u0bca\u0bcb"+ - "\u0007\n\u0000\u0000\u0bcb\u0bcc\u0007\u0007\u0000\u0000\u0bcc\u0bcd\u0007"+ - "\u0010\u0000\u0000\u0bcd\u01d2\u0001\u0000\u0000\u0000\u0bce\u0bcf\u0007"+ - "\u0011\u0000\u0000\u0bcf\u0bd0\u0007\u0007\u0000\u0000\u0bd0\u0bd1\u0007"+ - "\f\u0000\u0000\u0bd1\u0bd2\u0007\n\u0000\u0000\u0bd2\u0bd3\u0007\u001a"+ - "\u0000\u0000\u0bd3\u01d4\u0001\u0000\u0000\u0000\u0bd4\u0bd5\u0007\u0011"+ - "\u0000\u0000\u0bd5\u0bd6\u0007\u0007\u0000\u0000\u0bd6\u0bd7\u0007\f\u0000"+ - "\u0000\u0bd7\u0bd8\u0007\n\u0000\u0000\u0bd8\u0bd9\u0007\u001a\u0000\u0000"+ - "\u0bd9\u0bda\u0007\n\u0000\u0000\u0bda\u0bdb\u0007\t\u0000\u0000\u0bdb"+ - "\u01d6\u0001\u0000\u0000\u0000\u0bdc\u0bdd\u0007\u0011\u0000\u0000\u0bdd"+ - "\u0bde\u0007\u0007\u0000\u0000\u0bde\u0bdf\u0007\u0014\u0000\u0000\u0bdf"+ - "\u0be0\u0007\n\u0000\u0000\u0be0\u0be1\u0007\r\u0000\u0000\u0be1\u0be2"+ - "\u0007\u0011\u0000\u0000\u0be2\u0be3\u0007\u0010\u0000\u0000\u0be3\u01d8"+ - "\u0001\u0000\u0000\u0000\u0be4\u0be5\u0007\u0011\u0000\u0000\u0be5\u0be6"+ - "\u0007\u0007\u0000\u0000\u0be6\u0be7\u0007\u0014\u0000\u0000\u0be7\u0be8"+ - "\u0007\n\u0000\u0000\u0be8\u0be9\u0007\r\u0000\u0000\u0be9\u0bea\u0007"+ - "\u0011\u0000\u0000\u0bea\u0beb\u0007\u0010\u0000\u0000\u0beb\u0bec\u0007"+ - "\t\u0000\u0000\u0bec\u01da\u0001\u0000\u0000\u0000\u0bed\u0bee\u0007\u0011"+ - "\u0000\u0000\u0bee\u0bef\u0007\u0007\u0000\u0000\u0bef\u0bf0\u0007\u0006"+ - "\u0000\u0000\u0bf0\u0bf1\u0007\u0011\u0000\u0000\u0bf1\u0bf2\u0007\u0007"+ - "\u0000\u0000\u0bf2\u0bf3\u0007\n\u0000\u0000\u0bf3\u01dc\u0001\u0000\u0000"+ - "\u0000\u0bf4\u0bf5\u0007\u0011\u0000\u0000\u0bf5\u0bf6\u0007\u0007\u0000"+ - "\u0000\u0bf6\u0bf7\u0007\t\u0000\u0000\u0bf7\u0bf8\u0007\n\u0000\u0000"+ - "\u0bf8\u0bf9\u0007\u0007\u0000\u0000\u0bf9\u0bfa\u0007\t\u0000\u0000\u0bfa"+ - "\u0bfb\u0007\u0011\u0000\u0000\u0bfb\u0bfc\u0007\u0010\u0000\u0000\u0bfc"+ - "\u0bfd\u0007\u0011\u0000\u0000\u0bfd\u0bfe\u0007\u001b\u0000\u0000\u0bfe"+ - "\u0bff\u0007\n\u0000\u0000\u0bff\u01de\u0001\u0000\u0000\u0000\u0c00\u0c01"+ - "\u0007\u0011\u0000\u0000\u0c01\u0c02\u0007\u0007\u0000\u0000\u0c02\u0c03"+ - "\u0007\t\u0000\u0000\u0c03\u0c04\u0007\n\u0000\u0000\u0c04\u0c05\u0007"+ - "\r\u0000\u0000\u0c05\u0c06\u0007\u0010\u0000\u0000\u0c06\u01e0\u0001\u0000"+ - "\u0000\u0000\u0c07\u0c08\u0007\u0011\u0000\u0000\u0c08\u0c09\u0007\u0007"+ - "\u0000\u0000\u0c09\u0c0a\u0007\t\u0000\u0000\u0c0a\u0c0b\u0007\u0010\u0000"+ - "\u0000\u0c0b\u0c0c\u0007\n\u0000\u0000\u0c0c\u0c0d\u0007\u0005\u0000\u0000"+ - "\u0c0d\u0c0e\u0007\f\u0000\u0000\u0c0e\u01e2\u0001\u0000\u0000\u0000\u0c0f"+ - "\u0c10\u0007\u0011\u0000\u0000\u0c10\u0c11\u0007\u0007\u0000\u0000\u0c11"+ - "\u0c12\u0007\u001b\u0000\u0000\u0c12\u0c13\u0007\u0013\u0000\u0000\u0c13"+ - "\u0c14\u0007\u0015\u0000\u0000\u0c14\u0c15\u0007\n\u0000\u0000\u0c15\u0c16"+ - "\u0007\r\u0000\u0000\u0c16\u01e4\u0001\u0000\u0000\u0000\u0c17\u0c18\u0007"+ - "\u0011\u0000\u0000\u0c18\u0c19\u0007\t\u0000\u0000\u0c19\u0c1a\u0007\u0013"+ - "\u0000\u0000\u0c1a\u0c1b\u0007\u0006\u0000\u0000\u0c1b\u0c1c\u0007\u0005"+ - "\u0000\u0000\u0c1c\u0c1d\u0007\u0010\u0000\u0000\u0c1d\u0c1e\u0007\u0011"+ - "\u0000\u0000\u0c1e\u0c1f\u0007\u0013\u0000\u0000\u0c1f\u0c20\u0007\u0007"+ - "\u0000\u0000\u0c20\u01e6\u0001\u0000\u0000\u0000\u0c21\u0c22\u0007\u0015"+ - "\u0000\u0000\u0c22\u0c23\u0007\n\u0000\u0000\u0c23\u0c24\u0007\b\u0000"+ - "\u0000\u0c24\u01e8\u0001\u0000\u0000\u0000\u0c25\u0c26\u0007\u0006\u0000"+ - "\u0000\u0c26\u0c27\u0007\u0005\u0000\u0000\u0c27\u0c28\u0007\u0012\u0000"+ - "\u0000\u0c28\u0c29\u0007\n\u0000\u0000\u0c29\u0c2a\u0007\u0006\u0000\u0000"+ - "\u0c2a\u01ea\u0001\u0000\u0000\u0000\u0c2b\u0c2c\u0007\u0006\u0000\u0000"+ - "\u0c2c\u0c2d\u0007\u0005\u0000\u0000\u0c2d\u0c2e\u0007\u0007\u0000\u0000"+ - "\u0c2e\u0c2f\u0007\u0017\u0000\u0000\u0c2f\u0c30\u0007\u0016\u0000\u0000"+ - "\u0c30\u0c31\u0007\u0005\u0000\u0000\u0c31\u0c32\u0007\u0017\u0000\u0000"+ - "\u0c32\u0c33\u0007\n\u0000\u0000\u0c33\u01ec\u0001\u0000\u0000\u0000\u0c34"+ - "\u0c35\u0007\u0006\u0000\u0000\u0c35\u0c36\u0007\u0005\u0000\u0000\u0c36"+ - "\u0c37\u0007\r\u0000\u0000\u0c37\u0c38\u0007\u0017\u0000\u0000\u0c38\u0c39"+ - "\u0007\n\u0000\u0000\u0c39\u01ee\u0001\u0000\u0000\u0000\u0c3a\u0c3b\u0007"+ - "\u0006\u0000\u0000\u0c3b\u0c3c\u0007\u0005\u0000\u0000\u0c3c\u0c3d\u0007"+ - "\t\u0000\u0000\u0c3d\u0c3e\u0007\u0010\u0000\u0000\u0c3e\u01f0\u0001\u0000"+ - "\u0000\u0000\u0c3f\u0c40\u0007\u0006\u0000\u0000\u0c40\u0c41\u0007\n\u0000"+ - "\u0000\u0c41\u0c42\u0007\u0005\u0000\u0000\u0c42\u0c43\u0007\u0015\u0000"+ - "\u0000\u0c43\u0c44\u0007\u0018\u0000\u0000\u0c44\u0c45\u0007\r\u0000\u0000"+ - "\u0c45\u0c46\u0007\u0013\u0000\u0000\u0c46\u0c47\u0007\u0013\u0000\u0000"+ - "\u0c47\u0c48\u0007\u0019\u0000\u0000\u0c48\u01f2\u0001\u0000\u0000\u0000"+ - "\u0c49\u0c4a\u0007\u0006\u0000\u0000\u0c4a\u0c4b\u0007\n\u0000\u0000\u0c4b"+ - "\u0c4c\u0007\u001b\u0000\u0000\u0c4c\u0c4d\u0007\n\u0000\u0000\u0c4d\u0c4e"+ - "\u0007\u0006\u0000\u0000\u0c4e\u01f4\u0001\u0000\u0000\u0000\u0c4f\u0c50"+ - "\u0007\u0006\u0000\u0000\u0c50\u0c51\u0007\u0011\u0000\u0000\u0c51\u0c52"+ - "\u0007\t\u0000\u0000\u0c52\u0c53\u0007\u0010\u0000\u0000\u0c53\u0c54\u0007"+ - "\n\u0000\u0000\u0c54\u0c55\u0007\u0007\u0000\u0000\u0c55\u01f6\u0001\u0000"+ - "\u0000\u0000\u0c56\u0c57\u0007\u0006\u0000\u0000\u0c57\u0c58\u0007\u0013"+ - "\u0000\u0000\u0c58\u0c59\u0007\u0005\u0000\u0000\u0c59\u0c5a\u0007\f\u0000"+ - "\u0000\u0c5a\u01f8\u0001\u0000\u0000\u0000\u0c5b\u0c5c\u0007\u0006\u0000"+ - "\u0000\u0c5c\u0c5d\u0007\u0013\u0000\u0000\u0c5d\u0c5e\u0007\u000e\u0000"+ - "\u0000\u0c5e\u0c5f\u0007\u0005\u0000\u0000\u0c5f\u0c60\u0007\u0006\u0000"+ - "\u0000\u0c60\u01fa\u0001\u0000\u0000\u0000\u0c61\u0c62\u0007\u0006\u0000"+ - "\u0000\u0c62\u0c63\u0007\u0013\u0000\u0000\u0c63\u0c64\u0007\u000e\u0000"+ - "\u0000\u0c64\u0c65\u0007\u0005\u0000\u0000\u0c65\u0c66\u0007\u0010\u0000"+ - "\u0000\u0c66\u0c67\u0007\u0011\u0000\u0000\u0c67\u0c68\u0007\u0013\u0000"+ - "\u0000\u0c68\u0c69\u0007\u0007\u0000\u0000\u0c69\u01fc\u0001\u0000\u0000"+ - "\u0000\u0c6a\u0c6b\u0007\u0006\u0000\u0000\u0c6b\u0c6c\u0007\u0013\u0000"+ - "\u0000\u0c6c\u0c6d\u0007\u000e\u0000\u0000\u0c6d\u0c6e\u0007\u0015\u0000"+ - "\u0000\u0c6e\u01fe\u0001\u0000\u0000\u0000\u0c6f\u0c70\u0007\u000f\u0000"+ - "\u0000\u0c70\u0c71\u0007\u0005\u0000\u0000\u0c71\u0c72\u0007\u0018\u0000"+ - "\u0000\u0c72\u0c73\u0007\u0018\u0000\u0000\u0c73\u0c74\u0007\u0011\u0000"+ - "\u0000\u0c74\u0c75\u0007\u0007\u0000\u0000\u0c75\u0c76\u0007\u0017\u0000"+ - "\u0000\u0c76\u0200\u0001\u0000\u0000\u0000\u0c77\u0c78\u0007\u000f\u0000"+ - "\u0000\u0c78\u0c79\u0007\u0005\u0000\u0000\u0c79\u0c7a\u0007\u0010\u0000"+ - "\u0000\u0c7a\u0c7b\u0007\u000e\u0000\u0000\u0c7b\u0c7c\u0007\u0014\u0000"+ - "\u0000\u0c7c\u0202\u0001\u0000\u0000\u0000\u0c7d\u0c7e\u0007\u000f\u0000"+ - "\u0000\u0c7e\u0c7f\u0007\u0005\u0000\u0000\u0c7f\u0c80\u0007\u0010\u0000"+ - "\u0000\u0c80\u0c81\u0007\u000e\u0000\u0000\u0c81\u0c82\u0007\u0014\u0000"+ - "\u0000\u0c82\u0c83\u0007\n\u0000\u0000\u0c83\u0c84\u0007\f\u0000\u0000"+ - "\u0c84\u0204\u0001\u0000\u0000\u0000\u0c85\u0c86\u0007\u000f\u0000\u0000"+ - "\u0c86\u0c87\u0007\u0005\u0000\u0000\u0c87\u0c88\u0007\u0010\u0000\u0000"+ - "\u0c88\u0c89\u0007\n\u0000\u0000\u0c89\u0c8a\u0007\r\u0000\u0000\u0c8a"+ - "\u0c8b\u0007\u0011\u0000\u0000\u0c8b\u0c8c\u0007\u0005\u0000\u0000\u0c8c"+ - "\u0c8d\u0007\u0006\u0000\u0000\u0c8d\u0c8e\u0007\u0011\u0000\u0000\u0c8e"+ - "\u0c8f\u0007\u000b\u0000\u0000\u0c8f\u0c90\u0007\n\u0000\u0000\u0c90\u0c91"+ - "\u0007\f\u0000\u0000\u0c91\u0206\u0001\u0000\u0000\u0000\u0c92\u0c93\u0007"+ - "\u000f\u0000\u0000\u0c93\u0c94\u0007\u0005\u0000\u0000\u0c94\u0c95\u0007"+ - "\u001a\u0000\u0000\u0c95\u0c96\u0007\u001b\u0000\u0000\u0c96\u0c97\u0007"+ - "\u0005\u0000\u0000\u0c97\u0c98\u0007\u0006\u0000\u0000\u0c98\u0c99\u0007"+ - "\u0016\u0000\u0000\u0c99\u0c9a\u0007\n\u0000\u0000\u0c9a\u0208\u0001\u0000"+ - "\u0000\u0000\u0c9b\u0c9c\u0007\u000f\u0000\u0000\u0c9c\u0c9d\u0007\n\u0000"+ - "\u0000\u0c9d\u0c9e\u0007\r\u0000\u0000\u0c9e\u0c9f\u0007\u0017\u0000\u0000"+ - "\u0c9f\u0ca0\u0007\n\u0000\u0000\u0ca0\u020a\u0001\u0000\u0000\u0000\u0ca1"+ - "\u0ca2\u0007\u000f\u0000\u0000\u0ca2\u0ca3\u0007\u0011\u0000\u0000\u0ca3"+ - "\u0ca4\u0007\u0007\u0000\u0000\u0ca4\u0ca5\u0007\u0016\u0000\u0000\u0ca5"+ - "\u0ca6\u0007\u0010\u0000\u0000\u0ca6\u0ca7\u0007\n\u0000\u0000\u0ca7\u020c"+ - "\u0001\u0000\u0000\u0000\u0ca8\u0ca9\u0007\u000f\u0000\u0000\u0ca9\u0caa"+ - "\u0007\u0011\u0000\u0000\u0caa\u0cab\u0007\u0007\u0000\u0000\u0cab\u0cac"+ - "\u0007\u001b\u0000\u0000\u0cac\u0cad\u0007\u0005\u0000\u0000\u0cad\u0cae"+ - "\u0007\u0006\u0000\u0000\u0cae\u0caf\u0007\u0016\u0000\u0000\u0caf\u0cb0"+ - "\u0007\n\u0000\u0000\u0cb0\u020e\u0001\u0000\u0000\u0000\u0cb1\u0cb2\u0007"+ - "\u000f\u0000\u0000\u0cb2\u0cb3\u0007\u0013\u0000\u0000\u0cb3\u0cb4\u0007"+ - "\f\u0000\u0000\u0cb4\u0cb5\u0007\n\u0000\u0000\u0cb5\u0210\u0001\u0000"+ - "\u0000\u0000\u0cb6\u0cb7\u0007\u000f\u0000\u0000\u0cb7\u0cb8\u0007\u0013"+ - "\u0000\u0000\u0cb8\u0cb9\u0007\u0007\u0000\u0000\u0cb9\u0cba\u0007\u0010"+ - "\u0000\u0000\u0cba\u0cbb\u0007\u0014\u0000\u0000\u0cbb\u0212\u0001\u0000"+ - "\u0000\u0000\u0cbc\u0cbd\u0007\u000f\u0000\u0000\u0cbd\u0cbe\u0007\u0013"+ - "\u0000\u0000\u0cbe\u0cbf\u0007\u001b\u0000\u0000\u0cbf\u0cc0\u0007\n\u0000"+ - "\u0000\u0cc0\u0214\u0001\u0000\u0000\u0000\u0cc1\u0cc2\u0007\u0007\u0000"+ - "\u0000\u0cc2\u0cc3\u0007\u0005\u0000\u0000\u0cc3\u0cc4\u0007\u000f\u0000"+ - "\u0000\u0cc4\u0cc5\u0007\n\u0000\u0000\u0cc5\u0216\u0001\u0000\u0000\u0000"+ - "\u0cc6\u0cc7\u0007\u0007\u0000\u0000\u0cc7\u0cc8\u0007\u0005\u0000\u0000"+ - "\u0cc8\u0cc9\u0007\u000f\u0000\u0000\u0cc9\u0cca\u0007\n\u0000\u0000\u0cca"+ - "\u0ccb\u0007\t\u0000\u0000\u0ccb\u0218\u0001\u0000\u0000\u0000\u0ccc\u0ccd"+ - "\u0007\u0007\u0000\u0000\u0ccd\u0cce\u0007\n\u0000\u0000\u0cce\u0ccf\u0007"+ - "\u001a\u0000\u0000\u0ccf\u0cd0\u0007\u0010\u0000\u0000\u0cd0\u021a\u0001"+ - "\u0000\u0000\u0000\u0cd1\u0cd2\u0007\u0007\u0000\u0000\u0cd2\u0cd3\u0007"+ - "\u0013\u0000\u0000\u0cd3\u021c\u0001\u0000\u0000\u0000\u0cd4\u0cd5\u0007"+ - "\u0007\u0000\u0000\u0cd5\u0cd6\u0007\u0013\u0000\u0000\u0cd6\u0cd7\u0007"+ - "\u0010\u0000\u0000\u0cd7\u0cd8\u0007\u0014\u0000\u0000\u0cd8\u0cd9\u0007"+ - "\u0011\u0000\u0000\u0cd9\u0cda\u0007\u0007\u0000\u0000\u0cda\u0cdb\u0007"+ - "\u0017\u0000\u0000\u0cdb\u021e\u0001\u0000\u0000\u0000\u0cdc\u0cdd\u0007"+ - "\u0007\u0000\u0000\u0cdd\u0cde\u0007\u0013\u0000\u0000\u0cde\u0cdf\u0007"+ - "\u0010\u0000\u0000\u0cdf\u0ce0\u0007\u0011\u0000\u0000\u0ce0\u0ce1\u0007"+ - "\u0019\u0000\u0000\u0ce1\u0ce2\u0007\b\u0000\u0000\u0ce2\u0220\u0001\u0000"+ - "\u0000\u0000\u0ce3\u0ce4\u0007\u0007\u0000\u0000\u0ce4\u0ce5\u0007\u0013"+ - "\u0000\u0000\u0ce5\u0ce6\u0007\u001d\u0000\u0000\u0ce6\u0ce7\u0007\u0005"+ - "\u0000\u0000\u0ce7\u0ce8\u0007\u0011\u0000\u0000\u0ce8\u0ce9\u0007\u0010"+ - "\u0000\u0000\u0ce9\u0222\u0001\u0000\u0000\u0000\u0cea\u0ceb\u0007\u0007"+ - "\u0000\u0000\u0ceb\u0cec\u0007\u0016\u0000\u0000\u0cec\u0ced\u0007\u0006"+ - "\u0000\u0000\u0ced\u0cee\u0007\u0006\u0000\u0000\u0cee\u0cef\u0007\t\u0000"+ - "\u0000\u0cef\u0224\u0001\u0000\u0000\u0000\u0cf0\u0cf1\u0007\u0013\u0000"+ - "\u0000\u0cf1\u0cf2\u0007\u0012\u0000\u0000\u0cf2\u0cf3\u0007\u001e\u0000"+ - "\u0000\u0cf3\u0cf4\u0007\n\u0000\u0000\u0cf4\u0cf5\u0007\u000e\u0000\u0000"+ - "\u0cf5\u0cf6\u0007\u0010\u0000\u0000\u0cf6\u0226\u0001\u0000\u0000\u0000"+ - "\u0cf7\u0cf8\u0007\u0013\u0000\u0000\u0cf8\u0cf9\u0007\u0019\u0000\u0000"+ - "\u0cf9\u0228\u0001\u0000\u0000\u0000\u0cfa\u0cfb\u0007\u0013\u0000\u0000"+ - "\u0cfb\u0cfc\u0007\u0019\u0000\u0000\u0cfc\u0cfd\u0007\u0019\u0000\u0000"+ - "\u0cfd\u022a\u0001\u0000\u0000\u0000\u0cfe\u0cff\u0007\u0013\u0000\u0000"+ - "\u0cff\u0d00\u0007\u0011\u0000\u0000\u0d00\u0d01\u0007\f\u0000\u0000\u0d01"+ - "\u0d02\u0007\t\u0000\u0000\u0d02\u022c\u0001\u0000\u0000\u0000\u0d03\u0d04"+ - "\u0007\u0013\u0000\u0000\u0d04\u0d05\u0007\u0018\u0000\u0000\u0d05\u0d06"+ - "\u0007\n\u0000\u0000\u0d06\u0d07\u0007\r\u0000\u0000\u0d07\u0d08\u0007"+ - "\u0005\u0000\u0000\u0d08\u0d09\u0007\u0010\u0000\u0000\u0d09\u0d0a\u0007"+ - "\u0013\u0000\u0000\u0d0a\u0d0b\u0007\r\u0000\u0000\u0d0b\u022e\u0001\u0000"+ - "\u0000\u0000\u0d0c\u0d0d\u0007\u0013\u0000\u0000\u0d0d\u0d0e\u0007\u0018"+ - "\u0000\u0000\u0d0e\u0d0f\u0007\u0010\u0000\u0000\u0d0f\u0d10\u0007\u0011"+ - "\u0000\u0000\u0d10\u0d11\u0007\u0013\u0000\u0000\u0d11\u0d12\u0007\u0007"+ - "\u0000\u0000\u0d12\u0230\u0001\u0000\u0000\u0000\u0d13\u0d14\u0007\u0013"+ - "\u0000\u0000\u0d14\u0d15\u0007\u0018\u0000\u0000\u0d15\u0d16\u0007\u0010"+ - "\u0000\u0000\u0d16\u0d17\u0007\u0011\u0000\u0000\u0d17\u0d18\u0007\u0013"+ - "\u0000\u0000\u0d18\u0d19\u0007\u0007\u0000\u0000\u0d19\u0d1a\u0007\t\u0000"+ - "\u0000\u0d1a\u0232\u0001\u0000\u0000\u0000\u0d1b\u0d1c\u0007\u0013\u0000"+ - "\u0000\u0d1c\u0d1d\u0007\u001d\u0000\u0000\u0d1d\u0d1e\u0007\u0007\u0000"+ - "\u0000\u0d1e\u0d1f\u0007\n\u0000\u0000\u0d1f\u0d20\u0007\f\u0000\u0000"+ - "\u0d20\u0234\u0001\u0000\u0000\u0000\u0d21\u0d22\u0007\u0013\u0000\u0000"+ - "\u0d22\u0d23\u0007\u001d\u0000\u0000\u0d23\u0d24\u0007\u0007\u0000\u0000"+ - "\u0d24\u0d25\u0007\n\u0000\u0000\u0d25\u0d26\u0007\r\u0000\u0000\u0d26"+ - "\u0236\u0001\u0000\u0000\u0000\u0d27\u0d28\u0007\u0018\u0000\u0000\u0d28"+ - "\u0d29\u0007\u0005\u0000\u0000\u0d29\u0d2a\u0007\r\u0000\u0000\u0d2a\u0d2b"+ - "\u0007\t\u0000\u0000\u0d2b\u0d2c\u0007\n\u0000\u0000\u0d2c\u0d2d\u0007"+ - "\r\u0000\u0000\u0d2d\u0238\u0001\u0000\u0000\u0000\u0d2e\u0d2f\u0007\u0018"+ - "\u0000\u0000\u0d2f\u0d30\u0007\u0005\u0000\u0000\u0d30\u0d31\u0007\r\u0000"+ - "\u0000\u0d31\u0d32\u0007\u0010\u0000\u0000\u0d32\u0d33\u0007\u0011\u0000"+ - "\u0000\u0d33\u0d34\u0007\u0005\u0000\u0000\u0d34\u0d35\u0007\u0006\u0000"+ - "\u0000\u0d35\u023a\u0001\u0000\u0000\u0000\u0d36\u0d37\u0007\u0018\u0000"+ - "\u0000\u0d37\u0d38\u0007\u0005\u0000\u0000\u0d38\u0d39\u0007\r\u0000\u0000"+ - "\u0d39\u0d3a\u0007\u0010\u0000\u0000\u0d3a\u0d3b\u0007\u0011\u0000\u0000"+ - "\u0d3b\u0d3c\u0007\u0010\u0000\u0000\u0d3c\u0d3d\u0007\u0011\u0000\u0000"+ - "\u0d3d\u0d3e\u0007\u0013\u0000\u0000\u0d3e\u0d3f\u0007\u0007\u0000\u0000"+ - "\u0d3f\u023c\u0001\u0000\u0000\u0000\u0d40\u0d41\u0007\u0018\u0000\u0000"+ - "\u0d41\u0d42\u0007\u0005\u0000\u0000\u0d42\u0d43\u0007\t\u0000\u0000\u0d43"+ - "\u0d44\u0007\t\u0000\u0000\u0d44\u0d45\u0007\u0011\u0000\u0000\u0d45\u0d46"+ - "\u0007\u0007\u0000\u0000\u0d46\u0d47\u0007\u0017\u0000\u0000\u0d47\u023e"+ - "\u0001\u0000\u0000\u0000\u0d48\u0d49\u0007\u0018\u0000\u0000\u0d49\u0d4a"+ - "\u0007\u0005\u0000\u0000\u0d4a\u0d4b\u0007\t\u0000\u0000\u0d4b\u0d4c\u0007"+ - "\t\u0000\u0000\u0d4c\u0d4d\u0007\u001d\u0000\u0000\u0d4d\u0d4e\u0007\u0013"+ - "\u0000\u0000\u0d4e\u0d4f\u0007\r\u0000\u0000\u0d4f\u0d50\u0007\f\u0000"+ - "\u0000\u0d50\u0240\u0001\u0000\u0000\u0000\u0d51\u0d52\u0007\u0018\u0000"+ - "\u0000\u0d52\u0d53\u0007\u0006\u0000\u0000\u0d53\u0d54\u0007\u0005\u0000"+ - "\u0000\u0d54\u0d55\u0007\u0007\u0000\u0000\u0d55\u0d56\u0007\t\u0000\u0000"+ - "\u0d56\u0242\u0001\u0000\u0000\u0000\u0d57\u0d58\u0007\u0018\u0000\u0000"+ - "\u0d58\u0d59\u0007\r\u0000\u0000\u0d59\u0d5a\u0007\n\u0000\u0000\u0d5a"+ - "\u0d5b\u0007\u000e\u0000\u0000\u0d5b\u0d5c\u0007\n\u0000\u0000\u0d5c\u0d5d"+ - "\u0007\f\u0000\u0000\u0d5d\u0d5e\u0007\u0011\u0000\u0000\u0d5e\u0d5f\u0007"+ - "\u0007\u0000\u0000\u0d5f\u0d60\u0007\u0017\u0000\u0000\u0d60\u0244\u0001"+ - "\u0000\u0000\u0000\u0d61\u0d62\u0007\u0018\u0000\u0000\u0d62\u0d63\u0007"+ - "\r\u0000\u0000\u0d63\u0d64\u0007\n\u0000\u0000\u0d64\u0d65\u0007\u0018"+ - "\u0000\u0000\u0d65\u0d66\u0007\u0005\u0000\u0000\u0d66\u0d67\u0007\r\u0000"+ - "\u0000\u0d67\u0d68\u0007\n\u0000\u0000\u0d68\u0246\u0001\u0000\u0000\u0000"+ - "\u0d69\u0d6a\u0007\u0018\u0000\u0000\u0d6a\u0d6b\u0007\r\u0000\u0000\u0d6b"+ - "\u0d6c\u0007\n\u0000\u0000\u0d6c\u0d6d\u0007\u0018\u0000\u0000\u0d6d\u0d6e"+ - "\u0007\u0005\u0000\u0000\u0d6e\u0d6f\u0007\r\u0000\u0000\u0d6f\u0d70\u0007"+ - "\n\u0000\u0000\u0d70\u0d71\u0007\f\u0000\u0000\u0d71\u0248\u0001\u0000"+ - "\u0000\u0000\u0d72\u0d73\u0007\u0018\u0000\u0000\u0d73\u0d74\u0007\r\u0000"+ - "\u0000\u0d74\u0d75\u0007\n\u0000\u0000\u0d75\u0d76\u0007\t\u0000\u0000"+ - "\u0d76\u0d77\u0007\n\u0000\u0000\u0d77\u0d78\u0007\r\u0000\u0000\u0d78"+ - "\u0d79\u0007\u001b\u0000\u0000\u0d79\u0d7a\u0007\n\u0000\u0000\u0d7a\u024a"+ - "\u0001\u0000\u0000\u0000\u0d7b\u0d7c\u0007\u0018\u0000\u0000\u0d7c\u0d7d"+ - "\u0007\r\u0000\u0000\u0d7d\u0d7e\u0007\u0011\u0000\u0000\u0d7e\u0d7f\u0007"+ - "\u0013\u0000\u0000\u0d7f\u0d80\u0007\r\u0000\u0000\u0d80\u024c\u0001\u0000"+ - "\u0000\u0000\u0d81\u0d82\u0007\u0018\u0000\u0000\u0d82\u0d83\u0007\r\u0000"+ - "\u0000\u0d83\u0d84\u0007\u0011\u0000\u0000\u0d84\u0d85\u0007\u001b\u0000"+ - "\u0000\u0d85\u0d86\u0007\u0011\u0000\u0000\u0d86\u0d87\u0007\u0006\u0000"+ - "\u0000\u0d87\u0d88\u0007\n\u0000\u0000\u0d88\u0d89\u0007\u0017\u0000\u0000"+ - "\u0d89\u0d8a\u0007\n\u0000\u0000\u0d8a\u0d8b\u0007\t\u0000\u0000\u0d8b"+ - "\u024e\u0001\u0000\u0000\u0000\u0d8c\u0d8d\u0007\u0018\u0000\u0000\u0d8d"+ - "\u0d8e\u0007\r\u0000\u0000\u0d8e\u0d8f\u0007\u0013\u0000\u0000\u0d8f\u0d90"+ - "\u0007\u000e\u0000\u0000\u0d90\u0d91\u0007\n\u0000\u0000\u0d91\u0d92\u0007"+ - "\f\u0000\u0000\u0d92\u0d93\u0007\u0016\u0000\u0000\u0d93\u0d94\u0007\r"+ - "\u0000\u0000\u0d94\u0d95\u0007\u0005\u0000\u0000\u0d95\u0d96\u0007\u0006"+ - "\u0000\u0000\u0d96\u0250\u0001\u0000\u0000\u0000\u0d97\u0d98\u0007\u0018"+ - "\u0000\u0000\u0d98\u0d99\u0007\r\u0000\u0000\u0d99\u0d9a\u0007\u0013\u0000"+ - "\u0000\u0d9a\u0d9b\u0007\u000e\u0000\u0000\u0d9b\u0d9c\u0007\n\u0000\u0000"+ - "\u0d9c\u0d9d\u0007\f\u0000\u0000\u0d9d\u0d9e\u0007\u0016\u0000\u0000\u0d9e"+ - "\u0d9f\u0007\r\u0000\u0000\u0d9f\u0da0\u0007\n\u0000\u0000\u0da0\u0252"+ - "\u0001\u0000\u0000\u0000\u0da1\u0da2\u0007\u0018\u0000\u0000\u0da2\u0da3"+ - "\u0007\r\u0000\u0000\u0da3\u0da4\u0007\u0013\u0000\u0000\u0da4\u0da5\u0007"+ - "\u0017\u0000\u0000\u0da5\u0da6\u0007\r\u0000\u0000\u0da6\u0da7\u0007\u0005"+ - "\u0000\u0000\u0da7\u0da8\u0007\u000f\u0000\u0000\u0da8\u0254\u0001\u0000"+ - "\u0000\u0000\u0da9\u0daa\u0007\u001c\u0000\u0000\u0daa\u0dab\u0007\u0016"+ - "\u0000\u0000\u0dab\u0dac\u0007\u0013\u0000\u0000\u0dac\u0dad\u0007\u0010"+ - "\u0000\u0000\u0dad\u0dae\u0007\n\u0000\u0000\u0dae\u0256\u0001\u0000\u0000"+ - "\u0000\u0daf\u0db0\u0007\r\u0000\u0000\u0db0\u0db1\u0007\u0005\u0000\u0000"+ - "\u0db1\u0db2\u0007\u0007\u0000\u0000\u0db2\u0db3\u0007\u0017\u0000\u0000"+ - "\u0db3\u0db4\u0007\n\u0000\u0000\u0db4\u0258\u0001\u0000\u0000\u0000\u0db5"+ - "\u0db6\u0007\r\u0000\u0000\u0db6\u0db7\u0007\n\u0000\u0000\u0db7\u0db8"+ - "\u0007\u0005\u0000\u0000\u0db8\u0db9\u0007\f\u0000\u0000\u0db9\u025a\u0001"+ - "\u0000\u0000\u0000\u0dba\u0dbb\u0007\r\u0000\u0000\u0dbb\u0dbc\u0007\n"+ - "\u0000\u0000\u0dbc\u0dbd\u0007\u0005\u0000\u0000\u0dbd\u0dbe\u0007\t\u0000"+ - "\u0000\u0dbe\u0dbf\u0007\t\u0000\u0000\u0dbf\u0dc0\u0007\u0011\u0000\u0000"+ - "\u0dc0\u0dc1\u0007\u0017\u0000\u0000\u0dc1\u0dc2\u0007\u0007\u0000\u0000"+ - "\u0dc2\u025c\u0001\u0000\u0000\u0000\u0dc3\u0dc4\u0007\r\u0000\u0000\u0dc4"+ - "\u0dc5\u0007\n\u0000\u0000\u0dc5\u0dc6\u0007\u000e\u0000\u0000\u0dc6\u0dc7"+ - "\u0007\u0014\u0000\u0000\u0dc7\u0dc8\u0007\n\u0000\u0000\u0dc8\u0dc9\u0007"+ - "\u000e\u0000\u0000\u0dc9\u0dca\u0007\u0015\u0000\u0000\u0dca\u025e\u0001"+ - "\u0000\u0000\u0000\u0dcb\u0dcc\u0007\r\u0000\u0000\u0dcc\u0dcd\u0007\n"+ - "\u0000\u0000\u0dcd\u0dce\u0007\u000e\u0000\u0000\u0dce\u0dcf\u0007\u0016"+ - "\u0000\u0000\u0dcf\u0dd0\u0007\r\u0000\u0000\u0dd0\u0dd1\u0007\t\u0000"+ - "\u0000\u0dd1\u0dd2\u0007\u0011\u0000\u0000\u0dd2\u0dd3\u0007\u001b\u0000"+ - "\u0000\u0dd3\u0dd4\u0007\n\u0000\u0000\u0dd4\u0260\u0001\u0000\u0000\u0000"+ - "\u0dd5\u0dd6\u0007\r\u0000\u0000\u0dd6\u0dd7\u0007\n\u0000\u0000\u0dd7"+ - "\u0dd8\u0007\u0019\u0000\u0000\u0dd8\u0262\u0001\u0000\u0000\u0000\u0dd9"+ - "\u0dda\u0007\r\u0000\u0000\u0dda\u0ddb\u0007\n\u0000\u0000\u0ddb\u0ddc"+ - "\u0007\u0019\u0000\u0000\u0ddc\u0ddd\u0007\r\u0000\u0000\u0ddd\u0dde\u0007"+ - "\n\u0000\u0000\u0dde\u0ddf\u0007\t\u0000\u0000\u0ddf\u0de0\u0007\u0014"+ - "\u0000\u0000\u0de0\u0264\u0001\u0000\u0000\u0000\u0de1\u0de2\u0007\r\u0000"+ - "\u0000\u0de2\u0de3\u0007\n\u0000\u0000\u0de3\u0de4\u0007\u0011\u0000\u0000"+ - "\u0de4\u0de5\u0007\u0007\u0000\u0000\u0de5\u0de6\u0007\f\u0000\u0000\u0de6"+ - "\u0de7\u0007\n\u0000\u0000\u0de7\u0de8\u0007\u001a\u0000\u0000\u0de8\u0266"+ - "\u0001\u0000\u0000\u0000\u0de9\u0dea\u0007\r\u0000\u0000\u0dea\u0deb\u0007"+ - "\n\u0000\u0000\u0deb\u0dec\u0007\u0006\u0000\u0000\u0dec\u0ded\u0007\u0005"+ - "\u0000\u0000\u0ded\u0dee\u0007\u0010\u0000\u0000\u0dee\u0def\u0007\u0011"+ - "\u0000\u0000\u0def\u0df0\u0007\u001b\u0000\u0000\u0df0\u0df1\u0007\n\u0000"+ - "\u0000\u0df1\u0268\u0001\u0000\u0000\u0000\u0df2\u0df3\u0007\r\u0000\u0000"+ - "\u0df3\u0df4\u0007\n\u0000\u0000\u0df4\u0df5\u0007\u0006\u0000\u0000\u0df5"+ - "\u0df6\u0007\n\u0000\u0000\u0df6\u0df7\u0007\u0005\u0000\u0000\u0df7\u0df8"+ - "\u0007\t\u0000\u0000\u0df8\u0df9\u0007\n\u0000\u0000\u0df9\u026a\u0001"+ - "\u0000\u0000\u0000\u0dfa\u0dfb\u0007\r\u0000\u0000\u0dfb\u0dfc\u0007\n"+ - "\u0000\u0000\u0dfc\u0dfd\u0007\u0007\u0000\u0000\u0dfd\u0dfe\u0007\u0005"+ - "\u0000\u0000\u0dfe\u0dff\u0007\u000f\u0000\u0000\u0dff\u0e00\u0007\n\u0000"+ - "\u0000\u0e00\u026c\u0001\u0000\u0000\u0000\u0e01\u0e02\u0007\r\u0000\u0000"+ - "\u0e02\u0e03\u0007\n\u0000\u0000\u0e03\u0e04\u0007\u0018\u0000\u0000\u0e04"+ - "\u0e05\u0007\n\u0000\u0000\u0e05\u0e06\u0007\u0005\u0000\u0000\u0e06\u0e07"+ - "\u0007\u0010\u0000\u0000\u0e07\u0e08\u0007\u0005\u0000\u0000\u0e08\u0e09"+ - "\u0007\u0012\u0000\u0000\u0e09\u0e0a\u0007\u0006\u0000\u0000\u0e0a\u0e0b"+ - "\u0007\n\u0000\u0000\u0e0b\u026e\u0001\u0000\u0000\u0000\u0e0c\u0e0d\u0007"+ - "\r\u0000\u0000\u0e0d\u0e0e\u0007\n\u0000\u0000\u0e0e\u0e0f\u0007\u0018"+ - "\u0000\u0000\u0e0f\u0e10\u0007\u0006\u0000\u0000\u0e10\u0e11\u0007\u0005"+ - "\u0000\u0000\u0e11\u0e12\u0007\u000e\u0000\u0000\u0e12\u0e13\u0007\n\u0000"+ - "\u0000\u0e13\u0270\u0001\u0000\u0000\u0000\u0e14\u0e15\u0007\r\u0000\u0000"+ - "\u0e15\u0e16\u0007\n\u0000\u0000\u0e16\u0e17\u0007\u0018\u0000\u0000\u0e17"+ - "\u0e18\u0007\u0006\u0000\u0000\u0e18\u0e19\u0007\u0011\u0000\u0000\u0e19"+ - "\u0e1a\u0007\u000e\u0000\u0000\u0e1a\u0e1b\u0007\u0005\u0000\u0000\u0e1b"+ - "\u0272\u0001\u0000\u0000\u0000\u0e1c\u0e1d\u0007\r\u0000\u0000\u0e1d\u0e1e"+ - "\u0007\n\u0000\u0000\u0e1e\u0e1f\u0007\t\u0000\u0000\u0e1f\u0e20\u0007"+ - "\n\u0000\u0000\u0e20\u0e21\u0007\u0010\u0000\u0000\u0e21\u0274\u0001\u0000"+ - "\u0000\u0000\u0e22\u0e23\u0007\r\u0000\u0000\u0e23\u0e24\u0007\n\u0000"+ - "\u0000\u0e24\u0e25\u0007\t\u0000\u0000\u0e25\u0e26\u0007\u0010\u0000\u0000"+ - "\u0e26\u0e27\u0007\u0005\u0000\u0000\u0e27\u0e28\u0007\r\u0000\u0000\u0e28"+ - "\u0e29\u0007\u0010\u0000\u0000\u0e29\u0276\u0001\u0000\u0000\u0000\u0e2a"+ - "\u0e2b\u0007\r\u0000\u0000\u0e2b\u0e2c\u0007\n\u0000\u0000\u0e2c\u0e2d"+ - "\u0007\t\u0000\u0000\u0e2d\u0e2e\u0007\u0010\u0000\u0000\u0e2e\u0e2f\u0007"+ - "\r\u0000\u0000\u0e2f\u0e30\u0007\u0011\u0000\u0000\u0e30\u0e31\u0007\u000e"+ - "\u0000\u0000\u0e31\u0e32\u0007\u0010\u0000\u0000\u0e32\u0278\u0001\u0000"+ - "\u0000\u0000\u0e33\u0e34\u0007\r\u0000\u0000\u0e34\u0e35\u0007\n\u0000"+ - "\u0000\u0e35\u0e36\u0007\u0010\u0000\u0000\u0e36\u0e37\u0007\u0016\u0000"+ - "\u0000\u0e37\u0e38\u0007\r\u0000\u0000\u0e38\u0e39\u0007\u0007\u0000\u0000"+ - "\u0e39\u0e3a\u0007\t\u0000\u0000\u0e3a\u027a\u0001\u0000\u0000\u0000\u0e3b"+ - "\u0e3c\u0007\r\u0000\u0000\u0e3c\u0e3d\u0007\n\u0000\u0000\u0e3d\u0e3e"+ - "\u0007\u001b\u0000\u0000\u0e3e\u0e3f\u0007\u0013\u0000\u0000\u0e3f\u0e40"+ - "\u0007\u0015\u0000\u0000\u0e40\u0e41\u0007\n\u0000\u0000\u0e41\u027c\u0001"+ - "\u0000\u0000\u0000\u0e42\u0e43\u0007\r\u0000\u0000\u0e43\u0e44\u0007\u0013"+ - "\u0000\u0000\u0e44\u0e45\u0007\u0006\u0000\u0000\u0e45\u0e46\u0007\n\u0000"+ - "\u0000\u0e46\u027e\u0001\u0000\u0000\u0000\u0e47\u0e48\u0007\r\u0000\u0000"+ - "\u0e48\u0e49\u0007\u0013\u0000\u0000\u0e49\u0e4a\u0007\u0006\u0000\u0000"+ - "\u0e4a\u0e4b\u0007\u0006\u0000\u0000\u0e4b\u0e4c\u0007\u0012\u0000\u0000"+ - "\u0e4c\u0e4d\u0007\u0005\u0000\u0000\u0e4d\u0e4e\u0007\u000e\u0000\u0000"+ - "\u0e4e\u0e4f\u0007\u0015\u0000\u0000\u0e4f\u0280\u0001\u0000\u0000\u0000"+ - "\u0e50\u0e51\u0007\r\u0000\u0000\u0e51\u0e52\u0007\u0013\u0000\u0000\u0e52"+ - "\u0e53\u0007\u001d\u0000\u0000\u0e53\u0e54\u0007\t\u0000\u0000\u0e54\u0282"+ - "\u0001\u0000\u0000\u0000\u0e55\u0e56\u0007\r\u0000\u0000\u0e56\u0e57\u0007"+ - "\u0016\u0000\u0000\u0e57\u0e58\u0007\u0006\u0000\u0000\u0e58\u0e59\u0007"+ - "\n\u0000\u0000\u0e59\u0284\u0001\u0000\u0000\u0000\u0e5a\u0e5b\u0007\t"+ - "\u0000\u0000\u0e5b\u0e5c\u0007\u0005\u0000\u0000\u0e5c\u0e5d\u0007\u001b"+ - "\u0000\u0000\u0e5d\u0e5e\u0007\n\u0000\u0000\u0e5e\u0e5f\u0007\u0018\u0000"+ - "\u0000\u0e5f\u0e60\u0007\u0013\u0000\u0000\u0e60\u0e61\u0007\u0011\u0000"+ - "\u0000\u0e61\u0e62\u0007\u0007\u0000\u0000\u0e62\u0e63\u0007\u0010\u0000"+ - "\u0000\u0e63\u0286\u0001\u0000\u0000\u0000\u0e64\u0e65\u0007\t\u0000\u0000"+ - "\u0e65\u0e66\u0007\u000e\u0000\u0000\u0e66\u0e67\u0007\u0014\u0000\u0000"+ - "\u0e67\u0e68\u0007\n\u0000\u0000\u0e68\u0e69\u0007\u000f\u0000\u0000\u0e69"+ - "\u0e6a\u0007\u0005\u0000\u0000\u0e6a\u0288\u0001\u0000\u0000\u0000\u0e6b"+ - "\u0e6c\u0007\t\u0000\u0000\u0e6c\u0e6d\u0007\u000e\u0000\u0000\u0e6d\u0e6e"+ - "\u0007\r\u0000\u0000\u0e6e\u0e6f\u0007\u0013\u0000\u0000\u0e6f\u0e70\u0007"+ - "\u0006\u0000\u0000\u0e70\u0e71\u0007\u0006\u0000\u0000\u0e71\u028a\u0001"+ - "\u0000\u0000\u0000\u0e72\u0e73\u0007\t\u0000\u0000\u0e73\u0e74\u0007\n"+ - "\u0000\u0000\u0e74\u0e75\u0007\u0005\u0000\u0000\u0e75\u0e76\u0007\r\u0000"+ - "\u0000\u0e76\u0e77\u0007\u000e\u0000\u0000\u0e77\u0e78\u0007\u0014\u0000"+ - "\u0000\u0e78\u028c\u0001\u0000\u0000\u0000\u0e79\u0e7a\u0007\t\u0000\u0000"+ - "\u0e7a\u0e7b\u0007\n\u0000\u0000\u0e7b\u0e7c\u0007\u000e\u0000\u0000\u0e7c"+ - "\u0e7d\u0007\u0013\u0000\u0000\u0e7d\u0e7e\u0007\u0007\u0000\u0000\u0e7e"+ - "\u0e7f\u0007\f\u0000\u0000\u0e7f\u028e\u0001\u0000\u0000\u0000\u0e80\u0e81"+ - "\u0007\t\u0000\u0000\u0e81\u0e82\u0007\n\u0000\u0000\u0e82\u0e83\u0007"+ - "\u000e\u0000\u0000\u0e83\u0e84\u0007\u0016\u0000\u0000\u0e84\u0e85\u0007"+ - "\r\u0000\u0000\u0e85\u0e86\u0007\u0011\u0000\u0000\u0e86\u0e87\u0007\u0010"+ - "\u0000\u0000\u0e87\u0e88\u0007\b\u0000\u0000\u0e88\u0290\u0001\u0000\u0000"+ - "\u0000\u0e89\u0e8a\u0007\t\u0000\u0000\u0e8a\u0e8b\u0007\n\u0000\u0000"+ - "\u0e8b\u0e8c\u0007\u001c\u0000\u0000\u0e8c\u0e8d\u0007\u0016\u0000\u0000"+ - "\u0e8d\u0e8e\u0007\n\u0000\u0000\u0e8e\u0e8f\u0007\u0007\u0000\u0000\u0e8f"+ - "\u0e90\u0007\u000e\u0000\u0000\u0e90\u0e91\u0007\n\u0000\u0000\u0e91\u0292"+ - "\u0001\u0000\u0000\u0000\u0e92\u0e93\u0007\t\u0000\u0000\u0e93\u0e94\u0007"+ - "\n\u0000\u0000\u0e94\u0e95\u0007\u001c\u0000\u0000\u0e95\u0e96\u0007\u0016"+ - "\u0000\u0000\u0e96\u0e97\u0007\n\u0000\u0000\u0e97\u0e98\u0007\u0007\u0000"+ - "\u0000\u0e98\u0e99\u0007\u000e\u0000\u0000\u0e99\u0e9a\u0007\n\u0000\u0000"+ - "\u0e9a\u0e9b\u0007\t\u0000\u0000\u0e9b\u0294\u0001\u0000\u0000\u0000\u0e9c"+ - "\u0e9d\u0007\t\u0000\u0000\u0e9d\u0e9e\u0007\n\u0000\u0000\u0e9e\u0e9f"+ - "\u0007\r\u0000\u0000\u0e9f\u0ea0\u0007\u0011\u0000\u0000\u0ea0\u0ea1\u0007"+ - "\u0005\u0000\u0000\u0ea1\u0ea2\u0007\u0006\u0000\u0000\u0ea2\u0ea3\u0007"+ - "\u0011\u0000\u0000\u0ea3\u0ea4\u0007\u000b\u0000\u0000\u0ea4\u0ea5\u0007"+ - "\u0005\u0000\u0000\u0ea5\u0ea6\u0007\u0012\u0000\u0000\u0ea6\u0ea7\u0007"+ - "\u0006\u0000\u0000\u0ea7\u0ea8\u0007\n\u0000\u0000\u0ea8\u0296\u0001\u0000"+ - "\u0000\u0000\u0ea9\u0eaa\u0007\t\u0000\u0000\u0eaa\u0eab\u0007\n\u0000"+ - "\u0000\u0eab\u0eac\u0007\r\u0000\u0000\u0eac\u0ead\u0007\u001b\u0000\u0000"+ - "\u0ead\u0eae\u0007\n\u0000\u0000\u0eae\u0eaf\u0007\r\u0000\u0000\u0eaf"+ - "\u0298\u0001\u0000\u0000\u0000\u0eb0\u0eb1\u0007\t\u0000\u0000\u0eb1\u0eb2"+ - "\u0007\n\u0000\u0000\u0eb2\u0eb3\u0007\t\u0000\u0000\u0eb3\u0eb4\u0007"+ - "\t\u0000\u0000\u0eb4\u0eb5\u0007\u0011\u0000\u0000\u0eb5\u0eb6\u0007\u0013"+ - "\u0000\u0000\u0eb6\u0eb7\u0007\u0007\u0000\u0000\u0eb7\u029a\u0001\u0000"+ - "\u0000\u0000\u0eb8\u0eb9\u0007\t\u0000\u0000\u0eb9\u0eba\u0007\n\u0000"+ - "\u0000\u0eba\u0ebb\u0007\u0010\u0000\u0000\u0ebb\u029c\u0001\u0000\u0000"+ - "\u0000\u0ebc\u0ebd\u0007\t\u0000\u0000\u0ebd\u0ebe\u0007\u0014\u0000\u0000"+ - "\u0ebe\u0ebf\u0007\u0005\u0000\u0000\u0ebf\u0ec0\u0007\r\u0000\u0000\u0ec0"+ - "\u0ec1\u0007\n\u0000\u0000\u0ec1\u029e\u0001\u0000\u0000\u0000\u0ec2\u0ec3"+ - "\u0007\t\u0000\u0000\u0ec3\u0ec4\u0007\u0014\u0000\u0000\u0ec4\u0ec5\u0007"+ - "\u0013\u0000\u0000\u0ec5\u0ec6\u0007\u001d\u0000\u0000\u0ec6\u02a0\u0001"+ - "\u0000\u0000\u0000\u0ec7\u0ec8\u0007\t\u0000\u0000\u0ec8\u0ec9\u0007\u0011"+ - "\u0000\u0000\u0ec9\u0eca\u0007\u000f\u0000\u0000\u0eca\u0ecb\u0007\u0018"+ - "\u0000\u0000\u0ecb\u0ecc\u0007\u0006\u0000\u0000\u0ecc\u0ecd\u0007\n\u0000"+ - "\u0000\u0ecd\u02a2\u0001\u0000\u0000\u0000\u0ece\u0ecf\u0007\t\u0000\u0000"+ - "\u0ecf\u0ed0\u0007\u0007\u0000\u0000\u0ed0\u0ed1\u0007\u0005\u0000\u0000"+ - "\u0ed1\u0ed2\u0007\u0018\u0000\u0000\u0ed2\u0ed3\u0007\t\u0000\u0000\u0ed3"+ - "\u0ed4\u0007\u0014\u0000\u0000\u0ed4\u0ed5\u0007\u0013\u0000\u0000\u0ed5"+ - "\u0ed6\u0007\u0010\u0000\u0000\u0ed6\u02a4\u0001\u0000\u0000\u0000\u0ed7"+ - "\u0ed8\u0007\t\u0000\u0000\u0ed8\u0ed9\u0007\u0010\u0000\u0000\u0ed9\u0eda"+ - "\u0007\u0005\u0000\u0000\u0eda\u0edb\u0007\u0012\u0000\u0000\u0edb\u0edc"+ - "\u0007\u0006\u0000\u0000\u0edc\u0edd\u0007\n\u0000\u0000\u0edd\u02a6\u0001"+ - "\u0000\u0000\u0000\u0ede\u0edf\u0007\t\u0000\u0000\u0edf\u0ee0\u0007\u0010"+ - "\u0000\u0000\u0ee0\u0ee1\u0007\u0005\u0000\u0000\u0ee1\u0ee2\u0007\u0007"+ - "\u0000\u0000\u0ee2\u0ee3\u0007\f\u0000\u0000\u0ee3\u0ee4\u0007\u0005\u0000"+ - "\u0000\u0ee4\u0ee5\u0007\u0006\u0000\u0000\u0ee5\u0ee6\u0007\u0013\u0000"+ - "\u0000\u0ee6\u0ee7\u0007\u0007\u0000\u0000\u0ee7\u0ee8\u0007\n\u0000\u0000"+ - "\u0ee8\u02a8\u0001\u0000\u0000\u0000\u0ee9\u0eea\u0007\t\u0000\u0000\u0eea"+ - "\u0eeb\u0007\u0010\u0000\u0000\u0eeb\u0eec\u0007\u0005\u0000\u0000\u0eec"+ - "\u0eed\u0007\r\u0000\u0000\u0eed\u0eee\u0007\u0010\u0000\u0000\u0eee\u02aa"+ - "\u0001\u0000\u0000\u0000\u0eef\u0ef0\u0007\t\u0000\u0000\u0ef0\u0ef1\u0007"+ - "\u0010\u0000\u0000\u0ef1\u0ef2\u0007\u0005\u0000\u0000\u0ef2\u0ef3\u0007"+ - "\u0010\u0000\u0000\u0ef3\u0ef4\u0007\n\u0000\u0000\u0ef4\u0ef5\u0007\u000f"+ - "\u0000\u0000\u0ef5\u0ef6\u0007\n\u0000\u0000\u0ef6\u0ef7\u0007\u0007\u0000"+ - "\u0000\u0ef7\u0ef8\u0007\u0010\u0000\u0000\u0ef8\u02ac\u0001\u0000\u0000"+ - "\u0000\u0ef9\u0efa\u0007\t\u0000\u0000\u0efa\u0efb\u0007\u0010\u0000\u0000"+ - "\u0efb\u0efc\u0007\u0005\u0000\u0000\u0efc\u0efd\u0007\u0010\u0000\u0000"+ - "\u0efd\u0efe\u0007\u0011\u0000\u0000\u0efe\u0eff\u0007\t\u0000\u0000\u0eff"+ - "\u0f00\u0007\u0010\u0000\u0000\u0f00\u0f01\u0007\u0011\u0000\u0000\u0f01"+ - "\u0f02\u0007\u000e\u0000\u0000\u0f02\u0f03\u0007\t\u0000\u0000\u0f03\u02ae"+ - "\u0001\u0000\u0000\u0000\u0f04\u0f05\u0007\t\u0000\u0000\u0f05\u0f06\u0007"+ - "\u0010\u0000\u0000\u0f06\u0f07\u0007\f\u0000\u0000\u0f07\u0f08\u0007\u0011"+ - "\u0000\u0000\u0f08\u0f09\u0007\u0007\u0000\u0000\u0f09\u02b0\u0001\u0000"+ - "\u0000\u0000\u0f0a\u0f0b\u0007\t\u0000\u0000\u0f0b\u0f0c\u0007\u0010\u0000"+ - "\u0000\u0f0c\u0f0d\u0007\f\u0000\u0000\u0f0d\u0f0e\u0007\u0013\u0000\u0000"+ - "\u0f0e\u0f0f\u0007\u0016\u0000\u0000\u0f0f\u0f10\u0007\u0010\u0000\u0000"+ - "\u0f10\u02b2\u0001\u0000\u0000\u0000\u0f11\u0f12\u0007\t\u0000\u0000\u0f12"+ - "\u0f13\u0007\u0010\u0000\u0000\u0f13\u0f14\u0007\u0013\u0000\u0000\u0f14"+ - "\u0f15\u0007\r\u0000\u0000\u0f15\u0f16\u0007\u0005\u0000\u0000\u0f16\u0f17"+ - "\u0007\u0017\u0000\u0000\u0f17\u0f18\u0007\n\u0000\u0000\u0f18\u02b4\u0001"+ - "\u0000\u0000\u0000\u0f19\u0f1a\u0007\t\u0000\u0000\u0f1a\u0f1b\u0007\u0010"+ - "\u0000\u0000\u0f1b\u0f1c\u0007\r\u0000\u0000\u0f1c\u0f1d\u0007\u0011\u0000"+ - "\u0000\u0f1d\u0f1e\u0007\u000e\u0000\u0000\u0f1e\u0f1f\u0007\u0010\u0000"+ - "\u0000\u0f1f\u02b6\u0001\u0000\u0000\u0000\u0f20\u0f21\u0007\t\u0000\u0000"+ - "\u0f21\u0f22\u0007\u0010\u0000\u0000\u0f22\u0f23\u0007\r\u0000\u0000\u0f23"+ - "\u0f24\u0007\u0011\u0000\u0000\u0f24\u0f25\u0007\u0018\u0000\u0000\u0f25"+ - "\u02b8\u0001\u0000\u0000\u0000\u0f26\u0f27\u0007\t\u0000\u0000\u0f27\u0f28"+ - "\u0007\b\u0000\u0000\u0f28\u0f29\u0007\t\u0000\u0000\u0f29\u0f2a\u0007"+ - "\u0011\u0000\u0000\u0f2a\u0f2b\u0007\f\u0000\u0000\u0f2b\u02ba\u0001\u0000"+ - "\u0000\u0000\u0f2c\u0f2d\u0007\t\u0000\u0000\u0f2d\u0f2e\u0007\b\u0000"+ - "\u0000\u0f2e\u0f2f\u0007\t\u0000\u0000\u0f2f\u0f30\u0007\u0010\u0000\u0000"+ - "\u0f30\u0f31\u0007\n\u0000\u0000\u0f31\u0f32\u0007\u000f\u0000\u0000\u0f32"+ - "\u02bc\u0001\u0000\u0000\u0000\u0f33\u0f34\u0007\u0010\u0000\u0000\u0f34"+ - "\u0f35\u0007\u0005\u0000\u0000\u0f35\u0f36\u0007\u0012\u0000\u0000\u0f36"+ - "\u0f37\u0007\u0006\u0000\u0000\u0f37\u0f38\u0007\n\u0000\u0000\u0f38\u0f39"+ - "\u0007\t\u0000\u0000\u0f39\u02be\u0001\u0000\u0000\u0000\u0f3a\u0f3b\u0007"+ - "\u0010\u0000\u0000\u0f3b\u0f3c\u0007\u0005\u0000\u0000\u0f3c\u0f3d\u0007"+ - "\u0012\u0000\u0000\u0f3d\u0f3e\u0007\u0006\u0000\u0000\u0f3e\u0f3f\u0007"+ - "\n\u0000\u0000\u0f3f\u0f40\u0007\t\u0000\u0000\u0f40\u0f41\u0007\u0018"+ - "\u0000\u0000\u0f41\u0f42\u0007\u0005\u0000\u0000\u0f42\u0f43\u0007\u000e"+ - "\u0000\u0000\u0f43\u0f44\u0007\n\u0000\u0000\u0f44\u02c0\u0001\u0000\u0000"+ - "\u0000\u0f45\u0f46\u0007\u0010\u0000\u0000\u0f46\u0f47\u0007\n\u0000\u0000"+ - "\u0f47\u0f48\u0007\u000f\u0000\u0000\u0f48\u0f49\u0007\u0018\u0000\u0000"+ - "\u0f49\u02c2\u0001\u0000\u0000\u0000\u0f4a\u0f4b\u0007\u0010\u0000\u0000"+ - "\u0f4b\u0f4c\u0007\n\u0000\u0000\u0f4c\u0f4d\u0007\u000f\u0000\u0000\u0f4d"+ - "\u0f4e\u0007\u0018\u0000\u0000\u0f4e\u0f4f\u0007\u0006\u0000\u0000\u0f4f"+ - "\u0f50\u0007\u0005\u0000\u0000\u0f50\u0f51\u0007\u0010\u0000\u0000\u0f51"+ - "\u0f52\u0007\n\u0000\u0000\u0f52\u02c4\u0001\u0000\u0000\u0000\u0f53\u0f54"+ - "\u0007\u0010\u0000\u0000\u0f54\u0f55\u0007\n\u0000\u0000\u0f55\u0f56\u0007"+ - "\u000f\u0000\u0000\u0f56\u0f57\u0007\u0018\u0000\u0000\u0f57\u0f58\u0007"+ - "\u0013\u0000\u0000\u0f58\u0f59\u0007\r\u0000\u0000\u0f59\u0f5a\u0007\u0005"+ - "\u0000\u0000\u0f5a\u0f5b\u0007\r\u0000\u0000\u0f5b\u0f5c\u0007\b\u0000"+ - "\u0000\u0f5c\u02c6\u0001\u0000\u0000\u0000\u0f5d\u0f5e\u0007\u0010\u0000"+ - "\u0000\u0f5e\u0f5f\u0007\n\u0000\u0000\u0f5f\u0f60\u0007\u001a\u0000\u0000"+ - "\u0f60\u0f61\u0007\u0010\u0000\u0000\u0f61\u02c8\u0001\u0000\u0000\u0000"+ - "\u0f62\u0f63\u0007\u0010\u0000\u0000\u0f63\u0f64\u0007\r\u0000\u0000\u0f64"+ - "\u0f65\u0007\u0005\u0000\u0000\u0f65\u0f66\u0007\u0007\u0000\u0000\u0f66"+ - "\u0f67\u0007\t\u0000\u0000\u0f67\u0f68\u0007\u0005\u0000\u0000\u0f68\u0f69"+ - "\u0007\u000e\u0000\u0000\u0f69\u0f6a\u0007\u0010\u0000\u0000\u0f6a\u0f6b"+ - "\u0007\u0011\u0000\u0000\u0f6b\u0f6c\u0007\u0013\u0000\u0000\u0f6c\u0f6d"+ - "\u0007\u0007\u0000\u0000\u0f6d\u02ca\u0001\u0000\u0000\u0000\u0f6e\u0f6f"+ - "\u0007\u0010\u0000\u0000\u0f6f\u0f70\u0007\r\u0000\u0000\u0f70\u0f71\u0007"+ - "\u0011\u0000\u0000\u0f71\u0f72\u0007\u0017\u0000\u0000\u0f72\u0f73\u0007"+ - "\u0017\u0000\u0000\u0f73\u0f74\u0007\n\u0000\u0000\u0f74\u0f75\u0007\r"+ - "\u0000\u0000\u0f75\u02cc\u0001\u0000\u0000\u0000\u0f76\u0f77\u0007\u0010"+ - "\u0000\u0000\u0f77\u0f78\u0007\r\u0000\u0000\u0f78\u0f79\u0007\u0016\u0000"+ - "\u0000\u0f79\u0f7a\u0007\u0007\u0000\u0000\u0f7a\u0f7b\u0007\u000e\u0000"+ - "\u0000\u0f7b\u0f7c\u0007\u0005\u0000\u0000\u0f7c\u0f7d\u0007\u0010\u0000"+ - "\u0000\u0f7d\u0f7e\u0007\n\u0000\u0000\u0f7e\u02ce\u0001\u0000\u0000\u0000"+ - "\u0f7f\u0f80\u0007\u0010\u0000\u0000\u0f80\u0f81\u0007\r\u0000\u0000\u0f81"+ - "\u0f82\u0007\u0016\u0000\u0000\u0f82\u0f83\u0007\t\u0000\u0000\u0f83\u0f84"+ - "\u0007\u0010\u0000\u0000\u0f84\u0f85\u0007\n\u0000\u0000\u0f85\u0f86\u0007"+ - "\f\u0000\u0000\u0f86\u02d0\u0001\u0000\u0000\u0000\u0f87\u0f88\u0007\u0010"+ - "\u0000\u0000\u0f88\u0f89\u0007\b\u0000\u0000\u0f89\u0f8a\u0007\u0018\u0000"+ - "\u0000\u0f8a\u0f8b\u0007\n\u0000\u0000\u0f8b\u02d2\u0001\u0000\u0000\u0000"+ - "\u0f8c\u0f8d\u0007\u0010\u0000\u0000\u0f8d\u0f8e\u0007\b\u0000\u0000\u0f8e"+ - "\u0f8f\u0007\u0018\u0000\u0000\u0f8f\u0f90\u0007\n\u0000\u0000\u0f90\u0f91"+ - "\u0007\t\u0000\u0000\u0f91\u02d4\u0001\u0000\u0000\u0000\u0f92\u0f93\u0007"+ - "\u0016\u0000\u0000\u0f93\u0f94\u0007\u0007\u0000\u0000\u0f94\u0f95\u0007"+ - "\u0012\u0000\u0000\u0f95\u0f96\u0007\u0013\u0000\u0000\u0f96\u0f97\u0007"+ - "\u0016\u0000\u0000\u0f97\u0f98\u0007\u0007\u0000\u0000\u0f98\u0f99\u0007"+ - "\f\u0000\u0000\u0f99\u0f9a\u0007\n\u0000\u0000\u0f9a\u0f9b\u0007\f\u0000"+ - "\u0000\u0f9b\u02d6\u0001\u0000\u0000\u0000\u0f9c\u0f9d\u0007\u0016\u0000"+ - "\u0000\u0f9d\u0f9e\u0007\u0007\u0000\u0000\u0f9e\u0f9f\u0007\u000e\u0000"+ - "\u0000\u0f9f\u0fa0\u0007\u0013\u0000\u0000\u0fa0\u0fa1\u0007\u000f\u0000"+ - "\u0000\u0fa1\u0fa2\u0007\u000f\u0000\u0000\u0fa2\u0fa3\u0007\u0011\u0000"+ - "\u0000\u0fa3\u0fa4\u0007\u0010\u0000\u0000\u0fa4\u0fa5\u0007\u0010\u0000"+ - "\u0000\u0fa5\u0fa6\u0007\n\u0000\u0000\u0fa6\u0fa7\u0007\f\u0000\u0000"+ - "\u0fa7\u02d8\u0001\u0000\u0000\u0000\u0fa8\u0fa9\u0007\u0016\u0000\u0000"+ - "\u0fa9\u0faa\u0007\u0007\u0000\u0000\u0faa\u0fab\u0007\n\u0000\u0000\u0fab"+ - "\u0fac\u0007\u0007\u0000\u0000\u0fac\u0fad\u0007\u000e\u0000\u0000\u0fad"+ - "\u0fae\u0007\r\u0000\u0000\u0fae\u0faf\u0007\b\u0000\u0000\u0faf\u0fb0"+ - "\u0007\u0018\u0000\u0000\u0fb0\u0fb1\u0007\u0010\u0000\u0000\u0fb1\u0fb2"+ - "\u0007\n\u0000\u0000\u0fb2\u0fb3\u0007\f\u0000\u0000\u0fb3\u02da\u0001"+ - "\u0000\u0000\u0000\u0fb4\u0fb5\u0007\u0016\u0000\u0000\u0fb5\u0fb6\u0007"+ - "\u0007\u0000\u0000\u0fb6\u0fb7\u0007\u0015\u0000\u0000\u0fb7\u0fb8\u0007"+ - "\u0007\u0000\u0000\u0fb8\u0fb9\u0007\u0013\u0000\u0000\u0fb9\u0fba\u0007"+ - "\u001d\u0000\u0000\u0fba\u0fbb\u0007\u0007\u0000\u0000\u0fbb\u02dc\u0001"+ - "\u0000\u0000\u0000\u0fbc\u0fbd\u0007\u0016\u0000\u0000\u0fbd\u0fbe\u0007"+ - "\u0007\u0000\u0000\u0fbe\u0fbf\u0007\u0006\u0000\u0000\u0fbf\u0fc0\u0007"+ - "\u0011\u0000\u0000\u0fc0\u0fc1\u0007\t\u0000\u0000\u0fc1\u0fc2\u0007\u0010"+ - "\u0000\u0000\u0fc2\u0fc3\u0007\n\u0000\u0000\u0fc3\u0fc4\u0007\u0007\u0000"+ - "\u0000\u0fc4\u02de\u0001\u0000\u0000\u0000\u0fc5\u0fc6\u0007\u0016\u0000"+ - "\u0000\u0fc6\u0fc7\u0007\u0007\u0000\u0000\u0fc7\u0fc8\u0007\u0006\u0000"+ - "\u0000\u0fc8\u0fc9\u0007\u0013\u0000\u0000\u0fc9\u0fca\u0007\u0017\u0000"+ - "\u0000\u0fca\u0fcb\u0007\u0017\u0000\u0000\u0fcb\u0fcc\u0007\n\u0000\u0000"+ - "\u0fcc\u0fcd\u0007\f\u0000\u0000\u0fcd\u02e0\u0001\u0000\u0000\u0000\u0fce"+ - "\u0fcf\u0007\u0016\u0000\u0000\u0fcf\u0fd0\u0007\u0007\u0000\u0000\u0fd0"+ - "\u0fd1\u0007\u0010\u0000\u0000\u0fd1\u0fd2\u0007\u0011\u0000\u0000\u0fd2"+ - "\u0fd3\u0007\u0006\u0000\u0000\u0fd3\u02e2\u0001\u0000\u0000\u0000\u0fd4"+ - "\u0fd5\u0007\u0016\u0000\u0000\u0fd5\u0fd6\u0007\u0018\u0000\u0000\u0fd6"+ - "\u0fd7\u0007\f\u0000\u0000\u0fd7\u0fd8\u0007\u0005\u0000\u0000\u0fd8\u0fd9"+ - "\u0007\u0010\u0000\u0000\u0fd9\u0fda\u0007\n\u0000\u0000\u0fda\u02e4\u0001"+ - "\u0000\u0000\u0000\u0fdb\u0fdc\u0007\u001b\u0000\u0000\u0fdc\u0fdd\u0007"+ - "\u0005\u0000\u0000\u0fdd\u0fde\u0007\u000e\u0000\u0000\u0fde\u0fdf\u0007"+ - "\u0016\u0000\u0000\u0fdf\u0fe0\u0007\u0016\u0000\u0000\u0fe0\u0fe1\u0007"+ - "\u000f\u0000\u0000\u0fe1\u02e6\u0001\u0000\u0000\u0000\u0fe2\u0fe3\u0007"+ - "\u001b\u0000\u0000\u0fe3\u0fe4\u0007\u0005\u0000\u0000\u0fe4\u0fe5\u0007"+ - "\u0006\u0000\u0000\u0fe5\u0fe6\u0007\u0011\u0000\u0000\u0fe6\u0fe7\u0007"+ - "\f\u0000\u0000\u0fe7\u02e8\u0001\u0000\u0000\u0000\u0fe8\u0fe9\u0007\u001b"+ - "\u0000\u0000\u0fe9\u0fea\u0007\u0005\u0000\u0000\u0fea\u0feb\u0007\u0006"+ - "\u0000\u0000\u0feb\u0fec\u0007\u0011\u0000\u0000\u0fec\u0fed\u0007\f\u0000"+ - "\u0000\u0fed\u0fee\u0007\u0005\u0000\u0000\u0fee\u0fef\u0007\u0010\u0000"+ - "\u0000\u0fef\u0ff0\u0007\n\u0000\u0000\u0ff0\u02ea\u0001\u0000\u0000\u0000"+ - "\u0ff1\u0ff2\u0007\u001b\u0000\u0000\u0ff2\u0ff3\u0007\u0005\u0000\u0000"+ - "\u0ff3\u0ff4\u0007\u0006\u0000\u0000\u0ff4\u0ff5\u0007\u0011\u0000\u0000"+ - "\u0ff5\u0ff6\u0007\f\u0000\u0000\u0ff6\u0ff7\u0007\u0005\u0000\u0000\u0ff7"+ - "\u0ff8\u0007\u0010\u0000\u0000\u0ff8\u0ff9\u0007\u0013\u0000\u0000\u0ff9"+ - "\u0ffa\u0007\r\u0000\u0000\u0ffa\u02ec\u0001\u0000\u0000\u0000\u0ffb\u0ffc"+ - "\u0007\u001b\u0000\u0000\u0ffc\u0ffd\u0007\u0005\u0000\u0000\u0ffd\u0ffe"+ - "\u0007\r\u0000\u0000\u0ffe\u0fff\u0007\b\u0000\u0000\u0fff\u1000\u0007"+ - "\u0011\u0000\u0000\u1000\u1001\u0007\u0007\u0000\u0000\u1001\u1002\u0007"+ - "\u0017\u0000\u0000\u1002\u02ee\u0001\u0000\u0000\u0000\u1003\u1004\u0007"+ - "\u001b\u0000\u0000\u1004\u1005\u0007\n\u0000\u0000\u1005\u1006\u0007\r"+ - "\u0000\u0000\u1006\u1007\u0007\t\u0000\u0000\u1007\u1008\u0007\u0011\u0000"+ - "\u0000\u1008\u1009\u0007\u0013\u0000\u0000\u1009\u100a\u0007\u0007\u0000"+ - "\u0000\u100a\u02f0\u0001\u0000\u0000\u0000\u100b\u100c\u0007\u001b\u0000"+ - "\u0000\u100c\u100d\u0007\u0011\u0000\u0000\u100d\u100e\u0007\n\u0000\u0000"+ - "\u100e\u100f\u0007\u001d\u0000\u0000\u100f\u02f2\u0001\u0000\u0000\u0000"+ - "\u1010\u1011\u0007\u001b\u0000\u0000\u1011\u1012\u0007\u0013\u0000\u0000"+ - "\u1012\u1013\u0007\u0006\u0000\u0000\u1013\u1014\u0007\u0005\u0000\u0000"+ - "\u1014\u1015\u0007\u0010\u0000\u0000\u1015\u1016\u0007\u0011\u0000\u0000"+ - "\u1016\u1017\u0007\u0006\u0000\u0000\u1017\u1018\u0007\n\u0000\u0000\u1018"+ - "\u02f4\u0001\u0000\u0000\u0000\u1019\u101a\u0007\u001d\u0000\u0000\u101a"+ - "\u101b\u0007\u0014\u0000\u0000\u101b\u101c\u0007\u0011\u0000\u0000\u101c"+ - "\u101d\u0007\u0010\u0000\u0000\u101d\u101e\u0007\n\u0000\u0000\u101e\u101f"+ - "\u0007\t\u0000\u0000\u101f\u1020\u0007\u0018\u0000\u0000\u1020\u1021\u0007"+ - "\u0005\u0000\u0000\u1021\u1022\u0007\u000e\u0000\u0000\u1022\u1023\u0007"+ - "\n\u0000\u0000\u1023\u02f6\u0001\u0000\u0000\u0000\u1024\u1025\u0007\u001d"+ - "\u0000\u0000\u1025\u1026\u0007\u0011\u0000\u0000\u1026\u1027\u0007\u0010"+ - "\u0000\u0000\u1027\u1028\u0007\u0014\u0000\u0000\u1028\u1029\u0007\u0013"+ - "\u0000\u0000\u1029\u102a\u0007\u0016\u0000\u0000\u102a\u102b\u0007\u0010"+ - "\u0000\u0000\u102b\u02f8\u0001\u0000\u0000\u0000\u102c\u102d\u0007\u001d"+ - "\u0000\u0000\u102d\u102e\u0007\u0013\u0000\u0000\u102e\u102f\u0007\r\u0000"+ - "\u0000\u102f\u1030\u0007\u0015\u0000\u0000\u1030\u02fa\u0001\u0000\u0000"+ - "\u0000\u1031\u1032\u0007\u001d\u0000\u0000\u1032\u1033\u0007\r\u0000\u0000"+ - "\u1033\u1034\u0007\u0005\u0000\u0000\u1034\u1035\u0007\u0018\u0000\u0000"+ - "\u1035\u1036\u0007\u0018\u0000\u0000\u1036\u1037\u0007\n\u0000\u0000\u1037"+ - "\u1038\u0007\r\u0000\u0000\u1038\u02fc\u0001\u0000\u0000\u0000\u1039\u103a"+ - "\u0007\u001d\u0000\u0000\u103a\u103b\u0007\r\u0000\u0000\u103b\u103c\u0007"+ - "\u0011\u0000\u0000\u103c\u103d\u0007\u0010\u0000\u0000\u103d\u103e\u0007"+ - "\n\u0000\u0000\u103e\u02fe\u0001\u0000\u0000\u0000\u103f\u1040\u0007\u001a"+ - "\u0000\u0000\u1040\u1041\u0007\u000f\u0000\u0000\u1041\u1042\u0007\u0006"+ - "\u0000\u0000\u1042\u0300\u0001\u0000\u0000\u0000\u1043\u1044\u0007\b\u0000"+ - "\u0000\u1044\u1045\u0007\n\u0000\u0000\u1045\u1046\u0007\u0005\u0000\u0000"+ - "\u1046\u1047\u0007\r\u0000\u0000\u1047\u0302\u0001\u0000\u0000\u0000\u1048"+ - "\u1049\u0007\b\u0000\u0000\u1049\u104a\u0007\n\u0000\u0000\u104a\u104b"+ - "\u0007\t\u0000\u0000\u104b\u0304\u0001\u0000\u0000\u0000\u104c\u104d\u0007"+ - "\u000b\u0000\u0000\u104d\u104e\u0007\u0013\u0000\u0000\u104e\u104f\u0007"+ - "\u0007\u0000\u0000\u104f\u1050\u0007\n\u0000\u0000\u1050\u0306\u0001\u0000"+ - "\u0000\u0000\u1051\u1052\u0007\u0012\u0000\u0000\u1052\u1053\u0007\n\u0000"+ - "\u0000\u1053\u1054\u0007\u0010\u0000\u0000\u1054\u1055\u0007\u001d\u0000"+ - "\u0000\u1055\u1056\u0007\n\u0000\u0000\u1056\u1057\u0007\n\u0000\u0000"+ - "\u1057\u1058\u0007\u0007\u0000\u0000\u1058\u0308\u0001\u0000\u0000\u0000"+ - "\u1059\u105a\u0007\u0012\u0000\u0000\u105a\u105b\u0007\u0011\u0000\u0000"+ - "\u105b\u105c\u0007\u0017\u0000\u0000\u105c\u105d\u0007\u0011\u0000\u0000"+ - "\u105d\u105e\u0007\u0007\u0000\u0000\u105e\u105f\u0007\u0010\u0000\u0000"+ - "\u105f\u030a\u0001\u0000\u0000\u0000\u1060\u1061\u0007\u0012\u0000\u0000"+ - "\u1061\u1062\u0007\u0011\u0000\u0000\u1062\u1063\u0007\u0010\u0000\u0000"+ - "\u1063\u030c\u0001\u0000\u0000\u0000\u1064\u1065\u0007\u0012\u0000\u0000"+ - "\u1065\u1066\u0007\u0013\u0000\u0000\u1066\u1067\u0007\u0013\u0000\u0000"+ - "\u1067\u1068\u0007\u0006\u0000\u0000\u1068\u1069\u0007\n\u0000\u0000\u1069"+ - "\u106a\u0007\u0005\u0000\u0000\u106a\u106b\u0007\u0007\u0000\u0000\u106b"+ - "\u030e\u0001\u0000\u0000\u0000\u106c\u106d\u0007\u000e\u0000\u0000\u106d"+ - "\u106e\u0007\u0014\u0000\u0000\u106e\u106f\u0007\u0005\u0000\u0000\u106f"+ - "\u1070\u0007\r\u0000\u0000\u1070\u0310\u0001\u0000\u0000\u0000\u1071\u1072"+ - "\u0007\u000e\u0000\u0000\u1072\u1073\u0007\u0014\u0000\u0000\u1073\u1074"+ - "\u0007\u0005\u0000\u0000\u1074\u1075\u0007\r\u0000\u0000\u1075\u1076\u0007"+ - "\u0005\u0000\u0000\u1076\u1077\u0007\u000e\u0000\u0000\u1077\u1078\u0007"+ - "\u0010\u0000\u0000\u1078\u1079\u0007\n\u0000\u0000\u1079\u107a\u0007\r"+ - "\u0000\u0000\u107a\u0312\u0001\u0000\u0000\u0000\u107b\u107c\u0007\u000e"+ - "\u0000\u0000\u107c\u107d\u0007\u0013\u0000\u0000\u107d\u107e\u0007\u0005"+ - "\u0000\u0000\u107e\u107f\u0007\u0006\u0000\u0000\u107f\u1080\u0007\n\u0000"+ - "\u0000\u1080\u1081\u0007\t\u0000\u0000\u1081\u1082\u0007\u000e\u0000\u0000"+ - "\u1082\u1083\u0007\n\u0000\u0000\u1083\u0314\u0001\u0000\u0000\u0000\u1084"+ - "\u1085\u0007\f\u0000\u0000\u1085\u1086\u0007\n\u0000\u0000\u1086\u1087"+ - "\u0007\u000e\u0000\u0000\u1087\u0316\u0001\u0000\u0000\u0000\u1088\u1089"+ - "\u0007\f\u0000\u0000\u1089\u108a\u0007\n\u0000\u0000\u108a\u108b\u0007"+ - "\u000e\u0000\u0000\u108b\u108c\u0007\u0011\u0000\u0000\u108c\u108d\u0007"+ - "\u000f\u0000\u0000\u108d\u108e\u0007\u0005\u0000\u0000\u108e\u108f\u0007"+ - "\u0006\u0000\u0000\u108f\u0318\u0001\u0000\u0000\u0000\u1090\u1091\u0007"+ - "\n\u0000\u0000\u1091\u1092\u0007\u001a\u0000\u0000\u1092\u1093\u0007\u0011"+ - "\u0000\u0000\u1093\u1094\u0007\t\u0000\u0000\u1094\u1095\u0007\u0010\u0000"+ - "\u0000\u1095\u1096\u0007\t\u0000\u0000\u1096\u031a\u0001\u0000\u0000\u0000"+ - "\u1097\u1098\u0007\n\u0000\u0000\u1098\u1099\u0007\u001a\u0000\u0000\u1099"+ - "\u109a\u0007\u0010\u0000\u0000\u109a\u109b\u0007\r\u0000\u0000\u109b\u109c"+ - "\u0007\u0005\u0000\u0000\u109c\u109d\u0007\u000e\u0000\u0000\u109d\u109e"+ - "\u0007\u0010\u0000\u0000\u109e\u031c\u0001\u0000\u0000\u0000\u109f\u10a0"+ - "\u0007\u0019\u0000\u0000\u10a0\u10a1\u0007\u0006\u0000\u0000\u10a1\u10a2"+ - "\u0007\u0013\u0000\u0000\u10a2\u10a3\u0007\u0005\u0000\u0000\u10a3\u10a4"+ - "\u0007\u0010\u0000\u0000\u10a4\u031e\u0001\u0000\u0000\u0000\u10a5\u10a6"+ - "\u0007\u0017\u0000\u0000\u10a6\u10a7\u0007\r\u0000\u0000\u10a7\u10a8\u0007"+ - "\n\u0000\u0000\u10a8\u10a9\u0007\u0005\u0000\u0000\u10a9\u10aa\u0007\u0010"+ - "\u0000\u0000\u10aa\u10ab\u0007\n\u0000\u0000\u10ab\u10ac\u0007\t\u0000"+ - "\u0000\u10ac\u10ad\u0007\u0010\u0000\u0000\u10ad\u0320\u0001\u0000\u0000"+ - "\u0000\u10ae\u10af\u0007\u0011\u0000\u0000\u10af\u10b0\u0007\u0007\u0000"+ - "\u0000\u10b0\u10b1\u0007\u0013\u0000\u0000\u10b1\u10b2\u0007\u0016\u0000"+ - "\u0000\u10b2\u10b3\u0007\u0010\u0000\u0000\u10b3\u0322\u0001\u0000\u0000"+ - "\u0000\u10b4\u10b5\u0007\u0011\u0000\u0000\u10b5\u10b6\u0007\u0007\u0000"+ - "\u0000\u10b6\u10b7\u0007\u0010\u0000\u0000\u10b7\u0324\u0001\u0000\u0000"+ - "\u0000\u10b8\u10b9\u0007\u0011\u0000\u0000\u10b9\u10ba\u0007\u0007\u0000"+ - "\u0000\u10ba\u10bb\u0007\u0010\u0000\u0000\u10bb\u10bc\u0007\n\u0000\u0000"+ - "\u10bc\u10bd\u0007\u0017\u0000\u0000\u10bd\u10be\u0007\n\u0000\u0000\u10be"+ - "\u10bf\u0007\r\u0000\u0000\u10bf\u0326\u0001\u0000\u0000\u0000\u10c0\u10c1"+ - "\u0007\u0011\u0000\u0000\u10c1\u10c2\u0007\u0007\u0000\u0000\u10c2\u10c3"+ - "\u0007\u0010\u0000\u0000\u10c3\u10c4\u0007\n\u0000\u0000\u10c4\u10c5\u0007"+ - "\r\u0000\u0000\u10c5\u10c6\u0007\u001b\u0000\u0000\u10c6\u10c7\u0007\u0005"+ - "\u0000\u0000\u10c7\u10c8\u0007\u0006\u0000\u0000\u10c8\u0328\u0001\u0000"+ - "\u0000\u0000\u10c9\u10ca\u0007\u0006\u0000\u0000\u10ca\u10cb\u0007\n\u0000"+ - "\u0000\u10cb\u10cc\u0007\u0005\u0000\u0000\u10cc\u10cd\u0007\t\u0000\u0000"+ - "\u10cd\u10ce\u0007\u0010\u0000\u0000\u10ce\u032a\u0001\u0000\u0000\u0000"+ - "\u10cf\u10d0\u0007\u0007\u0000\u0000\u10d0\u10d1\u0007\u0005\u0000\u0000"+ - "\u10d1\u10d2\u0007\u0010\u0000\u0000\u10d2\u10d3\u0007\u0011\u0000\u0000"+ - "\u10d3\u10d4\u0007\u0013\u0000\u0000\u10d4\u10d5\u0007\u0007\u0000\u0000"+ - "\u10d5\u10d6\u0007\u0005\u0000\u0000\u10d6\u10d7\u0007\u0006\u0000\u0000"+ - "\u10d7\u032c\u0001\u0000\u0000\u0000\u10d8\u10d9\u0007\u0007\u0000\u0000"+ - "\u10d9\u10da\u0007\u000e\u0000\u0000\u10da\u10db\u0007\u0014\u0000\u0000"+ - "\u10db\u10dc\u0007\u0005\u0000\u0000\u10dc\u10dd\u0007\r\u0000\u0000\u10dd"+ - "\u032e\u0001\u0000\u0000\u0000\u10de\u10df\u0007\u0007\u0000\u0000\u10df"+ - "\u10e0\u0007\u0013\u0000\u0000\u10e0\u10e1\u0007\u0007\u0000\u0000\u10e1"+ - "\u10e2\u0007\n\u0000\u0000\u10e2\u0330\u0001\u0000\u0000\u0000\u10e3\u10e4"+ - "\u0007\u0007\u0000\u0000\u10e4\u10e5\u0007\u0016\u0000\u0000\u10e5\u10e6"+ - "\u0007\u0006\u0000\u0000\u10e6\u10e7\u0007\u0006\u0000\u0000\u10e7\u10e8"+ - "\u0007\u0011\u0000\u0000\u10e8\u10e9\u0007\u0019\u0000\u0000\u10e9\u0332"+ - "\u0001\u0000\u0000\u0000\u10ea\u10eb\u0007\u0007\u0000\u0000\u10eb\u10ec"+ - "\u0007\u0016\u0000\u0000\u10ec\u10ed\u0007\u000f\u0000\u0000\u10ed\u10ee"+ - "\u0007\n\u0000\u0000\u10ee\u10ef\u0007\r\u0000\u0000\u10ef\u10f0\u0007"+ - "\u0011\u0000\u0000\u10f0\u10f1\u0007\u000e\u0000\u0000\u10f1\u0334\u0001"+ - "\u0000\u0000\u0000\u10f2\u10f3\u0007\u0013\u0000\u0000\u10f3\u10f4\u0007"+ - "\u001b\u0000\u0000\u10f4\u10f5\u0007\n\u0000\u0000\u10f5\u10f6\u0007\r"+ - "\u0000\u0000\u10f6\u10f7\u0007\u0006\u0000\u0000\u10f7\u10f8\u0007\u0005"+ - "\u0000\u0000\u10f8\u10f9\u0007\b\u0000\u0000\u10f9\u0336\u0001\u0000\u0000"+ - "\u0000\u10fa\u10fb\u0007\u0018\u0000\u0000\u10fb\u10fc\u0007\u0013\u0000"+ - "\u0000\u10fc\u10fd\u0007\t\u0000\u0000\u10fd\u10fe\u0007\u0011\u0000\u0000"+ - "\u10fe\u10ff\u0007\u0010\u0000\u0000\u10ff\u1100\u0007\u0011\u0000\u0000"+ - "\u1100\u1101\u0007\u0013\u0000\u0000\u1101\u1102\u0007\u0007\u0000\u0000"+ - "\u1102\u0338\u0001\u0000\u0000\u0000\u1103\u1104\u0007\u0018\u0000\u0000"+ - "\u1104\u1105\u0007\r\u0000\u0000\u1105\u1106\u0007\n\u0000\u0000\u1106"+ - "\u1107\u0007\u000e\u0000\u0000\u1107\u1108\u0007\u0011\u0000\u0000\u1108"+ - "\u1109\u0007\t\u0000\u0000\u1109\u110a\u0007\u0011\u0000\u0000\u110a\u110b"+ - "\u0007\u0013\u0000\u0000\u110b\u110c\u0007\u0007\u0000\u0000\u110c\u033a"+ - "\u0001\u0000\u0000\u0000\u110d\u110e\u0007\r\u0000\u0000\u110e\u110f\u0007"+ - "\n\u0000\u0000\u110f\u1110\u0007\u0005\u0000\u0000\u1110\u1111\u0007\u0006"+ - "\u0000\u0000\u1111\u033c\u0001\u0000\u0000\u0000\u1112\u1113\u0007\r\u0000"+ - "\u0000\u1113\u1114\u0007\u0013\u0000\u0000\u1114\u1115\u0007\u001d\u0000"+ - "\u0000\u1115\u033e\u0001\u0000\u0000\u0000\u1116\u1117\u0007\t\u0000\u0000"+ - "\u1117\u1118\u0007\n\u0000\u0000\u1118\u1119\u0007\u0010\u0000\u0000\u1119"+ - "\u111a\u0007\u0013\u0000\u0000\u111a\u111b\u0007\u0019\u0000\u0000\u111b"+ - "\u0340\u0001\u0000\u0000\u0000\u111c\u111d\u0007\t\u0000\u0000\u111d\u111e"+ - "\u0007\u000f\u0000\u0000\u111e\u111f\u0007\u0005\u0000\u0000\u111f\u1120"+ - "\u0007\u0006\u0000\u0000\u1120\u1121\u0007\u0006\u0000\u0000\u1121\u1122"+ - "\u0007\u0011\u0000\u0000\u1122\u1123\u0007\u0007\u0000\u0000\u1123\u1124"+ - "\u0007\u0010\u0000\u0000\u1124\u0342\u0001\u0000\u0000\u0000\u1125\u1126"+ - "\u0007\t\u0000\u0000\u1126\u1127\u0007\u0016\u0000\u0000\u1127\u1128\u0007"+ - "\u0012\u0000\u0000\u1128\u1129\u0007\t\u0000\u0000\u1129\u112a\u0007\u0010"+ - "\u0000\u0000\u112a\u112b\u0007\r\u0000\u0000\u112b\u112c\u0007\u0011\u0000"+ - "\u0000\u112c\u112d\u0007\u0007\u0000\u0000\u112d\u112e\u0007\u0017\u0000"+ - "\u0000\u112e\u0344\u0001\u0000\u0000\u0000\u112f\u1130\u0007\u0010\u0000"+ - "\u0000\u1130\u1131\u0007\u0011\u0000\u0000\u1131\u1132\u0007\u000f\u0000"+ - "\u0000\u1132\u1133\u0007\n\u0000\u0000\u1133\u0346\u0001\u0000\u0000\u0000"+ - "\u1134\u1135\u0007\u0010\u0000\u0000\u1135\u1136\u0007\u0011\u0000\u0000"+ - "\u1136\u1137\u0007\u000f\u0000\u0000\u1137\u1138\u0007\n\u0000\u0000\u1138"+ - "\u1139\u0007\t\u0000\u0000\u1139\u113a\u0007\u0010\u0000\u0000\u113a\u113b"+ - "\u0007\u0005\u0000\u0000\u113b\u113c\u0007\u000f\u0000\u0000\u113c\u113d"+ - "\u0007\u0018\u0000\u0000\u113d\u0348\u0001\u0000\u0000\u0000\u113e\u113f"+ - "\u0007\u0010\u0000\u0000\u113f\u1140\u0007\r\u0000\u0000\u1140\u1141\u0007"+ - "\n\u0000\u0000\u1141\u1142\u0007\u0005\u0000\u0000\u1142\u1143\u0007\u0010"+ - "\u0000\u0000\u1143\u034a\u0001\u0000\u0000\u0000\u1144\u1145\u0007\u0010"+ - "\u0000\u0000\u1145\u1146\u0007\r\u0000\u0000\u1146\u1147\u0007\u0011\u0000"+ - "\u0000\u1147\u1148\u0007\u000f\u0000\u0000\u1148\u034c\u0001\u0000\u0000"+ - "\u0000\u1149\u114a\u0007\u001b\u0000\u0000\u114a\u114b\u0007\u0005\u0000"+ - "\u0000\u114b\u114c\u0007\u0006\u0000\u0000\u114c\u114d\u0007\u0016\u0000"+ - "\u0000\u114d\u114e\u0007\n\u0000\u0000\u114e\u114f\u0007\t\u0000\u0000"+ - "\u114f\u034e\u0001\u0000\u0000\u0000\u1150\u1151\u0007\u001b\u0000\u0000"+ - "\u1151\u1152\u0007\u0005\u0000\u0000\u1152\u1153\u0007\r\u0000\u0000\u1153"+ - "\u1154\u0007\u000e\u0000\u0000\u1154\u1155\u0007\u0014\u0000\u0000\u1155"+ - "\u1156\u0007\u0005\u0000\u0000\u1156\u1157\u0007\r\u0000\u0000\u1157\u0350"+ - "\u0001\u0000\u0000\u0000\u1158\u1159\u0007\u001a\u0000\u0000\u1159\u115a"+ - "\u0007\u000f\u0000\u0000\u115a\u115b\u0007\u0006\u0000\u0000\u115b\u115c"+ - "\u0007\u0005\u0000\u0000\u115c\u115d\u0007\u0010\u0000\u0000\u115d\u115e"+ - "\u0007\u0010\u0000\u0000\u115e\u115f\u0007\r\u0000\u0000\u115f\u1160\u0007"+ - "\u0011\u0000\u0000\u1160\u1161\u0007\u0012\u0000\u0000\u1161\u1162\u0007"+ - "\u0016\u0000\u0000\u1162\u1163\u0007\u0010\u0000\u0000\u1163\u1164\u0007"+ - "\n\u0000\u0000\u1164\u1165\u0007\t\u0000\u0000\u1165\u0352\u0001\u0000"+ - "\u0000\u0000\u1166\u1167\u0007\u001a\u0000\u0000\u1167\u1168\u0007\u000f"+ - "\u0000\u0000\u1168\u1169\u0007\u0006\u0000\u0000\u1169\u116a\u0007\u000e"+ - "\u0000\u0000\u116a\u116b\u0007\u0013\u0000\u0000\u116b\u116c\u0007\u000f"+ - "\u0000\u0000\u116c\u116d\u0007\u000f\u0000\u0000\u116d\u116e\u0007\n\u0000"+ - "\u0000\u116e\u116f\u0007\u0007\u0000\u0000\u116f\u1170\u0007\u0010\u0000"+ - "\u0000\u1170\u0354\u0001\u0000\u0000\u0000\u1171\u1172\u0007\u001a\u0000"+ - "\u0000\u1172\u1173\u0007\u000f\u0000\u0000\u1173\u1174\u0007\u0006\u0000"+ - "\u0000\u1174\u1175\u0007\u0005\u0000\u0000\u1175\u1176\u0007\u0017\u0000"+ - "\u0000\u1176\u1177\u0007\u0017\u0000\u0000\u1177\u0356\u0001\u0000\u0000"+ - "\u0000\u1178\u1179\u0007\u001a\u0000\u0000\u1179\u117a\u0007\u000f\u0000"+ - "\u0000\u117a\u117b\u0007\u0006\u0000\u0000\u117b\u117c\u0005_\u0000\u0000"+ - "\u117c\u117d\u0007\u0011\u0000\u0000\u117d\u117e\u0007\t\u0000\u0000\u117e"+ - "\u117f\u0005_\u0000\u0000\u117f\u1180\u0007\u001d\u0000\u0000\u1180\u1181"+ - "\u0007\n\u0000\u0000\u1181\u1182\u0007\u0006\u0000\u0000\u1182\u1183\u0007"+ - "\u0006\u0000\u0000\u1183\u1184\u0005_\u0000\u0000\u1184\u1185\u0007\u0019"+ - "\u0000\u0000\u1185\u1186\u0007\u0013\u0000\u0000\u1186\u1187\u0007\r\u0000"+ - "\u0000\u1187\u1188\u0007\u000f\u0000\u0000\u1188\u1189\u0007\n\u0000\u0000"+ - "\u1189\u118a\u0007\f\u0000\u0000\u118a\u0358\u0001\u0000\u0000\u0000\u118b"+ - "\u118c\u0007\u001a\u0000\u0000\u118c\u118d\u0007\u000f\u0000\u0000\u118d"+ - "\u118e\u0007\u0006\u0000\u0000\u118e\u118f\u0005_\u0000\u0000\u118f\u1190"+ - "\u0007\u0011\u0000\u0000\u1190\u1191\u0007\t\u0000\u0000\u1191\u1192\u0005"+ - "_\u0000\u0000\u1192\u1193\u0007\u001d\u0000\u0000\u1193\u1194\u0007\n"+ - "\u0000\u0000\u1194\u1195\u0007\u0006\u0000\u0000\u1195\u1196\u0007\u0006"+ - "\u0000\u0000\u1196\u1197\u0005_\u0000\u0000\u1197\u1198\u0007\u0019\u0000"+ - "\u0000\u1198\u1199\u0007\u0013\u0000\u0000\u1199\u119a\u0007\r\u0000\u0000"+ - "\u119a\u119b\u0007\u000f\u0000\u0000\u119b\u119c\u0007\n\u0000\u0000\u119c"+ - "\u119d\u0007\f\u0000\u0000\u119d\u119e\u0005_\u0000\u0000\u119e\u119f"+ - "\u0007\f\u0000\u0000\u119f\u11a0\u0007\u0013\u0000\u0000\u11a0\u11a1\u0007"+ - "\u000e\u0000\u0000\u11a1\u11a2\u0007\u0016\u0000\u0000\u11a2\u11a3\u0007"+ - "\u000f\u0000\u0000\u11a3\u11a4\u0007\n\u0000\u0000\u11a4\u11a5\u0007\u0007"+ - "\u0000\u0000\u11a5\u11a6\u0007\u0010\u0000\u0000\u11a6\u035a\u0001\u0000"+ - "\u0000\u0000\u11a7\u11a8\u0007\u001a\u0000\u0000\u11a8\u11a9\u0007\u000f"+ - "\u0000\u0000\u11a9\u11aa\u0007\u0006\u0000\u0000\u11aa\u11ab\u0005_\u0000"+ - "\u0000\u11ab\u11ac\u0007\u0011\u0000\u0000\u11ac\u11ad\u0007\t\u0000\u0000"+ - "\u11ad\u11ae\u0005_\u0000\u0000\u11ae\u11af\u0007\u001d\u0000\u0000\u11af"+ - "\u11b0\u0007\n\u0000\u0000\u11b0\u11b1\u0007\u0006\u0000\u0000\u11b1\u11b2"+ - "\u0007\u0006\u0000\u0000\u11b2\u11b3\u0005_\u0000\u0000\u11b3\u11b4\u0007"+ - "\u0019\u0000\u0000\u11b4\u11b5\u0007\u0013\u0000\u0000\u11b5\u11b6\u0007"+ - "\r\u0000\u0000\u11b6\u11b7\u0007\u000f\u0000\u0000\u11b7\u11b8\u0007\n"+ - "\u0000\u0000\u11b8\u11b9\u0007\f\u0000\u0000\u11b9\u11ba\u0005_\u0000"+ - "\u0000\u11ba\u11bb\u0007\u000e\u0000\u0000\u11bb\u11bc\u0007\u0013\u0000"+ - "\u0000\u11bc\u11bd\u0007\u0007\u0000\u0000\u11bd\u11be\u0007\u0010\u0000"+ - "\u0000\u11be\u11bf\u0007\n\u0000\u0000\u11bf\u11c0\u0007\u0007\u0000\u0000"+ - "\u11c0\u11c1\u0007\u0010\u0000\u0000\u11c1\u035c\u0001\u0000\u0000\u0000"+ - "\u11c2\u11c3\u0007\u001a\u0000\u0000\u11c3\u11c4\u0007\u0018\u0000\u0000"+ - "\u11c4\u11c5\u0007\u0005\u0000\u0000\u11c5\u11c6\u0007\u0010\u0000\u0000"+ - "\u11c6\u11c7\u0007\u0014\u0000\u0000\u11c7\u035e\u0001\u0000\u0000\u0000"+ - "\u11c8\u11c9\u0007\u001a\u0000\u0000\u11c9\u11ca\u0007\u0018\u0000\u0000"+ - "\u11ca\u11cb\u0007\u0005\u0000\u0000\u11cb\u11cc\u0007\u0010\u0000\u0000"+ - "\u11cc\u11cd\u0007\u0014\u0000\u0000\u11cd\u11ce\u0005_\u0000\u0000\u11ce"+ - "\u11cf\u0007\n\u0000\u0000\u11cf\u11d0\u0007\u001a\u0000\u0000\u11d0\u11d1"+ - "\u0007\u0011\u0000\u0000\u11d1\u11d2\u0007\t\u0000\u0000\u11d2\u11d3\u0007"+ - "\u0010\u0000\u0000\u11d3\u11d4\u0007\t\u0000\u0000\u11d4\u0360\u0001\u0000"+ - "\u0000\u0000\u11d5\u11d6\u0007\u001a\u0000\u0000\u11d6\u11d7\u0007\u000f"+ - "\u0000\u0000\u11d7\u11d8\u0007\u0006\u0000\u0000\u11d8\u11d9\u0007\u000e"+ - "\u0000\u0000\u11d9\u11da\u0007\u0013\u0000\u0000\u11da\u11db\u0007\u0007"+ - "\u0000\u0000\u11db\u11dc\u0007\u000e\u0000\u0000\u11dc\u11dd\u0007\u0005"+ - "\u0000\u0000\u11dd\u11de\u0007\u0010\u0000\u0000\u11de\u0362\u0001\u0000"+ - "\u0000\u0000\u11df\u11e0\u0007\u001a\u0000\u0000\u11e0\u11e1\u0007\u000f"+ - "\u0000\u0000\u11e1\u11e2\u0007\u0006\u0000\u0000\u11e2\u11e3\u0007\n\u0000"+ - "\u0000\u11e3\u11e4\u0007\u0006\u0000\u0000\u11e4\u11e5\u0007\n\u0000\u0000"+ - "\u11e5\u11e6\u0007\u000f\u0000\u0000\u11e6\u11e7\u0007\n\u0000\u0000\u11e7"+ - "\u11e8\u0007\u0007\u0000\u0000\u11e8\u11e9\u0007\u0010\u0000\u0000\u11e9"+ - "\u0364\u0001\u0000\u0000\u0000\u11ea\u11eb\u0007\u001a\u0000\u0000\u11eb"+ - "\u11ec\u0007\u000f\u0000\u0000\u11ec\u11ed\u0007\u0006\u0000\u0000\u11ed"+ - "\u11ee\u0007\n\u0000\u0000\u11ee\u11ef\u0007\u001a\u0000\u0000\u11ef\u11f0"+ - "\u0007\u0011\u0000\u0000\u11f0\u11f1\u0007\t\u0000\u0000\u11f1\u11f2\u0007"+ - "\u0010\u0000\u0000\u11f2\u11f3\u0007\t\u0000\u0000\u11f3\u0366\u0001\u0000"+ - "\u0000\u0000\u11f4\u11f5\u0007\u001a\u0000\u0000\u11f5\u11f6\u0007\u000f"+ - "\u0000\u0000\u11f6\u11f7\u0007\u0006\u0000\u0000\u11f7\u11f8\u0007\u0019"+ - "\u0000\u0000\u11f8\u11f9\u0007\u0013\u0000\u0000\u11f9\u11fa\u0007\r\u0000"+ - "\u0000\u11fa\u11fb\u0007\n\u0000\u0000\u11fb\u11fc\u0007\t\u0000\u0000"+ - "\u11fc\u11fd\u0007\u0010\u0000\u0000\u11fd\u0368\u0001\u0000\u0000\u0000"+ - "\u11fe\u11ff\u0007\u001a\u0000\u0000\u11ff\u1200\u0007\u000f\u0000\u0000"+ - "\u1200\u1201\u0007\u0006\u0000\u0000\u1201\u1202\u0007\u0018\u0000\u0000"+ - "\u1202\u1203\u0007\u0005\u0000\u0000\u1203\u1204\u0007\r\u0000\u0000\u1204"+ - "\u1205\u0007\t\u0000\u0000\u1205\u1206\u0007\n\u0000\u0000\u1206\u036a"+ - "\u0001\u0000\u0000\u0000\u1207\u1208\u0007\u001a\u0000\u0000\u1208\u1209"+ - "\u0007\u000f\u0000\u0000\u1209\u120a\u0007\u0006\u0000\u0000\u120a\u120b"+ - "\u0007\u0018\u0000\u0000\u120b\u120c\u0007\u0011\u0000\u0000\u120c\u036c"+ - "\u0001\u0000\u0000\u0000\u120d\u120e\u0007\u001a\u0000\u0000\u120e\u120f"+ - "\u0007\u000f\u0000\u0000\u120f\u1210\u0007\u0006\u0000\u0000\u1210\u1211"+ - "\u0007\r\u0000\u0000\u1211\u1212\u0007\u0013\u0000\u0000\u1212\u1213\u0007"+ - "\u0013\u0000\u0000\u1213\u1214\u0007\u0010\u0000\u0000\u1214\u036e\u0001"+ - "\u0000\u0000\u0000\u1215\u1216\u0007\u001a\u0000\u0000\u1216\u1217\u0007"+ - "\u000f\u0000\u0000\u1217\u1218\u0007\u0006\u0000\u0000\u1218\u1219\u0007"+ - "\t\u0000\u0000\u1219\u121a\u0007\n\u0000\u0000\u121a\u121b\u0007\r\u0000"+ - "\u0000\u121b\u121c\u0007\u0011\u0000\u0000\u121c\u121d\u0007\u0005\u0000"+ - "\u0000\u121d\u121e\u0007\u0006\u0000\u0000\u121e\u121f\u0007\u0011\u0000"+ - "\u0000\u121f\u1220\u0007\u000b\u0000\u0000\u1220\u1221\u0007\n\u0000\u0000"+ - "\u1221\u0370\u0001\u0000\u0000\u0000\u1222\u1223\u0007\u000e\u0000\u0000"+ - "\u1223\u1224\u0007\u0005\u0000\u0000\u1224\u1225\u0007\u0006\u0000\u0000"+ - "\u1225\u1226\u0007\u0006\u0000\u0000\u1226\u0372\u0001\u0000\u0000\u0000"+ - "\u1227\u1228\u0007\u000e\u0000\u0000\u1228\u1229\u0007\u0016\u0000\u0000"+ - "\u1229\u122a\u0007\r\u0000\u0000\u122a\u122b\u0007\r\u0000\u0000\u122b"+ - "\u122c\u0007\n\u0000\u0000\u122c\u122d\u0007\u0007\u0000\u0000\u122d\u122e"+ - "\u0007\u0010\u0000\u0000\u122e\u0374\u0001\u0000\u0000\u0000\u122f\u1230"+ - "\u0007\u0005\u0000\u0000\u1230\u1231\u0007\u0010\u0000\u0000\u1231\u1232"+ - "\u0007\u0010\u0000\u0000\u1232\u1233\u0007\u0005\u0000\u0000\u1233\u1234"+ - "\u0007\u000e\u0000\u0000\u1234\u1235\u0007\u0014\u0000\u0000\u1235\u0376"+ - "\u0001\u0000\u0000\u0000\u1236\u1237\u0007\f\u0000\u0000\u1237\u1238\u0007"+ - "\n\u0000\u0000\u1238\u1239\u0007\u0010\u0000\u0000\u1239\u123a\u0007\u0005"+ - "\u0000\u0000\u123a\u123b\u0007\u000e\u0000\u0000\u123b\u123c\u0007\u0014"+ - "\u0000\u0000\u123c\u0378\u0001\u0000\u0000\u0000\u123d\u123e\u0007\n\u0000"+ - "\u0000\u123e\u123f\u0007\u001a\u0000\u0000\u123f\u1240\u0007\u0018\u0000"+ - "\u0000\u1240\u1241\u0007\r\u0000\u0000\u1241\u1242\u0007\n\u0000\u0000"+ - "\u1242\u1243\u0007\t\u0000\u0000\u1243\u1244\u0007\t\u0000\u0000\u1244"+ - "\u1245\u0007\u0011\u0000\u0000\u1245\u1246\u0007\u0013\u0000\u0000\u1246"+ - "\u1247\u0007\u0007\u0000\u0000\u1247\u037a\u0001\u0000\u0000\u0000\u1248"+ - "\u1249\u0007\u0017\u0000\u0000\u1249\u124a\u0007\n\u0000\u0000\u124a\u124b"+ - "\u0007\u0007\u0000\u0000\u124b\u124c\u0007\n\u0000\u0000\u124c\u124d\u0007"+ - "\r\u0000\u0000\u124d\u124e\u0007\u0005\u0000\u0000\u124e\u124f\u0007\u0010"+ - "\u0000\u0000\u124f\u1250\u0007\n\u0000\u0000\u1250\u1251\u0007\f\u0000"+ - "\u0000\u1251\u037c\u0001\u0000\u0000\u0000\u1252\u1253\u0007\u0006\u0000"+ - "\u0000\u1253\u1254\u0007\u0013\u0000\u0000\u1254\u1255\u0007\u0017\u0000"+ - "\u0000\u1255\u1256\u0007\u0017\u0000\u0000\u1256\u1257\u0007\n\u0000\u0000"+ - "\u1257\u1258\u0007\f\u0000\u0000\u1258\u037e\u0001\u0000\u0000\u0000\u1259"+ - "\u125a\u0007\t\u0000\u0000\u125a\u125b\u0007\u0010\u0000\u0000\u125b\u125c"+ - "\u0007\u0013\u0000\u0000\u125c\u125d\u0007\r\u0000\u0000\u125d\u125e\u0007"+ - "\n\u0000\u0000\u125e"; - private static final String _serializedATNSegment2 = - "\u125f\u0007\f\u0000\u0000\u125f\u0380\u0001\u0000\u0000\u0000\u1260\u1261"+ - "\u0007\u0011\u0000\u0000\u1261\u1262\u0007\u0007\u0000\u0000\u1262\u1263"+ - "\u0007\u000e\u0000\u0000\u1263\u1264\u0007\u0006\u0000\u0000\u1264\u1265"+ - "\u0007\u0016\u0000\u0000\u1265\u1266\u0007\f\u0000\u0000\u1266\u1267\u0007"+ - "\n\u0000\u0000\u1267\u0382\u0001\u0000\u0000\u0000\u1268\u1269\u0007\r"+ - "\u0000\u0000\u1269\u126a\u0007\u0013\u0000\u0000\u126a\u126b\u0007\u0016"+ - "\u0000\u0000\u126b\u126c\u0007\u0010\u0000\u0000\u126c\u126d\u0007\u0011"+ - "\u0000\u0000\u126d\u126e\u0007\u0007\u0000\u0000\u126e\u126f\u0007\n\u0000"+ - "\u0000\u126f\u0384\u0001\u0000\u0000\u0000\u1270\u1271\u0007\u0010\u0000"+ - "\u0000\u1271\u1272\u0007\r\u0000\u0000\u1272\u1273\u0007\u0005\u0000\u0000"+ - "\u1273\u1274\u0007\u0007\u0000\u0000\u1274\u1275\u0007\t\u0000\u0000\u1275"+ - "\u1276\u0007\u0019\u0000\u0000\u1276\u1277\u0007\u0013\u0000\u0000\u1277"+ - "\u1278\u0007\r\u0000\u0000\u1278\u1279\u0007\u000f\u0000\u0000\u1279\u0386"+ - "\u0001\u0000\u0000\u0000\u127a\u127b\u0007\u0011\u0000\u0000\u127b\u127c"+ - "\u0007\u000f\u0000\u0000\u127c\u127d\u0007\u0018\u0000\u0000\u127d\u127e"+ - "\u0007\u0013\u0000\u0000\u127e\u127f\u0007\r\u0000\u0000\u127f\u1280\u0007"+ - "\u0010\u0000\u0000\u1280\u0388\u0001\u0000\u0000\u0000\u1281\u1282\u0007"+ - "\u0018\u0000\u0000\u1282\u1283\u0007\u0013\u0000\u0000\u1283\u1284\u0007"+ - "\u0006\u0000\u0000\u1284\u1285\u0007\u0011\u0000\u0000\u1285\u1286\u0007"+ - "\u000e\u0000\u0000\u1286\u1287\u0007\b\u0000\u0000\u1287\u038a\u0001\u0000"+ - "\u0000\u0000\u1288\u1289\u0007\u000f\u0000\u0000\u1289\u128a\u0007\n\u0000"+ - "\u0000\u128a\u128b\u0007\u0010\u0000\u0000\u128b\u128c\u0007\u0014\u0000"+ - "\u0000\u128c\u128d\u0007\u0013\u0000\u0000\u128d\u128e\u0007\f\u0000\u0000"+ - "\u128e\u038c\u0001\u0000\u0000\u0000\u128f\u1290\u0007\r\u0000\u0000\u1290"+ - "\u1291\u0007\n\u0000\u0000\u1291\u1292\u0007\u0019\u0000\u0000\u1292\u1293"+ - "\u0007\n\u0000\u0000\u1293\u1294\u0007\r\u0000\u0000\u1294\u1295\u0007"+ - "\n\u0000\u0000\u1295\u1296\u0007\u0007\u0000\u0000\u1296\u1297\u0007\u000e"+ - "\u0000\u0000\u1297\u1298\u0007\u0011\u0000\u0000\u1298\u1299\u0007\u0007"+ - "\u0000\u0000\u1299\u129a\u0007\u0017\u0000\u0000\u129a\u038e\u0001\u0000"+ - "\u0000\u0000\u129b\u129c\u0007\u0007\u0000\u0000\u129c\u129d\u0007\n\u0000"+ - "\u0000\u129d\u129e\u0007\u001d\u0000\u0000\u129e\u0390\u0001\u0000\u0000"+ - "\u0000\u129f\u12a0\u0007\u0013\u0000\u0000\u12a0\u12a1\u0007\u0006\u0000"+ - "\u0000\u12a1\u12a2\u0007\f\u0000\u0000\u12a2\u0392\u0001\u0000\u0000\u0000"+ - "\u12a3\u12a4\u0007\u001b\u0000\u0000\u12a4\u12a5\u0007\u0005\u0000\u0000"+ - "\u12a5\u12a6\u0007\u0006\u0000\u0000\u12a6\u12a7\u0007\u0016\u0000\u0000"+ - "\u12a7\u12a8\u0007\n\u0000\u0000\u12a8\u0394\u0001\u0000\u0000\u0000\u12a9"+ - "\u12aa\u0007\t\u0000\u0000\u12aa\u12ab\u0007\u0016\u0000\u0000\u12ab\u12ac"+ - "\u0007\u0012\u0000\u0000\u12ac\u12ad\u0007\t\u0000\u0000\u12ad\u12ae\u0007"+ - "\u000e\u0000\u0000\u12ae\u12af\u0007\r\u0000\u0000\u12af\u12b0\u0007\u0011"+ - "\u0000\u0000\u12b0\u12b1\u0007\u0018\u0000\u0000\u12b1\u12b2\u0007\u0010"+ - "\u0000\u0000\u12b2\u12b3\u0007\u0011\u0000\u0000\u12b3\u12b4\u0007\u0013"+ - "\u0000\u0000\u12b4\u12b5\u0007\u0007\u0000\u0000\u12b5\u0396\u0001\u0000"+ - "\u0000\u0000\u12b6\u12b7\u0007\u0018\u0000\u0000\u12b7\u12b8\u0007\u0016"+ - "\u0000\u0000\u12b8\u12b9\u0007\u0012\u0000\u0000\u12b9\u12ba\u0007\u0006"+ - "\u0000\u0000\u12ba\u12bb\u0007\u0011\u0000\u0000\u12bb\u12bc\u0007\u000e"+ - "\u0000\u0000\u12bc\u12bd\u0007\u0005\u0000\u0000\u12bd\u12be\u0007\u0010"+ - "\u0000\u0000\u12be\u12bf\u0007\u0011\u0000\u0000\u12bf\u12c0\u0007\u0013"+ - "\u0000\u0000\u12c0\u12c1\u0007\u0007\u0000\u0000\u12c1\u0398\u0001\u0000"+ - "\u0000\u0000\u12c2\u12c3\u0007\u0013\u0000\u0000\u12c3\u12c4\u0007\u0016"+ - "\u0000\u0000\u12c4\u12c5\u0007\u0010\u0000\u0000\u12c5\u039a\u0001\u0000"+ - "\u0000\u0000\u12c6\u12c7\u0007\n\u0000\u0000\u12c7\u12c8\u0007\u0007\u0000"+ - "\u0000\u12c8\u12c9\u0007\f\u0000\u0000\u12c9\u039c\u0001\u0000\u0000\u0000"+ - "\u12ca\u12cb\u0007\r\u0000\u0000\u12cb\u12cc\u0007\u0013\u0000\u0000\u12cc"+ - "\u12cd\u0007\u0016\u0000\u0000\u12cd\u12ce\u0007\u0010\u0000\u0000\u12ce"+ - "\u12cf\u0007\u0011\u0000\u0000\u12cf\u12d0\u0007\u0007\u0000\u0000\u12d0"+ - "\u12d1\u0007\n\u0000\u0000\u12d1\u12d2\u0007\t\u0000\u0000\u12d2\u039e"+ - "\u0001\u0000\u0000\u0000\u12d3\u12d4\u0007\t\u0000\u0000\u12d4\u12d5\u0007"+ - "\u000e\u0000\u0000\u12d5\u12d6\u0007\u0014\u0000\u0000\u12d6\u12d7\u0007"+ - "\n\u0000\u0000\u12d7\u12d8\u0007\u000f\u0000\u0000\u12d8\u12d9\u0007\u0005"+ - "\u0000\u0000\u12d9\u12da\u0007\t\u0000\u0000\u12da\u03a0\u0001\u0000\u0000"+ - "\u0000\u12db\u12dc\u0007\u0018\u0000\u0000\u12dc\u12dd\u0007\r\u0000\u0000"+ - "\u12dd\u12de\u0007\u0013\u0000\u0000\u12de\u12df\u0007\u000e\u0000\u0000"+ - "\u12df\u12e0\u0007\n\u0000\u0000\u12e0\u12e1\u0007\f\u0000\u0000\u12e1"+ - "\u12e2\u0007\u0016\u0000\u0000\u12e2\u12e3\u0007\r\u0000\u0000\u12e3\u12e4"+ - "\u0007\n\u0000\u0000\u12e4\u12e5\u0007\t\u0000\u0000\u12e5\u03a2\u0001"+ - "\u0000\u0000\u0000\u12e6\u12e7\u0007\u0011\u0000\u0000\u12e7\u12e8\u0007"+ - "\u0007\u0000\u0000\u12e8\u12e9\u0007\u0018\u0000\u0000\u12e9\u12ea\u0007"+ - "\u0016\u0000\u0000\u12ea\u12eb\u0007\u0010\u0000\u0000\u12eb\u03a4\u0001"+ - "\u0000\u0000\u0000\u12ec\u12ed\u0007\t\u0000\u0000\u12ed\u12ee\u0007\u0016"+ - "\u0000\u0000\u12ee\u12ef\u0007\u0018\u0000\u0000\u12ef\u12f0\u0007\u0018"+ - "\u0000\u0000\u12f0\u12f1\u0007\u0013\u0000\u0000\u12f1\u12f2\u0007\r\u0000"+ - "\u0000\u12f2\u12f3\u0007\u0010\u0000\u0000\u12f3\u03a6\u0001\u0000\u0000"+ - "\u0000\u12f4\u12f5\u0007\u0018\u0000\u0000\u12f5\u12f6\u0007\u0005\u0000"+ - "\u0000\u12f6\u12f7\u0007\r\u0000\u0000\u12f7\u12f8\u0007\u0005\u0000\u0000"+ - "\u12f8\u12f9\u0007\u0006\u0000\u0000\u12f9\u12fa\u0007\u0006\u0000\u0000"+ - "\u12fa\u12fb\u0007\n\u0000\u0000\u12fb\u12fc\u0007\u0006\u0000\u0000\u12fc"+ - "\u03a8\u0001\u0000\u0000\u0000\u12fd\u12fe\u0007\t\u0000\u0000\u12fe\u12ff"+ - "\u0007\u001c\u0000\u0000\u12ff\u1300\u0007\u0006\u0000\u0000\u1300\u03aa"+ - "\u0001\u0000\u0000\u0000\u1301\u1302\u0007\f\u0000\u0000\u1302\u1303\u0007"+ - "\n\u0000\u0000\u1303\u1304\u0007\u0018\u0000\u0000\u1304\u1305\u0007\n"+ - "\u0000\u0000\u1305\u1306\u0007\u0007\u0000\u0000\u1306\u1307\u0007\f\u0000"+ - "\u0000\u1307\u1308\u0007\t\u0000\u0000\u1308\u03ac\u0001\u0000\u0000\u0000"+ - "\u1309\u130a\u0007\u0013\u0000\u0000\u130a\u130b\u0007\u001b\u0000\u0000"+ - "\u130b\u130c\u0007\n\u0000\u0000\u130c\u130d\u0007\r\u0000\u0000\u130d"+ - "\u130e\u0007\r\u0000\u0000\u130e\u130f\u0007\u0011\u0000\u0000\u130f\u1310"+ - "\u0007\f\u0000\u0000\u1310\u1311\u0007\u0011\u0000\u0000\u1311\u1312\u0007"+ - "\u0007\u0000\u0000\u1312\u1313\u0007\u0017\u0000\u0000\u1313\u03ae\u0001"+ - "\u0000\u0000\u0000\u1314\u1315\u0007\u000e\u0000\u0000\u1315\u1316\u0007"+ - "\u0013\u0000\u0000\u1316\u1317\u0007\u0007\u0000\u0000\u1317\u1318\u0007"+ - "\u0019\u0000\u0000\u1318\u1319\u0007\u0006\u0000\u0000\u1319\u131a\u0007"+ - "\u0011\u0000\u0000\u131a\u131b\u0007\u000e\u0000\u0000\u131b\u131c\u0007"+ - "\u0010\u0000\u0000\u131c\u03b0\u0001\u0000\u0000\u0000\u131d\u131e\u0007"+ - "\t\u0000\u0000\u131e\u131f\u0007\u0015\u0000\u0000\u131f\u1320\u0007\u0011"+ - "\u0000\u0000\u1320\u1321\u0007\u0018\u0000\u0000\u1321\u03b2\u0001\u0000"+ - "\u0000\u0000\u1322\u1323\u0007\u0006\u0000\u0000\u1323\u1324\u0007\u0013"+ - "\u0000\u0000\u1324\u1325\u0007\u000e\u0000\u0000\u1325\u1326\u0007\u0015"+ - "\u0000\u0000\u1326\u1327\u0007\n\u0000\u0000\u1327\u1328\u0007\f\u0000"+ - "\u0000\u1328\u03b4\u0001\u0000\u0000\u0000\u1329\u132a\u0007\u0010\u0000"+ - "\u0000\u132a\u132b\u0007\u0011\u0000\u0000\u132b\u132c\u0007\n\u0000\u0000"+ - "\u132c\u132d\u0007\t\u0000\u0000\u132d\u03b6\u0001\u0000\u0000\u0000\u132e"+ - "\u132f\u0007\r\u0000\u0000\u132f\u1330\u0007\u0013\u0000\u0000\u1330\u1331"+ - "\u0007\u0006\u0000\u0000\u1331\u1332\u0007\u0006\u0000\u0000\u1332\u1333"+ - "\u0007\u0016\u0000\u0000\u1333\u1334\u0007\u0018\u0000\u0000\u1334\u03b8"+ - "\u0001\u0000\u0000\u0000\u1335\u1336\u0007\u000e\u0000\u0000\u1336\u1337"+ - "\u0007\u0016\u0000\u0000\u1337\u1338\u0007\u0012\u0000\u0000\u1338\u1339"+ - "\u0007\n\u0000\u0000\u1339\u03ba\u0001\u0000\u0000\u0000\u133a\u133b\u0007"+ - "\u0017\u0000\u0000\u133b\u133c\u0007\r\u0000\u0000\u133c\u133d\u0007\u0013"+ - "\u0000\u0000\u133d\u133e\u0007\u0016\u0000\u0000\u133e\u133f\u0007\u0018"+ - "\u0000\u0000\u133f\u1340\u0007\u0011\u0000\u0000\u1340\u1341\u0007\u0007"+ - "\u0000\u0000\u1341\u1342\u0007\u0017\u0000\u0000\u1342\u03bc\u0001\u0000"+ - "\u0000\u0000\u1343\u1344\u0007\t\u0000\u0000\u1344\u1345\u0007\n\u0000"+ - "\u0000\u1345\u1346\u0007\u0010\u0000\u0000\u1346\u1347\u0007\t\u0000\u0000"+ - "\u1347\u03be\u0001\u0000\u0000\u0000\u1348\u1349\u0007\u0010\u0000\u0000"+ - "\u1349\u134a\u0007\u0005\u0000\u0000\u134a\u134b\u0007\u0012\u0000\u0000"+ - "\u134b\u134c\u0007\u0006\u0000\u0000\u134c\u134d\u0007\n\u0000\u0000\u134d"+ - "\u134e\u0007\t\u0000\u0000\u134e\u134f\u0007\u0005\u0000\u0000\u134f\u1350"+ - "\u0007\u000f\u0000\u0000\u1350\u1351\u0007\u0018\u0000\u0000\u1351\u1352"+ - "\u0007\u0006\u0000\u0000\u1352\u1353\u0007\n\u0000\u0000\u1353\u03c0\u0001"+ - "\u0000\u0000\u0000\u1354\u1355\u0007\u0013\u0000\u0000\u1355\u1356\u0007"+ - "\r\u0000\u0000\u1356\u1357\u0007\f\u0000\u0000\u1357\u1358\u0007\u0011"+ - "\u0000\u0000\u1358\u1359\u0007\u0007\u0000\u0000\u1359\u135a\u0007\u0005"+ - "\u0000\u0000\u135a\u135b\u0007\u0006\u0000\u0000\u135b\u135c\u0007\u0011"+ - "\u0000\u0000\u135c\u135d\u0007\u0010\u0000\u0000\u135d\u135e\u0007\b\u0000"+ - "\u0000\u135e\u03c2\u0001\u0000\u0000\u0000\u135f\u1360\u0007\u001a\u0000"+ - "\u0000\u1360\u1361\u0007\u000f\u0000\u0000\u1361\u1362\u0007\u0006\u0000"+ - "\u0000\u1362\u1363\u0007\u0010\u0000\u0000\u1363\u1364\u0007\u0005\u0000"+ - "\u0000\u1364\u1365\u0007\u0012\u0000\u0000\u1365\u1366\u0007\u0006\u0000"+ - "\u0000\u1366\u1367\u0007\n\u0000\u0000\u1367\u03c4\u0001\u0000\u0000\u0000"+ - "\u1368\u1369\u0007\u000e\u0000\u0000\u1369\u136a\u0007\u0013\u0000\u0000"+ - "\u136a\u136b\u0007\u0006\u0000\u0000\u136b\u136c\u0007\u0016\u0000\u0000"+ - "\u136c\u136d\u0007\u000f\u0000\u0000\u136d\u136e\u0007\u0007\u0000\u0000"+ - "\u136e\u136f\u0007\t\u0000\u0000\u136f\u03c6\u0001\u0000\u0000\u0000\u1370"+ - "\u1371\u0007\u001a\u0000\u0000\u1371\u1372\u0007\u000f\u0000\u0000\u1372"+ - "\u1373\u0007\u0006\u0000\u0000\u1373\u1374\u0007\u0007\u0000\u0000\u1374"+ - "\u1375\u0007\u0005\u0000\u0000\u1375\u1376\u0007\u000f\u0000\u0000\u1376"+ - "\u1377\u0007\n\u0000\u0000\u1377\u1378\u0007\t\u0000\u0000\u1378\u1379"+ - "\u0007\u0018\u0000\u0000\u1379\u137a\u0007\u0005\u0000\u0000\u137a\u137b"+ - "\u0007\u000e\u0000\u0000\u137b\u137c\u0007\n\u0000\u0000\u137c\u137d\u0007"+ - "\t\u0000\u0000\u137d\u03c8\u0001\u0000\u0000\u0000\u137e\u137f\u0007\r"+ - "\u0000\u0000\u137f\u1380\u0007\u0013\u0000\u0000\u1380\u1381\u0007\u001d"+ - "\u0000\u0000\u1381\u1382\u0007\u0010\u0000\u0000\u1382\u1383\u0007\b\u0000"+ - "\u0000\u1383\u1384\u0007\u0018\u0000\u0000\u1384\u1385\u0007\n\u0000\u0000"+ - "\u1385\u03ca\u0001\u0000\u0000\u0000\u1386\u1387\u0007\u0007\u0000\u0000"+ - "\u1387\u1388\u0007\u0013\u0000\u0000\u1388\u1389\u0007\r\u0000\u0000\u1389"+ - "\u138a\u0007\u000f\u0000\u0000\u138a\u138b\u0007\u0005\u0000\u0000\u138b"+ - "\u138c\u0007\u0006\u0000\u0000\u138c\u138d\u0007\u0011\u0000\u0000\u138d"+ - "\u138e\u0007\u000b\u0000\u0000\u138e\u138f\u0007\n\u0000\u0000\u138f\u1390"+ - "\u0007\f\u0000\u0000\u1390\u03cc\u0001\u0000\u0000\u0000\u1391\u1392\u0007"+ - "\u001d\u0000\u0000\u1392\u1393\u0007\u0011\u0000\u0000\u1393\u1394\u0007"+ - "\u0010\u0000\u0000\u1394\u1395\u0007\u0014\u0000\u0000\u1395\u1396\u0007"+ - "\u0011\u0000\u0000\u1396\u1397\u0007\u0007\u0000\u0000\u1397\u03ce\u0001"+ - "\u0000\u0000\u0000\u1398\u1399\u0007\u0019\u0000\u0000\u1399\u139a\u0007"+ - "\u0011\u0000\u0000\u139a\u139b\u0007\u0006\u0000\u0000\u139b\u139c\u0007"+ - "\u0010\u0000\u0000\u139c\u139d\u0007\n\u0000\u0000\u139d\u139e\u0007\r"+ - "\u0000\u0000\u139e\u03d0\u0001\u0000\u0000\u0000\u139f\u13a0\u0007\u0017"+ - "\u0000\u0000\u13a0\u13a1\u0007\r\u0000\u0000\u13a1\u13a2\u0007\u0013\u0000"+ - "\u0000\u13a2\u13a3\u0007\u0016\u0000\u0000\u13a3\u13a4\u0007\u0018\u0000"+ - "\u0000\u13a4\u13a5\u0007\t\u0000\u0000\u13a5\u03d2\u0001\u0000\u0000\u0000"+ - "\u13a6\u13a7\u0007\u0013\u0000\u0000\u13a7\u13a8\u0007\u0010\u0000\u0000"+ - "\u13a8\u13a9\u0007\u0014\u0000\u0000\u13a9\u13aa\u0007\n\u0000\u0000\u13aa"+ - "\u13ab\u0007\r\u0000\u0000\u13ab\u13ac\u0007\t\u0000\u0000\u13ac\u03d4"+ - "\u0001\u0000\u0000\u0000\u13ad\u13ae\u0007\u0007\u0000\u0000\u13ae\u13af"+ - "\u0007\u0019\u0000\u0000\u13af\u13b0\u0007\u000e\u0000\u0000\u13b0\u03d6"+ - "\u0001\u0000\u0000\u0000\u13b1\u13b2\u0007\u0007\u0000\u0000\u13b2\u13b3"+ - "\u0007\u0019\u0000\u0000\u13b3\u13b4\u0007\f\u0000\u0000\u13b4\u03d8\u0001"+ - "\u0000\u0000\u0000\u13b5\u13b6\u0007\u0007\u0000\u0000\u13b6\u13b7\u0007"+ - "\u0019\u0000\u0000\u13b7\u13b8\u0007\u0015\u0000\u0000\u13b8\u13b9\u0007"+ - "\u000e\u0000\u0000\u13b9\u03da\u0001\u0000\u0000\u0000\u13ba\u13bb\u0007"+ - "\u0007\u0000\u0000\u13bb\u13bc\u0007\u0019\u0000\u0000\u13bc\u13bd\u0007"+ - "\u0015\u0000\u0000\u13bd\u13be\u0007\f\u0000\u0000\u13be\u03dc\u0001\u0000"+ - "\u0000\u0000\u13bf\u13c0\u0007\u0016\u0000\u0000\u13c0\u13c1\u0007\n\u0000"+ - "\u0000\u13c1\u13c2\u0007\t\u0000\u0000\u13c2\u13c3\u0007\u000e\u0000\u0000"+ - "\u13c3\u13c4\u0007\u0005\u0000\u0000\u13c4\u13c5\u0007\u0018\u0000\u0000"+ - "\u13c5\u13c6\u0007\n\u0000\u0000\u13c6\u03de\u0001\u0000\u0000\u0000\u13c7"+ - "\u13c8\u0007\u001b\u0000\u0000\u13c8\u13c9\u0007\u0011\u0000\u0000\u13c9"+ - "\u13ca\u0007\n\u0000\u0000\u13ca\u13cb\u0007\u001d\u0000\u0000\u13cb\u13cc"+ - "\u0007\t\u0000\u0000\u13cc\u03e0\u0001\u0000\u0000\u0000\u13cd\u13ce\u0007"+ - "\u0007\u0000\u0000\u13ce\u13cf\u0007\u0013\u0000\u0000\u13cf\u13d0\u0007"+ - "\r\u0000\u0000\u13d0\u13d1\u0007\u000f\u0000\u0000\u13d1\u13d2\u0007\u0005"+ - "\u0000\u0000\u13d2\u13d3\u0007\u0006\u0000\u0000\u13d3\u13d4\u0007\u0011"+ - "\u0000\u0000\u13d4\u13d5\u0007\u000b\u0000\u0000\u13d5\u13d6\u0007\n\u0000"+ - "\u0000\u13d6\u03e2\u0001\u0000\u0000\u0000\u13d7\u13d8\u0007\f\u0000\u0000"+ - "\u13d8\u13d9\u0007\u0016\u0000\u0000\u13d9\u13da\u0007\u000f\u0000\u0000"+ - "\u13da\u13db\u0007\u0018\u0000\u0000\u13db\u03e4\u0001\u0000\u0000\u0000"+ - "\u13dc\u13dd\u0007\u0018\u0000\u0000\u13dd\u13de\u0007\r\u0000\u0000\u13de"+ - "\u13df\u0007\u0011\u0000\u0000\u13df\u13e0\u0007\u0007\u0000\u0000\u13e0"+ - "\u13e1\u0007\u0010\u0000\u0000\u13e1\u13e2\u0005_\u0000\u0000\u13e2\u13e3"+ - "\u0007\t\u0000\u0000\u13e3\u13e4\u0007\u0010\u0000\u0000\u13e4\u13e5\u0007"+ - "\r\u0000\u0000\u13e5\u13e6\u0007\u0011\u0000\u0000\u13e6\u13e7\u0007\u000e"+ - "\u0000\u0000\u13e7\u13e8\u0007\u0010\u0000\u0000\u13e8\u13e9\u0005_\u0000"+ - "\u0000\u13e9\u13ea\u0007\u0018\u0000\u0000\u13ea\u13eb\u0007\u0005\u0000"+ - "\u0000\u13eb\u13ec\u0007\r\u0000\u0000\u13ec\u13ed\u0007\u0005\u0000\u0000"+ - "\u13ed\u13ee\u0007\u000f\u0000\u0000\u13ee\u13ef\u0007\t\u0000\u0000\u13ef"+ - "\u03e6\u0001\u0000\u0000\u0000\u13f0\u13f1\u0007\u001b\u0000\u0000\u13f1"+ - "\u13f2\u0007\u0005\u0000\u0000\u13f2\u13f3\u0007\r\u0000\u0000\u13f3\u13f4"+ - "\u0007\u0011\u0000\u0000\u13f4\u13f5\u0007\u0005\u0000\u0000\u13f5\u13f6"+ - "\u0007\u0012\u0000\u0000\u13f6\u13f7\u0007\u0006\u0000\u0000\u13f7\u13f8"+ - "\u0007\n\u0000\u0000\u13f8\u13f9\u0005_\u0000\u0000\u13f9\u13fa\u0007"+ - "\u000e\u0000\u0000\u13fa\u13fb\u0007\u0013\u0000\u0000\u13fb\u13fc\u0007"+ - "\u0007\u0000\u0000\u13fc\u13fd\u0007\u0019\u0000\u0000\u13fd\u13fe\u0007"+ - "\u0006\u0000\u0000\u13fe\u13ff\u0007\u0011\u0000\u0000\u13ff\u1400\u0007"+ - "\u000e\u0000\u0000\u1400\u1401\u0007\u0010\u0000\u0000\u1401\u03e8\u0001"+ - "\u0000\u0000\u0000\u1402\u1403\u0007\n\u0000\u0000\u1403\u1404\u0007\r"+ - "\u0000\u0000\u1404\u1405\u0007\r\u0000\u0000\u1405\u1406\u0007\u0013\u0000"+ - "\u0000\u1406\u1407\u0007\r\u0000\u0000\u1407\u03ea\u0001\u0000\u0000\u0000"+ - "\u1408\u1409\u0007\u0016\u0000\u0000\u1409\u140a\u0007\t\u0000\u0000\u140a"+ - "\u140b\u0007\n\u0000\u0000\u140b\u140c\u0005_\u0000\u0000\u140c\u140d"+ - "\u0007\u001b\u0000\u0000\u140d\u140e\u0007\u0005\u0000\u0000\u140e\u140f"+ - "\u0007\r\u0000\u0000\u140f\u1410\u0007\u0011\u0000\u0000\u1410\u1411\u0007"+ - "\u0005\u0000\u0000\u1411\u1412\u0007\u0012\u0000\u0000\u1412\u1413\u0007"+ - "\u0006\u0000\u0000\u1413\u1414\u0007\n\u0000\u0000\u1414\u03ec\u0001\u0000"+ - "\u0000\u0000\u1415\u1416\u0007\u0016\u0000\u0000\u1416\u1417\u0007\t\u0000"+ - "\u0000\u1417\u1418\u0007\n\u0000\u0000\u1418\u1419\u0005_\u0000\u0000"+ - "\u1419\u141a\u0007\u000e\u0000\u0000\u141a\u141b\u0007\u0013\u0000\u0000"+ - "\u141b\u141c\u0007\u0006\u0000\u0000\u141c\u141d\u0007\u0016\u0000\u0000"+ - "\u141d\u141e\u0007\u000f\u0000\u0000\u141e\u141f\u0007\u0007\u0000\u0000"+ - "\u141f\u03ee\u0001\u0000\u0000\u0000\u1420\u1421\u0007\u0005\u0000\u0000"+ - "\u1421\u1422\u0007\u0006\u0000\u0000\u1422\u1423\u0007\u0011\u0000\u0000"+ - "\u1423\u1424\u0007\u0005\u0000\u0000\u1424\u1425\u0007\t\u0000\u0000\u1425"+ - "\u03f0\u0001\u0000\u0000\u0000\u1426\u1427\u0007\u000e\u0000\u0000\u1427"+ - "\u1428\u0007\u0013\u0000\u0000\u1428\u1429\u0007\u0007\u0000\u0000\u1429"+ - "\u142a\u0007\t\u0000\u0000\u142a\u142b\u0007\u0010\u0000\u0000\u142b\u142c"+ - "\u0007\u0005\u0000\u0000\u142c\u142d\u0007\u0007\u0000\u0000\u142d\u142e"+ - "\u0007\u0010\u0000\u0000\u142e\u03f2\u0001\u0000\u0000\u0000\u142f\u1430"+ - "\u0007\u0018\u0000\u0000\u1430\u1431\u0007\n\u0000\u0000\u1431\u1432\u0007"+ - "\r\u0000\u0000\u1432\u1433\u0007\u0019\u0000\u0000\u1433\u1434\u0007\u0013"+ - "\u0000\u0000\u1434\u1435\u0007\r\u0000\u0000\u1435\u1436\u0007\u000f\u0000"+ - "\u0000\u1436\u03f4\u0001\u0000\u0000\u0000\u1437\u1438\u0007\u0017\u0000"+ - "\u0000\u1438\u1439\u0007\n\u0000\u0000\u1439\u143a\u0007\u0010\u0000\u0000"+ - "\u143a\u03f6\u0001\u0000\u0000\u0000\u143b\u143c\u0007\f\u0000\u0000\u143c"+ - "\u143d\u0007\u0011\u0000\u0000\u143d\u143e\u0007\u0005\u0000\u0000\u143e"+ - "\u143f\u0007\u0017\u0000\u0000\u143f\u1440\u0007\u0007\u0000\u0000\u1440"+ - "\u1441\u0007\u0013\u0000\u0000\u1441\u1442\u0007\t\u0000\u0000\u1442\u1443"+ - "\u0007\u0010\u0000\u0000\u1443\u1444\u0007\u0011\u0000\u0000\u1444\u1445"+ - "\u0007\u000e\u0000\u0000\u1445\u1446\u0007\t\u0000\u0000\u1446\u03f8\u0001"+ - "\u0000\u0000\u0000\u1447\u1448\u0007\t\u0000\u0000\u1448\u1449\u0007\u0010"+ - "\u0000\u0000\u1449\u144a\u0007\u0005\u0000\u0000\u144a\u144b\u0007\u000e"+ - "\u0000\u0000\u144b\u144c\u0007\u0015\u0000\u0000\u144c\u144d\u0007\n\u0000"+ - "\u0000\u144d\u144e\u0007\f\u0000\u0000\u144e\u03fa\u0001\u0000\u0000\u0000"+ - "\u144f\u1450\u0007\n\u0000\u0000\u1450\u1451\u0007\u0006\u0000\u0000\u1451"+ - "\u1452\u0007\t\u0000\u0000\u1452\u1453\u0007\u0011\u0000\u0000\u1453\u1454"+ - "\u0007\u0019\u0000\u0000\u1454\u03fc\u0001\u0000\u0000\u0000\u1455\u1456"+ - "\u0007\u001d\u0000\u0000\u1456\u1457\u0007\u0014\u0000\u0000\u1457\u1458"+ - "\u0007\u0011\u0000\u0000\u1458\u1459\u0007\u0006\u0000\u0000\u1459\u145a"+ - "\u0007\n\u0000\u0000\u145a\u03fe\u0001\u0000\u0000\u0000\u145b\u145c\u0007"+ - "\r\u0000\u0000\u145c\u145d\u0007\n\u0000\u0000\u145d\u145e\u0007\u001b"+ - "\u0000\u0000\u145e\u145f\u0007\n\u0000\u0000\u145f\u1460\u0007\r\u0000"+ - "\u0000\u1460\u1461\u0007\t\u0000\u0000\u1461\u1462\u0007\n\u0000\u0000"+ - "\u1462\u0400\u0001\u0000\u0000\u0000\u1463\u1464\u0007\u0019\u0000\u0000"+ - "\u1464\u1465\u0007\u0013\u0000\u0000\u1465\u1466\u0007\r\u0000\u0000\u1466"+ - "\u1467\u0007\n\u0000\u0000\u1467\u1468\u0007\u0005\u0000\u0000\u1468\u1469"+ - "\u0007\u000e\u0000\u0000\u1469\u146a\u0007\u0014\u0000\u0000\u146a\u0402"+ - "\u0001\u0000\u0000\u0000\u146b\u146c\u0007\t\u0000\u0000\u146c\u146d\u0007"+ - "\u0006\u0000\u0000\u146d\u146e\u0007\u0011\u0000\u0000\u146e\u146f\u0007"+ - "\u000e\u0000\u0000\u146f\u1470\u0007\n\u0000\u0000\u1470\u0404\u0001\u0000"+ - "\u0000\u0000\u1471\u1472\u0007\n\u0000\u0000\u1472\u1473\u0007\u001a\u0000"+ - "\u0000\u1473\u1474\u0007\u0011\u0000\u0000\u1474\u1475\u0007\u0010\u0000"+ - "\u0000\u1475\u0406\u0001\u0000\u0000\u0000\u1476\u1477\u0007\r\u0000\u0000"+ - "\u1477\u1478\u0007\n\u0000\u0000\u1478\u1479\u0007\u0010\u0000\u0000\u1479"+ - "\u147a\u0007\u0016\u0000\u0000\u147a\u147b\u0007\r\u0000\u0000\u147b\u147c"+ - "\u0007\u0007\u0000\u0000\u147c\u0408\u0001\u0000\u0000\u0000\u147d\u147e"+ - "\u0007\u001c\u0000\u0000\u147e\u147f\u0007\u0016\u0000\u0000\u147f\u1480"+ - "\u0007\n\u0000\u0000\u1480\u1481\u0007\r\u0000\u0000\u1481\u1482\u0007"+ - "\b\u0000\u0000\u1482\u040a\u0001\u0000\u0000\u0000\u1483\u1484\u0007\r"+ - "\u0000\u0000\u1484\u1485\u0007\u0005\u0000\u0000\u1485\u1486\u0007\u0011"+ - "\u0000\u0000\u1486\u1487\u0007\t\u0000\u0000\u1487\u1488\u0007\n\u0000"+ - "\u0000\u1488\u040c\u0001\u0000\u0000\u0000\u1489\u148a\u0007\t\u0000\u0000"+ - "\u148a\u148b\u0007\u001c\u0000\u0000\u148b\u148c\u0007\u0006\u0000\u0000"+ - "\u148c\u148d\u0007\t\u0000\u0000\u148d\u148e\u0007\u0010\u0000\u0000\u148e"+ - "\u148f\u0007\u0005\u0000\u0000\u148f\u1490\u0007\u0010\u0000\u0000\u1490"+ - "\u1491\u0007\n\u0000\u0000\u1491\u040e\u0001\u0000\u0000\u0000\u1492\u1493"+ - "\u0007\f\u0000\u0000\u1493\u1494\u0007\n\u0000\u0000\u1494\u1495\u0007"+ - "\u0012\u0000\u0000\u1495\u1496\u0007\u0016\u0000\u0000\u1496\u1497\u0007"+ - "\u0017\u0000\u0000\u1497\u0410\u0001\u0000\u0000\u0000\u1498\u1499\u0007"+ - "\u0006\u0000\u0000\u1499\u149a\u0007\u0013\u0000\u0000\u149a\u149b\u0007"+ - "\u0017\u0000\u0000\u149b\u0412\u0001\u0000\u0000\u0000\u149c\u149d\u0007"+ - "\u0011\u0000\u0000\u149d\u149e\u0007\u0007\u0000\u0000\u149e\u149f\u0007"+ - "\u0019\u0000\u0000\u149f\u14a0\u0007\u0013\u0000\u0000\u14a0\u0414\u0001"+ - "\u0000\u0000\u0000\u14a1\u14a2\u0007\u0007\u0000\u0000\u14a2\u14a3\u0007"+ - "\u0013\u0000\u0000\u14a3\u14a4\u0007\u0010\u0000\u0000\u14a4\u14a5\u0007"+ - "\u0011\u0000\u0000\u14a5\u14a6\u0007\u000e\u0000\u0000\u14a6\u14a7\u0007"+ - "\n\u0000\u0000\u14a7\u0416\u0001\u0000\u0000\u0000\u14a8\u14a9\u0007\u001d"+ - "\u0000\u0000\u14a9\u14aa\u0007\u0005\u0000\u0000\u14aa\u14ab\u0007\r\u0000"+ - "\u0000\u14ab\u14ac\u0007\u0007\u0000\u0000\u14ac\u14ad\u0007\u0011\u0000"+ - "\u0000\u14ad\u14ae\u0007\u0007\u0000\u0000\u14ae\u14af\u0007\u0017\u0000"+ - "\u0000\u14af\u0418\u0001\u0000\u0000\u0000\u14b0\u14b1\u0007\n\u0000\u0000"+ - "\u14b1\u14b2\u0007\u001a\u0000\u0000\u14b2\u14b3\u0007\u000e\u0000\u0000"+ - "\u14b3\u14b4\u0007\n\u0000\u0000\u14b4\u14b5\u0007\u0018\u0000\u0000\u14b5"+ - "\u14b6\u0007\u0010\u0000\u0000\u14b6\u14b7\u0007\u0011\u0000\u0000\u14b7"+ - "\u14b8\u0007\u0013\u0000\u0000\u14b8\u14b9\u0007\u0007\u0000\u0000\u14b9"+ - "\u041a\u0001\u0000\u0000\u0000\u14ba\u14bb\u0007\u0005\u0000\u0000\u14bb"+ - "\u14bc\u0007\t\u0000\u0000\u14bc\u14bd\u0007\t\u0000\u0000\u14bd\u14be"+ - "\u0007\n\u0000\u0000\u14be\u14bf\u0007\r\u0000\u0000\u14bf\u14c0\u0007"+ - "\u0010\u0000\u0000\u14c0\u041c\u0001\u0000\u0000\u0000\u14c1\u14c2\u0007"+ - "\u0006\u0000\u0000\u14c2\u14c3\u0007\u0013\u0000\u0000\u14c3\u14c4\u0007"+ - "\u0013\u0000\u0000\u14c4\u14c5\u0007\u0018\u0000\u0000\u14c5\u041e\u0001"+ - "\u0000\u0000\u0000\u14c6\u14c7\u0007\u0013\u0000\u0000\u14c7\u14c8\u0007"+ - "\u0018\u0000\u0000\u14c8\u14c9\u0007\n\u0000\u0000\u14c9\u14ca\u0007\u0007"+ - "\u0000\u0000\u14ca\u0420\u0001\u0000\u0000\u0000\u14cb\u14cc\u0007\u0005"+ - "\u0000\u0000\u14cc\u14cd\u0007\u0012\u0000\u0000\u14cd\u14ce\u0007\t\u0000"+ - "\u0000\u14ce\u0422\u0001\u0000\u0000\u0000\u14cf\u14d0\u0007\u000e\u0000"+ - "\u0000\u14d0\u14d1\u0007\u0012\u0000\u0000\u14d1\u14d2\u0007\r\u0000\u0000"+ - "\u14d2\u14d3\u0007\u0010\u0000\u0000\u14d3\u0424\u0001\u0000\u0000\u0000"+ - "\u14d4\u14d5\u0007\u000e\u0000\u0000\u14d5\u14d6\u0007\n\u0000\u0000\u14d6"+ - "\u14d7\u0007\u0011\u0000\u0000\u14d7\u14d8\u0007\u0006\u0000\u0000\u14d8"+ - "\u0426\u0001\u0000\u0000\u0000\u14d9\u14da\u0007\u000e\u0000\u0000\u14da"+ - "\u14db\u0007\n\u0000\u0000\u14db\u14dc\u0007\u0011\u0000\u0000\u14dc\u14dd"+ - "\u0007\u0006\u0000\u0000\u14dd\u14de\u0007\u0011\u0000\u0000\u14de\u14df"+ - "\u0007\u0007\u0000\u0000\u14df\u14e0\u0007\u0017\u0000\u0000\u14e0\u0428"+ - "\u0001\u0000\u0000\u0000\u14e1\u14e2\u0007\f\u0000\u0000\u14e2\u14e3\u0007"+ - "\n\u0000\u0000\u14e3\u14e4\u0007\u0017\u0000\u0000\u14e4\u14e5\u0007\r"+ - "\u0000\u0000\u14e5\u14e6\u0007\n\u0000\u0000\u14e6\u14e7\u0007\n\u0000"+ - "\u0000\u14e7\u14e8\u0007\t\u0000\u0000\u14e8\u042a\u0001\u0000\u0000\u0000"+ - "\u14e9\u14ea\u0007\f\u0000\u0000\u14ea\u14eb\u0007\u0011\u0000\u0000\u14eb"+ - "\u14ec\u0007\u001b\u0000\u0000\u14ec\u042c\u0001\u0000\u0000\u0000\u14ed"+ - "\u14ee\u0007\n\u0000\u0000\u14ee\u14ef\u0007\u001a\u0000\u0000\u14ef\u14f0"+ - "\u0007\u0018\u0000\u0000\u14f0\u042e\u0001\u0000\u0000\u0000\u14f1\u14f2"+ - "\u0007\u0019\u0000\u0000\u14f2\u14f3\u0007\u0005\u0000\u0000\u14f3\u14f4"+ - "\u0007\u000e\u0000\u0000\u14f4\u14f5\u0007\u0010\u0000\u0000\u14f5\u14f6"+ - "\u0007\u0013\u0000\u0000\u14f6\u14f7\u0007\r\u0000\u0000\u14f7\u14f8\u0007"+ - "\u0011\u0000\u0000\u14f8\u14f9\u0007\u0005\u0000\u0000\u14f9\u14fa\u0007"+ - "\u0006\u0000\u0000\u14fa\u0430\u0001\u0000\u0000\u0000\u14fb\u14fc\u0007"+ - "\u0019\u0000\u0000\u14fc\u14fd\u0007\u0006\u0000\u0000\u14fd\u14fe\u0007"+ - "\u0013\u0000\u0000\u14fe\u14ff\u0007\u0013\u0000\u0000\u14ff\u1500\u0007"+ - "\r\u0000\u0000\u1500\u0432\u0001\u0000\u0000\u0000\u1501\u1502\u0007\u0017"+ - "\u0000\u0000\u1502\u1503\u0007\u000e\u0000\u0000\u1503\u1504\u0007\f\u0000"+ - "\u0000\u1504\u0434\u0001\u0000\u0000\u0000\u1505\u1506\u0007\u0006\u0000"+ - "\u0000\u1506\u1507\u0007\u000e\u0000\u0000\u1507\u1508\u0007\u000f\u0000"+ - "\u0000\u1508\u0436\u0001\u0000\u0000\u0000\u1509\u150a\u0007\u0006\u0000"+ - "\u0000\u150a\u150b\u0007\u0007\u0000\u0000\u150b\u0438\u0001\u0000\u0000"+ - "\u0000\u150c\u150d\u0007\u0006\u0000\u0000\u150d\u150e\u0007\u0013\u0000"+ - "\u0000\u150e\u150f\u0007\u0017\u0000\u0000\u150f\u1510\u00051\u0000\u0000"+ - "\u1510\u1511\u00050\u0000\u0000\u1511\u043a\u0001\u0000\u0000\u0000\u1512"+ - "\u1513\u0007\u000f\u0000\u0000\u1513\u1514\u0007\u0011\u0000\u0000\u1514"+ - "\u1515\u0007\u0007\u0000\u0000\u1515\u1516\u0005_\u0000\u0000\u1516\u1517"+ - "\u0007\t\u0000\u0000\u1517\u1518\u0007\u000e\u0000\u0000\u1518\u1519\u0007"+ - "\u0005\u0000\u0000\u1519\u151a\u0007\u0006\u0000\u0000\u151a\u151b\u0007"+ - "\n\u0000\u0000\u151b\u043c\u0001\u0000\u0000\u0000\u151c\u151d\u0007\u000f"+ - "\u0000\u0000\u151d\u151e\u0007\u0013\u0000\u0000\u151e\u151f\u0007\f\u0000"+ - "\u0000\u151f\u043e\u0001\u0000\u0000\u0000\u1520\u1521\u0007\u0018\u0000"+ - "\u0000\u1521\u1522\u0007\u0011\u0000\u0000\u1522\u0440\u0001\u0000\u0000"+ - "\u0000\u1523\u1524\u0007\u0018\u0000\u0000\u1524\u1525\u0007\u0013\u0000"+ - "\u0000\u1525\u1526\u0007\u001d\u0000\u0000\u1526\u1527\u0007\n\u0000\u0000"+ - "\u1527\u1528\u0007\r\u0000\u0000\u1528\u0442\u0001\u0000\u0000\u0000\u1529"+ - "\u152a\u0007\r\u0000\u0000\u152a\u152b\u0007\u0005\u0000\u0000\u152b\u152c"+ - "\u0007\f\u0000\u0000\u152c\u152d\u0007\u0011\u0000\u0000\u152d\u152e\u0007"+ - "\u0005\u0000\u0000\u152e\u152f\u0007\u0007\u0000\u0000\u152f\u1530\u0007"+ - "\t\u0000\u0000\u1530\u0444\u0001\u0000\u0000\u0000\u1531\u1532\u0007\r"+ - "\u0000\u0000\u1532\u1533\u0007\u0013\u0000\u0000\u1533\u1534\u0007\u0016"+ - "\u0000\u0000\u1534\u1535\u0007\u0007\u0000\u0000\u1535\u1536\u0007\f\u0000"+ - "\u0000\u1536\u0446\u0001\u0000\u0000\u0000\u1537\u1538\u0007\t\u0000\u0000"+ - "\u1538\u1539\u0007\u000e\u0000\u0000\u1539\u153a\u0007\u0005\u0000\u0000"+ - "\u153a\u153b\u0007\u0006\u0000\u0000\u153b\u153c\u0007\n\u0000\u0000\u153c"+ - "\u0448\u0001\u0000\u0000\u0000\u153d\u153e\u0007\t\u0000\u0000\u153e\u153f"+ - "\u0007\u0011\u0000\u0000\u153f\u1540\u0007\u0017\u0000\u0000\u1540\u1541"+ - "\u0007\u0007\u0000\u0000\u1541\u044a\u0001\u0000\u0000\u0000\u1542\u1543"+ - "\u0007\t\u0000\u0000\u1543\u1544\u0007\u001c\u0000\u0000\u1544\u1545\u0007"+ - "\r\u0000\u0000\u1545\u1546\u0007\u0010\u0000\u0000\u1546\u044c\u0001\u0000"+ - "\u0000\u0000\u1547\u1548\u0007\u0010\u0000\u0000\u1548\u1549\u0007\r\u0000"+ - "\u0000\u1549\u154a\u0007\u0011\u0000\u0000\u154a\u154b\u0007\u000f\u0000"+ - "\u0000\u154b\u154c\u0005_\u0000\u0000\u154c\u154d\u0007\t\u0000\u0000"+ - "\u154d\u154e\u0007\u000e\u0000\u0000\u154e\u154f\u0007\u0005\u0000\u0000"+ - "\u154f\u1550\u0007\u0006\u0000\u0000\u1550\u1551\u0007\n\u0000\u0000\u1551"+ - "\u044e\u0001\u0000\u0000\u0000\u1552\u1553\u0007\u0010\u0000\u0000\u1553"+ - "\u1554\u0007\r\u0000\u0000\u1554\u1555\u0007\u0016\u0000\u0000\u1555\u1556"+ - "\u0007\u0007\u0000\u0000\u1556\u1557\u0007\u000e\u0000\u0000\u1557\u0450"+ - "\u0001\u0000\u0000\u0000\u1558\u1559\u0007\u001d\u0000\u0000\u1559\u155a"+ - "\u0007\u0011\u0000\u0000\u155a\u155b\u0007\f\u0000\u0000\u155b\u155c\u0007"+ - "\u0010\u0000\u0000\u155c\u155d\u0007\u0014\u0000\u0000\u155d\u155e\u0005"+ - "_\u0000\u0000\u155e\u155f\u0007\u0012\u0000\u0000\u155f\u1560\u0007\u0016"+ - "\u0000\u0000\u1560\u1561\u0007\u000e\u0000\u0000\u1561\u1562\u0007\u0015"+ - "\u0000\u0000\u1562\u1563\u0007\n\u0000\u0000\u1563\u1564\u0007\u0010\u0000"+ - "\u0000\u1564\u0452\u0001\u0000\u0000\u0000\u1565\u1566\u0007\r\u0000\u0000"+ - "\u1566\u1567\u0007\u0005\u0000\u0000\u1567\u1568\u0007\u0007\u0000\u0000"+ - "\u1568\u1569\u0007\f\u0000\u0000\u1569\u156a\u0007\u0013\u0000\u0000\u156a"+ - "\u156b\u0007\u000f\u0000\u0000\u156b\u0454\u0001\u0000\u0000\u0000\u156c"+ - "\u156d\u0007\t\u0000\u0000\u156d\u156e\u0007\n\u0000\u0000\u156e\u156f"+ - "\u0007\u0010\u0000\u0000\u156f\u1570\u0007\t\u0000\u0000\u1570\u1571\u0007"+ - "\n\u0000\u0000\u1571\u1572\u0007\n\u0000\u0000\u1572\u1573\u0007\f\u0000"+ - "\u0000\u1573\u0456\u0001\u0000\u0000\u0000\u1574\u1575\u0007\u0005\u0000"+ - "\u0000\u1575\u1576\u0007\u000e\u0000\u0000\u1576\u1577\u0007\u0013\u0000"+ - "\u0000\u1577\u1578\u0007\t\u0000\u0000\u1578\u0458\u0001\u0000\u0000\u0000"+ - "\u1579\u157a\u0007\u0005\u0000\u0000\u157a\u157b\u0007\u000e\u0000\u0000"+ - "\u157b\u157c\u0007\u0013\u0000\u0000\u157c\u157d\u0007\t\u0000\u0000\u157d"+ - "\u157e\u0007\f\u0000\u0000\u157e\u045a\u0001\u0000\u0000\u0000\u157f\u1580"+ - "\u0007\u0005\u0000\u0000\u1580\u1581\u0007\t\u0000\u0000\u1581\u1582\u0007"+ - "\u0011\u0000\u0000\u1582\u1583\u0007\u0007\u0000\u0000\u1583\u045c\u0001"+ - "\u0000\u0000\u0000\u1584\u1585\u0007\u0005\u0000\u0000\u1585\u1586\u0007"+ - "\t\u0000\u0000\u1586\u1587\u0007\u0011\u0000\u0000\u1587\u1588\u0007\u0007"+ - "\u0000\u0000\u1588\u1589\u0007\f\u0000\u0000\u1589\u045e\u0001\u0000\u0000"+ - "\u0000\u158a\u158b\u0007\u0005\u0000\u0000\u158b\u158c\u0007\u0010\u0000"+ - "\u0000\u158c\u158d\u0007\u0005\u0000\u0000\u158d\u158e\u0007\u0007\u0000"+ - "\u0000\u158e\u0460\u0001\u0000\u0000\u0000\u158f\u1590\u0007\u0005\u0000"+ - "\u0000\u1590\u1591\u0007\u0010\u0000\u0000\u1591\u1592\u0007\u0005\u0000"+ - "\u0000\u1592\u1593\u0007\u0007\u0000\u0000\u1593\u1594\u0007\f\u0000\u0000"+ - "\u1594\u0462\u0001\u0000\u0000\u0000\u1595\u1596\u0007\u0005\u0000\u0000"+ - "\u1596\u1597\u0007\u0010\u0000\u0000\u1597\u1598\u0007\u0005\u0000\u0000"+ - "\u1598\u1599\u0007\u0007\u0000\u0000\u1599\u159a\u00052\u0000\u0000\u159a"+ - "\u0464\u0001\u0000\u0000\u0000\u159b\u159c\u0007\u0005\u0000\u0000\u159c"+ - "\u159d\u0007\u0010\u0000\u0000\u159d\u159e\u0007\u0005\u0000\u0000\u159e"+ - "\u159f\u0007\u0007\u0000\u0000\u159f\u15a0\u00052\u0000\u0000\u15a0\u15a1"+ - "\u0007\f\u0000\u0000\u15a1\u0466\u0001\u0000\u0000\u0000\u15a2\u15a3\u0007"+ - "\u000e\u0000\u0000\u15a3\u15a4\u0007\u0013\u0000\u0000\u15a4\u15a5\u0007"+ - "\t\u0000\u0000\u15a5\u0468\u0001\u0000\u0000\u0000\u15a6\u15a7\u0007\u000e"+ - "\u0000\u0000\u15a7\u15a8\u0007\u0013\u0000\u0000\u15a8\u15a9\u0007\t\u0000"+ - "\u0000\u15a9\u15aa\u0007\f\u0000\u0000\u15aa\u046a\u0001\u0000\u0000\u0000"+ - "\u15ab\u15ac\u0007\u000e\u0000\u0000\u15ac\u15ad\u0007\u0013\u0000\u0000"+ - "\u15ad\u15ae\u0007\u0010\u0000\u0000\u15ae\u046c\u0001\u0000\u0000\u0000"+ - "\u15af\u15b0\u0007\u000e\u0000\u0000\u15b0\u15b1\u0007\u0013\u0000\u0000"+ - "\u15b1\u15b2\u0007\u0010\u0000\u0000\u15b2\u15b3\u0007\f\u0000\u0000\u15b3"+ - "\u046e\u0001\u0000\u0000\u0000\u15b4\u15b5\u0007\t\u0000\u0000\u15b5\u15b6"+ - "\u0007\u0011\u0000\u0000\u15b6\u15b7\u0007\u0007\u0000\u0000\u15b7\u0470"+ - "\u0001\u0000\u0000\u0000\u15b8\u15b9\u0007\t\u0000\u0000\u15b9\u15ba\u0007"+ - "\u0011\u0000\u0000\u15ba\u15bb\u0007\u0007\u0000\u0000\u15bb\u15bc\u0007"+ - "\f\u0000\u0000\u15bc\u0472\u0001\u0000\u0000\u0000\u15bd\u15be\u0007\u0010"+ - "\u0000\u0000\u15be\u15bf\u0007\u0005\u0000\u0000\u15bf\u15c0\u0007\u0007"+ - "\u0000\u0000\u15c0\u0474\u0001\u0000\u0000\u0000\u15c1\u15c2\u0007\u0010"+ - "\u0000\u0000\u15c2\u15c3\u0007\u0005\u0000\u0000\u15c3\u15c4\u0007\u0007"+ - "\u0000\u0000\u15c4\u15c5\u0007\f\u0000\u0000\u15c5\u0476\u0001\u0000\u0000"+ - "\u0000\u15c6\u15c7\u0007\t\u0000\u0000\u15c7\u15c8\u0007\u0011\u0000\u0000"+ - "\u15c8\u15c9\u0007\u0007\u0000\u0000\u15c9\u15ca\u0007\u0014\u0000\u0000"+ - "\u15ca\u0478\u0001\u0000\u0000\u0000\u15cb\u15cc\u0007\u000e\u0000\u0000"+ - "\u15cc\u15cd\u0007\u0013\u0000\u0000\u15cd\u15ce\u0007\t\u0000\u0000\u15ce"+ - "\u15cf\u0007\u0014\u0000\u0000\u15cf\u047a\u0001\u0000\u0000\u0000\u15d0"+ - "\u15d1\u0007\u0010\u0000\u0000\u15d1\u15d2\u0007\u0005\u0000\u0000\u15d2"+ - "\u15d3\u0007\u0007\u0000\u0000\u15d3\u15d4\u0007\u0014\u0000\u0000\u15d4"+ - "\u047c\u0001\u0000\u0000\u0000\u15d5\u15d6\u0007\u0005\u0000\u0000\u15d6"+ - "\u15d7\u0007\t\u0000\u0000\u15d7\u15d8\u0007\u0011\u0000\u0000\u15d8\u15d9"+ - "\u0007\u0007\u0000\u0000\u15d9\u15da\u0007\u0014\u0000\u0000\u15da\u047e"+ - "\u0001\u0000\u0000\u0000\u15db\u15dc\u0007\u0005\u0000\u0000\u15dc\u15dd"+ - "\u0007\u000e\u0000\u0000\u15dd\u15de\u0007\u0013\u0000\u0000\u15de\u15df"+ - "\u0007\t\u0000\u0000\u15df\u15e0\u0007\u0014\u0000\u0000\u15e0\u0480\u0001"+ - "\u0000\u0000\u0000\u15e1\u15e2\u0007\u0005\u0000\u0000\u15e2\u15e3\u0007"+ - "\u0010\u0000\u0000\u15e3\u15e4\u0007\u0005\u0000\u0000\u15e4\u15e5\u0007"+ - "\u0007\u0000\u0000\u15e5\u15e6\u0007\u0014\u0000\u0000\u15e6\u0482\u0001"+ - "\u0000\u0000\u0000\u15e7\u15e8\u0007\u0012\u0000\u0000\u15e8\u15e9\u0007"+ - "\u0011\u0000\u0000\u15e9\u15ea\u0007\u0010\u0000\u0000\u15ea\u15eb\u0005"+ - "_\u0000\u0000\u15eb\u15ec\u0007\u0006\u0000\u0000\u15ec\u15ed\u0007\n"+ - "\u0000\u0000\u15ed\u15ee\u0007\u0007\u0000\u0000\u15ee\u15ef\u0007\u0017"+ - "\u0000\u0000\u15ef\u15f0\u0007\u0010\u0000\u0000\u15f0\u15f1\u0007\u0014"+ - "\u0000\u0000\u15f1\u0484\u0001\u0000\u0000\u0000\u15f2\u15f3\u0007\u000e"+ - "\u0000\u0000\u15f3\u15f4\u0007\u0014\u0000\u0000\u15f4\u15f5\u0007\u0005"+ - "\u0000\u0000\u15f5\u15f6\u0007\r\u0000\u0000\u15f6\u15f7\u0005_\u0000"+ - "\u0000\u15f7\u15f8\u0007\u0006\u0000\u0000\u15f8\u15f9\u0007\n\u0000\u0000"+ - "\u15f9\u15fa\u0007\u0007\u0000\u0000\u15fa\u15fb\u0007\u0017\u0000\u0000"+ - "\u15fb\u15fc\u0007\u0010\u0000\u0000\u15fc\u15fd\u0007\u0014\u0000\u0000"+ - "\u15fd\u0486\u0001\u0000\u0000\u0000\u15fe\u15ff\u0007\u000e\u0000\u0000"+ - "\u15ff\u1600\u0007\u0014\u0000\u0000\u1600\u1601\u0007\u0005\u0000\u0000"+ - "\u1601\u1602\u0007\r\u0000\u0000\u1602\u1603\u0007\u0005\u0000\u0000\u1603"+ - "\u1604\u0007\u000e\u0000\u0000\u1604\u1605\u0007\u0010\u0000\u0000\u1605"+ - "\u1606\u0007\n\u0000\u0000\u1606\u1607\u0007\r\u0000\u0000\u1607\u1608"+ - "\u0005_\u0000\u0000\u1608\u1609\u0007\u0006\u0000\u0000\u1609\u160a\u0007"+ - "\n\u0000\u0000\u160a\u160b\u0007\u0007\u0000\u0000\u160b\u160c\u0007\u0017"+ - "\u0000\u0000\u160c\u160d\u0007\u0010\u0000\u0000\u160d\u160e\u0007\u0014"+ - "\u0000\u0000\u160e\u0488\u0001\u0000\u0000\u0000\u160f\u1610\u0007\u0006"+ - "\u0000\u0000\u1610\u1611\u0007\u0013\u0000\u0000\u1611\u1612\u0007\u001d"+ - "\u0000\u0000\u1612\u1613\u0007\n\u0000\u0000\u1613\u1614\u0007\r\u0000"+ - "\u0000\u1614\u048a\u0001\u0000\u0000\u0000\u1615\u1616\u0007\u0013\u0000"+ - "\u0000\u1616\u1617\u0007\u000e\u0000\u0000\u1617\u1618\u0007\u0010\u0000"+ - "\u0000\u1618\u1619\u0007\n\u0000\u0000\u1619\u161a\u0007\u0010\u0000\u0000"+ - "\u161a\u161b\u0005_\u0000\u0000\u161b\u161c\u0007\u0006\u0000\u0000\u161c"+ - "\u161d\u0007\n\u0000\u0000\u161d\u161e\u0007\u0007\u0000\u0000\u161e\u161f"+ - "\u0007\u0017\u0000\u0000\u161f\u1620\u0007\u0010\u0000\u0000\u1620\u1621"+ - "\u0007\u0014\u0000\u0000\u1621\u048c\u0001\u0000\u0000\u0000\u1622\u1623"+ - "\u0007\u0016\u0000\u0000\u1623\u1624\u0007\u0018\u0000\u0000\u1624\u1625"+ - "\u0007\u0018\u0000\u0000\u1625\u1626\u0007\n\u0000\u0000\u1626\u1627\u0007"+ - "\r\u0000\u0000\u1627\u048e\u0001\u0000\u0000\u0000\u1628\u1629\u0007\u0005"+ - "\u0000\u0000\u1629\u162a\u0007\t\u0000\u0000\u162a\u162b\u0007\u000e\u0000"+ - "\u0000\u162b\u162c\u0007\u0011\u0000\u0000\u162c\u162d\u0007\u0011\u0000"+ - "\u0000\u162d\u0490\u0001\u0000\u0000\u0000\u162e\u162f\u0007\u0012\u0000"+ - "\u0000\u162f\u1630\u0007\u0010\u0000\u0000\u1630\u1631\u0007\r\u0000\u0000"+ - "\u1631\u1632\u0007\u0011\u0000\u0000\u1632\u1633\u0007\u000f\u0000\u0000"+ - "\u1633\u0492\u0001\u0000\u0000\u0000\u1634\u1635\u0007\u000e\u0000\u0000"+ - "\u1635\u1636\u0007\u0014\u0000\u0000\u1636\u1637\u0007\r\u0000\u0000\u1637"+ - "\u0494\u0001\u0000\u0000\u0000\u1638\u1639\u0007\u000e\u0000\u0000\u1639"+ - "\u163a\u0007\u0013\u0000\u0000\u163a\u163b\u0007\u0007\u0000\u0000\u163b"+ - "\u163c\u0007\u000e\u0000\u0000\u163c\u163d\u0007\u0005\u0000\u0000\u163d"+ - "\u163e\u0007\u0010\u0000\u0000\u163e\u0496\u0001\u0000\u0000\u0000\u163f"+ - "\u1640\u0007\u000e\u0000\u0000\u1640\u1641\u0007\u0013\u0000\u0000\u1641"+ - "\u1642\u0007\u0007\u0000\u0000\u1642\u1643\u0007\u000e\u0000\u0000\u1643"+ - "\u1644\u0007\u0005\u0000\u0000\u1644\u1645\u0007\u0010\u0000\u0000\u1645"+ - "\u1646\u0005_\u0000\u0000\u1646\u1647\u0007\u001d\u0000\u0000\u1647\u1648"+ - "\u0007\t\u0000\u0000\u1648\u0498\u0001\u0000\u0000\u0000\u1649\u164a\u0007"+ - "\u0019\u0000\u0000\u164a\u164b\u0007\u0013\u0000\u0000\u164b\u164c\u0007"+ - "\r\u0000\u0000\u164c\u164d\u0007\u000f\u0000\u0000\u164d\u164e\u0007\u0005"+ - "\u0000\u0000\u164e\u164f\u0007\u0010\u0000\u0000\u164f\u049a\u0001\u0000"+ - "\u0000\u0000\u1650\u1651\u0007\u0011\u0000\u0000\u1651\u1652\u0007\u0007"+ - "\u0000\u0000\u1652\u1653\u0007\u0011\u0000\u0000\u1653\u1654\u0007\u0010"+ - "\u0000\u0000\u1654\u1655\u0007\u000e\u0000\u0000\u1655\u1656\u0007\u0005"+ - "\u0000\u0000\u1656\u1657\u0007\u0018\u0000\u0000\u1657\u049c\u0001\u0000"+ - "\u0000\u0000\u1658\u1659\u0007\u0006\u0000\u0000\u1659\u165a\u0007\n\u0000"+ - "\u0000\u165a\u165b\u0007\u0007\u0000\u0000\u165b\u165c\u0007\u0017\u0000"+ - "\u0000\u165c\u165d\u0007\u0010\u0000\u0000\u165d\u165e\u0007\u0014\u0000"+ - "\u0000\u165e\u049e\u0001\u0000\u0000\u0000\u165f\u1660\u0007\u0006\u0000"+ - "\u0000\u1660\u1661\u0007\u0018\u0000\u0000\u1661\u1662\u0007\u0005\u0000"+ - "\u0000\u1662\u1663\u0007\f\u0000\u0000\u1663\u04a0\u0001\u0000\u0000\u0000"+ - "\u1664\u1665\u0007\u0006\u0000\u0000\u1665\u1666\u0007\u0010\u0000\u0000"+ - "\u1666\u1667\u0007\r\u0000\u0000\u1667\u1668\u0007\u0011\u0000\u0000\u1668"+ - "\u1669\u0007\u000f\u0000\u0000\u1669\u04a2\u0001\u0000\u0000\u0000\u166a"+ - "\u166b\u0007\u000f\u0000\u0000\u166b\u166c\u0007\f\u0000\u0000\u166c\u166d"+ - "\u00055\u0000\u0000\u166d\u04a4\u0001\u0000\u0000\u0000\u166e\u166f\u0007"+ - "\u0018\u0000\u0000\u166f\u1670\u0007\u0005\u0000\u0000\u1670\u1671\u0007"+ - "\r\u0000\u0000\u1671\u1672\u0007\t\u0000\u0000\u1672\u1673\u0007\n\u0000"+ - "\u0000\u1673\u1674\u0005_\u0000\u0000\u1674\u1675\u0007\u0011\u0000\u0000"+ - "\u1675\u1676\u0007\f\u0000\u0000\u1676\u1677\u0007\n\u0000\u0000\u1677"+ - "\u1678\u0007\u0007\u0000\u0000\u1678\u1679\u0007\u0010\u0000\u0000\u1679"+ - "\u04a6\u0001\u0000\u0000\u0000\u167a\u167b\u0007\u0018\u0000\u0000\u167b"+ - "\u167c\u0007\u0017\u0000\u0000\u167c\u167d\u0005_\u0000\u0000\u167d\u167e"+ - "\u0007\u000e\u0000\u0000\u167e\u167f\u0007\u0006\u0000\u0000\u167f\u1680"+ - "\u0007\u0011\u0000\u0000\u1680\u1681\u0007\n\u0000\u0000\u1681\u1682\u0007"+ - "\u0007\u0000\u0000\u1682\u1683\u0007\u0010\u0000\u0000\u1683\u1684\u0005"+ - "_\u0000\u0000\u1684\u1685\u0007\n\u0000\u0000\u1685\u1686\u0007\u0007"+ - "\u0000\u0000\u1686\u1687\u0007\u000e\u0000\u0000\u1687\u1688\u0007\u0013"+ - "\u0000\u0000\u1688\u1689\u0007\f\u0000\u0000\u1689\u168a\u0007\u0011\u0000"+ - "\u0000\u168a\u168b\u0007\u0007\u0000\u0000\u168b\u168c\u0007\u0017\u0000"+ - "\u0000\u168c\u04a8\u0001\u0000\u0000\u0000\u168d\u168e\u0007\u001c\u0000"+ - "\u0000\u168e\u168f\u0007\u0016\u0000\u0000\u168f\u1690\u0007\u0013\u0000"+ - "\u0000\u1690\u1691\u0007\u0010\u0000\u0000\u1691\u1692\u0007\n\u0000\u0000"+ - "\u1692\u1693\u0005_\u0000\u0000\u1693\u1694\u0007\u0011\u0000\u0000\u1694"+ - "\u1695\u0007\f\u0000\u0000\u1695\u1696\u0007\n\u0000\u0000\u1696\u1697"+ - "\u0007\u0007\u0000\u0000\u1697\u1698\u0007\u0010\u0000\u0000\u1698\u04aa"+ - "\u0001\u0000\u0000\u0000\u1699\u169a\u0007\u001c\u0000\u0000\u169a\u169b"+ - "\u0007\u0016\u0000\u0000\u169b\u169c\u0007\u0013\u0000\u0000\u169c\u169d"+ - "\u0007\u0010\u0000\u0000\u169d\u169e\u0007\n\u0000\u0000\u169e\u169f\u0005"+ - "_\u0000\u0000\u169f\u16a0\u0007\u0006\u0000\u0000\u16a0\u16a1\u0007\u0011"+ - "\u0000\u0000\u16a1\u16a2\u0007\u0010\u0000\u0000\u16a2\u16a3\u0007\n\u0000"+ - "\u0000\u16a3\u16a4\u0007\r\u0000\u0000\u16a4\u16a5\u0007\u0005\u0000\u0000"+ - "\u16a5\u16a6\u0007\u0006\u0000\u0000\u16a6\u04ac\u0001\u0000\u0000\u0000"+ - "\u16a7\u16a8\u0007\u001c\u0000\u0000\u16a8\u16a9\u0007\u0016\u0000\u0000"+ - "\u16a9\u16aa\u0007\u0013\u0000\u0000\u16aa\u16ab\u0007\u0010\u0000\u0000"+ - "\u16ab\u16ac\u0007\n\u0000\u0000\u16ac\u16ad\u0005_\u0000\u0000\u16ad"+ - "\u16ae\u0007\u0007\u0000\u0000\u16ae\u16af\u0007\u0016\u0000\u0000\u16af"+ - "\u16b0\u0007\u0006\u0000\u0000\u16b0\u16b1\u0007\u0006\u0000\u0000\u16b1"+ - "\u16b2\u0007\u0005\u0000\u0000\u16b2\u16b3\u0007\u0012\u0000\u0000\u16b3"+ - "\u16b4\u0007\u0006\u0000\u0000\u16b4\u16b5\u0007\n\u0000\u0000\u16b5\u04ae"+ - "\u0001\u0000\u0000\u0000\u16b6\u16b7\u0007\r\u0000\u0000\u16b7\u16b8\u0007"+ - "\n\u0000\u0000\u16b8\u16b9\u0007\u0017\u0000\u0000\u16b9\u16ba\u0007\n"+ - "\u0000\u0000\u16ba\u16bb\u0007\u001a\u0000\u0000\u16bb\u16bc\u0007\u0018"+ - "\u0000\u0000\u16bc\u16bd\u0005_\u0000\u0000\u16bd\u16be\u0007\u000e\u0000"+ - "\u0000\u16be\u16bf\u0007\u0013\u0000\u0000\u16bf\u16c0\u0007\u0016\u0000"+ - "\u0000\u16c0\u16c1\u0007\u0007\u0000\u0000\u16c1\u16c2\u0007\u0010\u0000"+ - "\u0000\u16c2\u04b0\u0001\u0000\u0000\u0000\u16c3\u16c4\u0007\r\u0000\u0000"+ - "\u16c4\u16c5\u0007\n\u0000\u0000\u16c5\u16c6\u0007\u0017\u0000\u0000\u16c6"+ - "\u16c7\u0007\n\u0000\u0000\u16c7\u16c8\u0007\u001a\u0000\u0000\u16c8\u16c9"+ - "\u0007\u0018\u0000\u0000\u16c9\u16ca\u0005_\u0000\u0000\u16ca\u16cb\u0007"+ - "\u0011\u0000\u0000\u16cb\u16cc\u0007\u0007\u0000\u0000\u16cc\u16cd\u0007"+ - "\t\u0000\u0000\u16cd\u16ce\u0007\u0010\u0000\u0000\u16ce\u16cf\u0007\r"+ - "\u0000\u0000\u16cf\u04b2\u0001\u0000\u0000\u0000\u16d0\u16d1\u0007\r\u0000"+ - "\u0000\u16d1\u16d2\u0007\n\u0000\u0000\u16d2\u16d3\u0007\u0017\u0000\u0000"+ - "\u16d3\u16d4\u0007\n\u0000\u0000\u16d4\u16d5\u0007\u001a\u0000\u0000\u16d5"+ - "\u16d6\u0007\u0018\u0000\u0000\u16d6\u16d7\u0005_\u0000\u0000\u16d7\u16d8"+ - "\u0007\u0006\u0000\u0000\u16d8\u16d9\u0007\u0011\u0000\u0000\u16d9\u16da"+ - "\u0007\u0015\u0000\u0000\u16da\u16db\u0007\n\u0000\u0000\u16db\u04b4\u0001"+ - "\u0000\u0000\u0000\u16dc\u16dd\u0007\r\u0000\u0000\u16dd\u16de\u0007\n"+ - "\u0000\u0000\u16de\u16df\u0007\u0017\u0000\u0000\u16df\u16e0\u0007\n\u0000"+ - "\u0000\u16e0\u16e1\u0007\u001a\u0000\u0000\u16e1\u16e2\u0007\u0018\u0000"+ - "\u0000\u16e2\u16e3\u0005_\u0000\u0000\u16e3\u16e4\u0007\u000f\u0000\u0000"+ - "\u16e4\u16e5\u0007\u0005\u0000\u0000\u16e5\u16e6\u0007\u0010\u0000\u0000"+ - "\u16e6\u16e7\u0007\u000e\u0000\u0000\u16e7\u16e8\u0007\u0014\u0000\u0000"+ - "\u16e8\u04b6\u0001\u0000\u0000\u0000\u16e9\u16ea\u0007\r\u0000\u0000\u16ea"+ - "\u16eb\u0007\n\u0000\u0000\u16eb\u16ec\u0007\u0017\u0000\u0000\u16ec\u16ed"+ - "\u0007\n\u0000\u0000\u16ed\u16ee\u0007\u001a\u0000\u0000\u16ee\u16ef\u0007"+ - "\u0018\u0000\u0000\u16ef\u16f0\u0005_\u0000\u0000\u16f0\u16f1\u0007\u000f"+ - "\u0000\u0000\u16f1\u16f2\u0007\u0005\u0000\u0000\u16f2\u16f3\u0007\u0010"+ - "\u0000\u0000\u16f3\u16f4\u0007\u000e\u0000\u0000\u16f4\u16f5\u0007\u0014"+ - "\u0000\u0000\u16f5\u16f6\u0007\n\u0000\u0000\u16f6\u16f7\u0007\t\u0000"+ - "\u0000\u16f7\u04b8\u0001\u0000\u0000\u0000\u16f8\u16f9\u0007\r\u0000\u0000"+ - "\u16f9\u16fa\u0007\n\u0000\u0000\u16fa\u16fb\u0007\u0017\u0000\u0000\u16fb"+ - "\u16fc\u0007\n\u0000\u0000\u16fc\u16fd\u0007\u001a\u0000\u0000\u16fd\u16fe"+ - "\u0007\u0018\u0000\u0000\u16fe\u16ff\u0005_\u0000\u0000\u16ff\u1700\u0007"+ - "\r\u0000\u0000\u1700\u1701\u0007\n\u0000\u0000\u1701\u1702\u0007\u0018"+ - "\u0000\u0000\u1702\u1703\u0007\u0006\u0000\u0000\u1703\u1704\u0007\u0005"+ - "\u0000\u0000\u1704\u1705\u0007\u000e\u0000\u0000\u1705\u1706\u0007\n\u0000"+ - "\u0000\u1706\u04ba\u0001\u0000\u0000\u0000\u1707\u1708\u0007\r\u0000\u0000"+ - "\u1708\u1709\u0007\n\u0000\u0000\u1709\u170a\u0007\u0017\u0000\u0000\u170a"+ - "\u170b\u0007\n\u0000\u0000\u170b\u170c\u0007\u001a\u0000\u0000\u170c\u170d"+ - "\u0007\u0018\u0000\u0000\u170d\u170e\u0005_\u0000\u0000\u170e\u170f\u0007"+ - "\t\u0000\u0000\u170f\u1710\u0007\u0018\u0000\u0000\u1710\u1711\u0007\u0006"+ - "\u0000\u0000\u1711\u1712\u0007\u0011\u0000\u0000\u1712\u1713\u0007\u0010"+ - "\u0000\u0000\u1713\u1714\u0005_\u0000\u0000\u1714\u1715\u0007\u0010\u0000"+ - "\u0000\u1715\u1716\u0007\u0013\u0000\u0000\u1716\u1717\u0005_\u0000\u0000"+ - "\u1717\u1718\u0007\u0005\u0000\u0000\u1718\u1719\u0007\r\u0000\u0000\u1719"+ - "\u171a\u0007\r\u0000\u0000\u171a\u171b\u0007\u0005\u0000\u0000\u171b\u171c"+ - "\u0007\b\u0000\u0000\u171c\u04bc\u0001\u0000\u0000\u0000\u171d\u171e\u0007"+ - "\r\u0000\u0000\u171e\u171f\u0007\n\u0000\u0000\u171f\u1720\u0007\u0017"+ - "\u0000\u0000\u1720\u1721\u0007\n\u0000\u0000\u1721\u1722\u0007\u001a\u0000"+ - "\u0000\u1722\u1723\u0007\u0018\u0000\u0000\u1723\u1724\u0005_\u0000\u0000"+ - "\u1724\u1725\u0007\t\u0000\u0000\u1725\u1726\u0007\u0018\u0000\u0000\u1726"+ - "\u1727\u0007\u0006\u0000\u0000\u1727\u1728\u0007\u0011\u0000\u0000\u1728"+ - "\u1729\u0007\u0010\u0000\u0000\u1729\u172a\u0005_\u0000\u0000\u172a\u172b"+ - "\u0007\u0010\u0000\u0000\u172b\u172c\u0007\u0013\u0000\u0000\u172c\u172d"+ - "\u0005_\u0000\u0000\u172d\u172e\u0007\u0010\u0000\u0000\u172e\u172f\u0007"+ - "\u0005\u0000\u0000\u172f\u1730\u0007\u0012\u0000\u0000\u1730\u1731\u0007"+ - "\u0006\u0000\u0000\u1731\u1732\u0007\n\u0000\u0000\u1732\u04be\u0001\u0000"+ - "\u0000\u0000\u1733\u1734\u0007\r\u0000\u0000\u1734\u1735\u0007\n\u0000"+ - "\u0000\u1735\u1736\u0007\u0017\u0000\u0000\u1736\u1737\u0007\n\u0000\u0000"+ - "\u1737\u1738\u0007\u001a\u0000\u0000\u1738\u1739\u0007\u0018\u0000\u0000"+ - "\u1739\u173a\u0005_\u0000\u0000\u173a\u173b\u0007\t\u0000\u0000\u173b"+ - "\u173c\u0007\u0016\u0000\u0000\u173c\u173d\u0007\u0012\u0000\u0000\u173d"+ - "\u173e\u0007\t\u0000\u0000\u173e\u173f\u0007\u0010\u0000\u0000\u173f\u1740"+ - "\u0007\r\u0000\u0000\u1740\u04c0\u0001\u0000\u0000\u0000\u1741\u1742\u0007"+ - "\r\u0000\u0000\u1742\u1743\u0007\n\u0000\u0000\u1743\u1744\u0007\u0018"+ - "\u0000\u0000\u1744\u1745\u0007\n\u0000\u0000\u1745\u1746\u0007\u0005\u0000"+ - "\u0000\u1746\u1747\u0007\u0010\u0000\u0000\u1747\u04c2\u0001\u0000\u0000"+ - "\u0000\u1748\u1749\u0007\r\u0000\u0000\u1749\u174a\u0007\u0018\u0000\u0000"+ - "\u174a\u174b\u0007\u0005\u0000\u0000\u174b\u174c\u0007\f\u0000\u0000\u174c"+ - "\u04c4\u0001\u0000\u0000\u0000\u174d\u174e\u0007\r\u0000\u0000\u174e\u174f"+ - "\u0007\u0010\u0000\u0000\u174f\u1750\u0007\r\u0000\u0000\u1750\u1751\u0007"+ - "\u0011\u0000\u0000\u1751\u1752\u0007\u000f\u0000\u0000\u1752\u04c6\u0001"+ - "\u0000\u0000\u0000\u1753\u1754\u0007\t\u0000\u0000\u1754\u1755\u0007\u0018"+ - "\u0000\u0000\u1755\u1756\u0007\u0006\u0000\u0000\u1756\u1757\u0007\u0011"+ - "\u0000\u0000\u1757\u1758\u0007\u0010\u0000\u0000\u1758\u1759\u0005_\u0000"+ - "\u0000\u1759\u175a\u0007\u0018\u0000\u0000\u175a\u175b\u0007\u0005\u0000"+ - "\u0000\u175b\u175c\u0007\r\u0000\u0000\u175c\u175d\u0007\u0010\u0000\u0000"+ - "\u175d\u04c8\u0001\u0000\u0000\u0000\u175e\u175f\u0007\t\u0000\u0000\u175f"+ - "\u1760\u0007\u0010\u0000\u0000\u1760\u1761\u0007\u0005\u0000\u0000\u1761"+ - "\u1762\u0007\r\u0000\u0000\u1762\u1763\u0007\u0010\u0000\u0000\u1763\u1764"+ - "\u0007\t\u0000\u0000\u1764\u1765\u0005_\u0000\u0000\u1765\u1766\u0007"+ - "\u001d\u0000\u0000\u1766\u1767\u0007\u0011\u0000\u0000\u1767\u1768\u0007"+ - "\u0010\u0000\u0000\u1768\u1769\u0007\u0014\u0000\u0000\u1769\u04ca\u0001"+ - "\u0000\u0000\u0000\u176a\u176b\u0007\t\u0000\u0000\u176b\u176c\u0007\u0010"+ - "\u0000\u0000\u176c\u176d\u0007\r\u0000\u0000\u176d\u176e\u0007\u0011\u0000"+ - "\u0000\u176e\u176f\u0007\u0007\u0000\u0000\u176f\u1770\u0007\u0017\u0000"+ - "\u0000\u1770\u1771\u0005_\u0000\u0000\u1771\u1772\u0007\u0010\u0000\u0000"+ - "\u1772\u1773\u0007\u0013\u0000\u0000\u1773\u1774\u0005_\u0000\u0000\u1774"+ - "\u1775\u0007\u0005\u0000\u0000\u1775\u1776\u0007\r\u0000\u0000\u1776\u1777"+ - "\u0007\r\u0000\u0000\u1777\u1778\u0007\u0005\u0000\u0000\u1778\u1779\u0007"+ - "\b\u0000\u0000\u1779\u04cc\u0001\u0000\u0000\u0000\u177a\u177b\u0007\t"+ - "\u0000\u0000\u177b\u177c\u0007\u0010\u0000\u0000\u177c\u177d\u0007\r\u0000"+ - "\u0000\u177d\u177e\u0007\u0011\u0000\u0000\u177e\u177f\u0007\u0007\u0000"+ - "\u0000\u177f\u1780\u0007\u0017\u0000\u0000\u1780\u1781\u0005_\u0000\u0000"+ - "\u1781\u1782\u0007\u0010\u0000\u0000\u1782\u1783\u0007\u0013\u0000\u0000"+ - "\u1783\u1784\u0005_\u0000\u0000\u1784\u1785\u0007\u0010\u0000\u0000\u1785"+ - "\u1786\u0007\u0005\u0000\u0000\u1786\u1787\u0007\u0012\u0000\u0000\u1787"+ - "\u1788\u0007\u0006\u0000\u0000\u1788\u1789\u0007\n\u0000\u0000\u1789\u04ce"+ - "\u0001\u0000\u0000\u0000\u178a\u178b\u0007\t\u0000\u0000\u178b\u178c\u0007"+ - "\u0010\u0000\u0000\u178c\u178d\u0007\r\u0000\u0000\u178d\u178e\u0007\u0018"+ - "\u0000\u0000\u178e\u178f\u0007\u0013\u0000\u0000\u178f\u1790\u0007\t\u0000"+ - "\u0000\u1790\u04d0\u0001\u0000\u0000\u0000\u1791\u1792\u0007\t\u0000\u0000"+ - "\u1792\u1793\u0007\u0016\u0000\u0000\u1793\u1794\u0007\u0012\u0000\u0000"+ - "\u1794\u1795\u0007\t\u0000\u0000\u1795\u1796\u0007\u0010\u0000\u0000\u1796"+ - "\u1797\u0007\r\u0000\u0000\u1797\u04d2\u0001\u0000\u0000\u0000\u1798\u1799"+ - "\u0007\u0010\u0000\u0000\u1799\u179a\u0007\u0013\u0000\u0000\u179a\u179b"+ - "\u0005_\u0000\u0000\u179b\u179c\u0007\u0005\u0000\u0000\u179c\u179d\u0007"+ - "\t\u0000\u0000\u179d\u179e\u0007\u000e\u0000\u0000\u179e\u179f\u0007\u0011"+ - "\u0000\u0000\u179f\u17a0\u0007\u0011\u0000\u0000\u17a0\u04d4\u0001\u0000"+ - "\u0000\u0000\u17a1\u17a2\u0007\u0010\u0000\u0000\u17a2\u17a3\u0007\u0013"+ - "\u0000\u0000\u17a3\u17a4\u0005_\u0000\u0000\u17a4\u17a5\u0007\u0014\u0000"+ - "\u0000\u17a5\u17a6\u0007\n\u0000\u0000\u17a6\u17a7\u0007\u001a\u0000\u0000"+ - "\u17a7\u04d6\u0001\u0000\u0000\u0000\u17a8\u17a9\u0007\u0010\u0000\u0000"+ - "\u17a9\u17aa\u0007\r\u0000\u0000\u17aa\u17ab\u0007\u0005\u0000\u0000\u17ab"+ - "\u17ac\u0007\u0007\u0000\u0000\u17ac\u17ad\u0007\t\u0000\u0000\u17ad\u17ae"+ - "\u0007\u0006\u0000\u0000\u17ae\u17af\u0007\u0005\u0000\u0000\u17af\u17b0"+ - "\u0007\u0010\u0000\u0000\u17b0\u17b1\u0007\n\u0000\u0000\u17b1\u04d8\u0001"+ - "\u0000\u0000\u0000\u17b2\u17b3\u0007\u0016\u0000\u0000\u17b3\u17b4\u0007"+ - "\u0007\u0000\u0000\u17b4\u17b5\u0007\u0011\u0000\u0000\u17b5\u17b6\u0007"+ - "\t\u0000\u0000\u17b6\u17b7\u0007\u0010\u0000\u0000\u17b7\u17b8\u0007\r"+ - "\u0000\u0000\u17b8\u04da\u0001\u0000\u0000\u0000\u17b9\u17ba\u0007\u0005"+ - "\u0000\u0000\u17ba\u17bb\u0007\u0017\u0000\u0000\u17bb\u17bc\u0007\n\u0000"+ - "\u0000\u17bc\u04dc\u0001\u0000\u0000\u0000\u17bd\u17be\u0007\u000e\u0000"+ - "\u0000\u17be\u17bf\u0007\u0006\u0000\u0000\u17bf\u17c0\u0007\u0013\u0000"+ - "\u0000\u17c0\u17c1\u0007\u000e\u0000\u0000\u17c1\u17c2\u0007\u0015\u0000"+ - "\u0000\u17c2\u17c3\u0005_\u0000\u0000\u17c3\u17c4\u0007\u0010\u0000\u0000"+ - "\u17c4\u17c5\u0007\u0011\u0000\u0000\u17c5\u17c6\u0007\u000f\u0000\u0000"+ - "\u17c6\u17c7\u0007\n\u0000\u0000\u17c7\u17c8\u0007\t\u0000\u0000\u17c8"+ - "\u17c9\u0007\u0010\u0000\u0000\u17c9\u17ca\u0007\u0005\u0000\u0000\u17ca"+ - "\u17cb\u0007\u000f\u0000\u0000\u17cb\u17cc\u0007\u0018\u0000\u0000\u17cc"+ - "\u04de\u0001\u0000\u0000\u0000\u17cd\u17ce\u0007\f\u0000\u0000\u17ce\u17cf"+ - "\u0007\u0005\u0000\u0000\u17cf\u17d0\u0007\u0010\u0000\u0000\u17d0\u17d1"+ - "\u0007\n\u0000\u0000\u17d1\u17d2\u0005_\u0000\u0000\u17d2\u17d3\u0007"+ - "\u0012\u0000\u0000\u17d3\u17d4\u0007\u0011\u0000\u0000\u17d4\u17d5\u0007"+ - "\u0007\u0000\u0000\u17d5\u04e0\u0001\u0000\u0000\u0000\u17d6\u17d7\u0007"+ - "\f\u0000\u0000\u17d7\u17d8\u0007\u0005\u0000\u0000\u17d8\u17d9\u0007\u0010"+ - "\u0000\u0000\u17d9\u17da\u0007\n\u0000\u0000\u17da\u17db\u0005_\u0000"+ - "\u0000\u17db\u17dc\u0007\u0018\u0000\u0000\u17dc\u17dd\u0007\u0005\u0000"+ - "\u0000\u17dd\u17de\u0007\r\u0000\u0000\u17de\u17df\u0007\u0010\u0000\u0000"+ - "\u17df\u04e2\u0001\u0000\u0000\u0000\u17e0\u17e1\u0007\f\u0000\u0000\u17e1"+ - "\u17e2\u0007\u0005\u0000\u0000\u17e2\u17e3\u0007\u0010\u0000\u0000\u17e3"+ - "\u17e4\u0007\n\u0000\u0000\u17e4\u17e5\u0005_\u0000\u0000\u17e5\u17e6"+ - "\u0007\u0010\u0000\u0000\u17e6\u17e7\u0007\r\u0000\u0000\u17e7\u17e8\u0007"+ - "\u0016\u0000\u0000\u17e8\u17e9\u0007\u0007\u0000\u0000\u17e9\u17ea\u0007"+ - "\u000e\u0000\u0000\u17ea\u04e4\u0001\u0000\u0000\u0000\u17eb\u17ec\u0007"+ - "\u0011\u0000\u0000\u17ec\u17ed\u0007\t\u0000\u0000\u17ed\u17ee\u0007\u0019"+ - "\u0000\u0000\u17ee\u17ef\u0007\u0011\u0000\u0000\u17ef\u17f0\u0007\u0007"+ - "\u0000\u0000\u17f0\u17f1\u0007\u0011\u0000\u0000\u17f1\u17f2\u0007\u0010"+ - "\u0000\u0000\u17f2\u17f3\u0007\n\u0000\u0000\u17f3\u04e6\u0001\u0000\u0000"+ - "\u0000\u17f4\u17f5\u0007\u001e\u0000\u0000\u17f5\u17f6\u0007\u0016\u0000"+ - "\u0000\u17f6\u17f7\u0007\t\u0000\u0000\u17f7\u17f8\u0007\u0010\u0000\u0000"+ - "\u17f8\u17f9\u0007\u0011\u0000\u0000\u17f9\u17fa\u0007\u0019\u0000\u0000"+ - "\u17fa\u17fb\u0007\b\u0000\u0000\u17fb\u17fc\u0005_\u0000\u0000\u17fc"+ - "\u17fd\u0007\f\u0000\u0000\u17fd\u17fe\u0007\u0005\u0000\u0000\u17fe\u17ff"+ - "\u0007\b\u0000\u0000\u17ff\u1800\u0007\t\u0000\u0000\u1800\u04e8\u0001"+ - "\u0000\u0000\u0000\u1801\u1802\u0007\u001e\u0000\u0000\u1802\u1803\u0007"+ - "\u0016\u0000\u0000\u1803\u1804\u0007\t\u0000\u0000\u1804\u1805\u0007\u0010"+ - "\u0000\u0000\u1805\u1806\u0007\u0011\u0000\u0000\u1806\u1807\u0007\u0019"+ - "\u0000\u0000\u1807\u1808\u0007\b\u0000\u0000\u1808\u1809\u0005_\u0000"+ - "\u0000\u1809\u180a\u0007\u0014\u0000\u0000\u180a\u180b\u0007\u0013\u0000"+ - "\u0000\u180b\u180c\u0007\u0016\u0000\u0000\u180c\u180d\u0007\r\u0000\u0000"+ - "\u180d\u180e\u0007\t\u0000\u0000\u180e\u04ea\u0001\u0000\u0000\u0000\u180f"+ - "\u1810\u0007\u001e\u0000\u0000\u1810\u1811\u0007\u0016\u0000\u0000\u1811"+ - "\u1812\u0007\t\u0000\u0000\u1812\u1813\u0007\u0010\u0000\u0000\u1813\u1814"+ - "\u0007\u0011\u0000\u0000\u1814\u1815\u0007\u0019\u0000\u0000\u1815\u1816"+ - "\u0007\b\u0000\u0000\u1816\u1817\u0005_\u0000\u0000\u1817\u1818\u0007"+ - "\u0011\u0000\u0000\u1818\u1819\u0007\u0007\u0000\u0000\u1819\u181a\u0007"+ - "\u0010\u0000\u0000\u181a\u181b\u0007\n\u0000\u0000\u181b\u181c\u0007\r"+ - "\u0000\u0000\u181c\u181d\u0007\u001b\u0000\u0000\u181d\u181e\u0007\u0005"+ - "\u0000\u0000\u181e\u181f\u0007\u0006\u0000\u0000\u181f\u04ec\u0001\u0000"+ - "\u0000\u0000\u1820\u1821\u0007\u000f\u0000\u0000\u1821\u1822\u0007\u0005"+ - "\u0000\u0000\u1822\u1823\u0007\u0015\u0000\u0000\u1823\u1824\u0007\n\u0000"+ - "\u0000\u1824\u1825\u0005_\u0000\u0000\u1825\u1826\u0007\f\u0000\u0000"+ - "\u1826\u1827\u0007\u0005\u0000\u0000\u1827\u1828\u0007\u0010\u0000\u0000"+ - "\u1828\u1829\u0007\n\u0000\u0000\u1829\u04ee\u0001\u0000\u0000\u0000\u182a"+ - "\u182b\u0007\u000f\u0000\u0000\u182b\u182c\u0007\u0005\u0000\u0000\u182c"+ - "\u182d\u0007\u0015\u0000\u0000\u182d\u182e\u0007\n\u0000\u0000\u182e\u182f"+ - "\u0005_\u0000\u0000\u182f\u1830\u0007\u0011\u0000\u0000\u1830\u1831\u0007"+ - "\u0007\u0000\u0000\u1831\u1832\u0007\u0010\u0000\u0000\u1832\u1833\u0007"+ - "\n\u0000\u0000\u1833\u1834\u0007\r\u0000\u0000\u1834\u1835\u0007\u001b"+ - "\u0000\u0000\u1835\u1836\u0007\u0005\u0000\u0000\u1836\u1837\u0007\u0006"+ - "\u0000\u0000\u1837\u04f0\u0001\u0000\u0000\u0000\u1838\u1839\u0007\u000f"+ - "\u0000\u0000\u1839\u183a\u0007\u0005\u0000\u0000\u183a\u183b\u0007\u0015"+ - "\u0000\u0000\u183b\u183c\u0007\n\u0000\u0000\u183c\u183d\u0005_\u0000"+ - "\u0000\u183d\u183e\u0007\u0010\u0000\u0000\u183e\u183f\u0007\u0011\u0000"+ - "\u0000\u183f\u1840\u0007\u000f\u0000\u0000\u1840\u1841\u0007\n\u0000\u0000"+ - "\u1841\u04f2\u0001\u0000\u0000\u0000\u1842\u1843\u0007\u000f\u0000\u0000"+ - "\u1843\u1844\u0007\u0005\u0000\u0000\u1844\u1845\u0007\u0015\u0000\u0000"+ - "\u1845\u1846\u0007\n\u0000\u0000\u1846\u1847\u0005_\u0000\u0000\u1847"+ - "\u1848\u0007\u0010\u0000\u0000\u1848\u1849\u0007\u0011\u0000\u0000\u1849"+ - "\u184a\u0007\u000f\u0000\u0000\u184a\u184b\u0007\n\u0000\u0000\u184b\u184c"+ - "\u0007\t\u0000\u0000\u184c\u184d\u0007\u0010\u0000\u0000\u184d\u184e\u0007"+ - "\u0005\u0000\u0000\u184e\u184f\u0007\u000f\u0000\u0000\u184f\u1850\u0007"+ - "\u0018\u0000\u0000\u1850\u04f4\u0001\u0000\u0000\u0000\u1851\u1852\u0007"+ - "\u000f\u0000\u0000\u1852\u1853\u0007\u0005\u0000\u0000\u1853\u1854\u0007"+ - "\u0015\u0000\u0000\u1854\u1855\u0007\n\u0000\u0000\u1855\u1856\u0005_"+ - "\u0000\u0000\u1856\u1857\u0007\u0010\u0000\u0000\u1857\u1858\u0007\u0011"+ - "\u0000\u0000\u1858\u1859\u0007\u000f\u0000\u0000\u1859\u185a\u0007\n\u0000"+ - "\u0000\u185a\u185b\u0007\t\u0000\u0000\u185b\u185c\u0007\u0010\u0000\u0000"+ - "\u185c\u185d\u0007\u0005\u0000\u0000\u185d\u185e\u0007\u000f\u0000\u0000"+ - "\u185e\u185f\u0007\u0018\u0000\u0000\u185f\u1860\u0007\u0010\u0000\u0000"+ - "\u1860\u1861\u0007\u000b\u0000\u0000\u1861\u04f6\u0001\u0000\u0000\u0000"+ - "\u1862\u1863\u0007\u0007\u0000\u0000\u1863\u1864\u0007\u0013\u0000\u0000"+ - "\u1864\u1865\u0007\u001d\u0000\u0000\u1865\u04f8\u0001\u0000\u0000\u0000"+ - "\u1866\u1867\u0007\t\u0000\u0000\u1867\u1868\u0007\u0010\u0000\u0000\u1868"+ - "\u1869\u0007\u0005\u0000\u0000\u1869\u186a\u0007\u0010\u0000\u0000\u186a"+ - "\u186b\u0007\n\u0000\u0000\u186b\u186c\u0007\u000f\u0000\u0000\u186c\u186d"+ - "\u0007\n\u0000\u0000\u186d\u186e\u0007\u0007\u0000\u0000\u186e\u186f\u0007"+ - "\u0010\u0000\u0000\u186f\u1870\u0005_\u0000\u0000\u1870\u1871\u0007\u0010"+ - "\u0000\u0000\u1871\u1872\u0007\u0011\u0000\u0000\u1872\u1873\u0007\u000f"+ - "\u0000\u0000\u1873\u1874\u0007\n\u0000\u0000\u1874\u1875\u0007\t\u0000"+ - "\u0000\u1875\u1876\u0007\u0010\u0000\u0000\u1876\u1877\u0007\u0005\u0000"+ - "\u0000\u1877\u1878\u0007\u000f\u0000\u0000\u1878\u1879\u0007\u0018\u0000"+ - "\u0000\u1879\u04fa\u0001\u0000\u0000\u0000\u187a\u187b\u0007\u0010\u0000"+ - "\u0000\u187b\u187c\u0007\u0011\u0000\u0000\u187c\u187d\u0007\u000f\u0000"+ - "\u0000\u187d\u187e\u0007\n\u0000\u0000\u187e\u187f\u0007\u0013\u0000\u0000"+ - "\u187f\u1880\u0007\u0019\u0000\u0000\u1880\u1881\u0007\f\u0000\u0000\u1881"+ - "\u1882\u0007\u0005\u0000\u0000\u1882\u1883\u0007\b\u0000\u0000\u1883\u04fc"+ - "\u0001\u0000\u0000\u0000\u1884\u1885\u0007\u0010\u0000\u0000\u1885\u1886"+ - "\u0007\r\u0000\u0000\u1886\u1887\u0007\u0005\u0000\u0000\u1887\u1888\u0007"+ - "\u0007\u0000\u0000\u1888\u1889\u0007\t\u0000\u0000\u1889\u188a\u0007\u0005"+ - "\u0000\u0000\u188a\u188b\u0007\u000e\u0000\u0000\u188b\u188c\u0007\u0010"+ - "\u0000\u0000\u188c\u188d\u0007\u0011\u0000\u0000\u188d\u188e\u0007\u0013"+ - "\u0000\u0000\u188e\u188f\u0007\u0007\u0000\u0000\u188f\u1890\u0005_\u0000"+ - "\u0000\u1890\u1891\u0007\u0010\u0000\u0000\u1891\u1892\u0007\u0011\u0000"+ - "\u0000\u1892\u1893\u0007\u000f\u0000\u0000\u1893\u1894\u0007\n\u0000\u0000"+ - "\u1894\u1895\u0007\t\u0000\u0000\u1895\u1896\u0007\u0010\u0000\u0000\u1896"+ - "\u1897\u0007\u0005\u0000\u0000\u1897\u1898\u0007\u000f\u0000\u0000\u1898"+ - "\u1899\u0007\u0018\u0000\u0000\u1899\u04fe\u0001\u0000\u0000\u0000\u189a"+ - "\u189b\u0007\u0010\u0000\u0000\u189b\u189c\u0007\u0013\u0000\u0000\u189c"+ - "\u189d\u0005_\u0000\u0000\u189d\u189e\u0007\u0010\u0000\u0000\u189e\u189f"+ - "\u0007\u0011\u0000\u0000\u189f\u18a0\u0007\u000f\u0000\u0000\u18a0\u18a1"+ - "\u0007\n\u0000\u0000\u18a1\u18a2\u0007\t\u0000\u0000\u18a2\u18a3\u0007"+ - "\u0010\u0000\u0000\u18a3\u18a4\u0007\u0005\u0000\u0000\u18a4\u18a5\u0007"+ - "\u000f\u0000\u0000\u18a5\u18a6\u0007\u0018\u0000\u0000\u18a6\u0500\u0001"+ - "\u0000\u0000\u0000\u18a7\u18a8\u0007\u0010\u0000\u0000\u18a8\u18a9\u0007"+ - "\u0013\u0000\u0000\u18a9\u18aa\u0005_\u0000\u0000\u18aa\u18ab\u0007\u000e"+ - "\u0000\u0000\u18ab\u18ac\u0007\u0014\u0000\u0000\u18ac\u18ad\u0007\u0005"+ - "\u0000\u0000\u18ad\u18ae\u0007\r\u0000\u0000\u18ae\u0502\u0001\u0000\u0000"+ - "\u0000\u18af\u18b0\u0007\u0010\u0000\u0000\u18b0\u18b1\u0007\u0013\u0000"+ - "\u0000\u18b1\u18b2\u0005_\u0000\u0000\u18b2\u18b3\u0007\f\u0000\u0000"+ - "\u18b3\u18b4\u0007\u0005\u0000\u0000\u18b4\u18b5\u0007\u0010\u0000\u0000"+ - "\u18b5\u18b6\u0007\n\u0000\u0000\u18b6\u0504\u0001\u0000\u0000\u0000\u18b7"+ - "\u18b8\u0007\u0010\u0000\u0000\u18b8\u18b9\u0007\u0013\u0000\u0000\u18b9"+ - "\u18ba\u0005_\u0000\u0000\u18ba\u18bb\u0007\u0007\u0000\u0000\u18bb\u18bc"+ - "\u0007\u0016\u0000\u0000\u18bc\u18bd\u0007\u000f\u0000\u0000\u18bd\u18be"+ - "\u0007\u0012\u0000\u0000\u18be\u18bf\u0007\n\u0000\u0000\u18bf\u18c0\u0007"+ - "\r\u0000\u0000\u18c0\u0506\u0001\u0000\u0000\u0000\u18c1\u18c5\u0003\u0509"+ - "\u0282\u0000\u18c2\u18c4\u0003\u050b\u0283\u0000\u18c3\u18c2\u0001\u0000"+ - "\u0000\u0000\u18c4\u18c7\u0001\u0000\u0000\u0000\u18c5\u18c3\u0001\u0000"+ - "\u0000\u0000\u18c5\u18c6\u0001\u0000\u0000\u0000\u18c6\u0508\u0001\u0000"+ - "\u0000\u0000\u18c7\u18c5\u0001\u0000\u0000\u0000\u18c8\u18cf\u0007\u001f"+ - "\u0000\u0000\u18c9\u18ca\u0007 \u0000\u0000\u18ca\u18cf\u0004\u0282\u0006"+ - "\u0000\u18cb\u18cc\u0007!\u0000\u0000\u18cc\u18cd\u0007\"\u0000\u0000"+ - "\u18cd\u18cf\u0004\u0282\u0007\u0000\u18ce\u18c8\u0001\u0000\u0000\u0000"+ - "\u18ce\u18c9\u0001\u0000\u0000\u0000\u18ce\u18cb\u0001\u0000\u0000\u0000"+ - "\u18cf\u050a\u0001\u0000\u0000\u0000\u18d0\u18d3\u0003\u050d\u0284\u0000"+ - "\u18d1\u18d3\u0005$\u0000\u0000\u18d2\u18d0\u0001\u0000\u0000\u0000\u18d2"+ - "\u18d1\u0001\u0000\u0000\u0000\u18d3\u050c\u0001\u0000\u0000\u0000\u18d4"+ - "\u18d7\u0003\u0509\u0282\u0000\u18d5\u18d7\u0007\u0000\u0000\u0000\u18d6"+ - "\u18d4\u0001\u0000\u0000\u0000\u18d6\u18d5\u0001\u0000\u0000\u0000\u18d7"+ - "\u050e\u0001\u0000\u0000\u0000\u18d8\u18d9\u0003\u0511\u0286\u0000\u18d9"+ - "\u18da\u0005\"\u0000\u0000\u18da\u0510\u0001\u0000\u0000\u0000\u18db\u18e1"+ - "\u0005\"\u0000\u0000\u18dc\u18dd\u0005\"\u0000\u0000\u18dd\u18e0\u0005"+ - "\"\u0000\u0000\u18de\u18e0\b#\u0000\u0000\u18df\u18dc\u0001\u0000\u0000"+ - "\u0000\u18df\u18de\u0001\u0000\u0000\u0000\u18e0\u18e3\u0001\u0000\u0000"+ - "\u0000\u18e1\u18df\u0001\u0000\u0000\u0000\u18e1\u18e2\u0001\u0000\u0000"+ - "\u0000\u18e2\u0512\u0001\u0000\u0000\u0000\u18e3\u18e1\u0001\u0000\u0000"+ - "\u0000\u18e4\u18e5\u0003\u0515\u0288\u0000\u18e5\u18e6\u0005\"\u0000\u0000"+ - "\u18e6\u0514\u0001\u0000\u0000\u0000\u18e7\u18ed\u0005\"\u0000\u0000\u18e8"+ - "\u18e9\u0005\"\u0000\u0000\u18e9\u18ec\u0005\"\u0000\u0000\u18ea\u18ec"+ - "\b$\u0000\u0000\u18eb\u18e8\u0001\u0000\u0000\u0000\u18eb\u18ea\u0001"+ - "\u0000\u0000\u0000\u18ec\u18ef\u0001\u0000\u0000\u0000\u18ed\u18eb\u0001"+ - "\u0000\u0000\u0000\u18ed\u18ee\u0001\u0000\u0000\u0000\u18ee\u0516\u0001"+ - "\u0000\u0000\u0000\u18ef\u18ed\u0001\u0000\u0000\u0000\u18f0\u18f1\u0007"+ - "\u0016\u0000\u0000\u18f1\u18f2\u0005&\u0000\u0000\u18f2\u18f3\u0003\u050f"+ - "\u0285\u0000\u18f3\u0518\u0001\u0000\u0000\u0000\u18f4\u18f5\u0007\u0016"+ - "\u0000\u0000\u18f5\u18f6\u0005&\u0000\u0000\u18f6\u18f7\u0003\u0511\u0286"+ - "\u0000\u18f7\u051a\u0001\u0000\u0000\u0000\u18f8\u18f9\u0007\u0016\u0000"+ - "\u0000\u18f9\u18fa\u0005&\u0000\u0000\u18fa\u18fb\u0003\u0513\u0287\u0000"+ - "\u18fb\u051c\u0001\u0000\u0000\u0000\u18fc\u18fd\u0007\u0016\u0000\u0000"+ - "\u18fd\u18fe\u0005&\u0000\u0000\u18fe\u18ff\u0003\u0515\u0288\u0000\u18ff"+ - "\u051e\u0001\u0000\u0000\u0000\u1900\u1901\u0003\u0521\u028e\u0000\u1901"+ - "\u1902\u0005\'\u0000\u0000\u1902\u0520\u0001\u0000\u0000\u0000\u1903\u1909"+ - "\u0005\'\u0000\u0000\u1904\u1905\u0005\'\u0000\u0000\u1905\u1908\u0005"+ - "\'\u0000\u0000\u1906\u1908\b%\u0000\u0000\u1907\u1904\u0001\u0000\u0000"+ - "\u0000\u1907\u1906\u0001\u0000\u0000\u0000\u1908\u190b\u0001\u0000\u0000"+ - "\u0000\u1909\u1907\u0001\u0000\u0000\u0000\u1909\u190a\u0001\u0000\u0000"+ - "\u0000\u190a\u0522\u0001\u0000\u0000\u0000\u190b\u1909\u0001\u0000\u0000"+ - "\u0000\u190c\u190d\u0007\n\u0000\u0000\u190d\u190e\u0005\'\u0000\u0000"+ - "\u190e\u190f\u0001\u0000\u0000\u0000\u190f\u1910\u0006\u028f\u0002\u0000"+ - "\u1910\u1911\u0006\u028f\u0003\u0000\u1911\u0524\u0001\u0000\u0000\u0000"+ - "\u1912\u1913\u0003\u0527\u0291\u0000\u1913\u1914\u0005\'\u0000\u0000\u1914"+ - "\u0526\u0001\u0000\u0000\u0000\u1915\u1916\u0007\u0016\u0000\u0000\u1916"+ - "\u1917\u0005&\u0000\u0000\u1917\u1918\u0003\u0521\u028e\u0000\u1918\u0528"+ - "\u0001\u0000\u0000\u0000\u1919\u191b\u0005$\u0000\u0000\u191a\u191c\u0003"+ - "\u052b\u0293\u0000\u191b\u191a\u0001\u0000\u0000\u0000\u191b\u191c\u0001"+ - "\u0000\u0000\u0000\u191c\u191d\u0001\u0000\u0000\u0000\u191d\u191e\u0005"+ - "$\u0000\u0000\u191e\u191f\u0006\u0292\u0004\u0000\u191f\u1920\u0001\u0000"+ - "\u0000\u0000\u1920\u1921\u0006\u0292\u0005\u0000\u1921\u052a\u0001\u0000"+ - "\u0000\u0000\u1922\u1926\u0003\u0509\u0282\u0000\u1923\u1925\u0003\u050d"+ - "\u0284\u0000\u1924\u1923\u0001\u0000\u0000\u0000\u1925\u1928\u0001\u0000"+ - "\u0000\u0000\u1926\u1924\u0001\u0000\u0000\u0000\u1926\u1927\u0001\u0000"+ - "\u0000\u0000\u1927\u052c\u0001\u0000\u0000\u0000\u1928\u1926\u0001\u0000"+ - "\u0000\u0000\u1929\u192a\u0003\u052f\u0295\u0000\u192a\u192b\u0005\'\u0000"+ - "\u0000\u192b\u052e\u0001\u0000\u0000\u0000\u192c\u192d\u0007\u0012\u0000"+ - "\u0000\u192d\u1931\u0005\'\u0000\u0000\u192e\u1930\u0007&\u0000\u0000"+ - "\u192f\u192e\u0001\u0000\u0000\u0000\u1930\u1933\u0001\u0000\u0000\u0000"+ - "\u1931\u192f\u0001\u0000\u0000\u0000\u1931\u1932\u0001\u0000\u0000\u0000"+ - "\u1932\u0530\u0001\u0000\u0000\u0000\u1933\u1931\u0001\u0000\u0000\u0000"+ - "\u1934\u1935\u0003\u0533\u0297\u0000\u1935\u1936\u0005\'\u0000\u0000\u1936"+ - "\u0532\u0001\u0000\u0000\u0000\u1937\u1938\u0007\u0012\u0000\u0000\u1938"+ - "\u1939\u0003\u0521\u028e\u0000\u1939\u0534\u0001\u0000\u0000\u0000\u193a"+ - "\u193b\u0003\u0537\u0299\u0000\u193b\u193c\u0005\'\u0000\u0000\u193c\u0536"+ - "\u0001\u0000\u0000\u0000\u193d\u193e\u0007\u001a\u0000\u0000\u193e\u1942"+ - "\u0005\'\u0000\u0000\u193f\u1941\u0007\'\u0000\u0000\u1940\u193f\u0001"+ - "\u0000\u0000\u0000\u1941\u1944\u0001\u0000\u0000\u0000\u1942\u1940\u0001"+ - "\u0000\u0000\u0000\u1942\u1943\u0001\u0000\u0000\u0000\u1943\u0538\u0001"+ - "\u0000\u0000\u0000\u1944\u1942\u0001\u0000\u0000\u0000\u1945\u1946\u0003"+ - "\u053b\u029b\u0000\u1946\u1947\u0005\'\u0000\u0000\u1947\u053a\u0001\u0000"+ - "\u0000\u0000\u1948\u1949\u0007\u001a\u0000\u0000\u1949\u194a\u0003\u0521"+ - "\u028e\u0000\u194a\u053c\u0001\u0000\u0000\u0000\u194b\u194c\u0003\u0543"+ - "\u029f\u0000\u194c\u053e\u0001\u0000\u0000\u0000\u194d\u194e\u0003\u0543"+ - "\u029f\u0000\u194e\u194f\u0005.\u0000\u0000\u194f\u1950\u0005.\u0000\u0000"+ - "\u1950\u1951\u0001\u0000\u0000\u0000\u1951\u1952\u0006\u029d\u0006\u0000"+ - "\u1952\u0540\u0001\u0000\u0000\u0000\u1953\u1954\u0003\u0543\u029f\u0000"+ - "\u1954\u1956\u0005.\u0000\u0000\u1955\u1957\u0003\u0543\u029f\u0000\u1956"+ - "\u1955\u0001\u0000\u0000\u0000\u1956\u1957\u0001\u0000\u0000\u0000\u1957"+ - "\u195d\u0001\u0000\u0000\u0000\u1958\u195a\u0007\n\u0000\u0000\u1959\u195b"+ - "\u0007\u0001\u0000\u0000\u195a\u1959\u0001\u0000\u0000\u0000\u195a\u195b"+ - "\u0001\u0000\u0000\u0000\u195b\u195c\u0001\u0000\u0000\u0000\u195c\u195e"+ - "\u0003\u0543\u029f\u0000\u195d\u1958\u0001\u0000\u0000\u0000\u195d\u195e"+ - "\u0001\u0000\u0000\u0000\u195e\u1970\u0001\u0000\u0000\u0000\u195f\u1960"+ - "\u0005.\u0000\u0000\u1960\u1966\u0003\u0543\u029f\u0000\u1961\u1963\u0007"+ - "\n\u0000\u0000\u1962\u1964\u0007\u0001\u0000\u0000\u1963\u1962\u0001\u0000"+ - "\u0000\u0000\u1963\u1964\u0001\u0000\u0000\u0000\u1964\u1965\u0001\u0000"+ - "\u0000\u0000\u1965\u1967\u0003\u0543\u029f\u0000\u1966\u1961\u0001\u0000"+ - "\u0000\u0000\u1966\u1967\u0001\u0000\u0000\u0000\u1967\u1970\u0001\u0000"+ - "\u0000\u0000\u1968\u1969\u0003\u0543\u029f\u0000\u1969\u196b\u0007\n\u0000"+ - "\u0000\u196a\u196c\u0007\u0001\u0000\u0000\u196b\u196a\u0001\u0000\u0000"+ - "\u0000\u196b\u196c\u0001\u0000\u0000\u0000\u196c\u196d\u0001\u0000\u0000"+ - "\u0000\u196d\u196e\u0003\u0543\u029f\u0000\u196e\u1970\u0001\u0000\u0000"+ - "\u0000\u196f\u1953\u0001\u0000\u0000\u0000\u196f\u195f\u0001\u0000\u0000"+ - "\u0000\u196f\u1968\u0001\u0000\u0000\u0000\u1970\u0542\u0001\u0000\u0000"+ - "\u0000\u1971\u1973\u0007\u0000\u0000\u0000\u1972\u1971\u0001\u0000\u0000"+ - "\u0000\u1973\u1974\u0001\u0000\u0000\u0000\u1974\u1972\u0001\u0000\u0000"+ - "\u0000\u1974\u1975\u0001\u0000\u0000\u0000\u1975\u0544\u0001\u0000\u0000"+ - "\u0000\u1976\u1977\u0005:\u0000\u0000\u1977\u197b\u0007(\u0000\u0000\u1978"+ - "\u197a\u0007)\u0000\u0000\u1979\u1978\u0001\u0000\u0000\u0000\u197a\u197d"+ - "\u0001\u0000\u0000\u0000\u197b\u1979\u0001\u0000\u0000\u0000\u197b\u197c"+ - "\u0001\u0000\u0000\u0000\u197c\u0546\u0001\u0000\u0000\u0000\u197d\u197b"+ - "\u0001\u0000\u0000\u0000\u197e\u197f\u0005:\u0000\u0000\u197f\u1980\u0005"+ - "\"\u0000\u0000\u1980\u1988\u0001\u0000\u0000\u0000\u1981\u1982\u0005\\"+ - "\u0000\u0000\u1982\u1987\t\u0000\u0000\u0000\u1983\u1984\u0005\"\u0000"+ - "\u0000\u1984\u1987\u0005\"\u0000\u0000\u1985\u1987\b*\u0000\u0000\u1986"+ - "\u1981\u0001\u0000\u0000\u0000\u1986\u1983\u0001\u0000\u0000\u0000\u1986"+ - "\u1985\u0001\u0000\u0000\u0000\u1987\u198a\u0001\u0000\u0000\u0000\u1988"+ - "\u1986\u0001\u0000\u0000\u0000\u1988\u1989\u0001\u0000\u0000\u0000\u1989"+ - "\u198b\u0001\u0000\u0000\u0000\u198a\u1988\u0001\u0000\u0000\u0000\u198b"+ - "\u198c\u0005\"\u0000\u0000\u198c\u0548\u0001\u0000\u0000\u0000\u198d\u198f"+ - "\u0007+\u0000\u0000\u198e\u198d\u0001\u0000\u0000\u0000\u198f\u1990\u0001"+ - "\u0000\u0000\u0000\u1990\u198e\u0001\u0000\u0000\u0000\u1990\u1991\u0001"+ - "\u0000\u0000\u0000\u1991\u1992\u0001\u0000\u0000\u0000\u1992\u1993\u0006"+ - "\u02a2\u0007\u0000\u1993\u054a\u0001\u0000\u0000\u0000\u1994\u1996\u0005"+ - "\r\u0000\u0000\u1995\u1997\u0005\n\u0000\u0000\u1996\u1995\u0001\u0000"+ - "\u0000\u0000\u1996\u1997\u0001\u0000\u0000\u0000\u1997\u199a\u0001\u0000"+ - "\u0000\u0000\u1998\u199a\u0005\n\u0000\u0000\u1999\u1994\u0001\u0000\u0000"+ - "\u0000\u1999\u1998\u0001\u0000\u0000\u0000\u199a\u199b\u0001\u0000\u0000"+ - "\u0000\u199b\u199c\u0006\u02a3\u0007\u0000\u199c\u054c\u0001\u0000\u0000"+ - "\u0000\u199d\u199e\u0005-\u0000\u0000\u199e\u199f\u0005-\u0000\u0000\u199f"+ - "\u19a3\u0001\u0000\u0000\u0000\u19a0\u19a2\b,\u0000\u0000\u19a1\u19a0"+ - "\u0001\u0000\u0000\u0000\u19a2\u19a5\u0001\u0000\u0000\u0000\u19a3\u19a1"+ - "\u0001\u0000\u0000\u0000\u19a3\u19a4\u0001\u0000\u0000\u0000\u19a4\u19a6"+ - "\u0001\u0000\u0000\u0000\u19a5\u19a3\u0001\u0000\u0000\u0000\u19a6\u19a7"+ - "\u0006\u02a4\u0007\u0000\u19a7\u054e\u0001\u0000\u0000\u0000\u19a8\u19a9"+ - "\u0005/\u0000\u0000\u19a9\u19aa\u0005*\u0000\u0000\u19aa\u19c1\u0001\u0000"+ - "\u0000\u0000\u19ab\u19ad\u0005/\u0000\u0000\u19ac\u19ab\u0001\u0000\u0000"+ - "\u0000\u19ad\u19b0\u0001\u0000\u0000\u0000\u19ae\u19ac\u0001\u0000\u0000"+ - "\u0000\u19ae\u19af\u0001\u0000\u0000\u0000\u19af\u19b1\u0001\u0000\u0000"+ - "\u0000\u19b0\u19ae\u0001\u0000\u0000\u0000\u19b1\u19c0\u0003\u054f\u02a5"+ - "\u0000\u19b2\u19c0\b-\u0000\u0000\u19b3\u19b5\u0005/\u0000\u0000\u19b4"+ - "\u19b3\u0001\u0000\u0000\u0000\u19b5\u19b6\u0001\u0000\u0000\u0000\u19b6"+ - "\u19b4\u0001\u0000\u0000\u0000\u19b6\u19b7\u0001\u0000\u0000\u0000\u19b7"+ - "\u19b8\u0001\u0000\u0000\u0000\u19b8\u19c0\b-\u0000\u0000\u19b9\u19bb"+ - "\u0005*\u0000\u0000\u19ba\u19b9\u0001\u0000\u0000\u0000\u19bb\u19bc\u0001"+ - "\u0000\u0000\u0000\u19bc\u19ba\u0001\u0000\u0000\u0000\u19bc\u19bd\u0001"+ - "\u0000\u0000\u0000\u19bd\u19be\u0001\u0000\u0000\u0000\u19be\u19c0\b-"+ - "\u0000\u0000\u19bf\u19ae\u0001\u0000\u0000\u0000\u19bf\u19b2\u0001\u0000"+ - "\u0000\u0000\u19bf\u19b4\u0001\u0000\u0000\u0000\u19bf\u19ba\u0001\u0000"+ - "\u0000\u0000\u19c0\u19c3\u0001\u0000\u0000\u0000\u19c1\u19bf\u0001\u0000"+ - "\u0000\u0000\u19c1\u19c2\u0001\u0000\u0000\u0000\u19c2\u19c7\u0001\u0000"+ - "\u0000\u0000\u19c3\u19c1\u0001\u0000\u0000\u0000\u19c4\u19c6\u0005*\u0000"+ - "\u0000\u19c5\u19c4\u0001\u0000\u0000\u0000\u19c6\u19c9\u0001\u0000\u0000"+ - "\u0000\u19c7\u19c5\u0001\u0000\u0000\u0000\u19c7\u19c8\u0001\u0000\u0000"+ - "\u0000\u19c8\u19ca\u0001\u0000\u0000\u0000\u19c9\u19c7\u0001\u0000\u0000"+ - "\u0000\u19ca\u19cb\u0005*\u0000\u0000\u19cb\u19cc\u0005/\u0000\u0000\u19cc"+ - "\u19cd\u0001\u0000\u0000\u0000\u19cd\u19ce\u0006\u02a5\u0007\u0000\u19ce"+ - "\u0550\u0001\u0000\u0000\u0000\u19cf\u19d0\u0005/\u0000\u0000\u19d0\u19d1"+ - "\u0005*\u0000\u0000\u19d1\u19ea\u0001\u0000\u0000\u0000\u19d2\u19d4\u0005"+ - "/\u0000\u0000\u19d3\u19d2\u0001\u0000\u0000\u0000\u19d4\u19d7\u0001\u0000"+ - "\u0000\u0000\u19d5\u19d3\u0001\u0000\u0000\u0000\u19d5\u19d6\u0001\u0000"+ - "\u0000\u0000\u19d6\u19d8\u0001\u0000\u0000\u0000\u19d7\u19d5\u0001\u0000"+ - "\u0000\u0000\u19d8\u19e9\u0003\u054f\u02a5\u0000\u19d9\u19e9\b-\u0000"+ - "\u0000\u19da\u19dc\u0005/\u0000\u0000\u19db\u19da\u0001\u0000\u0000\u0000"+ - "\u19dc\u19dd\u0001\u0000\u0000\u0000\u19dd\u19db\u0001\u0000\u0000\u0000"+ - "\u19dd\u19de\u0001\u0000\u0000\u0000\u19de\u19df\u0001\u0000\u0000\u0000"+ - "\u19df\u19e7\b-\u0000\u0000\u19e0\u19e2\u0005*\u0000\u0000\u19e1\u19e0"+ - "\u0001\u0000\u0000\u0000\u19e2\u19e3\u0001\u0000\u0000\u0000\u19e3\u19e1"+ - "\u0001\u0000\u0000\u0000\u19e3\u19e4\u0001\u0000\u0000\u0000\u19e4\u19e5"+ - "\u0001\u0000\u0000\u0000\u19e5\u19e7\b-\u0000\u0000\u19e6\u19db\u0001"+ - "\u0000\u0000\u0000\u19e6\u19e1\u0001\u0000\u0000\u0000\u19e7\u19e9\u0001"+ - "\u0000\u0000\u0000\u19e8\u19d5\u0001\u0000\u0000\u0000\u19e8\u19d9\u0001"+ - "\u0000\u0000\u0000\u19e8\u19e6\u0001\u0000\u0000\u0000\u19e9\u19ec\u0001"+ - "\u0000\u0000\u0000\u19ea\u19e8\u0001\u0000\u0000\u0000\u19ea\u19eb\u0001"+ - "\u0000\u0000\u0000\u19eb\u19fe\u0001\u0000\u0000\u0000\u19ec\u19ea\u0001"+ - "\u0000\u0000\u0000\u19ed\u19ef\u0005/\u0000\u0000\u19ee\u19ed\u0001\u0000"+ - "\u0000\u0000\u19ef\u19f0\u0001\u0000\u0000\u0000\u19f0\u19ee\u0001\u0000"+ - "\u0000\u0000\u19f0\u19f1\u0001\u0000\u0000\u0000\u19f1\u19ff\u0001\u0000"+ - "\u0000\u0000\u19f2\u19f4\u0005*\u0000\u0000\u19f3\u19f2\u0001\u0000\u0000"+ - "\u0000\u19f4\u19f5\u0001\u0000\u0000\u0000\u19f5\u19f3\u0001\u0000\u0000"+ - "\u0000\u19f5\u19f6\u0001\u0000\u0000\u0000\u19f6\u19ff\u0001\u0000\u0000"+ - "\u0000\u19f7\u19f9\u0005/\u0000\u0000\u19f8\u19f7\u0001\u0000\u0000\u0000"+ - "\u19f9\u19fc\u0001\u0000\u0000\u0000\u19fa\u19f8\u0001\u0000\u0000\u0000"+ - "\u19fa\u19fb\u0001\u0000\u0000\u0000\u19fb\u19fd\u0001\u0000\u0000\u0000"+ - "\u19fc\u19fa\u0001\u0000\u0000\u0000\u19fd\u19ff\u0003\u0551\u02a6\u0000"+ - "\u19fe\u19ee\u0001\u0000\u0000\u0000\u19fe\u19f3\u0001\u0000\u0000\u0000"+ - "\u19fe\u19fa\u0001\u0000\u0000\u0000\u19fe\u19ff\u0001\u0000\u0000\u0000"+ - "\u19ff\u1a00\u0001\u0000\u0000\u0000\u1a00\u1a01\u0006\u02a6\b\u0000\u1a01"+ - "\u0552\u0001\u0000\u0000\u0000\u1a02\u1a0e\u0005\\\u0000\u0000\u1a03\u1a0d"+ - "\b.\u0000\u0000\u1a04\u1a08\u0005\"\u0000\u0000\u1a05\u1a07\b/\u0000\u0000"+ - "\u1a06\u1a05\u0001\u0000\u0000\u0000\u1a07\u1a0a\u0001\u0000\u0000\u0000"+ - "\u1a08\u1a06\u0001\u0000\u0000\u0000\u1a08\u1a09\u0001\u0000\u0000\u0000"+ - "\u1a09\u1a0b\u0001\u0000\u0000\u0000\u1a0a\u1a08\u0001\u0000\u0000\u0000"+ - "\u1a0b\u1a0d\u0005\"\u0000\u0000\u1a0c\u1a03\u0001\u0000\u0000\u0000\u1a0c"+ - "\u1a04\u0001\u0000\u0000\u0000\u1a0d\u1a10\u0001\u0000\u0000\u0000\u1a0e"+ - "\u1a0c\u0001\u0000\u0000\u0000\u1a0e\u1a0f\u0001\u0000\u0000\u0000\u1a0f"+ - "\u1a18\u0001\u0000\u0000\u0000\u1a10\u1a0e\u0001\u0000\u0000\u0000\u1a11"+ - "\u1a15\u0005\"\u0000\u0000\u1a12\u1a14\b/\u0000\u0000\u1a13\u1a12\u0001"+ - "\u0000\u0000\u0000\u1a14\u1a17\u0001\u0000\u0000\u0000\u1a15\u1a13\u0001"+ - "\u0000\u0000\u0000\u1a15\u1a16\u0001\u0000\u0000\u0000\u1a16\u1a19\u0001"+ - "\u0000\u0000\u0000\u1a17\u1a15\u0001\u0000\u0000\u0000\u1a18\u1a11\u0001"+ - "\u0000\u0000\u0000\u1a18\u1a19\u0001\u0000\u0000\u0000\u1a19\u0554\u0001"+ - "\u0000\u0000\u0000\u1a1a\u1a1b\u0005\\\u0000\u0000\u1a1b\u1a1c\u0005\\"+ - "\u0000\u0000\u1a1c\u0556\u0001\u0000\u0000\u0000\u1a1d\u1a1e\t\u0000\u0000"+ - "\u0000\u1a1e\u0558\u0001\u0000\u0000\u0000\u1a1f\u1a20\u0003\u055d\u02ac"+ - "\u0000\u1a20\u1a21\u0005\'\u0000\u0000\u1a21\u1a22\u0001\u0000\u0000\u0000"+ - "\u1a22\u1a23\u0006\u02aa\t\u0000\u1a23\u055a\u0001\u0000\u0000\u0000\u1a24"+ - "\u1a26\u0003\u055d\u02ac\u0000\u1a25\u1a27\u0005\\\u0000\u0000\u1a26\u1a25"+ - "\u0001\u0000\u0000\u0000\u1a26\u1a27\u0001\u0000\u0000\u0000\u1a27\u1a28"+ - "\u0001\u0000\u0000\u0000\u1a28\u1a29\u0005\u0000\u0000\u0001\u1a29\u055c"+ - "\u0001\u0000\u0000\u0000\u1a2a\u1a2b\u0005\'\u0000\u0000\u1a2b\u1a42\u0005"+ - "\'\u0000\u0000\u1a2c\u1a3e\u0005\\\u0000\u0000\u1a2d\u1a2e\u0005x\u0000"+ - "\u0000\u1a2e\u1a3f\u0007\'\u0000\u0000\u1a2f\u1a30\u0005u\u0000\u0000"+ - "\u1a30\u1a31\u0007\'\u0000\u0000\u1a31\u1a32\u0007\'\u0000\u0000\u1a32"+ - "\u1a33\u0007\'\u0000\u0000\u1a33\u1a3f\u0007\'\u0000\u0000\u1a34\u1a35"+ - "\u0005U\u0000\u0000\u1a35\u1a36\u0007\'\u0000\u0000\u1a36\u1a37\u0007"+ - "\'\u0000\u0000\u1a37\u1a38\u0007\'\u0000\u0000\u1a38\u1a39\u0007\'\u0000"+ - "\u0000\u1a39\u1a3a\u0007\'\u0000\u0000\u1a3a\u1a3b\u0007\'\u0000\u0000"+ - "\u1a3b\u1a3c\u0007\'\u0000\u0000\u1a3c\u1a3f\u0007\'\u0000\u0000\u1a3d"+ - "\u1a3f\b0\u0000\u0000\u1a3e\u1a2d\u0001\u0000\u0000\u0000\u1a3e\u1a2f"+ - "\u0001\u0000\u0000\u0000\u1a3e\u1a34\u0001\u0000\u0000\u0000\u1a3e\u1a3d"+ - "\u0001\u0000\u0000\u0000\u1a3f\u1a42\u0001\u0000\u0000\u0000\u1a40\u1a42"+ - "\b1\u0000\u0000\u1a41\u1a2a\u0001\u0000\u0000\u0000\u1a41\u1a2c\u0001"+ - "\u0000\u0000\u0000\u1a41\u1a40\u0001\u0000\u0000\u0000\u1a42\u1a45\u0001"+ - "\u0000\u0000\u0000\u1a43\u1a41\u0001\u0000\u0000\u0000\u1a43\u1a44\u0001"+ - "\u0000\u0000\u0000\u1a44\u055e\u0001\u0000\u0000\u0000\u1a45\u1a43\u0001"+ - "\u0000\u0000\u0000\u1a46\u1a47\u0003\u0563\u02af\u0000\u1a47\u1a48\u0005"+ - "\'\u0000\u0000\u1a48\u1a49\u0001\u0000\u0000\u0000\u1a49\u1a4a\u0006\u02ad"+ - "\t\u0000\u1a4a\u0560\u0001\u0000\u0000\u0000\u1a4b\u1a4d\u0003\u0563\u02af"+ - "\u0000\u1a4c\u1a4e\u0005\\\u0000\u0000\u1a4d\u1a4c\u0001\u0000\u0000\u0000"+ - "\u1a4d\u1a4e\u0001\u0000\u0000\u0000\u1a4e\u1a4f\u0001\u0000\u0000\u0000"+ - "\u1a4f\u1a50\u0005\u0000\u0000\u0001\u1a50\u0562\u0001\u0000\u0000\u0000"+ - "\u1a51\u1a52\u0005\'\u0000\u0000\u1a52\u1a57\u0005\'\u0000\u0000\u1a53"+ - "\u1a54\u0005\\\u0000\u0000\u1a54\u1a57\t\u0000\u0000\u0000\u1a55\u1a57"+ - "\b1\u0000\u0000\u1a56\u1a51\u0001\u0000\u0000\u0000\u1a56\u1a53\u0001"+ - "\u0000\u0000\u0000\u1a56\u1a55\u0001\u0000\u0000\u0000\u1a57\u1a5a\u0001"+ - "\u0000\u0000\u0000\u1a58\u1a56\u0001\u0000\u0000\u0000\u1a58\u1a59\u0001"+ - "\u0000\u0000\u0000\u1a59\u0564\u0001\u0000\u0000\u0000\u1a5a\u1a58\u0001"+ - "\u0000\u0000\u0000\u1a5b\u1a5c\u0003\u0549\u02a2\u0000\u1a5c\u1a5d\u0001"+ - "\u0000\u0000\u0000\u1a5d\u1a5e\u0006\u02b0\n\u0000\u1a5e\u1a5f\u0006\u02b0"+ - "\u0007\u0000\u1a5f\u0566\u0001\u0000\u0000\u0000\u1a60\u1a61\u0003\u054b"+ - "\u02a3\u0000\u1a61\u1a62\u0001\u0000\u0000\u0000\u1a62\u1a63\u0006\u02b1"+ - "\u000b\u0000\u1a63\u1a64\u0006\u02b1\u0007\u0000\u1a64\u1a65\u0006\u02b1"+ - "\f\u0000\u1a65\u0568\u0001\u0000\u0000\u0000\u1a66\u1a67\u0006\u02b2\r"+ - "\u0000\u1a67\u1a68\u0001\u0000\u0000\u0000\u1a68\u1a69\u0006\u02b2\u000e"+ - "\u0000\u1a69\u1a6a\u0006\u02b2\u000f\u0000\u1a6a\u056a\u0001\u0000\u0000"+ - "\u0000\u1a6b\u1a6c\u0003\u0549\u02a2\u0000\u1a6c\u1a6d\u0001\u0000\u0000"+ - "\u0000\u1a6d\u1a6e\u0006\u02b3\n\u0000\u1a6e\u1a6f\u0006\u02b3\u0007\u0000"+ - "\u1a6f\u056c\u0001\u0000\u0000\u0000\u1a70\u1a71\u0003\u054b\u02a3\u0000"+ - "\u1a71\u1a72\u0001\u0000\u0000\u0000\u1a72\u1a73\u0006\u02b4\u000b\u0000"+ - "\u1a73\u1a74\u0006\u02b4\u0007\u0000\u1a74\u056e\u0001\u0000\u0000\u0000"+ - "\u1a75\u1a76\u0005\'\u0000\u0000\u1a76\u1a77\u0001\u0000\u0000\u0000\u1a77"+ - "\u1a78\u0006\u02b5\u0002\u0000\u1a78\u1a79\u0006\u02b5\u0010\u0000\u1a79"+ - "\u0570\u0001\u0000\u0000\u0000\u1a7a\u1a7b\u0006\u02b6\u0011\u0000\u1a7b"+ - "\u1a7c\u0001\u0000\u0000\u0000\u1a7c\u1a7d\u0006\u02b6\u000e\u0000\u1a7d"+ - "\u1a7e\u0006\u02b6\u000f\u0000\u1a7e\u0572\u0001\u0000\u0000\u0000\u1a7f"+ - "\u1a81\b2\u0000\u0000\u1a80\u1a7f\u0001\u0000\u0000\u0000\u1a81\u1a82"+ - "\u0001\u0000\u0000\u0000\u1a82\u1a80\u0001\u0000\u0000\u0000\u1a82\u1a83"+ - "\u0001\u0000\u0000\u0000\u1a83\u1a8c\u0001\u0000\u0000\u0000\u1a84\u1a88"+ - "\u0005$\u0000\u0000\u1a85\u1a87\b2\u0000\u0000\u1a86\u1a85\u0001\u0000"+ - "\u0000\u0000\u1a87\u1a8a\u0001\u0000\u0000\u0000\u1a88\u1a86\u0001\u0000"+ - "\u0000\u0000\u1a88\u1a89\u0001\u0000\u0000\u0000\u1a89\u1a8c\u0001\u0000"+ - "\u0000\u0000\u1a8a\u1a88\u0001\u0000\u0000\u0000\u1a8b\u1a80\u0001\u0000"+ - "\u0000\u0000\u1a8b\u1a84\u0001\u0000\u0000\u0000\u1a8c\u0574\u0001\u0000"+ - "\u0000\u0000\u1a8d\u1a8f\u0005$\u0000\u0000\u1a8e\u1a90\u0003\u052b\u0293"+ - "\u0000\u1a8f\u1a8e\u0001\u0000\u0000\u0000\u1a8f\u1a90\u0001\u0000\u0000"+ - "\u0000\u1a90\u1a91\u0001\u0000\u0000\u0000\u1a91\u1a92\u0005$\u0000\u0000"+ - "\u1a92\u1a93\u0001\u0000\u0000\u0000\u1a93\u1a94\u0004\u02b8\b\u0000\u1a94"+ - "\u1a95\u0006\u02b8\u0012\u0000\u1a95\u1a96\u0001\u0000\u0000\u0000\u1a96"+ - "\u1a97\u0006\u02b8\u000f\u0000\u1a97\u0576\u0001\u0000\u0000\u0000N\u0000"+ - "\u0001\u0002\u0003\u0004\u05ba\u05c0\u05c2\u05c7\u05cb\u05cd\u05d0\u05d9"+ - "\u05db\u05e0\u05e5\u05e7\u18c5\u18ce\u18d2\u18d6\u18df\u18e1\u18eb\u18ed"+ - "\u1907\u1909\u191b\u1926\u1931\u1942\u1956\u195a\u195d\u1963\u1966\u196b"+ - "\u196f\u1974\u197b\u1986\u1988\u1990\u1996\u1999\u19a3\u19ae\u19b6\u19bc"+ - "\u19bf\u19c1\u19c7\u19d5\u19dd\u19e3\u19e6\u19e8\u19ea\u19f0\u19f5\u19fa"+ - "\u19fe\u1a08\u1a0c\u1a0e\u1a15\u1a18\u1a26\u1a3e\u1a41\u1a43\u1a4d\u1a56"+ - "\u1a58\u1a82\u1a88\u1a8b\u1a8f\u0013\u0001\u001c\u0000\u0007\u001d\u0000"+ - "\u0003\u0000\u0000\u0005\u0001\u0000\u0001\u0292\u0001\u0005\u0004\u0000"+ - "\u0001\u029d\u0002\u0000\u0001\u0000\u0001\u02a6\u0003\u0002\u0002\u0000"+ - "\u0007\u0299\u0000\u0007\u029a\u0000\u0002\u0003\u0000\u0001\u02b2\u0004"+ - "\u0006\u0000\u0000\u0004\u0000\u0000\u0002\u0001\u0000\u0001\u02b6\u0005"+ - "\u0001\u02b8\u0006"; - public static final String _serializedATN = Utils.join( - new String[] { - _serializedATNSegment0, - _serializedATNSegment1, - _serializedATNSegment2 - }, - "" - ); - public static final ATN _ATN = - new ATNDeserializer().deserialize(_serializedATN.toCharArray()); - static { - _decisionToDFA = new DFA[_ATN.getNumberOfDecisions()]; - for (int i = 0; i < _ATN.getNumberOfDecisions(); i++) { - _decisionToDFA[i] = new DFA(_ATN.getDecisionState(i), i); - } - } -} \ No newline at end of file diff --git a/incubator/binding-pgsql/gen/PostgreSqlLexer.tokens b/incubator/binding-pgsql/gen/PostgreSqlLexer.tokens deleted file mode 100644 index 57204083e0..0000000000 --- a/incubator/binding-pgsql/gen/PostgreSqlLexer.tokens +++ /dev/null @@ -1,1318 +0,0 @@ -Dollar=1 -OPEN_PAREN=2 -CLOSE_PAREN=3 -OPEN_BRACKET=4 -CLOSE_BRACKET=5 -COMMA=6 -SEMI=7 -COLON=8 -STAR=9 -EQUAL=10 -DOT=11 -PLUS=12 -MINUS=13 -SLASH=14 -CARET=15 -LT=16 -GT=17 -LESS_LESS=18 -GREATER_GREATER=19 -COLON_EQUALS=20 -LESS_EQUALS=21 -EQUALS_GREATER=22 -GREATER_EQUALS=23 -DOT_DOT=24 -NOT_EQUALS=25 -TYPECAST=26 -PERCENT=27 -PARAM=28 -Operator=29 -ALL=30 -ANALYSE=31 -ANALYZE=32 -AND=33 -ANY=34 -ARRAY=35 -AS=36 -ASC=37 -ASYMMETRIC=38 -BOTH=39 -CASE=40 -CAST=41 -CHECK=42 -COLLATE=43 -COLUMN=44 -CONSTRAINT=45 -CREATE=46 -CURRENT_CATALOG=47 -CURRENT_DATE=48 -CURRENT_ROLE=49 -CURRENT_TIME=50 -CURRENT_TIMESTAMP=51 -CURRENT_USER=52 -DEFAULT=53 -DEFERRABLE=54 -DESC=55 -DISTINCT=56 -DO=57 -ELSE=58 -EXCEPT=59 -FALSE_P=60 -FETCH=61 -FOR=62 -FOREIGN=63 -FROM=64 -GRANT=65 -GROUP_P=66 -HAVING=67 -IN_P=68 -INITIALLY=69 -INTERSECT=70 -INTO=71 -LATERAL_P=72 -LEADING=73 -LIMIT=74 -LOCALTIME=75 -LOCALTIMESTAMP=76 -NOT=77 -NULL_P=78 -OFFSET=79 -ON=80 -ONLY=81 -OR=82 -ORDER=83 -PLACING=84 -PRIMARY=85 -REFERENCES=86 -RETURNING=87 -SELECT=88 -SESSION_USER=89 -SOME=90 -SYMMETRIC=91 -TABLE=92 -THEN=93 -TO=94 -TOPIC=95 -STREAM=96 -TRAILING=97 -TRUE_P=98 -UNION=99 -UNIQUE=100 -USER=101 -USING=102 -VARIADIC=103 -WHEN=104 -WHERE=105 -WINDOW=106 -WITH=107 -AUTHORIZATION=108 -BINARY=109 -COLLATION=110 -CONCURRENTLY=111 -CROSS=112 -CURRENT_SCHEMA=113 -FREEZE=114 -FULL=115 -ILIKE=116 -INNER_P=117 -IS=118 -ISNULL=119 -JOIN=120 -LEFT=121 -LIKE=122 -NATURAL=123 -NOTNULL=124 -OUTER_P=125 -OVER=126 -OVERLAPS=127 -RIGHT=128 -SIMILAR=129 -VERBOSE=130 -ABORT_P=131 -ABSOLUTE_P=132 -ACCESS=133 -ACTION=134 -ADD_P=135 -ADMIN=136 -AFTER=137 -AGGREGATE=138 -ALSO=139 -ALTER=140 -ALWAYS=141 -ASSERTION=142 -ASSIGNMENT=143 -AT=144 -ATTRIBUTE=145 -BACKWARD=146 -BEFORE=147 -BEGIN_P=148 -BY=149 -CACHE=150 -CALLED=151 -CASCADE=152 -CASCADED=153 -CATALOG=154 -CHAIN=155 -CHARACTERISTICS=156 -CHECKPOINT=157 -CLASS=158 -CLOSE=159 -CLUSTER=160 -COMMENT=161 -COMMENTS=162 -COMMIT=163 -COMMITTED=164 -CONFIGURATION=165 -CONNECTION=166 -CONSTRAINTS=167 -CONTENT_P=168 -CONTINUE_P=169 -CONVERSION_P=170 -COPY=171 -COST=172 -CSV=173 -CURSOR=174 -CYCLE=175 -DATA_P=176 -DATABASE=177 -DAY_P=178 -DEALLOCATE=179 -DECLARE=180 -DEFAULTS=181 -DEFERRED=182 -DEFINER=183 -DELETE_P=184 -DELIMITER=185 -DELIMITERS=186 -DICTIONARY=187 -DISABLE_P=188 -DISCARD=189 -DOCUMENT_P=190 -DOMAIN_P=191 -DOUBLE_P=192 -DROP=193 -EACH=194 -ENABLE_P=195 -ENCODING=196 -ENCRYPTED=197 -ENUM_P=198 -ESCAPE=199 -EVENT=200 -EXCLUDE=201 -EXCLUDING=202 -EXCLUSIVE=203 -EXECUTE=204 -EXPLAIN=205 -EXTENSION=206 -EXTERNAL=207 -FAMILY=208 -FIRST_P=209 -FOLLOWING=210 -FORCE=211 -FORWARD=212 -FUNCTION=213 -FUNCTIONS=214 -GLOBAL=215 -GRANTED=216 -HANDLER=217 -HEADER_P=218 -HOLD=219 -HOUR_P=220 -IDENTITY_P=221 -IF_P=222 -IMMEDIATE=223 -IMMUTABLE=224 -IMPLICIT_P=225 -INCLUDING=226 -INCREMENT=227 -INDEX=228 -INDEXES=229 -INHERIT=230 -INHERITS=231 -INLINE_P=232 -INSENSITIVE=233 -INSERT=234 -INSTEAD=235 -INVOKER=236 -ISOLATION=237 -KEY=238 -LABEL=239 -LANGUAGE=240 -LARGE_P=241 -LAST_P=242 -LEAKPROOF=243 -LEVEL=244 -LISTEN=245 -LOAD=246 -LOCAL=247 -LOCATION=248 -LOCK_P=249 -MAPPING=250 -MATCH=251 -MATCHED=252 -MATERIALIZED=253 -MAXVALUE=254 -MERGE=255 -MINUTE_P=256 -MINVALUE=257 -MODE=258 -MONTH_P=259 -MOVE=260 -NAME_P=261 -NAMES=262 -NEXT=263 -NO=264 -NOTHING=265 -NOTIFY=266 -NOWAIT=267 -NULLS_P=268 -OBJECT_P=269 -OF=270 -OFF=271 -OIDS=272 -OPERATOR=273 -OPTION=274 -OPTIONS=275 -OWNED=276 -OWNER=277 -PARSER=278 -PARTIAL=279 -PARTITION=280 -PASSING=281 -PASSWORD=282 -PLANS=283 -PRECEDING=284 -PREPARE=285 -PREPARED=286 -PRESERVE=287 -PRIOR=288 -PRIVILEGES=289 -PROCEDURAL=290 -PROCEDURE=291 -PROGRAM=292 -QUOTE=293 -RANGE=294 -READ=295 -REASSIGN=296 -RECHECK=297 -RECURSIVE=298 -REF=299 -REFRESH=300 -REINDEX=301 -RELATIVE_P=302 -RELEASE=303 -RENAME=304 -REPEATABLE=305 -REPLACE=306 -REPLICA=307 -RESET=308 -RESTART=309 -RESTRICT=310 -RETURNS=311 -REVOKE=312 -ROLE=313 -ROLLBACK=314 -ROWS=315 -RULE=316 -SAVEPOINT=317 -SCHEMA=318 -SCROLL=319 -SEARCH=320 -SECOND_P=321 -SECURITY=322 -SEQUENCE=323 -SEQUENCES=324 -SERIALIZABLE=325 -SERVER=326 -SESSION=327 -SET=328 -SHARE=329 -SHOW=330 -SIMPLE=331 -SNAPSHOT=332 -STABLE=333 -STANDALONE_P=334 -START=335 -STATEMENT=336 -STATISTICS=337 -STDIN=338 -STDOUT=339 -STORAGE=340 -STRICT_P=341 -STRIP_P=342 -SYSID=343 -SYSTEM_P=344 -TABLES=345 -TABLESPACE=346 -TEMP=347 -TEMPLATE=348 -TEMPORARY=349 -TEXT_P=350 -TRANSACTION=351 -TRIGGER=352 -TRUNCATE=353 -TRUSTED=354 -TYPE_P=355 -TYPES_P=356 -UNBOUNDED=357 -UNCOMMITTED=358 -UNENCRYPTED=359 -UNKNOWN=360 -UNLISTEN=361 -UNLOGGED=362 -UNTIL=363 -UPDATE=364 -VACUUM=365 -VALID=366 -VALIDATE=367 -VALIDATOR=368 -VARYING=369 -VERSION_P=370 -VIEW=371 -VOLATILE=372 -WHITESPACE_P=373 -WITHOUT=374 -WORK=375 -WRAPPER=376 -WRITE=377 -XML_P=378 -YEAR_P=379 -YES_P=380 -ZONE=381 -BETWEEN=382 -BIGINT=383 -BIT=384 -BOOLEAN_P=385 -CHAR_P=386 -CHARACTER=387 -COALESCE=388 -DEC=389 -DECIMAL_P=390 -EXISTS=391 -EXTRACT=392 -FLOAT_P=393 -GREATEST=394 -INOUT=395 -INT_P=396 -INTEGER=397 -INTERVAL=398 -LEAST=399 -NATIONAL=400 -NCHAR=401 -NONE=402 -NULLIF=403 -NUMERIC=404 -OVERLAY=405 -POSITION=406 -PRECISION=407 -REAL=408 -ROW=409 -SETOF=410 -SMALLINT=411 -SUBSTRING=412 -TIME=413 -TIMESTAMP=414 -TREAT=415 -TRIM=416 -VALUES=417 -VARCHAR=418 -XMLATTRIBUTES=419 -XMLCOMMENT=420 -XMLAGG=421 -XML_IS_WELL_FORMED=422 -XML_IS_WELL_FORMED_DOCUMENT=423 -XML_IS_WELL_FORMED_CONTENT=424 -XPATH=425 -XPATH_EXISTS=426 -XMLCONCAT=427 -XMLELEMENT=428 -XMLEXISTS=429 -XMLFOREST=430 -XMLPARSE=431 -XMLPI=432 -XMLROOT=433 -XMLSERIALIZE=434 -CALL=435 -CURRENT_P=436 -ATTACH=437 -DETACH=438 -EXPRESSION=439 -GENERATED=440 -LOGGED=441 -STORED=442 -INCLUDE=443 -ROUTINE=444 -TRANSFORM=445 -IMPORT_P=446 -POLICY=447 -METHOD=448 -REFERENCING=449 -NEW=450 -OLD=451 -VALUE_P=452 -SUBSCRIPTION=453 -PUBLICATION=454 -OUT_P=455 -END_P=456 -ROUTINES=457 -SCHEMAS=458 -PROCEDURES=459 -INPUT_P=460 -SUPPORT=461 -PARALLEL=462 -SQL_P=463 -DEPENDS=464 -OVERRIDING=465 -CONFLICT=466 -SKIP_P=467 -LOCKED=468 -TIES=469 -ROLLUP=470 -CUBE=471 -GROUPING=472 -SETS=473 -TABLESAMPLE=474 -ORDINALITY=475 -XMLTABLE=476 -COLUMNS=477 -XMLNAMESPACES=478 -ROWTYPE=479 -NORMALIZED=480 -WITHIN=481 -FILTER=482 -GROUPS=483 -OTHERS=484 -NFC=485 -NFD=486 -NFKC=487 -NFKD=488 -UESCAPE=489 -VIEWS=490 -NORMALIZE=491 -DUMP=492 -PRINT_STRICT_PARAMS=493 -VARIABLE_CONFLICT=494 -ERROR=495 -USE_VARIABLE=496 -USE_COLUMN=497 -ALIAS=498 -CONSTANT=499 -PERFORM=500 -GET=501 -DIAGNOSTICS=502 -STACKED=503 -ELSIF=504 -WHILE=505 -REVERSE=506 -FOREACH=507 -SLICE=508 -EXIT=509 -RETURN=510 -QUERY=511 -RAISE=512 -SQLSTATE=513 -DEBUG=514 -LOG=515 -INFO=516 -NOTICE=517 -WARNING=518 -EXCEPTION=519 -ASSERT=520 -LOOP=521 -OPEN=522 -ABS=523 -CBRT=524 -CEIL=525 -CEILING=526 -DEGREES=527 -DIV=528 -EXP=529 -FACTORIAL=530 -FLOOR=531 -GCD=532 -LCM=533 -LN=534 -LOG10=535 -MIN_SCALE=536 -MOD=537 -PI=538 -POWER=539 -RADIANS=540 -ROUND=541 -SCALE=542 -SIGN=543 -SQRT=544 -TRIM_SCALE=545 -TRUNC=546 -WIDTH_BUCKET=547 -RANDOM=548 -SETSEED=549 -ACOS=550 -ACOSD=551 -ASIN=552 -ASIND=553 -ATAN=554 -ATAND=555 -ATAN2=556 -ATAN2D=557 -COS=558 -COSD=559 -COT=560 -COTD=561 -SIN=562 -SIND=563 -TAN=564 -TAND=565 -SINH=566 -COSH=567 -TANH=568 -ASINH=569 -ACOSH=570 -ATANH=571 -BIT_LENGTH=572 -CHAR_LENGTH=573 -CHARACTER_LENGTH=574 -LOWER=575 -OCTET_LENGTH=576 -UPPER=577 -ASCII=578 -BTRIM=579 -CHR=580 -CONCAT=581 -CONCAT_WS=582 -FORMAT=583 -INITCAP=584 -LENGTH=585 -LPAD=586 -LTRIM=587 -MD5=588 -PARSE_IDENT=589 -PG_CLIENT_ENCODING=590 -QUOTE_IDENT=591 -QUOTE_LITERAL=592 -QUOTE_NULLABLE=593 -REGEXP_COUNT=594 -REGEXP_INSTR=595 -REGEXP_LIKE=596 -REGEXP_MATCH=597 -REGEXP_MATCHES=598 -REGEXP_REPLACE=599 -REGEXP_SPLIT_TO_ARRAY=600 -REGEXP_SPLIT_TO_TABLE=601 -REGEXP_SUBSTR=602 -REPEAT=603 -RPAD=604 -RTRIM=605 -SPLIT_PART=606 -STARTS_WITH=607 -STRING_TO_ARRAY=608 -STRING_TO_TABLE=609 -STRPOS=610 -SUBSTR=611 -TO_ASCII=612 -TO_HEX=613 -TRANSLATE=614 -UNISTR=615 -AGE=616 -CLOCK_TIMESTAMP=617 -DATE_BIN=618 -DATE_PART=619 -DATE_TRUNC=620 -ISFINITE=621 -JUSTIFY_DAYS=622 -JUSTIFY_HOURS=623 -JUSTIFY_INTERVAL=624 -MAKE_DATE=625 -MAKE_INTERVAL=626 -MAKE_TIME=627 -MAKE_TIMESTAMP=628 -MAKE_TIMESTAMPTZ=629 -NOW=630 -STATEMENT_TIMESTAMP=631 -TIMEOFDAY=632 -TRANSACTION_TIMESTAMP=633 -TO_TIMESTAMP=634 -TO_CHAR=635 -TO_DATE=636 -TO_NUMBER=637 -Identifier=638 -QuotedIdentifier=639 -UnterminatedQuotedIdentifier=640 -InvalidQuotedIdentifier=641 -InvalidUnterminatedQuotedIdentifier=642 -UnicodeQuotedIdentifier=643 -UnterminatedUnicodeQuotedIdentifier=644 -InvalidUnicodeQuotedIdentifier=645 -InvalidUnterminatedUnicodeQuotedIdentifier=646 -StringConstant=647 -UnterminatedStringConstant=648 -UnicodeEscapeStringConstant=649 -UnterminatedUnicodeEscapeStringConstant=650 -BeginDollarStringConstant=651 -BinaryStringConstant=652 -UnterminatedBinaryStringConstant=653 -InvalidBinaryStringConstant=654 -InvalidUnterminatedBinaryStringConstant=655 -HexadecimalStringConstant=656 -UnterminatedHexadecimalStringConstant=657 -InvalidHexadecimalStringConstant=658 -InvalidUnterminatedHexadecimalStringConstant=659 -Integral=660 -NumericFail=661 -Numeric=662 -PLSQLVARIABLENAME=663 -PLSQLIDENTIFIER=664 -Whitespace=665 -Newline=666 -LineComment=667 -BlockComment=668 -UnterminatedBlockComment=669 -MetaCommand=670 -EndMetaCommand=671 -ErrorCharacter=672 -EscapeStringConstant=673 -UnterminatedEscapeStringConstant=674 -InvalidEscapeStringConstant=675 -InvalidUnterminatedEscapeStringConstant=676 -AfterEscapeStringConstantMode_NotContinued=677 -AfterEscapeStringConstantWithNewlineMode_NotContinued=678 -DollarText=679 -EndDollarStringConstant=680 -AfterEscapeStringConstantWithNewlineMode_Continued=681 -'$'=1 -'('=2 -')'=3 -'['=4 -']'=5 -','=6 -';'=7 -':'=8 -'*'=9 -'='=10 -'.'=11 -'+'=12 -'-'=13 -'/'=14 -'^'=15 -'<'=16 -'>'=17 -'<<'=18 -'>>'=19 -':='=20 -'<='=21 -'=>'=22 -'>='=23 -'..'=24 -'<>'=25 -'::'=26 -'%'=27 -'ALL'=30 -'ANALYSE'=31 -'ANALYZE'=32 -'AND'=33 -'ANY'=34 -'ARRAY'=35 -'AS'=36 -'ASC'=37 -'ASYMMETRIC'=38 -'BOTH'=39 -'CASE'=40 -'CAST'=41 -'CHECK'=42 -'COLLATE'=43 -'COLUMN'=44 -'CONSTRAINT'=45 -'CREATE'=46 -'CURRENT_CATALOG'=47 -'CURRENT_DATE'=48 -'CURRENT_ROLE'=49 -'CURRENT_TIME'=50 -'CURRENT_TIMESTAMP'=51 -'CURRENT_USER'=52 -'DEFAULT'=53 -'DEFERRABLE'=54 -'DESC'=55 -'DISTINCT'=56 -'DO'=57 -'ELSE'=58 -'EXCEPT'=59 -'FALSE'=60 -'FETCH'=61 -'FOR'=62 -'FOREIGN'=63 -'FROM'=64 -'GRANT'=65 -'GROUP'=66 -'HAVING'=67 -'IN'=68 -'INITIALLY'=69 -'INTERSECT'=70 -'INTO'=71 -'LATERAL'=72 -'LEADING'=73 -'LIMIT'=74 -'LOCALTIME'=75 -'LOCALTIMESTAMP'=76 -'NOT'=77 -'NULL'=78 -'OFFSET'=79 -'ON'=80 -'ONLY'=81 -'OR'=82 -'ORDER'=83 -'PLACING'=84 -'PRIMARY'=85 -'REFERENCES'=86 -'RETURNING'=87 -'SELECT'=88 -'SESSION_USER'=89 -'SOME'=90 -'SYMMETRIC'=91 -'TABLE'=92 -'THEN'=93 -'TO'=94 -'TOPIC'=95 -'STREAM'=96 -'TRAILING'=97 -'TRUE'=98 -'UNION'=99 -'UNIQUE'=100 -'USER'=101 -'USING'=102 -'VARIADIC'=103 -'WHEN'=104 -'WHERE'=105 -'WINDOW'=106 -'WITH'=107 -'AUTHORIZATION'=108 -'BINARY'=109 -'COLLATION'=110 -'CONCURRENTLY'=111 -'CROSS'=112 -'CURRENT_SCHEMA'=113 -'FREEZE'=114 -'FULL'=115 -'ILIKE'=116 -'INNER'=117 -'IS'=118 -'ISNULL'=119 -'JOIN'=120 -'LEFT'=121 -'LIKE'=122 -'NATURAL'=123 -'NOTNULL'=124 -'OUTER'=125 -'OVER'=126 -'OVERLAPS'=127 -'RIGHT'=128 -'SIMILAR'=129 -'VERBOSE'=130 -'ABORT'=131 -'ABSOLUTE'=132 -'ACCESS'=133 -'ACTION'=134 -'ADD'=135 -'ADMIN'=136 -'AFTER'=137 -'AGGREGATE'=138 -'ALSO'=139 -'ALTER'=140 -'ALWAYS'=141 -'ASSERTION'=142 -'ASSIGNMENT'=143 -'AT'=144 -'ATTRIBUTE'=145 -'BACKWARD'=146 -'BEFORE'=147 -'BEGIN'=148 -'BY'=149 -'CACHE'=150 -'CALLED'=151 -'CASCADE'=152 -'CASCADED'=153 -'CATALOG'=154 -'CHAIN'=155 -'CHARACTERISTICS'=156 -'CHECKPOINT'=157 -'CLASS'=158 -'CLOSE'=159 -'CLUSTER'=160 -'COMMENT'=161 -'COMMENTS'=162 -'COMMIT'=163 -'COMMITTED'=164 -'CONFIGURATION'=165 -'CONNECTION'=166 -'CONSTRAINTS'=167 -'CONTENT'=168 -'CONTINUE'=169 -'CONVERSION'=170 -'COPY'=171 -'COST'=172 -'CSV'=173 -'CURSOR'=174 -'CYCLE'=175 -'DATA'=176 -'DATABASE'=177 -'DAY'=178 -'DEALLOCATE'=179 -'DECLARE'=180 -'DEFAULTS'=181 -'DEFERRED'=182 -'DEFINER'=183 -'DELETE'=184 -'DELIMITER'=185 -'DELIMITERS'=186 -'DICTIONARY'=187 -'DISABLE'=188 -'DISCARD'=189 -'DOCUMENT'=190 -'DOMAIN'=191 -'DOUBLE'=192 -'DROP'=193 -'EACH'=194 -'ENABLE'=195 -'ENCODING'=196 -'ENCRYPTED'=197 -'ENUM'=198 -'ESCAPE'=199 -'EVENT'=200 -'EXCLUDE'=201 -'EXCLUDING'=202 -'EXCLUSIVE'=203 -'EXECUTE'=204 -'EXPLAIN'=205 -'EXTENSION'=206 -'EXTERNAL'=207 -'FAMILY'=208 -'FIRST'=209 -'FOLLOWING'=210 -'FORCE'=211 -'FORWARD'=212 -'FUNCTION'=213 -'FUNCTIONS'=214 -'GLOBAL'=215 -'GRANTED'=216 -'HANDLER'=217 -'HEADER'=218 -'HOLD'=219 -'HOUR'=220 -'IDENTITY'=221 -'IF'=222 -'IMMEDIATE'=223 -'IMMUTABLE'=224 -'IMPLICIT'=225 -'INCLUDING'=226 -'INCREMENT'=227 -'INDEX'=228 -'INDEXES'=229 -'INHERIT'=230 -'INHERITS'=231 -'INLINE'=232 -'INSENSITIVE'=233 -'INSERT'=234 -'INSTEAD'=235 -'INVOKER'=236 -'ISOLATION'=237 -'KEY'=238 -'LABEL'=239 -'LANGUAGE'=240 -'LARGE'=241 -'LAST'=242 -'LEAKPROOF'=243 -'LEVEL'=244 -'LISTEN'=245 -'LOAD'=246 -'LOCAL'=247 -'LOCATION'=248 -'LOCK'=249 -'MAPPING'=250 -'MATCH'=251 -'MATCHED'=252 -'MATERIALIZED'=253 -'MAXVALUE'=254 -'MERGE'=255 -'MINUTE'=256 -'MINVALUE'=257 -'MODE'=258 -'MONTH'=259 -'MOVE'=260 -'NAME'=261 -'NAMES'=262 -'NEXT'=263 -'NO'=264 -'NOTHING'=265 -'NOTIFY'=266 -'NOWAIT'=267 -'NULLS'=268 -'OBJECT'=269 -'OF'=270 -'OFF'=271 -'OIDS'=272 -'OPERATOR'=273 -'OPTION'=274 -'OPTIONS'=275 -'OWNED'=276 -'OWNER'=277 -'PARSER'=278 -'PARTIAL'=279 -'PARTITION'=280 -'PASSING'=281 -'PASSWORD'=282 -'PLANS'=283 -'PRECEDING'=284 -'PREPARE'=285 -'PREPARED'=286 -'PRESERVE'=287 -'PRIOR'=288 -'PRIVILEGES'=289 -'PROCEDURAL'=290 -'PROCEDURE'=291 -'PROGRAM'=292 -'QUOTE'=293 -'RANGE'=294 -'READ'=295 -'REASSIGN'=296 -'RECHECK'=297 -'RECURSIVE'=298 -'REF'=299 -'REFRESH'=300 -'REINDEX'=301 -'RELATIVE'=302 -'RELEASE'=303 -'RENAME'=304 -'REPEATABLE'=305 -'REPLACE'=306 -'REPLICA'=307 -'RESET'=308 -'RESTART'=309 -'RESTRICT'=310 -'RETURNS'=311 -'REVOKE'=312 -'ROLE'=313 -'ROLLBACK'=314 -'ROWS'=315 -'RULE'=316 -'SAVEPOINT'=317 -'SCHEMA'=318 -'SCROLL'=319 -'SEARCH'=320 -'SECOND'=321 -'SECURITY'=322 -'SEQUENCE'=323 -'SEQUENCES'=324 -'SERIALIZABLE'=325 -'SERVER'=326 -'SESSION'=327 -'SET'=328 -'SHARE'=329 -'SHOW'=330 -'SIMPLE'=331 -'SNAPSHOT'=332 -'STABLE'=333 -'STANDALONE'=334 -'START'=335 -'STATEMENT'=336 -'STATISTICS'=337 -'STDIN'=338 -'STDOUT'=339 -'STORAGE'=340 -'STRICT'=341 -'STRIP'=342 -'SYSID'=343 -'SYSTEM'=344 -'TABLES'=345 -'TABLESPACE'=346 -'TEMP'=347 -'TEMPLATE'=348 -'TEMPORARY'=349 -'TEXT'=350 -'TRANSACTION'=351 -'TRIGGER'=352 -'TRUNCATE'=353 -'TRUSTED'=354 -'TYPE'=355 -'TYPES'=356 -'UNBOUNDED'=357 -'UNCOMMITTED'=358 -'UNENCRYPTED'=359 -'UNKNOWN'=360 -'UNLISTEN'=361 -'UNLOGGED'=362 -'UNTIL'=363 -'UPDATE'=364 -'VACUUM'=365 -'VALID'=366 -'VALIDATE'=367 -'VALIDATOR'=368 -'VARYING'=369 -'VERSION'=370 -'VIEW'=371 -'VOLATILE'=372 -'WHITESPACE'=373 -'WITHOUT'=374 -'WORK'=375 -'WRAPPER'=376 -'WRITE'=377 -'XML'=378 -'YEAR'=379 -'YES'=380 -'ZONE'=381 -'BETWEEN'=382 -'BIGINT'=383 -'BIT'=384 -'BOOLEAN'=385 -'CHAR'=386 -'CHARACTER'=387 -'COALESCE'=388 -'DEC'=389 -'DECIMAL'=390 -'EXISTS'=391 -'EXTRACT'=392 -'FLOAT'=393 -'GREATEST'=394 -'INOUT'=395 -'INT'=396 -'INTEGER'=397 -'INTERVAL'=398 -'LEAST'=399 -'NATIONAL'=400 -'NCHAR'=401 -'NONE'=402 -'NULLIF'=403 -'NUMERIC'=404 -'OVERLAY'=405 -'POSITION'=406 -'PRECISION'=407 -'REAL'=408 -'ROW'=409 -'SETOF'=410 -'SMALLINT'=411 -'SUBSTRING'=412 -'TIME'=413 -'TIMESTAMP'=414 -'TREAT'=415 -'TRIM'=416 -'VALUES'=417 -'VARCHAR'=418 -'XMLATTRIBUTES'=419 -'XMLCOMMENT'=420 -'XMLAGG'=421 -'XML_IS_WELL_FORMED'=422 -'XML_IS_WELL_FORMED_DOCUMENT'=423 -'XML_IS_WELL_FORMED_CONTENT'=424 -'XPATH'=425 -'XPATH_EXISTS'=426 -'XMLCONCAT'=427 -'XMLELEMENT'=428 -'XMLEXISTS'=429 -'XMLFOREST'=430 -'XMLPARSE'=431 -'XMLPI'=432 -'XMLROOT'=433 -'XMLSERIALIZE'=434 -'CALL'=435 -'CURRENT'=436 -'ATTACH'=437 -'DETACH'=438 -'EXPRESSION'=439 -'GENERATED'=440 -'LOGGED'=441 -'STORED'=442 -'INCLUDE'=443 -'ROUTINE'=444 -'TRANSFORM'=445 -'IMPORT'=446 -'POLICY'=447 -'METHOD'=448 -'REFERENCING'=449 -'NEW'=450 -'OLD'=451 -'VALUE'=452 -'SUBSCRIPTION'=453 -'PUBLICATION'=454 -'OUT'=455 -'END'=456 -'ROUTINES'=457 -'SCHEMAS'=458 -'PROCEDURES'=459 -'INPUT'=460 -'SUPPORT'=461 -'PARALLEL'=462 -'SQL'=463 -'DEPENDS'=464 -'OVERRIDING'=465 -'CONFLICT'=466 -'SKIP'=467 -'LOCKED'=468 -'TIES'=469 -'ROLLUP'=470 -'CUBE'=471 -'GROUPING'=472 -'SETS'=473 -'TABLESAMPLE'=474 -'ORDINALITY'=475 -'XMLTABLE'=476 -'COLUMNS'=477 -'XMLNAMESPACES'=478 -'ROWTYPE'=479 -'NORMALIZED'=480 -'WITHIN'=481 -'FILTER'=482 -'GROUPS'=483 -'OTHERS'=484 -'NFC'=485 -'NFD'=486 -'NFKC'=487 -'NFKD'=488 -'UESCAPE'=489 -'VIEWS'=490 -'NORMALIZE'=491 -'DUMP'=492 -'PRINT_STRICT_PARAMS'=493 -'VARIABLE_CONFLICT'=494 -'ERROR'=495 -'USE_VARIABLE'=496 -'USE_COLUMN'=497 -'ALIAS'=498 -'CONSTANT'=499 -'PERFORM'=500 -'GET'=501 -'DIAGNOSTICS'=502 -'STACKED'=503 -'ELSIF'=504 -'WHILE'=505 -'REVERSE'=506 -'FOREACH'=507 -'SLICE'=508 -'EXIT'=509 -'RETURN'=510 -'QUERY'=511 -'RAISE'=512 -'SQLSTATE'=513 -'DEBUG'=514 -'LOG'=515 -'INFO'=516 -'NOTICE'=517 -'WARNING'=518 -'EXCEPTION'=519 -'ASSERT'=520 -'LOOP'=521 -'OPEN'=522 -'ABS'=523 -'CBRT'=524 -'CEIL'=525 -'CEILING'=526 -'DEGREES'=527 -'DIV'=528 -'EXP'=529 -'FACTORIAL'=530 -'FLOOR'=531 -'GCD'=532 -'LCM'=533 -'LN'=534 -'LOG10'=535 -'MIN_SCALE'=536 -'MOD'=537 -'PI'=538 -'POWER'=539 -'RADIANS'=540 -'ROUND'=541 -'SCALE'=542 -'SIGN'=543 -'SQRT'=544 -'TRIM_SCALE'=545 -'TRUNC'=546 -'WIDTH_BUCKET'=547 -'RANDOM'=548 -'SETSEED'=549 -'ACOS'=550 -'ACOSD'=551 -'ASIN'=552 -'ASIND'=553 -'ATAN'=554 -'ATAND'=555 -'ATAN2'=556 -'ATAN2D'=557 -'COS'=558 -'COSD'=559 -'COT'=560 -'COTD'=561 -'SIN'=562 -'SIND'=563 -'TAN'=564 -'TAND'=565 -'SINH'=566 -'COSH'=567 -'TANH'=568 -'ASINH'=569 -'ACOSH'=570 -'ATANH'=571 -'BIT_LENGTH'=572 -'CHAR_LENGTH'=573 -'CHARACTER_LENGTH'=574 -'LOWER'=575 -'OCTET_LENGTH'=576 -'UPPER'=577 -'ASCII'=578 -'BTRIM'=579 -'CHR'=580 -'CONCAT'=581 -'CONCAT_WS'=582 -'FORMAT'=583 -'INITCAP'=584 -'LENGTH'=585 -'LPAD'=586 -'LTRIM'=587 -'MD5'=588 -'PARSE_IDENT'=589 -'PG_CLIENT_ENCODING'=590 -'QUOTE_IDENT'=591 -'QUOTE_LITERAL'=592 -'QUOTE_NULLABLE'=593 -'REGEXP_COUNT'=594 -'REGEXP_INSTR'=595 -'REGEXP_LIKE'=596 -'REGEXP_MATCH'=597 -'REGEXP_MATCHES'=598 -'REGEXP_REPLACE'=599 -'REGEXP_SPLIT_TO_ARRAY'=600 -'REGEXP_SPLIT_TO_TABLE'=601 -'REGEXP_SUBSTR'=602 -'REPEAT'=603 -'RPAD'=604 -'RTRIM'=605 -'SPLIT_PART'=606 -'STARTS_WITH'=607 -'STRING_TO_ARRAY'=608 -'STRING_TO_TABLE'=609 -'STRPOS'=610 -'SUBSTR'=611 -'TO_ASCII'=612 -'TO_HEX'=613 -'TRANSLATE'=614 -'UNISTR'=615 -'AGE'=616 -'CLOCK_TIMESTAMP'=617 -'DATE_BIN'=618 -'DATE_PART'=619 -'DATE_TRUNC'=620 -'ISFINITE'=621 -'JUSTIFY_DAYS'=622 -'JUSTIFY_HOURS'=623 -'JUSTIFY_INTERVAL'=624 -'MAKE_DATE'=625 -'MAKE_INTERVAL'=626 -'MAKE_TIME'=627 -'MAKE_TIMESTAMP'=628 -'MAKE_TIMESTAMPTZ'=629 -'NOW'=630 -'STATEMENT_TIMESTAMP'=631 -'TIMEOFDAY'=632 -'TRANSACTION_TIMESTAMP'=633 -'TO_TIMESTAMP'=634 -'TO_CHAR'=635 -'TO_DATE'=636 -'TO_NUMBER'=637 -'\\\\'=671 -'\''=681 From e578609d23cbc317a91bb17efa364c7f376557a4 Mon Sep 17 00:00:00 2001 From: Akram Yakubov Date: Fri, 18 Oct 2024 11:24:49 -0700 Subject: [PATCH 19/26] Clean up --- .../runtime/binding/pgsql/parser/PgsqlParser.java | 1 - .../pgsql/parser/listener/SqlCommandListener.java | 4 +++- .../parser/listener/SqlCreateFunctionListener.java | 12 ++++++++++++ .../listener/SqlCreateMaterializedViewListener.java | 8 ++++++++ .../parser/listener/SqlCreateStreamListener.java | 10 ++++++++-- .../parser/listener/SqlCreateTableTopicListener.java | 12 +++++++++--- .../pgsql/parser/listener/SqlDropListener.java | 9 +++++++-- incubator/binding-risingwave/pom.xml | 2 +- 8 files changed, 48 insertions(+), 10 deletions(-) diff --git a/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/PgsqlParser.java b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/PgsqlParser.java index 447328c810..1ff5bc5ca3 100644 --- a/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/PgsqlParser.java +++ b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/PgsqlParser.java @@ -66,7 +66,6 @@ public PgsqlParser() public String parseCommand( String sql) { - commandListener.resetCommand(); parser(sql, commandListener); return commandListener.command(); } diff --git a/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlCommandListener.java b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlCommandListener.java index bc4a949c95..ce9f2ce2ce 100644 --- a/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlCommandListener.java +++ b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlCommandListener.java @@ -26,7 +26,9 @@ public String command() return command; } - public void resetCommand() + @Override + public void enterRoot( + PostgreSqlParser.RootContext ctx) { command = ""; } diff --git a/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlCreateFunctionListener.java b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlCreateFunctionListener.java index 024b7f525a..a458f8337d 100644 --- a/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlCreateFunctionListener.java +++ b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlCreateFunctionListener.java @@ -47,6 +47,18 @@ public FunctionInfo functionInfo() return new FunctionInfo(name, arguments, returnType, tables, asFunction, language); } + @Override + public void enterRoot( + PostgreSqlParser.RootContext ctx) + { + name = null; + returnType = null; + asFunction = null; + language = null; + arguments.clear(); + tables.clear(); + } + @Override public void enterCreatefunctionstmt( PostgreSqlParser.CreatefunctionstmtContext ctx) diff --git a/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlCreateMaterializedViewListener.java b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlCreateMaterializedViewListener.java index 640646b3fa..5bdeab08d5 100644 --- a/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlCreateMaterializedViewListener.java +++ b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlCreateMaterializedViewListener.java @@ -37,6 +37,14 @@ public ViewInfo viewInfo() return new ViewInfo(name, select); } + @Override + public void enterRoot( + PostgreSqlParser.RootContext ctx) + { + name = null; + select = null; + } + @Override public void enterCreatematviewstmt( PostgreSqlParser.CreatematviewstmtContext ctx) diff --git a/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlCreateStreamListener.java b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlCreateStreamListener.java index f0dd2306a3..da232ad85c 100644 --- a/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlCreateStreamListener.java +++ b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlCreateStreamListener.java @@ -31,6 +31,14 @@ public StreamInfo streamInfo() return new StreamInfo(name, columns); } + @Override + public void enterRoot( + PostgreSqlParser.RootContext ctx) + { + name = null; + columns.clear(); + } + @Override public void enterQualified_name( PostgreSqlParser.Qualified_nameContext ctx) @@ -42,8 +50,6 @@ public void enterQualified_name( public void enterCreatestreamstmt( PostgreSqlParser.CreatestreamstmtContext ctx) { - columns.clear(); - if (ctx.stream_columns() != null) { for (PostgreSqlParser.Stream_columnContext streamElement : ctx.stream_columns().stream_column()) diff --git a/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlCreateTableTopicListener.java b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlCreateTableTopicListener.java index 7fbc3cd6b7..2931bb195b 100644 --- a/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlCreateTableTopicListener.java +++ b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlCreateTableTopicListener.java @@ -35,6 +35,15 @@ public TableInfo tableInfo() return new TableInfo(name, columns, primaryKeys); } + @Override + public void enterRoot( + PostgreSqlParser.RootContext ctx) + { + name = null; + columns.clear(); + primaryKeys.clear(); + } + @Override public void enterQualified_name( PostgreSqlParser.Qualified_nameContext ctx) @@ -46,9 +55,6 @@ public void enterQualified_name( public void enterCreatestmt( PostgreSqlParser.CreatestmtContext ctx) { - columns.clear(); - primaryKeys.clear(); - if (ctx.opttableelementlist().tableelementlist() != null) { for (PostgreSqlParser.TableelementContext tableElement : ctx.opttableelementlist().tableelementlist().tableelement()) diff --git a/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlDropListener.java b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlDropListener.java index d4fc4b31b1..a7fecb380f 100644 --- a/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlDropListener.java +++ b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlDropListener.java @@ -30,11 +30,16 @@ public List drops() } @Override - public void enterDropstmt( - PostgreSqlParser.DropstmtContext ctx) + public void enterRoot( + PostgreSqlParser.RootContext ctx) { drops.clear(); + } + @Override + public void enterDropstmt( + PostgreSqlParser.DropstmtContext ctx) + { ctx.any_name_list().any_name().forEach(name -> drops.add(name.getText())); } } diff --git a/incubator/binding-risingwave/pom.xml b/incubator/binding-risingwave/pom.xml index 5cae1d2917..52e467a184 100644 --- a/incubator/binding-risingwave/pom.xml +++ b/incubator/binding-risingwave/pom.xml @@ -24,7 +24,7 @@ - 0.92 + 0.91 0 From af43cafd050f0e61d578a7115eecbd53759f22e4 Mon Sep 17 00:00:00 2001 From: Akram Yakubov Date: Fri, 18 Oct 2024 11:58:52 -0700 Subject: [PATCH 20/26] update module-info.xml --- incubator/binding-pgsql-kafka/src/main/moditect/module-info.java | 1 + incubator/binding-pgsql/src/main/moditect/module-info.java | 1 + incubator/binding-risingwave/src/main/moditect/module-info.java | 1 + 3 files changed, 3 insertions(+) diff --git a/incubator/binding-pgsql-kafka/src/main/moditect/module-info.java b/incubator/binding-pgsql-kafka/src/main/moditect/module-info.java index 56ccf3938d..e4c6b9efab 100644 --- a/incubator/binding-pgsql-kafka/src/main/moditect/module-info.java +++ b/incubator/binding-pgsql-kafka/src/main/moditect/module-info.java @@ -15,6 +15,7 @@ module io.aklivity.zilla.runtime.binding.pgsql.kafka { requires io.aklivity.zilla.runtime.engine; + requires io.aklivity.zilla.runtime.binding.pgsql; provides io.aklivity.zilla.runtime.engine.binding.BindingFactorySpi with io.aklivity.zilla.runtime.binding.pgsql.kafka.internal.PgsqlKafkaBindingFactorySpi; diff --git a/incubator/binding-pgsql/src/main/moditect/module-info.java b/incubator/binding-pgsql/src/main/moditect/module-info.java index b7d54cd88f..59591ed357 100644 --- a/incubator/binding-pgsql/src/main/moditect/module-info.java +++ b/incubator/binding-pgsql/src/main/moditect/module-info.java @@ -15,6 +15,7 @@ module io.aklivity.zilla.runtime.binding.pgsql { requires io.aklivity.zilla.runtime.engine; + requires org.antlr.antlr4.runtime; exports io.aklivity.zilla.runtime.binding.pgsql.parser; diff --git a/incubator/binding-risingwave/src/main/moditect/module-info.java b/incubator/binding-risingwave/src/main/moditect/module-info.java index f37ab76014..0155d5c356 100644 --- a/incubator/binding-risingwave/src/main/moditect/module-info.java +++ b/incubator/binding-risingwave/src/main/moditect/module-info.java @@ -15,6 +15,7 @@ module io.aklivity.zilla.runtime.binding.risingwave { requires io.aklivity.zilla.runtime.engine; + requires io.aklivity.zilla.runtime.binding.pgsql; exports io.aklivity.zilla.runtime.binding.risingwave.config; From 89787efffcbb21576899b2df96e2bbb66e0fa91c Mon Sep 17 00:00:00 2001 From: Akram Yakubov Date: Fri, 18 Oct 2024 12:13:24 -0700 Subject: [PATCH 21/26] update module-info --- incubator/binding-pgsql/src/main/moditect/module-info.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/incubator/binding-pgsql/src/main/moditect/module-info.java b/incubator/binding-pgsql/src/main/moditect/module-info.java index 59591ed357..60ede08cc2 100644 --- a/incubator/binding-pgsql/src/main/moditect/module-info.java +++ b/incubator/binding-pgsql/src/main/moditect/module-info.java @@ -18,6 +18,8 @@ requires org.antlr.antlr4.runtime; exports io.aklivity.zilla.runtime.binding.pgsql.parser; + exports io.aklivity.zilla.runtime.binding.pgsql.parser.listener; + exports io.aklivity.zilla.runtime.binding.pgsql.parser.module; provides io.aklivity.zilla.runtime.engine.binding.BindingFactorySpi with io.aklivity.zilla.runtime.binding.pgsql.internal.PgsqlBindingFactorySpi; From e344a8175e8b64e159a5a62969c9f7ced637882a Mon Sep 17 00:00:00 2001 From: Akram Yakubov Date: Fri, 18 Oct 2024 12:25:51 -0700 Subject: [PATCH 22/26] Fix parsing --- .../runtime/binding/pgsql/parser/PgsqlParser.java | 4 ++-- .../parser/listener/SqlCreateStreamListener.java | 12 +++++++++++- .../parser/listener/SqlCreateTableTopicListener.java | 11 ++++++++++- .../binding/pgsql/parser/PgsqlParserTest.java | 9 +++++++++ 4 files changed, 32 insertions(+), 4 deletions(-) diff --git a/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/PgsqlParser.java b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/PgsqlParser.java index 1ff5bc5ca3..e2c000c1be 100644 --- a/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/PgsqlParser.java +++ b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/PgsqlParser.java @@ -55,8 +55,8 @@ public PgsqlParser() this.tokens = new CommonTokenStream(lexer); this.parser = new PostgreSqlParser(tokens); this.commandListener = new SqlCommandListener(); - this.createTableListener = new SqlCreateTableTopicListener(); - this.createStreamListener = new SqlCreateStreamListener(); + this.createTableListener = new SqlCreateTableTopicListener(tokens); + this.createStreamListener = new SqlCreateStreamListener(tokens); this.createFunctionListener = new SqlCreateFunctionListener(tokens); this.createMaterializedViewListener = new SqlCreateMaterializedViewListener(tokens); this.dropListener = new SqlDropListener(); diff --git a/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlCreateStreamListener.java b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlCreateStreamListener.java index da232ad85c..4d482240e3 100644 --- a/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlCreateStreamListener.java +++ b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlCreateStreamListener.java @@ -17,6 +17,8 @@ import java.util.LinkedHashMap; import java.util.Map; +import org.antlr.v4.runtime.TokenStream; + import io.aklivity.zilla.runtime.binding.pgsql.parser.PostgreSqlParser; import io.aklivity.zilla.runtime.binding.pgsql.parser.PostgreSqlParserBaseListener; import io.aklivity.zilla.runtime.binding.pgsql.parser.module.StreamInfo; @@ -26,6 +28,14 @@ public class SqlCreateStreamListener extends PostgreSqlParserBaseListener private String name; private final Map columns = new LinkedHashMap<>(); + private final TokenStream tokens; + + public SqlCreateStreamListener( + TokenStream tokens) + { + this.tokens = tokens; + } + public StreamInfo streamInfo() { return new StreamInfo(name, columns); @@ -55,7 +65,7 @@ public void enterCreatestreamstmt( for (PostgreSqlParser.Stream_columnContext streamElement : ctx.stream_columns().stream_column()) { String columnName = streamElement.colid().getText(); - String dataType = streamElement.typename().getText(); + String dataType = tokens.getText(streamElement.typename()); columns.put(columnName, dataType); } } diff --git a/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlCreateTableTopicListener.java b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlCreateTableTopicListener.java index 2931bb195b..c9bb2d0d55 100644 --- a/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlCreateTableTopicListener.java +++ b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlCreateTableTopicListener.java @@ -19,6 +19,7 @@ import java.util.Set; import org.agrona.collections.ObjectHashSet; +import org.antlr.v4.runtime.TokenStream; import io.aklivity.zilla.runtime.binding.pgsql.parser.PostgreSqlParser; import io.aklivity.zilla.runtime.binding.pgsql.parser.PostgreSqlParserBaseListener; @@ -30,6 +31,14 @@ public class SqlCreateTableTopicListener extends PostgreSqlParserBaseListener private final Map columns = new LinkedHashMap<>(); private final Set primaryKeys = new ObjectHashSet<>(); + private final TokenStream tokens; + + public SqlCreateTableTopicListener( + TokenStream tokens) + { + this.tokens = tokens; + } + public TableInfo tableInfo() { return new TableInfo(name, columns, primaryKeys); @@ -62,7 +71,7 @@ public void enterCreatestmt( if (tableElement.columnDef() != null) { String columnName = tableElement.columnDef().colid().getText(); - String dataType = tableElement.columnDef().typename().getText(); + String dataType = tokens.getText(tableElement.columnDef().typename()); columns.put(columnName, dataType); for (PostgreSqlParser.ColconstraintContext constraint : diff --git a/incubator/binding-pgsql/src/test/java/io/aklivity/zilla/runtime/binding/pgsql/parser/PgsqlParserTest.java b/incubator/binding-pgsql/src/test/java/io/aklivity/zilla/runtime/binding/pgsql/parser/PgsqlParserTest.java index 54f753ffd6..8f03d01b79 100644 --- a/incubator/binding-pgsql/src/test/java/io/aklivity/zilla/runtime/binding/pgsql/parser/PgsqlParserTest.java +++ b/incubator/binding-pgsql/src/test/java/io/aklivity/zilla/runtime/binding/pgsql/parser/PgsqlParserTest.java @@ -74,6 +74,15 @@ public void shouldParseCreateTableName() assertEquals("test", tableInfo.name()); } + @Test + public void shouldParseCreateTableNameWithDoublePrecisionTypeField() + { + String sql = "CREATE TABLE test (id DOUBLE PRECISION);"; + TableInfo tableInfo = parser.parseCreateTable(sql); + assertEquals("test", tableInfo.name()); + assertEquals("DOUBLE PRECISION", tableInfo.columns().get("id")); + } + @Test public void shouldParseCreateTableColumns() { From 8a89a8122e00d86dcbd2e850bda3b2bc16c65a1d Mon Sep 17 00:00:00 2001 From: Akram Yakubov Date: Fri, 18 Oct 2024 15:43:27 -0700 Subject: [PATCH 23/26] Fix remaining issues --- .../listener/SqlCreateFunctionListener.java | 2 +- .../create.stream.with.includes/client.rpt | 5 ++- .../create.stream.with.includes/server.rpt | 5 ++- .../client.rpt | 9 ++--- .../server.rpt | 9 ++--- .../create.stream.with.includes/client.rpt | 2 +- .../create.stream.with.includes/server.rpt | 2 +- .../client.rpt | 2 +- .../server.rpt | 2 +- .../statement/RisingwaveCommandTemplate.java | 16 +++++---- ...ingwaveCreateMaterializedViewTemplate.java | 5 +-- .../RisingwaveCreateSourceTemplate.java | 4 +-- .../RisingwaveCreateTopicTemplate.java | 7 ++-- ...aveCreateMaterializedViewTemplateTest.java | 5 +-- .../RisingwaveCreateSourceTemplateTest.java | 34 +++++++++++++++++-- 15 files changed, 74 insertions(+), 35 deletions(-) diff --git a/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlCreateFunctionListener.java b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlCreateFunctionListener.java index a458f8337d..e0d0db858e 100644 --- a/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlCreateFunctionListener.java +++ b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlCreateFunctionListener.java @@ -71,7 +71,7 @@ public void enterFunc_arg( PostgreSqlParser.Func_argContext ctx) { String argName = ctx.param_name() != null ? ctx.param_name().getText() : null; - String argType = ctx.func_type().getText(); + String argType = tokens.getText(ctx.func_type()); arguments.add(new FunctionArgument(argName, argType)); } diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.stream.with.includes/client.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.stream.with.includes/client.rpt index 97ef77b50b..ca19a105fb 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.stream.with.includes/client.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.stream.with.includes/client.rpt @@ -35,7 +35,7 @@ write zilla:data.ext ${pgsql:dataEx() write "CREATE SOURCE IF NOT EXISTS weather (*)\n" "INCLUDE header 'zilla:correlation-id' AS zilla_correlation_id\n" "INCLUDE header 'zilla:identity' AS zilla_identity\n" - "INCLUDE timestamp AS timestamp\n" + "INCLUDE timestamp AS zilla_timestamp\n" "WITH (\n" " connector='kafka',\n" " properties.bootstrap.server='localhost:9092',\n" @@ -82,8 +82,7 @@ write zilla:data.ext ${pgsql:dataEx() .build() .build()} write "CREATE TOPIC IF NOT EXISTS weather " - "(city VARCHAR, temperature DOUBLE, date DATE," - " zilla_correlation_id VARCHAR, zilla_identity VARCHAR, timestamp TIMESTAMP);" + "(city VARCHAR, temperature DOUBLE, date DATE);" [0x00] write flush diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.stream.with.includes/server.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.stream.with.includes/server.rpt index 2aaf5aac20..cabb3d2999 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.stream.with.includes/server.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.stream.with.includes/server.rpt @@ -39,7 +39,7 @@ read zilla:data.ext ${pgsql:dataEx() read "CREATE SOURCE IF NOT EXISTS weather (*)\n" "INCLUDE header 'zilla:correlation-id' AS zilla_correlation_id\n" "INCLUDE header 'zilla:identity' AS zilla_identity\n" - "INCLUDE timestamp AS timestamp\n" + "INCLUDE timestamp AS zilla_timestamp\n" "WITH (\n" " connector='kafka',\n" " properties.bootstrap.server='localhost:9092',\n" @@ -88,8 +88,7 @@ read zilla:data.ext ${pgsql:dataEx() .build() .build()} read "CREATE TOPIC IF NOT EXISTS weather " - "(city VARCHAR, temperature DOUBLE, date DATE," - " zilla_correlation_id VARCHAR, zilla_identity VARCHAR, timestamp TIMESTAMP);" + "(city VARCHAR, temperature DOUBLE, date DATE);" [0x00] write advise zilla:flush ${pgsql:flushEx() diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.table.with.primary.key.and.includes/client.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.table.with.primary.key.and.includes/client.rpt index eb239977d9..f5775ad345 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.table.with.primary.key.and.includes/client.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.table.with.primary.key.and.includes/client.rpt @@ -35,7 +35,7 @@ write zilla:data.ext ${pgsql:dataEx() write "CREATE SOURCE IF NOT EXISTS cities_source (*)\n" "INCLUDE header 'zilla:correlation-id' AS zilla_correlation_id_header\n" "INCLUDE header 'zilla:identity' AS zilla_identity_header\n" - "INCLUDE timestamp AS timestamp\n" + "INCLUDE timestamp AS zilla_timestamp_timestamp\n" "WITH (\n" " connector='kafka',\n" " properties.bootstrap.server='localhost:9092',\n" @@ -70,7 +70,8 @@ write zilla:data.ext ${pgsql:dataEx() write "CREATE MATERIALIZED VIEW IF NOT EXISTS cities_view" " AS SELECT id, name, description," " COALESCE(zilla_correlation_id, zilla_correlation_id_header::varchar) as zilla_correlation_id," - " COALESCE(zilla_identity, zilla_identity_header::varchar) as zilla_identity, timestamp" + " COALESCE(zilla_identity, zilla_identity_header::varchar) as zilla_identity," + " COALESCE(zilla_timestamp, zilla_timestamp_timestamp::varchar) as zilla_timestamp" " FROM cities_source;" [0x00] write flush @@ -96,7 +97,7 @@ write zilla:data.ext ${pgsql:dataEx() .build()} write "CREATE TABLE IF NOT EXISTS cities" " (id VARCHAR, name VARCHAR, description VARCHAR," - " zilla_correlation_id VARCHAR, zilla_identity VARCHAR, timestamp TIMESTAMP," + " zilla_correlation_id VARCHAR, zilla_identity VARCHAR, zilla_timestamp TIMESTAMP," " PRIMARY KEY (id));" [0x00] write flush @@ -191,7 +192,7 @@ write zilla:data.ext ${pgsql:dataEx() .build()} write "CREATE TOPIC IF NOT EXISTS cities " "(id VARCHAR, name VARCHAR, description VARCHAR," - " zilla_correlation_id VARCHAR, zilla_identity VARCHAR, timestamp TIMESTAMP," + " zilla_correlation_id VARCHAR, zilla_identity VARCHAR, zilla_timestamp TIMESTAMP," " PRIMARY KEY (id));" [0x00] write flush diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.table.with.primary.key.and.includes/server.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.table.with.primary.key.and.includes/server.rpt index 1879dd135c..48be7e8fd1 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.table.with.primary.key.and.includes/server.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.table.with.primary.key.and.includes/server.rpt @@ -39,7 +39,7 @@ read zilla:data.ext ${pgsql:dataEx() read "CREATE SOURCE IF NOT EXISTS cities_source (*)\n" "INCLUDE header 'zilla:correlation-id' AS zilla_correlation_id_header\n" "INCLUDE header 'zilla:identity' AS zilla_identity_header\n" - "INCLUDE timestamp AS timestamp\n" + "INCLUDE timestamp AS zilla_timestamp_timestamp\n" "WITH (\n" " connector='kafka',\n" " properties.bootstrap.server='localhost:9092',\n" @@ -73,7 +73,8 @@ read zilla:data.ext ${pgsql:dataEx() read "CREATE MATERIALIZED VIEW IF NOT EXISTS cities_view" " AS SELECT id, name, description," " COALESCE(zilla_correlation_id, zilla_correlation_id_header::varchar) as zilla_correlation_id," - " COALESCE(zilla_identity, zilla_identity_header::varchar) as zilla_identity, timestamp" + " COALESCE(zilla_identity, zilla_identity_header::varchar) as zilla_identity," + " COALESCE(zilla_timestamp, zilla_timestamp_timestamp::varchar) as zilla_timestamp" " FROM cities_source;" [0x00] @@ -98,7 +99,7 @@ read zilla:data.ext ${pgsql:dataEx() .build()} read "CREATE TABLE IF NOT EXISTS cities" " (id VARCHAR, name VARCHAR, description VARCHAR," - " zilla_correlation_id VARCHAR, zilla_identity VARCHAR, timestamp TIMESTAMP," + " zilla_correlation_id VARCHAR, zilla_identity VARCHAR, zilla_timestamp TIMESTAMP," " PRIMARY KEY (id));" [0x00] @@ -192,7 +193,7 @@ read zilla:data.ext ${pgsql:dataEx() .build()} read "CREATE TOPIC IF NOT EXISTS cities " "(id VARCHAR, name VARCHAR, description VARCHAR," - " zilla_correlation_id VARCHAR, zilla_identity VARCHAR, timestamp TIMESTAMP," + " zilla_correlation_id VARCHAR, zilla_identity VARCHAR, zilla_timestamp TIMESTAMP," " PRIMARY KEY (id));" [0x00] diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.stream.with.includes/client.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.stream.with.includes/client.rpt index 8b28390df8..61a9befb91 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.stream.with.includes/client.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.stream.with.includes/client.rpt @@ -34,7 +34,7 @@ write zilla:data.ext ${pgsql:dataEx() .build()} write "CREATE STREAM IF NOT EXISTS weather " "(city VARCHAR, temperature DOUBLE, date DATE," - " zilla_correlation_id VARCHAR, zilla_identity VARCHAR, timestamp TIMESTAMP);" + " zilla_correlation_id VARCHAR, zilla_identity VARCHAR, zilla_timestamp TIMESTAMP);" [0x00] write flush diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.stream.with.includes/server.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.stream.with.includes/server.rpt index cb803e58c4..e328e36ca6 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.stream.with.includes/server.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.stream.with.includes/server.rpt @@ -38,7 +38,7 @@ read zilla:data.ext ${pgsql:dataEx() .build()} read "CREATE STREAM IF NOT EXISTS weather " "(city VARCHAR, temperature DOUBLE, date DATE," - " zilla_correlation_id VARCHAR, zilla_identity VARCHAR, timestamp TIMESTAMP);" + " zilla_correlation_id VARCHAR, zilla_identity VARCHAR, zilla_timestamp TIMESTAMP);" [0x00] diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.table.with.primary.key.and.includes/client.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.table.with.primary.key.and.includes/client.rpt index 3689bca93f..823f4ffbe8 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.table.with.primary.key.and.includes/client.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.table.with.primary.key.and.includes/client.rpt @@ -34,7 +34,7 @@ write zilla:data.ext ${pgsql:dataEx() .build()} write "CREATE TABLE IF NOT EXISTS cities " "(id VARCHAR, name VARCHAR, description VARCHAR," - " zilla_correlation_id VARCHAR, zilla_identity VARCHAR, timestamp TIMESTAMP," + " zilla_correlation_id VARCHAR, zilla_identity VARCHAR, zilla_timestamp TIMESTAMP," " PRIMARY KEY (id));" [0x00] diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.table.with.primary.key.and.includes/server.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.table.with.primary.key.and.includes/server.rpt index 2add559a18..3c916e9f9c 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.table.with.primary.key.and.includes/server.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.table.with.primary.key.and.includes/server.rpt @@ -38,7 +38,7 @@ read zilla:data.ext ${pgsql:dataEx() .build()} read "CREATE TABLE IF NOT EXISTS cities " "(id VARCHAR, name VARCHAR, description VARCHAR," - " zilla_correlation_id VARCHAR, zilla_identity VARCHAR, timestamp TIMESTAMP," + " zilla_correlation_id VARCHAR, zilla_identity VARCHAR, zilla_timestamp TIMESTAMP," " PRIMARY KEY (id));" [0x00] diff --git a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveCommandTemplate.java b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveCommandTemplate.java index e510e40e94..c107737304 100644 --- a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveCommandTemplate.java +++ b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveCommandTemplate.java @@ -21,21 +21,25 @@ public abstract class RisingwaveCommandTemplate { + protected static final String ZILLA_CORRELATION_ID = "zilla_correlation_id"; + protected static final String ZILLA_IDENTITY = "zilla_identity"; + protected static final String ZILLA_TIMESTAMP = "zilla_timestamp"; + protected final StringBuilder fieldBuilder = new StringBuilder(); protected final StringBuilder includeBuilder = new StringBuilder(); protected static final Map ZILLA_MAPPINGS = new Object2ObjectHashMap<>(); static { - ZILLA_MAPPINGS.put("zilla_correlation_id", "INCLUDE header 'zilla:correlation-id' AS %s\n"); - ZILLA_MAPPINGS.put("zilla_identity", "INCLUDE header 'zilla:identity' AS %s\n"); - ZILLA_MAPPINGS.put("timestamp", "INCLUDE timestamp AS %s\n"); + ZILLA_MAPPINGS.put(ZILLA_CORRELATION_ID, "INCLUDE header 'zilla:correlation-id' AS %s\n"); + ZILLA_MAPPINGS.put(ZILLA_IDENTITY, "INCLUDE header 'zilla:identity' AS %s\n"); + ZILLA_MAPPINGS.put(ZILLA_TIMESTAMP, "INCLUDE timestamp AS %s\n"); } protected static final Map ZILLA_INCLUDE_TYPE_MAPPINGS = new Object2ObjectHashMap<>(); static { - ZILLA_INCLUDE_TYPE_MAPPINGS.put("zilla_correlation_id", "VARCHAR"); - ZILLA_INCLUDE_TYPE_MAPPINGS.put("zilla_identity", "VARCHAR"); - ZILLA_INCLUDE_TYPE_MAPPINGS.put("timestamp", "TIMESTAMP"); + ZILLA_INCLUDE_TYPE_MAPPINGS.put(ZILLA_CORRELATION_ID, "VARCHAR"); + ZILLA_INCLUDE_TYPE_MAPPINGS.put(ZILLA_IDENTITY, "VARCHAR"); + ZILLA_INCLUDE_TYPE_MAPPINGS.put(ZILLA_TIMESTAMP, "TIMESTAMP"); } } diff --git a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveCreateMaterializedViewTemplate.java b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveCreateMaterializedViewTemplate.java index a4a40d5774..c61b1eaae6 100644 --- a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveCreateMaterializedViewTemplate.java +++ b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveCreateMaterializedViewTemplate.java @@ -27,6 +27,7 @@ public class RisingwaveCreateMaterializedViewTemplate extends RisingwaveCommandT CREATE MATERIALIZED VIEW IF NOT EXISTS %s AS %s;\u0000"""; private final String fieldFormat = "%s, "; private final String includeFormat = "COALESCE(%s, %s_header::varchar) as %s, "; + private final String timestampFormat = "COALESCE(%s, %s_timestamp::varchar) as %s, "; public RisingwaveCreateMaterializedViewTemplate() { @@ -63,9 +64,9 @@ public String generate( includes.forEach((k, v) -> { - if ("timestamp".equals(k)) + if (ZILLA_TIMESTAMP.equals(k)) { - fieldBuilder.append(String.format(fieldFormat, k)); + fieldBuilder.append(String.format(timestampFormat, k, k, k)); } else { diff --git a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveCreateSourceTemplate.java b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveCreateSourceTemplate.java index bf29514b14..1e7343e92c 100644 --- a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveCreateSourceTemplate.java +++ b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveCreateSourceTemplate.java @@ -86,9 +86,9 @@ public String generateTableSource( includeBuilder.append("\n"); includes.forEach((k, v) -> { - if ("timestamp".equals(k)) + if (ZILLA_TIMESTAMP.equals(k)) { - includeBuilder.append(String.format(ZILLA_MAPPINGS.get(k), k)); + includeBuilder.append(String.format(ZILLA_MAPPINGS.get(k), "%s_timestamp".formatted(k))); } else { diff --git a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveCreateTopicTemplate.java b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveCreateTopicTemplate.java index b6d56e6980..c0a6b977e4 100644 --- a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveCreateTopicTemplate.java +++ b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveCreateTopicTemplate.java @@ -61,8 +61,11 @@ public String generate( fieldBuilder.setLength(0); streamInfo.columns() - .forEach((k, v) -> fieldBuilder.append( - String.format(fieldFormat, k, v))); + .entrySet() + .stream() + .filter(e -> !ZILLA_MAPPINGS.containsKey(e.getKey())) + .forEach(e -> fieldBuilder.append( + String.format(fieldFormat, e.getKey(), e.getValue()))); fieldBuilder.delete(fieldBuilder.length() - 2, fieldBuilder.length()); diff --git a/incubator/binding-risingwave/src/test/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveCreateMaterializedViewTemplateTest.java b/incubator/binding-risingwave/src/test/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveCreateMaterializedViewTemplateTest.java index 3af2459caa..7e83bec916 100644 --- a/incubator/binding-risingwave/src/test/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveCreateMaterializedViewTemplateTest.java +++ b/incubator/binding-risingwave/src/test/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveCreateMaterializedViewTemplateTest.java @@ -77,12 +77,13 @@ public void shouldGenerateMaterializedViewWithIncludes() columns.put("id", "INT"); columns.put("zilla_correlation_id", "VARCHAR"); columns.put("zilla_identity", "VARCHAR"); - columns.put("timestamp", "TIMESTAMP"); + columns.put("zilla_timestamp", "TIMESTAMP"); TableInfo tableInfo = new TableInfo("test_table", columns, Set.of("id")); String expectedSQL = "CREATE MATERIALIZED VIEW IF NOT EXISTS test_table_view AS SELECT id," + " COALESCE(zilla_correlation_id, zilla_correlation_id_header::varchar) as zilla_correlation_id," + - " COALESCE(zilla_identity, zilla_identity_header::varchar) as zilla_identity, timestamp" + + " COALESCE(zilla_identity, zilla_identity_header::varchar) as zilla_identity," + + " COALESCE(zilla_timestamp, zilla_timestamp_timestamp::varchar) as zilla_timestamp" + " FROM test_table_source;\u0000"; String actualSQL = template.generate(tableInfo); diff --git a/incubator/binding-risingwave/src/test/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveCreateSourceTemplateTest.java b/incubator/binding-risingwave/src/test/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveCreateSourceTemplateTest.java index 26e4ed00be..b354c611fb 100644 --- a/incubator/binding-risingwave/src/test/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveCreateSourceTemplateTest.java +++ b/incubator/binding-risingwave/src/test/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveCreateSourceTemplateTest.java @@ -64,7 +64,7 @@ public void shouldGenerateTableSourceWithValidTableInfoAndIncludes() columns.put("id", "INT"); columns.put("zilla_correlation_id", "VARCHAR"); columns.put("zilla_identity", "VARCHAR"); - columns.put("timestamp", "TIMESTAMP"); + columns.put("zilla_timestamp", "TIMESTAMP"); TableInfo tableInfo = new TableInfo( "test_table", columns, Set.of("id")); @@ -72,7 +72,7 @@ public void shouldGenerateTableSourceWithValidTableInfoAndIncludes() CREATE SOURCE IF NOT EXISTS test_table_source (*) INCLUDE header 'zilla:correlation-id' AS zilla_correlation_id_header INCLUDE header 'zilla:identity' AS zilla_identity_header - INCLUDE timestamp AS timestamp + INCLUDE timestamp AS zilla_timestamp_timestamp WITH ( connector='kafka', properties.bootstrap.server='localhost:9092', @@ -109,6 +109,36 @@ CREATE SOURCE IF NOT EXISTS empty_stream (*) assertEquals(expectedSQL, actualSQL); } + @Test + public void shouldGenerateStreamSourceWithEmptyColumnsReturnsSQLWithIncludes() + { + Map columns = new LinkedHashMap<>(); + columns.put("id", "INT"); + columns.put("zilla_correlation_id", "VARCHAR"); + columns.put("zilla_identity", "VARCHAR"); + columns.put("zilla_timestamp", "TIMESTAMP"); + + String expectedSQL = """ + CREATE SOURCE IF NOT EXISTS include_stream (*) + INCLUDE header 'zilla:correlation-id' AS zilla_correlation_id + INCLUDE header 'zilla:identity' AS zilla_identity + INCLUDE timestamp AS zilla_timestamp + WITH ( + connector='kafka', + properties.bootstrap.server='localhost:9092', + topic='test_db.include_stream', + scan.startup.mode='latest', + scan.startup.timestamp.millis='1627846260000' + ) FORMAT PLAIN ENCODE AVRO ( + schema.registry = 'http://localhost:8081' + );\u0000"""; + StreamInfo streamInfo = new StreamInfo("include_stream", columns); + + String actualSQL = template.generateStreamSource("test_db", streamInfo); + + assertEquals(expectedSQL, actualSQL); + } + @Test public void shouldGenerateTableSourceWithEmptyColumnsAndWithoutIncludes() { From 521343a2b0be7ea6e6f957994a42efaaaae43da4 Mon Sep 17 00:00:00 2001 From: Akram Yakubov Date: Fri, 18 Oct 2024 15:53:28 -0700 Subject: [PATCH 24/26] Applied feedback from PR --- incubator/binding-pgsql-kafka/NOTICE | 1 + incubator/binding-pgsql-kafka/pom.xml | 1 - .../internal/schema/PgsqlKafkaKeyAvroSchemaTemplate.java | 2 +- .../schema/PgsqlKafkaValueAvroSchemaTemplate.java | 2 +- .../kafka/internal/stream/PgsqlKafkaProxyFactory.java | 2 +- .../zilla/runtime/binding/pgsql/parser/PgsqlParser.java | 8 ++++---- .../pgsql/parser/listener/SqlCreateFunctionListener.java | 4 ++-- .../listener/SqlCreateMaterializedViewListener.java | 5 +++-- .../pgsql/parser/listener/SqlCreateStreamListener.java | 6 +++--- .../parser/listener/SqlCreateTableTopicListener.java | 6 +++--- .../pgsql/parser/{module => model}/FunctionArgument.java | 2 +- .../pgsql/parser/{module => model}/FunctionInfo.java | 2 +- .../pgsql/parser/{module => model}/StreamInfo.java | 2 +- .../binding/pgsql/parser/{module => model}/TableInfo.java | 2 +- .../binding/pgsql/parser/{module => model}/ViewInfo.java | 6 +++--- .../binding-pgsql/src/main/moditect/module-info.java | 2 +- .../runtime/binding/pgsql/parser/PgsqlParserTest.java | 8 ++++---- incubator/binding-risingwave/NOTICE | 1 + incubator/binding-risingwave/pom.xml | 1 - .../statement/RisingwaveCreateFunctionTemplate.java | 4 ++-- .../RisingwaveCreateMaterializedViewTemplate.java | 4 ++-- .../internal/statement/RisingwaveCreateSinkTemplate.java | 4 ++-- .../statement/RisingwaveCreateSourceTemplate.java | 4 ++-- .../internal/statement/RisingwaveCreateTableTemplate.java | 2 +- .../internal/statement/RisingwaveCreateTopicTemplate.java | 6 +++--- .../internal/statement/RisingwaveDescribeTemplate.java | 2 +- .../internal/stream/RisingwaveProxyFactory.java | 8 ++++---- .../statement/RisingwaveCreateFunctionTemplateTest.java | 4 ++-- .../RisingwaveCreateMaterializedViewTemplateTest.java | 4 ++-- .../statement/RisingwaveCreateSourceTemplateTest.java | 4 ++-- .../statement/RisingwaveCreateTableTemplateTest.java | 2 +- 31 files changed, 56 insertions(+), 55 deletions(-) rename incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/{module => model}/FunctionArgument.java (91%) rename incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/{module => model}/FunctionInfo.java (92%) rename incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/{module => model}/StreamInfo.java (91%) rename incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/{module => model}/TableInfo.java (92%) rename incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/{module => model}/ViewInfo.java (85%) diff --git a/incubator/binding-pgsql-kafka/NOTICE b/incubator/binding-pgsql-kafka/NOTICE index 9024d8926d..3913dbbc71 100644 --- a/incubator/binding-pgsql-kafka/NOTICE +++ b/incubator/binding-pgsql-kafka/NOTICE @@ -10,4 +10,5 @@ WARRANTIES OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. This project includes: + zilla::incubator::binding-pgsql under Aklivity Community License Agreement diff --git a/incubator/binding-pgsql-kafka/pom.xml b/incubator/binding-pgsql-kafka/pom.xml index 6e5414dc72..c3bcc8b6ab 100644 --- a/incubator/binding-pgsql-kafka/pom.xml +++ b/incubator/binding-pgsql-kafka/pom.xml @@ -44,7 +44,6 @@ io.aklivity.zilla binding-pgsql - provided ${project.groupId} diff --git a/incubator/binding-pgsql-kafka/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/kafka/internal/schema/PgsqlKafkaKeyAvroSchemaTemplate.java b/incubator/binding-pgsql-kafka/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/kafka/internal/schema/PgsqlKafkaKeyAvroSchemaTemplate.java index de9cdbb70f..6885f5ee94 100644 --- a/incubator/binding-pgsql-kafka/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/kafka/internal/schema/PgsqlKafkaKeyAvroSchemaTemplate.java +++ b/incubator/binding-pgsql-kafka/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/kafka/internal/schema/PgsqlKafkaKeyAvroSchemaTemplate.java @@ -16,7 +16,7 @@ import java.util.Map; -import io.aklivity.zilla.runtime.binding.pgsql.parser.module.TableInfo; +import io.aklivity.zilla.runtime.binding.pgsql.parser.model.TableInfo; public class PgsqlKafkaKeyAvroSchemaTemplate extends PgsqlKafkaAvroSchemaTemplate { diff --git a/incubator/binding-pgsql-kafka/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/kafka/internal/schema/PgsqlKafkaValueAvroSchemaTemplate.java b/incubator/binding-pgsql-kafka/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/kafka/internal/schema/PgsqlKafkaValueAvroSchemaTemplate.java index 002025222c..ebfaea7915 100644 --- a/incubator/binding-pgsql-kafka/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/kafka/internal/schema/PgsqlKafkaValueAvroSchemaTemplate.java +++ b/incubator/binding-pgsql-kafka/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/kafka/internal/schema/PgsqlKafkaValueAvroSchemaTemplate.java @@ -16,7 +16,7 @@ import java.util.Map; -import io.aklivity.zilla.runtime.binding.pgsql.parser.module.TableInfo; +import io.aklivity.zilla.runtime.binding.pgsql.parser.model.TableInfo; public class PgsqlKafkaValueAvroSchemaTemplate extends PgsqlKafkaAvroSchemaTemplate { diff --git a/incubator/binding-pgsql-kafka/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/kafka/internal/stream/PgsqlKafkaProxyFactory.java b/incubator/binding-pgsql-kafka/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/kafka/internal/stream/PgsqlKafkaProxyFactory.java index afd2658690..5c4e740d83 100644 --- a/incubator/binding-pgsql-kafka/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/kafka/internal/stream/PgsqlKafkaProxyFactory.java +++ b/incubator/binding-pgsql-kafka/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/kafka/internal/stream/PgsqlKafkaProxyFactory.java @@ -54,7 +54,7 @@ import io.aklivity.zilla.runtime.binding.pgsql.kafka.internal.types.stream.SignalFW; import io.aklivity.zilla.runtime.binding.pgsql.kafka.internal.types.stream.WindowFW; import io.aklivity.zilla.runtime.binding.pgsql.parser.PgsqlParser; -import io.aklivity.zilla.runtime.binding.pgsql.parser.module.TableInfo; +import io.aklivity.zilla.runtime.binding.pgsql.parser.model.TableInfo; import io.aklivity.zilla.runtime.engine.EngineContext; import io.aklivity.zilla.runtime.engine.binding.BindingHandler; import io.aklivity.zilla.runtime.engine.binding.function.MessageConsumer; diff --git a/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/PgsqlParser.java b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/PgsqlParser.java index e2c000c1be..0479aa08a8 100644 --- a/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/PgsqlParser.java +++ b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/PgsqlParser.java @@ -28,10 +28,10 @@ import io.aklivity.zilla.runtime.binding.pgsql.parser.listener.SqlCreateStreamListener; import io.aklivity.zilla.runtime.binding.pgsql.parser.listener.SqlCreateTableTopicListener; import io.aklivity.zilla.runtime.binding.pgsql.parser.listener.SqlDropListener; -import io.aklivity.zilla.runtime.binding.pgsql.parser.module.FunctionInfo; -import io.aklivity.zilla.runtime.binding.pgsql.parser.module.StreamInfo; -import io.aklivity.zilla.runtime.binding.pgsql.parser.module.TableInfo; -import io.aklivity.zilla.runtime.binding.pgsql.parser.module.ViewInfo; +import io.aklivity.zilla.runtime.binding.pgsql.parser.model.FunctionInfo; +import io.aklivity.zilla.runtime.binding.pgsql.parser.model.StreamInfo; +import io.aklivity.zilla.runtime.binding.pgsql.parser.model.TableInfo; +import io.aklivity.zilla.runtime.binding.pgsql.parser.model.ViewInfo; public final class PgsqlParser { diff --git a/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlCreateFunctionListener.java b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlCreateFunctionListener.java index e0d0db858e..85c1a98127 100644 --- a/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlCreateFunctionListener.java +++ b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlCreateFunctionListener.java @@ -21,8 +21,8 @@ import io.aklivity.zilla.runtime.binding.pgsql.parser.PostgreSqlParser; import io.aklivity.zilla.runtime.binding.pgsql.parser.PostgreSqlParserBaseListener; -import io.aklivity.zilla.runtime.binding.pgsql.parser.module.FunctionArgument; -import io.aklivity.zilla.runtime.binding.pgsql.parser.module.FunctionInfo; +import io.aklivity.zilla.runtime.binding.pgsql.parser.model.FunctionArgument; +import io.aklivity.zilla.runtime.binding.pgsql.parser.model.FunctionInfo; public class SqlCreateFunctionListener extends PostgreSqlParserBaseListener { diff --git a/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlCreateMaterializedViewListener.java b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlCreateMaterializedViewListener.java index 5bdeab08d5..f4e8c5d5a8 100644 --- a/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlCreateMaterializedViewListener.java +++ b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlCreateMaterializedViewListener.java @@ -18,13 +18,14 @@ import io.aklivity.zilla.runtime.binding.pgsql.parser.PostgreSqlParser; import io.aklivity.zilla.runtime.binding.pgsql.parser.PostgreSqlParserBaseListener; -import io.aklivity.zilla.runtime.binding.pgsql.parser.module.ViewInfo; +import io.aklivity.zilla.runtime.binding.pgsql.parser.model.ViewInfo; public class SqlCreateMaterializedViewListener extends PostgreSqlParserBaseListener { + private final TokenStream tokens; + private String name; private String select; - private TokenStream tokens; public SqlCreateMaterializedViewListener( TokenStream tokens) diff --git a/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlCreateStreamListener.java b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlCreateStreamListener.java index 4d482240e3..34a2638676 100644 --- a/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlCreateStreamListener.java +++ b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlCreateStreamListener.java @@ -21,15 +21,15 @@ import io.aklivity.zilla.runtime.binding.pgsql.parser.PostgreSqlParser; import io.aklivity.zilla.runtime.binding.pgsql.parser.PostgreSqlParserBaseListener; -import io.aklivity.zilla.runtime.binding.pgsql.parser.module.StreamInfo; +import io.aklivity.zilla.runtime.binding.pgsql.parser.model.StreamInfo; public class SqlCreateStreamListener extends PostgreSqlParserBaseListener { - private String name; private final Map columns = new LinkedHashMap<>(); - private final TokenStream tokens; + private String name; + public SqlCreateStreamListener( TokenStream tokens) { diff --git a/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlCreateTableTopicListener.java b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlCreateTableTopicListener.java index c9bb2d0d55..9ec17a7243 100644 --- a/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlCreateTableTopicListener.java +++ b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlCreateTableTopicListener.java @@ -23,16 +23,16 @@ import io.aklivity.zilla.runtime.binding.pgsql.parser.PostgreSqlParser; import io.aklivity.zilla.runtime.binding.pgsql.parser.PostgreSqlParserBaseListener; -import io.aklivity.zilla.runtime.binding.pgsql.parser.module.TableInfo; +import io.aklivity.zilla.runtime.binding.pgsql.parser.model.TableInfo; public class SqlCreateTableTopicListener extends PostgreSqlParserBaseListener { - private String name; private final Map columns = new LinkedHashMap<>(); private final Set primaryKeys = new ObjectHashSet<>(); - private final TokenStream tokens; + private String name; + public SqlCreateTableTopicListener( TokenStream tokens) { diff --git a/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/module/FunctionArgument.java b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/model/FunctionArgument.java similarity index 91% rename from incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/module/FunctionArgument.java rename to incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/model/FunctionArgument.java index 7196c49f5a..91f04b17f4 100644 --- a/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/module/FunctionArgument.java +++ b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/model/FunctionArgument.java @@ -12,7 +12,7 @@ * WARRANTIES OF ANY KIND, either express or implied. See the License for the * specific language governing permissions and limitations under the License. */ -package io.aklivity.zilla.runtime.binding.pgsql.parser.module; +package io.aklivity.zilla.runtime.binding.pgsql.parser.model; public record FunctionArgument( String name, diff --git a/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/module/FunctionInfo.java b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/model/FunctionInfo.java similarity index 92% rename from incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/module/FunctionInfo.java rename to incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/model/FunctionInfo.java index f096608cc2..f41b7939de 100644 --- a/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/module/FunctionInfo.java +++ b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/model/FunctionInfo.java @@ -12,7 +12,7 @@ * WARRANTIES OF ANY KIND, either express or implied. See the License for the * specific language governing permissions and limitations under the License. */ -package io.aklivity.zilla.runtime.binding.pgsql.parser.module; +package io.aklivity.zilla.runtime.binding.pgsql.parser.model; import java.util.List; diff --git a/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/module/StreamInfo.java b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/model/StreamInfo.java similarity index 91% rename from incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/module/StreamInfo.java rename to incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/model/StreamInfo.java index 5a2880ea68..a666131e4f 100644 --- a/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/module/StreamInfo.java +++ b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/model/StreamInfo.java @@ -12,7 +12,7 @@ * WARRANTIES OF ANY KIND, either express or implied. See the License for the * specific language governing permissions and limitations under the License. */ -package io.aklivity.zilla.runtime.binding.pgsql.parser.module; +package io.aklivity.zilla.runtime.binding.pgsql.parser.model; import java.util.Map; diff --git a/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/module/TableInfo.java b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/model/TableInfo.java similarity index 92% rename from incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/module/TableInfo.java rename to incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/model/TableInfo.java index 8b0067d5b1..2f1b3e272b 100644 --- a/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/module/TableInfo.java +++ b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/model/TableInfo.java @@ -12,7 +12,7 @@ * WARRANTIES OF ANY KIND, either express or implied. See the License for the * specific language governing permissions and limitations under the License. */ -package io.aklivity.zilla.runtime.binding.pgsql.parser.module; +package io.aklivity.zilla.runtime.binding.pgsql.parser.model; import java.util.Map; import java.util.Set; diff --git a/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/module/ViewInfo.java b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/model/ViewInfo.java similarity index 85% rename from incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/module/ViewInfo.java rename to incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/model/ViewInfo.java index a046cc1b70..2f6f43e280 100644 --- a/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/module/ViewInfo.java +++ b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/model/ViewInfo.java @@ -12,10 +12,10 @@ * WARRANTIES OF ANY KIND, either express or implied. See the License for the * specific language governing permissions and limitations under the License. */ -package io.aklivity.zilla.runtime.binding.pgsql.parser.module; +package io.aklivity.zilla.runtime.binding.pgsql.parser.model; public record ViewInfo( - String name, - String select) + String name, + String select) { } diff --git a/incubator/binding-pgsql/src/main/moditect/module-info.java b/incubator/binding-pgsql/src/main/moditect/module-info.java index 60ede08cc2..b8ee14bb35 100644 --- a/incubator/binding-pgsql/src/main/moditect/module-info.java +++ b/incubator/binding-pgsql/src/main/moditect/module-info.java @@ -19,7 +19,7 @@ exports io.aklivity.zilla.runtime.binding.pgsql.parser; exports io.aklivity.zilla.runtime.binding.pgsql.parser.listener; - exports io.aklivity.zilla.runtime.binding.pgsql.parser.module; + exports io.aklivity.zilla.runtime.binding.pgsql.parser.model; provides io.aklivity.zilla.runtime.engine.binding.BindingFactorySpi with io.aklivity.zilla.runtime.binding.pgsql.internal.PgsqlBindingFactorySpi; diff --git a/incubator/binding-pgsql/src/test/java/io/aklivity/zilla/runtime/binding/pgsql/parser/PgsqlParserTest.java b/incubator/binding-pgsql/src/test/java/io/aklivity/zilla/runtime/binding/pgsql/parser/PgsqlParserTest.java index 8f03d01b79..201977e28f 100644 --- a/incubator/binding-pgsql/src/test/java/io/aklivity/zilla/runtime/binding/pgsql/parser/PgsqlParserTest.java +++ b/incubator/binding-pgsql/src/test/java/io/aklivity/zilla/runtime/binding/pgsql/parser/PgsqlParserTest.java @@ -24,10 +24,10 @@ import org.junit.Before; import org.junit.Test; -import io.aklivity.zilla.runtime.binding.pgsql.parser.module.FunctionInfo; -import io.aklivity.zilla.runtime.binding.pgsql.parser.module.StreamInfo; -import io.aklivity.zilla.runtime.binding.pgsql.parser.module.TableInfo; -import io.aklivity.zilla.runtime.binding.pgsql.parser.module.ViewInfo; +import io.aklivity.zilla.runtime.binding.pgsql.parser.model.FunctionInfo; +import io.aklivity.zilla.runtime.binding.pgsql.parser.model.StreamInfo; +import io.aklivity.zilla.runtime.binding.pgsql.parser.model.TableInfo; +import io.aklivity.zilla.runtime.binding.pgsql.parser.model.ViewInfo; public class PgsqlParserTest { diff --git a/incubator/binding-risingwave/NOTICE b/incubator/binding-risingwave/NOTICE index 9024d8926d..3913dbbc71 100644 --- a/incubator/binding-risingwave/NOTICE +++ b/incubator/binding-risingwave/NOTICE @@ -10,4 +10,5 @@ WARRANTIES OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. This project includes: + zilla::incubator::binding-pgsql under Aklivity Community License Agreement diff --git a/incubator/binding-risingwave/pom.xml b/incubator/binding-risingwave/pom.xml index 52e467a184..a087cd9681 100644 --- a/incubator/binding-risingwave/pom.xml +++ b/incubator/binding-risingwave/pom.xml @@ -44,7 +44,6 @@ io.aklivity.zilla binding-pgsql - provided ${project.groupId} diff --git a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveCreateFunctionTemplate.java b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveCreateFunctionTemplate.java index 781afabeff..b171265ba2 100644 --- a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveCreateFunctionTemplate.java +++ b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveCreateFunctionTemplate.java @@ -16,8 +16,8 @@ import java.util.List; -import io.aklivity.zilla.runtime.binding.pgsql.parser.module.FunctionArgument; -import io.aklivity.zilla.runtime.binding.pgsql.parser.module.FunctionInfo; +import io.aklivity.zilla.runtime.binding.pgsql.parser.model.FunctionArgument; +import io.aklivity.zilla.runtime.binding.pgsql.parser.model.FunctionInfo; import io.aklivity.zilla.runtime.binding.risingwave.config.RisingwaveUdfConfig; public class RisingwaveCreateFunctionTemplate extends RisingwaveCommandTemplate diff --git a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveCreateMaterializedViewTemplate.java b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveCreateMaterializedViewTemplate.java index c61b1eaae6..a6f852d0b0 100644 --- a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveCreateMaterializedViewTemplate.java +++ b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveCreateMaterializedViewTemplate.java @@ -17,8 +17,8 @@ import java.util.LinkedHashMap; import java.util.Map; -import io.aklivity.zilla.runtime.binding.pgsql.parser.module.TableInfo; -import io.aklivity.zilla.runtime.binding.pgsql.parser.module.ViewInfo; +import io.aklivity.zilla.runtime.binding.pgsql.parser.model.TableInfo; +import io.aklivity.zilla.runtime.binding.pgsql.parser.model.ViewInfo; public class RisingwaveCreateMaterializedViewTemplate extends RisingwaveCommandTemplate diff --git a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveCreateSinkTemplate.java b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveCreateSinkTemplate.java index d8263ecfcb..2025b81d0e 100644 --- a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveCreateSinkTemplate.java +++ b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveCreateSinkTemplate.java @@ -17,8 +17,8 @@ import java.util.Map; import java.util.Optional; -import io.aklivity.zilla.runtime.binding.pgsql.parser.module.TableInfo; -import io.aklivity.zilla.runtime.binding.pgsql.parser.module.ViewInfo; +import io.aklivity.zilla.runtime.binding.pgsql.parser.model.TableInfo; +import io.aklivity.zilla.runtime.binding.pgsql.parser.model.ViewInfo; public class RisingwaveCreateSinkTemplate extends RisingwaveCommandTemplate { diff --git a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveCreateSourceTemplate.java b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveCreateSourceTemplate.java index 1e7343e92c..f154574431 100644 --- a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveCreateSourceTemplate.java +++ b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveCreateSourceTemplate.java @@ -17,8 +17,8 @@ import java.util.LinkedHashMap; import java.util.Map; -import io.aklivity.zilla.runtime.binding.pgsql.parser.module.StreamInfo; -import io.aklivity.zilla.runtime.binding.pgsql.parser.module.TableInfo; +import io.aklivity.zilla.runtime.binding.pgsql.parser.model.StreamInfo; +import io.aklivity.zilla.runtime.binding.pgsql.parser.model.TableInfo; public class RisingwaveCreateSourceTemplate extends RisingwaveCommandTemplate { diff --git a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveCreateTableTemplate.java b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveCreateTableTemplate.java index 24858e8353..9c225454af 100644 --- a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveCreateTableTemplate.java +++ b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveCreateTableTemplate.java @@ -14,7 +14,7 @@ */ package io.aklivity.zilla.runtime.binding.risingwave.internal.statement; -import io.aklivity.zilla.runtime.binding.pgsql.parser.module.TableInfo; +import io.aklivity.zilla.runtime.binding.pgsql.parser.model.TableInfo; public class RisingwaveCreateTableTemplate extends RisingwaveCommandTemplate { diff --git a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveCreateTopicTemplate.java b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveCreateTopicTemplate.java index c0a6b977e4..39a1b16c2f 100644 --- a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveCreateTopicTemplate.java +++ b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveCreateTopicTemplate.java @@ -16,9 +16,9 @@ import java.util.Map; -import io.aklivity.zilla.runtime.binding.pgsql.parser.module.StreamInfo; -import io.aklivity.zilla.runtime.binding.pgsql.parser.module.TableInfo; -import io.aklivity.zilla.runtime.binding.pgsql.parser.module.ViewInfo; +import io.aklivity.zilla.runtime.binding.pgsql.parser.model.StreamInfo; +import io.aklivity.zilla.runtime.binding.pgsql.parser.model.TableInfo; +import io.aklivity.zilla.runtime.binding.pgsql.parser.model.ViewInfo; public class RisingwaveCreateTopicTemplate extends RisingwaveCommandTemplate { diff --git a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveDescribeTemplate.java b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveDescribeTemplate.java index 7f5feed609..4f0718acd4 100644 --- a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveDescribeTemplate.java +++ b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveDescribeTemplate.java @@ -14,7 +14,7 @@ */ package io.aklivity.zilla.runtime.binding.risingwave.internal.statement; -import io.aklivity.zilla.runtime.binding.pgsql.parser.module.ViewInfo; +import io.aklivity.zilla.runtime.binding.pgsql.parser.model.ViewInfo; public class RisingwaveDescribeTemplate extends RisingwaveCommandTemplate { diff --git a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/stream/RisingwaveProxyFactory.java b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/stream/RisingwaveProxyFactory.java index 1f793be4de..4c0e41e361 100644 --- a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/stream/RisingwaveProxyFactory.java +++ b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/stream/RisingwaveProxyFactory.java @@ -35,10 +35,10 @@ import org.agrona.concurrent.UnsafeBuffer; import io.aklivity.zilla.runtime.binding.pgsql.parser.PgsqlParser; -import io.aklivity.zilla.runtime.binding.pgsql.parser.module.FunctionInfo; -import io.aklivity.zilla.runtime.binding.pgsql.parser.module.StreamInfo; -import io.aklivity.zilla.runtime.binding.pgsql.parser.module.TableInfo; -import io.aklivity.zilla.runtime.binding.pgsql.parser.module.ViewInfo; +import io.aklivity.zilla.runtime.binding.pgsql.parser.model.FunctionInfo; +import io.aklivity.zilla.runtime.binding.pgsql.parser.model.StreamInfo; +import io.aklivity.zilla.runtime.binding.pgsql.parser.model.TableInfo; +import io.aklivity.zilla.runtime.binding.pgsql.parser.model.ViewInfo; import io.aklivity.zilla.runtime.binding.risingwave.internal.RisingwaveConfiguration; import io.aklivity.zilla.runtime.binding.risingwave.internal.config.RisingwaveBindingConfig; import io.aklivity.zilla.runtime.binding.risingwave.internal.config.RisingwaveCommandType; diff --git a/incubator/binding-risingwave/src/test/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveCreateFunctionTemplateTest.java b/incubator/binding-risingwave/src/test/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveCreateFunctionTemplateTest.java index e6ba37c9a6..b0defa56e0 100644 --- a/incubator/binding-risingwave/src/test/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveCreateFunctionTemplateTest.java +++ b/incubator/binding-risingwave/src/test/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveCreateFunctionTemplateTest.java @@ -21,8 +21,8 @@ import org.junit.BeforeClass; import org.junit.Test; -import io.aklivity.zilla.runtime.binding.pgsql.parser.module.FunctionArgument; -import io.aklivity.zilla.runtime.binding.pgsql.parser.module.FunctionInfo; +import io.aklivity.zilla.runtime.binding.pgsql.parser.model.FunctionArgument; +import io.aklivity.zilla.runtime.binding.pgsql.parser.model.FunctionInfo; import io.aklivity.zilla.runtime.binding.risingwave.config.RisingwaveUdfConfig; diff --git a/incubator/binding-risingwave/src/test/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveCreateMaterializedViewTemplateTest.java b/incubator/binding-risingwave/src/test/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveCreateMaterializedViewTemplateTest.java index 7e83bec916..079d0011f5 100644 --- a/incubator/binding-risingwave/src/test/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveCreateMaterializedViewTemplateTest.java +++ b/incubator/binding-risingwave/src/test/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveCreateMaterializedViewTemplateTest.java @@ -23,8 +23,8 @@ import org.junit.Ignore; import org.junit.Test; -import io.aklivity.zilla.runtime.binding.pgsql.parser.module.TableInfo; -import io.aklivity.zilla.runtime.binding.pgsql.parser.module.ViewInfo; +import io.aklivity.zilla.runtime.binding.pgsql.parser.model.TableInfo; +import io.aklivity.zilla.runtime.binding.pgsql.parser.model.ViewInfo; public class RisingwaveCreateMaterializedViewTemplateTest { diff --git a/incubator/binding-risingwave/src/test/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveCreateSourceTemplateTest.java b/incubator/binding-risingwave/src/test/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveCreateSourceTemplateTest.java index b354c611fb..b6f7d8ed11 100644 --- a/incubator/binding-risingwave/src/test/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveCreateSourceTemplateTest.java +++ b/incubator/binding-risingwave/src/test/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveCreateSourceTemplateTest.java @@ -23,8 +23,8 @@ import org.junit.BeforeClass; import org.junit.Test; -import io.aklivity.zilla.runtime.binding.pgsql.parser.module.StreamInfo; -import io.aklivity.zilla.runtime.binding.pgsql.parser.module.TableInfo; +import io.aklivity.zilla.runtime.binding.pgsql.parser.model.StreamInfo; +import io.aklivity.zilla.runtime.binding.pgsql.parser.model.TableInfo; public class RisingwaveCreateSourceTemplateTest { diff --git a/incubator/binding-risingwave/src/test/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveCreateTableTemplateTest.java b/incubator/binding-risingwave/src/test/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveCreateTableTemplateTest.java index 70b66eb152..231384f573 100644 --- a/incubator/binding-risingwave/src/test/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveCreateTableTemplateTest.java +++ b/incubator/binding-risingwave/src/test/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveCreateTableTemplateTest.java @@ -24,7 +24,7 @@ import org.junit.Ignore; import org.junit.Test; -import io.aklivity.zilla.runtime.binding.pgsql.parser.module.TableInfo; +import io.aklivity.zilla.runtime.binding.pgsql.parser.model.TableInfo; public class RisingwaveCreateTableTemplateTest { From 47c585447775fa4abc8422b95f3bd61275828045 Mon Sep 17 00:00:00 2001 From: Akram Yakubov Date: Mon, 21 Oct 2024 19:11:26 -0700 Subject: [PATCH 25/26] avoid object creation --- .../stream/RisingwaveProxyFactory.java | 25 +++++++++---------- 1 file changed, 12 insertions(+), 13 deletions(-) diff --git a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/stream/RisingwaveProxyFactory.java b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/stream/RisingwaveProxyFactory.java index 4c0e41e361..e92979ae54 100644 --- a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/stream/RisingwaveProxyFactory.java +++ b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/stream/RisingwaveProxyFactory.java @@ -1801,47 +1801,46 @@ public List splitStatements( boolean inDollarQuotes = false; int length = sql.length(); + int start = 0; for (int i = 0; i < length; i++) { char c = sql.charAt(i); - currentStatement.append(c); if (c == '$' && i + 1 < length && sql.charAt(i + 1) == '$') { inDollarQuotes = !inDollarQuotes; - currentStatement.append(sql.charAt(++i)); + i++; } else if (c == ';' && !inDollarQuotes) { int j = i + 1; while (j < length && Character.isWhitespace(sql.charAt(j))) { - currentStatement.append(sql.charAt(j)); j++; } + if (j < length && sql.charAt(j) == '\0') { - currentStatement.append(sql.charAt(j)); - i = j; // Move the main loop index forward - } - else - { - statements.add(currentStatement.toString()); - currentStatement.setLength(0); + i = j; } + + // Add statement substring directly to the list + statements.add(sql.substring(start, i + 1)); + start = j; // Start of the next statement + i = j - 1; // Move index to after whitespaces } } - if (!currentStatement.isEmpty()) + // Add the last statement if there's any remaining + if (start < length) { - statements.add(currentStatement.toString()); + statements.add(sql.substring(start, length)); } return statements; } - @FunctionalInterface private interface PgsqlTransform { From 0710b080c8157d6c25659b9fa73675754d17e9cc Mon Sep 17 00:00:00 2001 From: Akram Yakubov Date: Mon, 21 Oct 2024 19:11:56 -0700 Subject: [PATCH 26/26] Remove comments --- .../risingwave/internal/stream/RisingwaveProxyFactory.java | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/stream/RisingwaveProxyFactory.java b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/stream/RisingwaveProxyFactory.java index e92979ae54..5225180c8b 100644 --- a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/stream/RisingwaveProxyFactory.java +++ b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/stream/RisingwaveProxyFactory.java @@ -1825,14 +1825,12 @@ public List splitStatements( i = j; } - // Add statement substring directly to the list statements.add(sql.substring(start, i + 1)); - start = j; // Start of the next statement - i = j - 1; // Move index to after whitespaces + start = j; + i = j - 1; } } - // Add the last statement if there's any remaining if (start < length) { statements.add(sql.substring(start, length));